← All findings

Contents

F0001: A g-xTB benchmark set of 31,617 Reaction-QM transition states for testing reaction-path searches

Status: verified · Version 3, updated 2026-10-24 · Jan Estrada Pabon (ORCID) · 2026-10-24 · no DOI yet

Finding. Of 63,954 Reaction-QM B3LYP-RXN reference transition states re-converged at g-xTB, 31,617 (49.4%) are first-order saddles whose IRC reaches the reference reactant and product by bond connectivity and stereochemistry, without minimization turning either IRC end into another molecule. They form a g-xTB-level benchmark set for reaction-path searches; where the other 32,337 go is the subject of a later finding (in preparation).

Updated in version 3 (2026-10-24): corrected. Where minimizing an IRC end changed its species, the IRC is now followed again with a ten times stricter stopping point before the reaction is left out. 31,617 of the same 63,954 reactions are kept (version 2: 29,116); 2,501 reactions rejoin the set. Version 2 left them out because its IRC stopped short. How this Finding changed

Background

mepd is a tool for mapping reaction mechanisms. Its search, mepd channels, takes a reactant and a product and looks for the transition state between them: the top of the energy hill the reaction must climb. Its height, the activation energy or barrier, sets how fast the reaction goes.

To test that search we need reactions whose transition state is already known. The searches run on g-xTB, a fast approximate quantum-chemistry method, so the known answer has to exist on g-xTB's energy surface. A search can only be judged against a transition state that exists at the level it searches on.

Reaction-QM is a public dataset of about 200,000 reactions whose transition states were computed with B3LYP-D3, a widely used density functional. This Finding sorts out which of them carry over to g-xTB, and so can serve as test cases.

Approach

We gave g-xTB each B3LYP transition state as a starting point, with no searching involved, and let it settle into the nearest g-xTB transition state, accepting it only when the optimization converged tightly and the structure has exactly one imaginary frequency.1 From there we followed the path downhill in both directions (the IRC) and minimized each end.2 Where minimizing turned an IRC end into another molecule, we followed the IRC again with a ten times stricter stopping point, and that IRC decides.6

A reaction is kept when those two ends are the dataset's reactant and product: same atoms, bonded the same way, with the same 3D arrangement. The IRC itself has to get there: minimizing an IRC end must not turn it into another molecule.3 The kept reactions, each with its g-xTB structures, make up the benchmark set.4 We screened 63,954 reactions, about a third of the dataset and a fair sample of it.5

Results

49.4% are kept. For 31,617 of the 63,954 reactions, g-xTB has a transition state whose IRC connects the same reactant and product.

What g-xTB did with the B3LYP transition state Share
Kept: its IRC connects the same reactant and product 49.4%
Same reactant and product only after minimizing changed an IRC end, even with the stricter IRC6 0.5%
Connects only one of them 38.7%
Connects something else 9.3%
Stereochemistry could not be decided 0.2%
Both downhill paths end in the same place 0.8%
Downhill path failed, or an end could not be minimized 0.3%
Not a first-order saddle at g-xTB (not exactly one imaginary frequency) 0.5%
Optimization did not converge 0.2%

These are outcomes at g-xTB; they say nothing about whether the B3LYP transition states are right at B3LYP. The share kept is about the same for reactions of one molecule and of several (48.9% and 49.8%). Where the other 32,337 go is the subject of Finding F0002 (in preparation).

The set. The 31,617 kept reactions, with their minimized reactant and product and their g-xTB transition state, are in the data below.7 mepd's search benchmarks draw only from this set, and a search counts as a success when it finds this transition state or a lower one.4 Screening a random sample again gives the same outcomes.8

History

How this Finding has changed as more data came in, newest first.

Version Date Change What changed
3 2026-10-24 Corrected Where minimizing an IRC end changed its species, the IRC is now followed again with a ten times stricter stopping point before the reaction is left out. 31,617 of the same 63,954 reactions are kept (version 2: 29,116); 2,501 reactions rejoin the set. Version 2 left them out because its IRC stopped short.
2 2026-10-22 Corrected Re-screened with checked transition states and IRCs: tight convergence with exact Hessians, frequency checks, minimized IRC ends, strict stereochemistry, and an IRC that must itself reach both ends. 29,116 of the same 63,954 reactions are kept. Version 1's set of 29,833 came from a screen without these checks.
1 2026-09-19 First version First version.

Errors corrected in version 3:

Errors corrected in version 2:

Version 2 (2026-10-22) said: Outdated: corrected in version 3. Read version 2, with its data.

Of 63,954 Reaction-QM B3LYP-RXN reference transition states re-converged at g-xTB, 29,116 (45.5%) are first-order saddles whose IRC reaches the reference reactant and product by bond connectivity and stereochemistry, without minimization turning either IRC end into another molecule. They form a g-xTB-level benchmark set for reaction-path searches; where the other 34,838 go is the subject of a later finding (in preparation).

Version 1 (2026-09-19) said: Outdated: corrected in version 2. Read version 1, with its data.

