The Soai reaction is an asymmetric autocatalytic reaction: a catalyst derived from its product promotes formation of more molecules with the same configuration. It can amplify a small imbalance between two mirror-image molecules. Kenso Soai and colleagues reported this asymmetric amplification in their 1995 paper.

This article explains the reaction and uses chematic to assign molecular R/S labels. You can change the starting mixture in the interactive chiral amplification model.

How the Soai reaction works: the product helps make more of itself

The starting materials are pyrimidine-5-carbaldehydes and diisopropylzinc. Their addition reaction produces a zinc alkoxide that acts as a catalyst; workup gives the corresponding pyrimidyl alcohol. The product-derived catalyst helps form more product with the same configuration. See Athavale and colleagues’ structural and mechanistic study.

When a product promotes its own formation, the process is called autocatalysis. In the Soai reaction, the amount of product grows and the proportion of the more abundant enantiomer can increase too. The growing imbalance in proportions is asymmetric amplification.

Molecular handedness in life and the 2026 Nobel Prize in Chemistry

Biological molecules often favor one of two mirror-image forms, a property called homochirality. The Soai reaction experimentally demonstrates how a chemical reaction can amplify a small initial imbalance, providing a way to study the origin of this preference. The University of Tokyo’s account explains this connection.

The 2026 Nobel Prize in Chemistry recognizes Henri B. Kagan and Kenso Soai for discovering nonlinear effects and autocatalysis in asymmetric organic synthesis. The award is documented in the ACS announcement and Tokyo University of Science’s announcement.

Below, lactic acid provides an introductory structure example for stereochemistry calculations with chematic 1.1.4. An interactive Frank model illustrates the principle of asymmetric amplification.

What R/S means: the same formula, different configurations

Your left and right hands are mirror images that cannot be superimposed by rotation. Molecules with this relationship are called enantiomers.

We can read the two lactic-acid enantiomers as SMILES strings. In this example, the atom order stays fixed while @ and @@ change.

import chematic

smiles = ["C[C@H](O)C(=O)O", "C[C@@H](O)C(=O)O"]
molecules = [chematic.from_smiles(s) for s in smiles]
for mol in molecules:
    label = mol.cip_stereo(mode="accurate")[0]["descriptor"]
    print(label, mol.formula, f"{mol.rdkit_mw:.3f}")
S C3H6O3 90.078
R C3H6O3 90.078

The formula and average molecular weight match, while the configurations are S and R. These labels follow the Cahn–Ingold–Prelog priority rules. Optical rotation uses separate + and − designations. See IUPAC’s definitions of R/S and optical activity.

S: C[C@H](O)C(=O)O R: C[C@@H](O)C(=O)O
S lactic acid drawn by chematic R lactic acid drawn by chematic

The figures come from mol.svg() in the same published package. SMILES uses @ and @@ relative to its atom order; the R/S labels are calculated from the parsed structure. This notation is described in the OpenSMILES specification.

Measuring the imbalance with ee: 51:49 gives 2% ee

Enantiomeric excess, or ee, describes how much one enantiomer exceeds the other. For molar amounts R and S, its magnitude is:

ee (%) = 100 × |R − S| / (R + S)

Thus 51:49 gives 2% ee, and 90:10 gives 80% ee. A 50:50 mixture is a racemate with 0% ee. See IUPAC’s definition.

Kagan and colleagues reported nonlinear relationships between the ee of the chiral catalyst component and the product in their 1986 paper. In the Soai reaction, asymmetric autocatalysis amplifies a small starting ee.

Lactic acid above serves as an example for reading R/S and understanding ee.

Simulate chiral amplification: compare 51:49 with 50:50

Move the initial R fraction below. The blue line shows your selected conditions. The dashed line uses the same starting ratio with no extra cross-inhibition. The plot uses signed ee: positive for an excess of R, negative for an excess of S.

Frank-model examples: 51:49 and 49:51 amplify in opposite directions, while 50:50 stays at zero ee.

Press “Try 50:50”: the line stays at zero. This deterministic calculation preserves symmetry when the two initial amounts are equal. At 49:51, amplification favors S. Setting δ to zero preserves the initial ee.

This is a dimensionless model based on Frank’s 1953 treatment. R and S represent generic enantiomers. The parameters illustrate amplification conditions and are not fitted to Soai-reaction measurements. Sources are Frank’s original paper and the explicit equations in Deck et al., supplementary section 9.1, equations 26 and 27, preprint.

dR/dτ = R × {1 − R − (1 + δ)S}
dS/dτ = S × {1 − S − (1 + δ)R}

R and S are scaled concentrations, with an initial total of 1; τ is dimensionless time. The positive terms describe growth, and the negative quadratic terms describe self-inhibition and cross-inhibition. The parameter δ sets how much stronger cross-inhibition is than self-inhibition.

Starting at 51:49 with δ = 1 gives 99.9871% signed ee at τ = 20. With δ = 0, it remains 2.0000%. These are numerical results from the equations above, using fourth-order Runge–Kutta with a step of 0.01 and a check at half that step. No conversion to seconds or minutes is assigned. Download the model data as CSV.

Carry stereochemistry into molecular comparisons

The distinction also matters when preparing features for a compound list. Compare Morgan fingerprints, which encode structural neighborhoods as bits, for our two lactic-acid molecules:

a, b = molecules
print(a.rdkit_ecfp_config(2, 2048) == b.rdkit_ecfp_config(2, 2048))
print(
    a.rdkit_ecfp_config(2, 2048, include_chirality=True)
    == b.rdkit_ecfp_config(2, 2048, include_chirality=True)
)
True
False

For this pair, the fingerprints match without chirality and differ when chirality is included. You can choose whether the features describe the shared framework alone or also encode stereochemistry. Both calls use radius 2 and 2,048 bits.

Run the example locally

Save chirality.py, then run:

python -m pip install "chematic==1.1.4"
python chirality.py

The script writes molecular SVGs, JSON results, and model data as CSV. The published chematic 1.1.4 Python package handles the structures; the script’s Frank model handles amplification. We ran it on October 15, 2026, with Python 3.13.6 on macOS arm64. Full results and package and code provenance accompany the example.