How the model works
Proportion is a simulation of a brew with a recipe builder on top. This page describes the science behind each stage, how the simulator implements it, and which parts are derived from first principles and which are fitted to data. Each widget mirrors the code it describes.
Overview
Proportion simulates what happens to the wort, from the grain and water through to the compounds the yeast leaves in the beer. A change to a mash temperature shifts the enzyme kinetics, which changes the wort's sugars, which changes how the yeast grows and ferments, which changes the predicted aroma. No output is pinned to a target value.
The model covers five domains, which are also the tabs in the app: the recipe (the inputs), the water (mash pH, salts and acids), the mash (enzyme kinetics, fermentability, efficiency), the fermentation (a yeast cell model: sugar uptake, growth, and the biochemistry that produces flavour compounds) and the forecast (the predicted flavour of the beer).
One simulation, many readouts
The whole recipe runs through one process graph, and every number in the app is read out of that one result. Water feeds the mash; the mash feeds the boil and sets fermentability; the boil and cooling set bitterness and hop chemistry; fermentation consumes the wort and produces the beer; the package and the shelf follow.
1.The recipe
The recipe is the set of inputs. It holds a grain bill, hop additions (kettle, whirlpool, dry), sugars and nutrients, one or more yeast strains with their pitch (dry, liquid pack, starter), a water profile with salt and acid additions, the brewhouse (vessels, losses, chiller), and two schedules: the mash temperature curve and the fermentation temperature and pressure curve.
Efficiency is predicted by the mash model, or entered from the brewer's own records. An entered figure is interpreted as the most likely combination of the quantities the brewer has not measured (mill gap, completeness of conversion, wort retained by the tun and the kettle); any quantity that has been measured is used as given. Attenuation is always predicted: it is the result of this mash and this strain on this wort, as described in the sections below. A strain that attenuates differently is a different strain, and the brewer can define one.
Ingredients carry measured data. Each malt has an extract potential, a colour, a diastatic power, a starch structure and a nitrogen content; each hop has alpha acids, a cohumulone fraction, the composition of its oil, and its thiol precursor and polyphenol content; each yeast strain has the parameters listed under how strains differ. Custom ingredients can be defined from the same fields, and a malt extract from the reference brew it was made from.
Gravity and alcohol
Brewing calculators convert original and final gravity into alcohol with a formula. The linear formula ABV = 131.25 × (OG − FG) fits beers of ordinary strength; Balling's formula (1843) accounts for the extract that becomes alcohol, carbon dioxide and yeast in their measured proportions and holds across the whole range. For a 10% stout the linear formula reads about half a percentage point low.
Proportion does not convert gravity to alcohol. The simulation tracks masses: the water, the extract the mash dissolved, the sugar the yeast consumed, and the ethanol, CO₂, glycerol and cells produced from it. Alcohol is the ethanol that was produced. Gravity is computed as a hydrometer measures it, from the density of the mixture, using the measured density tables for sugar solutions and for ethanol in water, combined by Tabarie's rule for a liquid that contains both. Original gravity is the density of the wort that reaches the fermenter, and final gravity the density of the beer. About a tenth of the extract a pale malt dissolves is not sugar (protein, amino acids, gums, minerals); it contributes to gravity and remains in the beer. On real beers' measured extract and alcohol, this method reproduces gravity to within half a point, and its alcohol agrees with Balling's formula to within about two per cent from a 4% bitter to a 10% stout.
2.Water chemistry and treatment
Mash pH is the controlling variable of the hot side: each mash enzyme has a pH optimum, the extraction of tannins and colour depends on it, and it carries through to the beer. Mash pH is set jointly by the acidity of the malt and the alkalinity of the water. Proportion models both and predicts where they balance.
Residual alkalinity
Kolbach's residual alkalinity (1953) is the alkalinity that remains after calcium and magnesium have reacted with malt phosphate and released acidity that offsets part of it:
It indicates the direction in which the water pushes the mash. Soft, low-bicarbonate water suits a pale grist; hard, alkaline water requires dark malt or acid.
Predicting mash pH
Proportion solves for the pH at which the mash's net proton balance is zero, by bisection. Four terms contribute: the malt buffer (each grain's distilled-water pH and buffering strength, from Troester's and Bru'n Water's measurements; a grain donates acidity below its own pH and absorbs it above), bicarbonate absorbing protons according to the carbonic acid equilibrium (pKa₁ 6.35), calcium and magnesium releasing protons by reaction with malt phosphate (0.71 and 0.59 mEq per mmol), and added acid at its real strength. Every term is monotonic in pH, so a dozen bisection steps give the answer. A pH meter reads about 0.0033 units lower per °C above room temperature, so the app shows both the room-temperature prediction and the hot-mash reading.
Salts, acids, and pre-treatment
Additions follow their stoichiometry. Each salt contributes a known concentration of each ion per gram per litre; each acid neutralises a known amount of bicarbonate per millilitre, with lactic, phosphoric and CRS taken at their formulated strengths; salts can be added to the mash, the sparge or the kettle. Boiling precipitates temporary hardness as calcium carbonate, slaked lime performs lime softening, and sparge water receives its own pH prediction from the carbonic acid equilibrium, since it has no grain to buffer it. The mineral and ion composition of the finished beer is carried through from the water, the malt and the yeast.
3.The mash
Malt starch is not fermentable. The malt's own enzymes hydrolyse it to sugars, and the sugars they produce depend mainly on temperature: a warm mash favours the enzyme that leaves larger, less fermentable sugars, a cool mash the enzyme that produces mostly maltose. Proportion simulates the enzymes minute by minute over the whole schedule.
Enzyme activity depends on temperature and pH
Beta-amylase removes maltose units from the ends of starch chains; it is most active around 63°C and is inactivated quickly above 70°C. Alpha-amylase hydrolyses interior bonds, preferentially seven units from an end, and so creates the new chain ends beta-amylase requires; it produces glucose, maltose, maltotriose and dextrins and tolerates higher temperatures. Limit dextrinase hydrolyses the branch points neither amylase can pass, but in a mash most of it is bound by an inhibitor. Invertase hydrolyses the malt's sucrose, and lower-temperature enzymes act during the protein, beta-glucan and ferulic acid rests.
An enzyme's catalytic rate rises with temperature, approximately doubling every ten degrees, for as long as the enzyme survives; the "optimum" quoted in textbooks is the point where this rise meets the enzyme's inactivation. Proportion treats the two separately: the catalytic rate follows an Arrhenius law, and inactivation is tracked as a separate quantity that accumulates over the whole schedule. Each enzyme also has a pH optimum, which couples the water model to the mash.
Denaturation, gelatinisation, and fermentability
Heat unfolds enzymes irreversibly. Proportion applies first-order thermal inactivation with an Arrhenius rate constant: negligible at low temperature, rising steeply above the enzyme's stability limit, with no onset threshold, and carried from one rest to the next. Beta-amylase is the least stable of the amylases, and its own product protects it: at 63°C a mash rich in maltose keeps it active for hours, at 73°C the protection is lost, and at 72°C half of it is inactivated within three minutes. The same binding slows the final stage of conversion. Conversion takes minutes once the starch has gelatinised, so at a hot rest the outcome is set by what beta-amylase converts before it is inactivated; starch released later by the coarser grits remains dextrin. A 72°C mash-in therefore loses about ten points of attenuation against 65°C, and a coarse grist mashed hot loses more than a fine one (Evans et al. 2005, Endres et al. 2022). Alpha-amylase's half-life at 72°C is about 25 minutes. These figures are measured (Rittenauer et al. 2021, Henson & Duke 2016, De Schepper et al. 2021).
Starch must gelatinise before the enzymes can act on it. It gelatinises over a range of temperatures, as a population of granules of two sizes, so there is no threshold. Before that, water must reach the starch: the mill leaves most of it inside pieces of endosperm, and water diffuses into a piece on a timescale proportional to the square of its size, so flour is available at once while the larger pieces lag by half an hour. The crush sets the size distribution (the gap of a two-roller mill, from sieve tests of base malts at four gaps), and an unstirred mash reaches its starch about three times slower than a stirred one. Starch that water has not reached when the wort leaves the grain is lost with it; this is the extract cost of a coarse crush, and the reason a sparge recovers more from a coarse grist than a bag lifted from the mash. Diastatic power scales the enzyme pool, so a grist that is mostly adjunct or roasted malt converts poorly at any temperature.
Proportion represents the starch by its structure: the granules, the amylose chains, the outer, inner and hanging segments of amylopectin and its branch points. Every enzyme acts on this one pool. The output is the wort's sugar spectrum: glucose, maltose, maltotriose and dextrin. Dextrin is the material around the branch points, a fifth to a quarter of the starch in a normal mash, and maltotriose is about a quarter of the maltose. The amylases reach this limit within half an hour of gelatinisation; a long rest at 62 to 66°C adds the slow removal of branch points by limit dextrinase, which is why a rest at 65°C ferments further than a ramp through it and why no further gain occurs above 68°C, where that enzyme is inactivated within minutes. Efficiency follows from the same quantities: the starch water reached, and the wort the grain retains (about a litre per kilogram) after sparging. Retained wort has the composition of the wort, so a short sparge costs body and colour as well as gravity. After the kettle, losses are volumes rather than gravity: hops absorb wort at its own strength and leave it in the trub.
The mash is checked against published mashes replayed through the whole simulator: the Congress mash of the standard malt (Hagen 1999), isothermal rests from 57 to 80°C (Laus et al. 2022), mash-in temperatures from 45 to 72°C (Evans et al. 2005), and a fully measured 200-litre pilot brew (Langenaeken et al. 2020).
The step and graph editor
A mash schedule is a single temperature curve. Step chips are derived from it, and editing either representation writes back to the curve. Between the points set by the brewer the schedule is a monotone spline; ramps rise at a realistic rate, and the tun loses heat by Newton's law of cooling, scaled with vessel size as $(20/V)^{1/3}$. Converting a drawn curve back to a list of steps uses a weighted distance: two curves are considered the same if they are indistinguishable under a weight that is large where enzymes are active or being inactivated, so a half-degree variation at 40°C is discarded and the same variation at 65°C is kept.
4.Fermentation
During fermentation the yeast converts sugar to ethanol and CO₂ and, as by-products of its growth and metabolism, produces esters, higher alcohols, phenols, diacetyl, sulfur compounds and other flavour-active substances. Their amounts depend on the strain and on the conditions (temperature, pitch rate, oxygen, nitrogen, pressure, gravity). Proportion models the fermentation as a yeast cell: a coupled system of rate laws, integrated over the schedule, in which growth, sugar uptake, the membrane and each flavour pathway read the same state at the same time.
This section is drawn on a poster: the yeast cell, as the model sees it. Each solid arrow is a rate law in the simulator; amber arrows are closed forms; dotted arrows are yeast biology the model does not yet include. Clicking an element shows the law and the source file. The poster is also available as an A0 PDF.
The cell: sugars, oxygen, nitrogen, growth
Sugars enter through transporters, which are themselves state variables. Glucose, fructose and sucrose use the hexose carriers; maltose and maltotriose use their own proton symporters, which the cell synthesises from its nitrogen while maltose is present and glucose absent, and loses with a half-life of about two days, or within an hour when glucose returns (Rautio & Londesborough 2003). Each uptake saturates in its sugar and scales with the number of living cells and their carriers; it is reduced by low temperature (a cardinal-temperature curve per strain, Rosso et al. 1993), by ethanol in the membrane, and by zinc deficiency.
Oxygen is consumed in the first hours. The pitched cells take it up at a measured rate and use it to synthesise ergosterol (twelve O₂ per sterol), first completing the squalene they arrived with; oxygen that sterol synthesis cannot use is consumed by other processes. The pitch form sets the initial state: a liquid pack arrives with little sterol and about two per cent of its transporters functional, a stirred starter with most of both, dry yeast with all. The sterol content gates division (a cell divides only when its membrane sterol is above a threshold, so an aerated wort grows more cells from the same pitch; Aries & Kirsop 1977) and, in the lag phase, supplies the transporters, which are installed once the oxygen is depleted (Quain et al. 1981).
Nitrogen is held as a per-cell quota. Amino acids are taken up by class in the measured order (Lekkas 2014), peptides through a separate channel, and growth proceeds at a rate set by the quota (the Droop model). The quota also determines whether the cell can synthesise carriers, and its death rate. Growth is additionally limited by the carbon taken up, since maltotriose does not support division. Cell size depends on temperature and on dissolved CO₂, so a pressure fermentation produces fewer, larger cells. Cells die at a rate set by the ethanol concentration, the temperature and the number of divisions they have undergone (van Uden 1985; Casey, Magnus & Ingledew 1984); they flocculate once the sugar is depleted and growth has stopped, faster at low temperature, and settle according to Stokes' law. The settled bed continues to take up diacetyl and acetaldehyde by diffusion. The cells still suspended at packaging constitute the yeast haze.
Heat and pressure
Two balances accompany the cell model. Temperature follows a heat balance: fermentation releases about 0.56 kJ per gram of sugar, the vessel loses heat to its surroundings, and the net heat flow sets the beer temperature; a vigorous fermentation can rise above its set point. Pressure follows a CO₂ balance: in a sealed vessel the CO₂ produced partitions between the liquid (Henry's law) and the headspace, a spunding valve limits the gauge pressure, and the excess dissolved CO₂ acts on cell size and on ester synthesis. The CO₂ evolved also strips volatiles: hop oil, H₂S, methanethiol and DMS leave with it at rates set by their Henry constants, so a cold or pressurised fermentation retains more of them.
Flavour chemistry
The central pathway is glycolysis to pyruvate, decarboxylation of pyruvate to acetaldehyde, and reduction of acetaldehyde to ethanol, with molar yields at each step. Glycerol is produced as the redox by-product. A small fraction of the acetaldehyde is converted to acetyl-CoA, the pool from which ergosterol, the fatty acids and the acetate esters are synthesised. The flavour compounds branch from this pathway as rate laws in the same integration:
- Higher alcohols are produced through the keto acids. Each amino acid the cell takes up is divided between protein synthesis and the Ehrlich pathway to its corresponding alcohol (leucine to isoamyl alcohol, valine to isobutanol, phenylalanine to 2-phenylethanol, methionine to methionol), and the same keto acids are synthesised from sugar when growth no longer consumes them for protein (Äyräpää 1971). Aldehydes from malt kilning are reduced by the yeast's alcohol dehydrogenase.
- Esters are synthesised by two enzyme families (Verstrepen et al. 2003; Saerens et al. 2008). ATF1 condenses an alcohol with acetyl-CoA, so each acetate ester is nearly proportional to its parent alcohol; its rate increases with temperature and decreases with dissolved oxygen (Fujii et al. 1997), with dissolved CO₂ (Landaud et al. 2001), and while the growing cell directs its acetyl-CoA to lipid synthesis (Thurston et al. 1982). EHT1 and EEB1 synthesise the ethyl esters as the medium-chain fatty acids are released by fatty-acid synthase, and the cell retains part of them.
- Diacetyl is modelled as two pools: α-acetolactate leaks from valine synthesis during growth, decarboxylates spontaneously to diacetyl in the beer, and is taken up and reduced by suspended cells and by the bed, each step with its own temperature dependence (Krogerus & Gibson 2013). The two steps have different Q₁₀ values, which is the basis of the diacetyl rest, and the reason a cold fermentation without a rest leaves residual diacetyl.
- Acetaldehyde leaves the pathway in proportion to the strain's leak rate and is reduced again by the remaining cells, so the residual depends on how early the beer is chilled or racked.
- Sulfur compounds. Sulfate is reduced to sulfite (the SO₂ a strain leaves, more in lagers than in ales) and to sulfide; H₂S production rises under nitrogen limitation, methanethiol is formed from methionine, and both are stripped by the CO₂ and lost during maturation. DMS is only stripped; the yeast does not produce it.
- Phenols are produced only by POF-positive strains, which decarboxylate the hydroxycinnamic acids of the grist and the hops (ferulic acid to 4-vinylguaiacol), the amount increased by a ferulic acid rest; Brettanomyces reduces the vinyl phenols to ethyl phenols.
- Organic acids (acetic, lactic, succinic, and the medium-chain fatty acids) are produced from the acetyl-CoA pool in proportion to the fermentation flux and to the biomass formed.
How different strains make different beer
The laws are the same for every strain; the strains differ in their parameters. A strain carries its cardinal temperatures, the capacity of its maltotriose transporter, its ethanol tolerance (one constant that scales the ethanol concentration every membrane process responds to, fitted so that the strain stops at the producer's stated tolerance), its flocculation rating, its POF status, its thiol-release competence, its geraniol reductase activity, its SO₂ and H₂S yields, and a flavour fingerprint: the ester, higher alcohol and phenol levels it produces on a reference wort, which anchor the rate laws above. The same wort fermented with two strains gives two different beers from these parameters. The comparator below shows the fingerprints scaled by the model's temperature laws.
Attenuation: what a strain can eat
All brewing yeasts ferment glucose, fructose, sucrose and maltose. Strains differ in their use of maltotriose, about a tenth of the wort's extract: some take all of it, some none, and this one property accounts for most of the difference between a 68% and an 80% attenuator. Maltotriose cannot be hydrolysed outside the cell; it is transported whole by the AGT1 carrier (MTT1 in lagers) and hydrolysed inside. Some ale strains carry a truncated gene and take up none. The others synthesise the carrier only while maltose induces it and glucose does not repress it, using the wort's nitrogen, and lose it once growth has stopped; maltose competes for the same carrier, so maltotriose uptake proceeds mainly once the maltose is nearly consumed. Maltotriose use is therefore limited by a carrier that is being lost while its substrate runs low, and the maltotriose remaining at the end is stranded rather than unfermentable. The strain parameter is the capacity of the carrier, set so that the strain reaches its producer's published midpoint on the standard laboratory wort, the Congress mash; the outcome then shifts by a point or two with pitch rate, temperature, nitrogen and time.
The same mechanism explains why a beer bottled with residual maltotriose does not over-carbonate even with fresh yeast and priming sugar: the priming glucose inactivates the carriers, there is no maltose to induce new ones, and no nitrogen to synthesise them from. A beer bottled with residual maltose does referment. Brettanomyces, which needs no carrier, ferments the stranded maltotriose, and dextrin is fermented only by diastatic strains and Brettanomyces, which hydrolyse it outside the cell. Two quantities are deliberately not strain parameters: residual maltose (a strain never leaves maltose behind) and flocculation as an endpoint (a strain that settles early reads lower on day ten than at its limit, and the model shows this in the schedule rather than in the strain's parameters).
Hops in the fermenter
Dry hops arrive on a given day or at a given gravity, and each addition releases its oil, its thiol precursors and the sugar its enzymes free from the dextrin (hop creep) into the live pools. The yeast then acts on them. IRC7 releases the varietal thiols (3MH, 4MMP) from their bound forms in proportion to the fermentation rate, the strain's allele determining the extent (lager strains carry a truncated gene); ATF1 acetylates part of the 3MH; geraniol is taken up as fermentation proceeds and a third of it is returned as citronellol (Takoi et al. 2014). Myrcene, limonene and pinene adsorb to the cells and are removed with the crop (Haslbeck et al. 2017); the remaining oil partitions between the beer and the CO₂ that strips it. The sugar from hop creep is consumed by the cells still in suspension, which restarts growth, nitrogen uptake and α-acetolactate production. There is no explicit rule for dry-hop timing; the effects follow from the fermentation rate and the cell count at the time of addition.
Bottle and shelf
Bottle conditioning runs the same cell model on the priming sugar. The cells that enter the bottle are those still in suspension, with their remaining glycogen, nitrogen and carriers, plus any added bottling yeast; the headspace oxygen and the oxygen entering through the closure supply a small amount of sterol, which allows a depleted population to divide and carbonate. Brettanomyces in the bottle ferments the stranded maltotriose and the dextrin regardless of the closure. On the shelf the beer ages according to closed-form laws: esters hydrolyse, Strecker aldehydes and staling carbonyls increase (more slowly in the presence of the SO₂ the yeast left), thiols and hop oil decline, and diacetyl and the phenols are stable. Co-pitched organisms follow their own laws: Brettanomyces with the Custers effect, acetic acid production from ethanol and oxygen, glucoamylase and vinylphenol reductase; lactic bacteria with homo- or heterofermentative metabolism, inhibited by iso-α acids and by their own lactate, with Pediococcus releasing α-acetolactate into the shared diacetyl pool.
5.The flavour forecast
Predicting concentrations is chemistry; predicting flavour from them is psychophysics. Perception is non-linear, compounds mask and reinforce one another, and thresholds vary between people. Proportion bases this step on published sensory science.
From molecules to aroma
A compound's odour activity value is its concentration divided by its detection threshold (isoamyl acetate 1.4 mg/L, diacetyl 0.1 mg/L; Meilgaard 1975). Perceived intensity is the product of two quantities: the fraction of people who detect the compound at this concentration (a psychometric curve, 50% at threshold) and its intensity once detected (receptor occupancy, which saturates as the receptors fill). The threshold is the midpoint of a curve, so a compound just below it is still perceived faintly.
Above the level of single compounds, the forecast infers odour objects (banana, apple, clove, rose, tropical fruit, funk, and the faults) from the full set of odour activity values with a Bayesian model. Each object has a probability of being present and an intensity; the evidence from sub-threshold compounds adds within an object; and objects that explain the same compounds compete for them, so isoamyl acetate alone is read as banana rather than as generic fruit. The profile the app displays, about twenty dimensions from roast and body to citrus and funk, is built from these objects through the same curve and binned into none, low, moderate, high and intense.
Faults and styles
A single table defines where each compound becomes a fault: the higher alcohols as a pooled odour activity, ethyl acetate above 80 mg/L, diacetyl, acetaldehyde, H₂S, DMS, methanethiol, the medium-chain acids and methional, each with an onset at which the fault is recognised and a level at which it is unpleasant. Below its onset a compound contributes to the pleasant objects; above it the fault object takes over. The same table drives the warnings, so a warning and a fault aroma are always consistent. Each warning lists the contributing factors read from the simulation (fermentation temperature, pitch rate, nitrogen, the absence of a diacetyl rest) and the corresponding correction. The beer is also compared with the BJCP style guidelines, by its vital statistics and by whether its profile shows the characters a style requires or excludes; the styles it falls within are reported as a readout, not used as a target.
References
The principal sources, collected from the citations in the code.
Water and mash
- Kolbach, P. (1953), residual alkalinity. Troester, K. (2009), mash pH, braukaiser.com. Brungard, M., Bru'n Water. de Clerck, J., A Textbook of Brewing. Briggs, D.E. et al. (2004), Brewing: Science and Practice.
- Langenaeken et al. (2020) J. Inst. Brew. 126:253, a carbohydrate mass balance from barley to beer. Bathgate (2016) J. Inst. Brew. 122:197, limit dextrins. Stenholm & Home (1999), limit dextrinase.
- De Schepper et al. (2021, 2023); De Schepper & Courtin (2022), amylase inactivation, granule populations and gelatinisation. Henson & Duke (2016) J. Am. Soc. Brew. Chem. 74:12, 74:13, amylase thermostability and maltose.
- Laus et al. (2022); Evans et al. (2005); Hagen (1999); Rittenauer et al. (2021); Endres et al. (2022), the mashes the model is checked against. Kandra et al. (2006); MacGregor et al. (1994), barley α-amylase's action pattern.
- Balling, C.J.N. (1843); ASBC and OIV density tables; Tabarie's rule, gravity, extract and alcohol.
Yeast
- Boulton & Quain (2001) Brewing Yeast and Fermentation. White & Zainasheff (2010) Yeast.
- Aries & Kirsop (1977), sterol synthesis and oxygen uptake by the pitch. Quain, Thurston & Tubb (1981), the lag phase. Thurston, Taylor & Ahvenainen (1982), lipid synthesis and the acetyl charge. Ahvenainen (1982); Varela et al. (2004), the state of starters and stored pitches.
- Rosso et al. (1993), the cardinal-temperature rate model. Casey, Magnus & Ingledew (1984); van Uden (1985); Sá-Correia & van Uden (1983); Kalmokoff & Ingledew (1985), ethanol and temperature effects on survival and growth.
- Alves et al. (2008); Vidgren et al. (2005); Vidgren & Gibson (2018); Rautio et al. (2007); Rautio & Londesborough (2003), the maltose and maltotriose carriers. Busturia & Lagunas (1986), hexose transporter turnover.
- Hill & Stewart (2019); Lekkas et al. (2014); Ledley et al. (2023); Förster et al. (2003), wort nitrogen, its uptake classes and the cell's demand. Bromberg et al. (1997); De Nicola & Walker (2011), zinc. Zakhartsev & Reuss (2018), cell size. Verstrepen et al. (2003); Stratford & Assinder (1991), flocculation.
Flavour
- Verstrepen et al. (2003); Saerens et al. (2008, 2010); Fujii et al. (1997); Minetoki et al. (1993); Landaud et al. (2001), esters, ATF1 and EHT1/EEB1. Nykänen (1977); Taylor & Kirsop (1977), medium-chain acids and their esters.
- Äyräpää (1971); Crépin et al. (2017); Rollero et al. (2017); Verbelen et al. (2009); Kucharczyk et al. (2017), higher alcohols. Féchir et al. (2021), methional.
- Krogerus & Gibson (2013), diacetyl. Vanbeneden et al. (2008); Coghe et al. (2004), phenols. Cherest et al. (1997), sulfate uptake.
- Roncoroni et al. (2011); Roland et al. (2016); Haslbeck et al. (2017, 2018); Takoi et al. (2014, 2016); Kirkpatrick & Shellhammer (2018), thiols, hop oil on yeast, geraniol, hop creep. Blomqvist et al. (2010), Brettanomyces.
- Meilgaard (1975), sensory thresholds. Vanderhaegen et al. (2007); Saison et al. (2010), ageing. BJCP (2021) style guidelines.
Each widget on this page reimplements its source locally so that the page works offline. The code is the authoritative version.