Of 63,954 Reaction-QM B3LYP-RXN reference transition states re-converged at g-xTB, 29,833 (46.6%) stay saddles whose IRC connects the reference reactant and product by bond connectivity and stereochemistry. They form a g-xTB-level benchmark set for reaction-path searches; where the other 34,121 go is the subject of a later finding (in preparation).

Details

1. Re-optimizing the transition state

Each Reaction-QM B3LYP-D3/TZVP transition-state geometry was optimized to a first-order saddle at g-xTB 2.0.1 with Sella (order 1, through ASE and mepd's g-xTB engine), starting from g-xTB's exact Hessian, until the largest atomic force was below 0.001 eV/Å: at most 1000 steps, then up to two more rounds of 1000 from where it stopped. A converged structure was then checked by its frequencies and accepted only with exactly one imaginary mode below −10 cm⁻¹. Gas phase, one core, a one-hour limit per reaction. Settings of mepd git commit 0594999 (mepd.find_ts).

2. Following the path downhill

Sella's IRC (through ASE; fmax 0.1 eV/Å, at most 1000 steps) from the g-xTB saddle in both directions; where minimizing an end changed its species, again with fmax 0.01 eV/Å and at most 3000 steps (see the IRC rule). An IRC stops before it reaches a minimum, so each end was then minimized (Sella with g-xTB's exact Hessian, largest force below 0.001 eV/Å) and checked by its frequencies: an end that is still a saddle (a mode below −10 cm⁻¹) is pushed 0.1 Å along that mode, both ways, and minimized again, up to three times (mepd.irc and mepd.minimize). When both minimized ends are the same structure, the status is degenerate_irc.

3. When two structures count as the same

Two structures are the same molecule when their bond graphs are the same and their stereochemistry (stereo SMILES, with an OpenBabel second opinion when RDKit cannot perceive it) is the same (mepd.same_molecule). Bonds are perceived from geometry on both sides, never from the dataset's SMILES labels. The rule is applied in either IRC direction. When the stereochemistry of a side cannot be decided, the reaction is not kept (stereo_undetermined).

The stereo requirement is strict: an IRC that reaches the right molecules with one centre or double bond flipped does not count.

109 screened entries store a repeated reactant only once (A + A kept as one A), so their reactant side has fewer atoms than the transition state. None of them is kept.

4. How the set is used

A reaction qualifies for the set only by the screen: its reference transition state re-converges at g-xTB and its IRC reaches the reference reactant and product. Agreement with the B3LYP barrier is not a criterion, because a search on the g-xTB surface is compared with the g-xTB transition state, not with B3LYP. The set's reactant and product are the minimized IRC ends, which share the transition state's atom order and frame, not the dataset's own endpoint geometries.

5. Which reactions were screened

The same reactions as version 1. Not a random sample: the first screen walked the dataset in its storage order and was stopped after 63,954 reactions (all of IDs 10001–20000 and 100001–150000, and 3,954 of 150001–160000). The screened part looks like the rest: median B3LYP barrier 54.82 vs 54.25 kcal/mol, mean size 16.97 vs 16.84 atoms. data/population.csv.zip lists all 199,890 reactions with a screened flag for other comparisons. All Reaction-QM B3LYP-RXN reactions are neutral closed-shell singlets with 4–33 atoms of C, H, N, O, F, Si, P, S and Cl, so nothing here speaks to ions, radicals or metals.

6. When the IRC itself does not get there

Each minimized IRC end is compared with the raw IRC end it came from. The first IRC stops when the largest force falls below 0.1 eV/Å, which on a flat stretch of the surface can be tens of kcal/mol above the minimum, and minimizing from there can carry on into another molecule. For the 10,341 reactions where minimizing changed an IRC end's species, the IRC was run again from the same transition state with fmax 0.01 eV/Å (at most 3000 steps per direction), and that IRC and its minimized ends decide the reaction. 2,501 of them are kept (2,345 had matched the dataset's ends before by minimization alone), and 455 changed status; 21 retries did not finish, and the first IRC stands for them. irc_retried and loose_irc_status in data/screen.csv.zip mark these reactions.

In 337 reactions the minimized ends were the dataset's reactant and product, but even with the stricter IRC minimizing turned an IRC end into another molecule. The g-xTB transition state is then not that reaction's transition state, so these are not kept. The rule is cautious: some of these may still be the same reaction. They are listed in data/screen.csv.zip with status match and kept 0.

1169 kept reactions have a soft transition state (imaginary mode above −200 cm⁻¹) whose IRC does reach both ends; they are kept.

7. The tables

data/screen.csv.zip has one row per screened reaction. barrier_kcal is the g-xTB transition state above the minimized reactant-side IRC end (the pre-reaction complex for reactions of several molecules); dataset_barrier_kcal is Reaction-QM's B3LYP barrier from separated reactant molecules. The two are measured from different references and are not compared here; version 1 compared g-xTB and B3LYP barriers from separated molecules. data/large/benchmark_set.xyz.gz holds the set's structures.

8. Does it reproduce?

