Status: verified · Version 1 · Jan Estrada Pabon (ORCID) · 2026-10-25 · no DOI yet
Finding. Given only cyclopentadiene and methyl acrylate, mepd's network explorer found the endo and exo Diels-Alder adducts. On g-xTB free energies the lowest transition states give endo:exo 34:66; DFT single points at the same structures give 72:28, against 77:23 measured in benzene at 80 °C.
A Diels-Alder reaction joins a diene and an alkene into a six-membered ring. Cyclopentadiene with methyl acrylate gives two products that differ only in which way the ester group points, endo or exo (endo-exo isomerism). Which one forms more is set by a small difference between two transition states, under a kilocalorie per mole. Lording et al. measured 77:23 endo:exo in benzene at 80 °C (Chem. Sci. 2020).
Programs that map reaction networks automatically are usually checked against other computations. Here the check is the experiment, and the program is told nothing about the products: it has to find the reactions itself and predict how much of each product forms.1
mepd's network explorer started from cyclopentadiene and methyl acrylate side by side. It proposed products by short simulated collisions, optimized them, and searched for the transition state of each reaction. Only reactions whose barriers fit the conditions (80 °C, 6.5 h) were followed further, and a kinetic model decided which species to expand next.2 Every reaction that mattered to the kinetics then had its conformers and alternative mechanisms sampled, which is how the different diastereomers appear.3 All of this ran on g-xTB, a fast approximate quantum-chemistry method.
For the three cycloaddition transition states found, we then recomputed the energies with a density functional (ωB97X-D/def2-TZVP) at the same structures, keeping g-xTB's thermal corrections.4 The endo:exo ratio comes from the lowest transition state of each diastereomer.5 Which adduct is endo or exo was read from the 3D structures.6
The explorer found 64 species, among them one exo and two endo adducts (the two endo are mirror images). Click a species or a transition state (‡) to turn it in 3D and see its energies:
Every species and step the explorer found, by energy. Open it on its own page.
| Barrier (kcal/mol) | g-xTB | DFT at g-xTB structures |
|---|---|---|
| exo | 31.6 | 29.1 |
| endo | 32.1 | 28.4 |
| endo, mirror image | 33.7 | 29.8 |
| endo:exo | 34:66 | 72:28 |
| measured | 77:23 |
g-xTB puts the exo transition state lowest and so predicts the wrong major product. With DFT energies the endo one is lowest and the ratio is close to the measured one. The explorer's own kinetic model on g-xTB energies gives 36:64 and converts only 0.7% of the reactants in 6.5 h, while the experiment reports an 86% yield: g-xTB's barrier is too high as well.7
The two endo mirror images should have the same barrier but differ by 1.6 kcal/mol at g-xTB: the sampling did not find the best transition-state conformer for one of them.8
Lording, Fallon, Sherburn and Paddon-Row, Chem. Sci. 11, 11915 (2020), Table 1: cyclopentadiene + methyl acrylate, 1 M each in benzene, sealed tube, 80 °C, 6.5 h, 86% isolated yield, endo:exo 77:23 by quantitative ¹H NMR. Their CBS-QB3 calculations with a benzene continuum model give 76:24. The experimental values are in data/experiment.csv.
mepd discovery expand from one structure holding both molecules (reproduce/rerun/start_complex.xyz),
neutral singlet, two rounds. Products were proposed by the collision generator: short steered
molecular-dynamics pulls between atom pairs (GFN2-xTB via tblite), including double pulls for
cycloadditions, quenched and minimized at g-xTB. Each new pair of species was connected by one
transition-state optimization from a geodesic interpolation, falling back to a recursive path search.
Transition states were confirmed by IRC where the kinetics needed them. Searches were pruned only by
barrier height: a cutoff from the conditions (80 °C, 6.5 h) plus a 10 kcal/mol margin, applied
network-wide, and pieces of path searches ran only when the kinetics put material at their ends.
Kinetics: free energies (quasi-RRHO from g-xTB Hessians, 1 M standard state), species of several
molecules counted as separated molecules. All 64 species and their final fractions are in
data/species.csv.
Each step open within the cutoff and touching a populated species was sampled with mepd channels
(conformers of both ends, two alternative atom mappings, a transition state and IRC per distinct path).
Its direct channels replaced the step's first transition state; other channels it found joined the
network. The endo and exo transition states used here come from this sampling.
ωB97X-D/def2-TZVP (Psi4) at the g-xTB transition states and at the starting complex split into its two molecules. Each DFT barrier is the DFT electronic barrier plus g-xTB's free-energy correction for that barrier (the g-xTB free-energy barrier minus the g-xTB electronic barrier, both from the separated molecules). Gas phase, no solvent model, no reoptimization at DFT. Energies are in data/cycloaddition_ts.csv.
endo fraction = 1 / (1 + exp(−ΔG / RT)) at 80 °C, with ΔG the free-energy barrier of the lowest exo transition state minus that of the lowest endo one. Each diastereomer forms as a pair of mirror images with equal barriers, so the pair factor cancels. The explorer's own kinetic model (36:64) instead counts every transition state it found, including the higher endo mirror image, and only one exo.
The three adducts have the same bonding, so SMILES without stereochemistry does not tell them apart. In each norbornene adduct, the ester group is endo when its carbon is closer to the midpoint of the C=C bond than to the CH₂ bridge, and exo otherwise (reproduce/rerun/build_tables.py). Species 34 and 58 are endo enantiomers, species 61 is exo.
With g-xTB free energies the lowest barrier is 31.6 kcal/mol and the kinetic model converts 0.7% in 6.5 h. With the DFT energies the lowest barrier is 28.4 kcal/mol. Solvent is not included in either.
Mirror-image transition states have identical energies. The two endo transition states found differ by 1.6 kcal/mol at g-xTB (32.1 and 33.7) and by 1.4 kcal/mol at DFT (28.4 and 29.8), so one of them is a higher conformer. The exo mirror image was not found. Neither changes the ratio computed from the lowest transition state of each diastereomer.
Level of theory. Exploration, geometries, frequencies and kinetics: g-xTB 2.0.1, gas phase. Collision proposals: GFN2-xTB (tblite). Single points: ωB97X-D/def2-TZVP (Psi4) at g-xTB geometries.
Software.
Chemical domain.
Settings the result depends on.
Tested on 1. One reaction, chosen as the first solution-phase rung of a ladder of experimentally measured networks because its selectivity is measured and small. Not a sample of Diels-Alder reactions.
Not tested.
Known exceptions.
Reproducibility: statistical. The g-xTB energies of the stored structures reproduce to 1e-6 Hartree and the endo/exo assignments exactly (quick rerun). Two explorations on the same inputs gave identical species and fractions; across machines or library versions the collision dynamics and optimizations may differ.
| File | Size | sha256 | What it is |
|---|---|---|---|
data/species.csv |
2 kB | f8bcf3b88236… |
Every species the explorer found, with its g-xTB energy and final fraction in the kinetic model. |
data/cycloaddition_ts.csv |
1 kB | 2e80dcdceb81… |
The three cycloaddition transition states, with g-xTB and DFT energies. |
data/steps.csv |
2 kB | a8b98cd13461… |
Every step the explorer verified (a transition state joining two species), with its g-xTB energies. |
data/network.xyz |
0.1 MB | 9363f3bbc9d0… |
Multi-frame XYZ (Angstrom) of every species ("species K") and every transition state ("step I transition state"). |
data/experiment.csv |
1 kB | ba6b88eb3288… |
The measured endo:exo ratio and conditions (Lording et al. 2020, Table 1). |
data/structures.xyz |
12 kB | f13f8450a05a… |
Multi-frame XYZ (Angstrom): the starting complex, the three transition states and the three adducts; the comment line names each frame. |
data/species.csv columns:
data/cycloaddition_ts.csv columns:
data/steps.csv columns:
check.py recomputes all 29 numbers in this report from these files and compares them with expected_numbers.json.
Software. Python 3.12, mepd with g-xTB 2.0.1 and tblite, RDKit; Psi4 1.11 for the single points.
mepd version. Git commit 848527e, the start of the commit hash that identifies this exact version of the mepd code (git checkout 848527e).
Cost. Exploration 52 min on 32 cores; DFT single points about 15 min on 4 cores.
Download. F0006-v1.zip holds the tables, the structures, the check script and the scripts
that ran the exploration and the DFT single points.
| File | What it is |
|---|---|
check.py |
Recomputes every number in this report from data/. Needs only Python 3. |
data/species.csv |
Every species the explorer found, its g-xTB energy and its final fraction in the kinetic model. |
data/cycloaddition_ts.csv |
The three cycloaddition transition states with g-xTB and DFT energies. |
data/structures.xyz |
Starting complex, transition states and adducts (Å). |
data/steps.csv |
Every step found: its two species, transition-state energy and barriers. |
data/network.xyz |
Every species and transition state (Å). |
data/experiment.csv |
The measured ratio and conditions. |
reproduce/rerun/start_complex.xyz |
The input: cyclopentadiene and methyl acrylate side by side. |
reproduce/rerun/explore.sh |
The exploration (mepd discovery expand). Needs mepd, g-xTB and tblite. |
reproduce/rerun/collect_dft_inputs.py |
Takes the reactants and the cycloaddition transition states out of an exploration. |
reproduce/rerun/dft_single_points.py |
ωB97X-D/def2-TZVP single points. Needs Psi4. |
reproduce/rerun/build_tables.py |
Builds the tables and structures in data/ from an exploration and the DFT energies. Needs mepd and RDKit. |
reproduce/network_page.py |
Draws the clickable network with 3D structures (report/network.html) from data/. Needs numpy; the page loads its 3D viewer, 3Dmol.js, from cdnjs.cloudflare.com. |
reproduce/rerun/quick_rerun.py |
Recomputes the g-xTB energies and the endo/exo assignments from data/structures.xyz. Needs mepd and RDKit. |
Check the numbers (a second):
python check.py
Quick rerun (about a minute; mepd with g-xTB, and RDKit):
python reproduce/rerun/quick_rerun.py --data data
Rerun everything. mepd is not public yet; the exploration used git commit 848527e (git checkout 848527e), which is in the history of its develop branch. It took 52 minutes with 32 parallel processes;
the DFT single points about 15 minutes on 4 cores. Choose the number of processes with the first argument
of explore.sh.
bash reproduce/rerun/explore.sh 32 run
python reproduce/rerun/collect_dft_inputs.py --run-dir run --out dft
cd dft
python ../reproduce/rerun/dft_single_points.py --out ts_sp.json ts_*.xyz
python ../reproduce/rerun/dft_single_points.py --split --out r_sp.json reactants.xyz
cd ..
python reproduce/rerun/build_tables.py --run-dir run --dft-dir dft --out rebuilt
python reproduce/network_page.py
The species are numbered in the order the explorer found them. A rerun on another machine may number them differently or find other transition-state conformers, so compare the barriers and ratios rather than the indices.
Reproductions.
Captured: recorded by the run itself (provenance.json). The exploration recorded its mepd provenance (command, package versions, program hashes); its code is git commit 848527e. The DFT single points were run by the scripts in reproduce/rerun, which reproduce the stored inputs byte for byte and the reactant energy to 1e-12 Hartree.
Cited.
Software used.