Screening 12 random reactions again (seed 20261022, 2026-10-24) with the published script, screen and IRC retry, plus three reactions whose IRC was retried in the table, gave the same outcome for 14 of 15, with barriers within 0.0065 kcal/mol where both runs had one (provenance/quick_rerun.json). The one that differed, RXN_0000108544, was not a first-order saddle in the screen but was in the rerun, whose IRC then ended in one well; it is not kept either way. The whole screen cost 1,523 core-hours (median 79 s per reaction on one core).

9. Where this holds

Level of theory. Reference: B3LYP-D3/TZVP (Reaction-QM B3LYP-RXN). Test: g-xTB 2.0.1 energies, gradients and Hessians; TS optimization, IRC and end minimization with Sella through ASE (mepd's g-xTB engine); gas phase.

Software.

Chemical domain.

Settings the result depends on.

Tested on 63,954. Not random: the reactions of version 1's screen, which went through the dataset in its storage order (IDs 10001-20000, 100001-150000 and 3,954 of 150001-160000). data/population.csv.zip allows comparisons with the rest.

Not tested.

Known exceptions.

Reproducibility: statistical. A rerun of a random subset should reproduce each reaction's outcome for at least 90% of reactions. Sella and the IRC are deterministic for a given binary and settings, but not bitwise across library versions.

10. Data

File Size sha256 What it is
data/screen.csv.zip 4.2 MB 51c98e516285… One row per screened reaction: outcome, whether it is in the set, and the checks behind it.
data/population.csv.zip 3.1 MB b990c5ad79fc… All 199,890 B3LYP-RXN reactions with a screened flag, so the sampling bias can be checked.
data/large/benchmark_set.xyz.gz 48.3 MB 7783d7438cd3… Multi-frame XYZ (Angstrom) of the set: for each kept reaction its minimized reactant, g-xTB transition state and minimized product, in the transition state's atom order (comment line = reaction id and start | ts | end).

data/screen.csv.zip columns:

check.py recomputes all 32 numbers in this report from these files and compares them with expected_numbers.json.

11. Reproducing it

Software. Python 3.12, mepd, g-xTB 2.0.1, Sella 2.6, ASE 3.29, RDKit, OpenBabel; one core per reaction.

mepd version. Git commit 0594999, the start of the commit hash that identifies this exact version of the mepd code (git checkout 0594999).

Cost. 1,523 core-hours for 63,954 reactions (median 79 s per reaction on one core), and 191 for the IRC retries.

Download. F0001-v3.zip holds the tables, the check script, the screen script and the list of screened reactions.

File What it is
check.py Recomputes every number in this report from data/. Needs only Python 3.
data/screen.csv.zip One row per screened reaction: outcome, whether it is in the set, the g-xTB transition state's lowest frequencies, how far each IRC end fell when minimized and whether it changed species, barriers, perceived SMILES.
data/population.csv.zip All 199,890 B3LYP-RXN reactions with a screened flag.
data/large/benchmark_set.xyz.gz The set: for each kept reaction, its minimized reactant, g-xTB transition state and minimized product (Å; comment line = reaction id and part).
reproduce/rerun/benchmark.py The script that ran the screen (import-reaction-qm, screen, then reirc). A uv script: it installs mepd at the git commit it names.
reproduce/rerun/ids.txt The 63,954 screened reactions.
reproduce/rerun/quick_rerun.py Screens a random sample again and compares it with the table.
reproduce/build_tables.py Builds data/screen.csv.zip and the set file from a screened workspace.

Check the numbers (a few seconds):

python check.py

Rerun. This needs uv, access to mepd (git commit da31dcb; mepd is not public yet, so uv fetches it over HTTPS with your GitHub credentials, e.g. after gh auth setup-git), g-xTB 2.0.1 on PATH as gxtb-xtb, and B3LYPD3_TZVP.h5 from Reaction-QM. A quick rerun of 12 random reactions (screen and IRC retry) takes a few minutes:

cd reproduce/rerun
python quick_rerun.py --h5 PATH/B3LYPD3_TZVP.h5 --n 12 --jobs 4

The whole screen took about 1,523 core-hours (median 79 s per reaction on one core), and the IRC retries about 191 more:

cd reproduce/rerun
export OMP_NUM_THREADS=1
uv run --no-config benchmark.py import-reaction-qm ws PATH/B3LYPD3_TZVP.h5 --ids ids.txt
uv run --no-config benchmark.py screen ws --timeout 3600 --jobs 8
uv run --no-config benchmark.py reirc ws --timeout 1800 --jobs 8
python ../build_tables.py ws ../../data/population.csv.zip rerun_data

Then compare rerun_data/ with data/. The screen ran with mepd git commit 0594999 and the IRC retries with da31dcb, which the script pins; da31dcb's other changes lower memory use in path searches. benchmark.py can also send the work to the authors' cluster (--backend afh); that is not needed here.

Reproductions.

12. Provenance

Captured: recorded by the run itself (provenance.json). The screen recorded its mepd provenance (package versions, program paths and hashes, settings).

13. Sources

Cited.

Data this builds on.

Software used.

Other Findings.