This is version 2 of F0002, and its results are outdated. Version 3 (2026-10-22) corrected them: The benchmark set was tightened to 29,116 reactions: 2,798 reactions whose reference IRC did not itself reach the dataset's endpoints (minimizing an IRC end changed its species) were left out, since their reference transition state is not the reaction's. Same searches; version 2's counts include them. the benchmark set kept reactions whose reference IRC reached the dataset's endpoints only after minimization changed an IRC end into another species (fixed in git commit 5f3b655). Read the current version.
Status: verified · Version 2, updated 2026-10-22 · Jan Estrada Pabon (ORCID) · 2026-10-22 · no DOI yet
Finding. Searching with mepd channels on the g-xTB surface, 8,851 of the 31,914 Reaction-QM reactions of the F0001 benchmark set gave a verified route whose highest transition state lies more than 1 kcal/mol below the re-converged reference one (27.7%; median 5.11 kcal/mol lower). For 5,153 (16.1%) no route was found.
mepd is a tool for mapping reaction mechanisms. Given a reactant and a product, its search, mepd channels,
looks for the transition state between them: the top of the
energy hill the reaction has to climb. A lower hill means a faster reaction, so the lowest transition state
connecting the two is the one that matters.
We test the search on reactions whose transition state is already known, from Reaction-QM. The search runs on g-xTB, a fast approximate quantum-chemistry method, so each known transition state was first re-converged on g-xTB and kept only when it still leads to both of the dataset's endpoints (Finding F0001). The question here: does the search find a route that is lower than the known one?
For each reaction of the F0001 benchmark set, mepd channels built several starting arrangements of the reactant and product and searched for paths between them on g-xTB.1 Every transition state it reports was checked: optimized, then followed downhill to confirm it joins the requested reactant and product, either directly or through intermediates.2
We compared the energy of the best route's highest transition state with that of the known transition state, both on g-xTB. A route counts as lower when it is more than 1 kcal/mol below.3 All 31,914 reactions of the set were searched.
| Reactions searched | 31,914 |
|---|---|
| Search found a verified route | 26,759 |
| Lower than the known transition state | 8,851 (27.7%) |
| … as a single step | 5,229 (median 3.35 kcal/mol lower) |
| … through intermediates | 3,622 (median 10.83 kcal/mol lower) |
| About the same (within 1 kcal/mol) | 15,561 |
| Only higher routes | 2,347 |
| No route found | 5,153 (16.1%)4 |
| Stopped at the time limit | 0 |
| Stopped by an error | 25 |
| Largest amount lower | 97.71 kcal/mol |
The 10 single-step and 10 multistep routes furthest below the known transition state, beside the dataset's own paths:
These are counts of what one search budget found, so they are a floor, not a ceiling.7 Whether the lower routes stay lower at a higher level of theory was not tested here.
How this Finding has changed as more data came in, newest first.
| Version | Date | Change | What changed |
|---|---|---|---|
| 2 | 2026-10-22 | Corrected | Rerun with corrected code on the whole F0001 benchmark set (31,914 Reaction-QM reactions). Version 1's counts came from searches with the two errors listed here and should not be used. |
| 1 | 2026-10-05 | First version | First version. |
Errors corrected in version 2:
5b18bda of mepd: the path search passed coordinates to geodesic interpolation in the wrong unit (bohr for ångström)0594999 of mepd: reference transition states and IRC ends were not checked strictly (convergence, frequencies, minimized ends, stereochemistry)Version 1 (2026-10-05) said: Outdated: corrected in version 2.
Searching with mepd channels on the g-xTB surface found a verified route whose highest transition state lies more than 1 kcal/mol below the dataset's own transition state (re-converged at g-xTB) for 103 of 500 Reaction-QM reactions (median 6.02 kcal/mol lower) and for 12 of 66 Geodesic-set reactions (median 15.72 kcal/mol lower).
mepd channels with five RDKit conformers per side, direct
paths only, five path searches per mechanism, a 30-minute search budget and a 2-hour hard limit per reaction, one
core each, GSM with 20 nodes and at most 80 iterations as the path method. Atoms are mapped between the two ends by
mepd's SLAPMapper with the endpoint-RMSD metric. A minimum is accepted when its Hessian has no frequency below
−20 cm⁻¹; a rejected minimum gets one 0.3 bohr push along each imaginary mode. The reactant and product are the
two ends of the re-converged reference transition state's IRC, each minimized (F0001), so every search starts
from the structures the reference is compared on. The searches ran with mepd git commits 0594999 (the first
1,248), 9aee085 and da31dcb (the rest); the later two only use less memory and give the same routes and energies.
Only routes mepd itself verified count. A single-step route is one transition state (exactly one imaginary frequency) whose IRC, with both ends minimized, reconnects the requested reactant and product species (bond graph and stereochemistry). A multistep route is a chain of such transition states through intermediates from reactant to product; its height is its highest transition state. Routes that lead to other species are not counted.
Both barriers are measured from one floor per reaction, the lowest g-xTB energy of the reactant and its search conformers, so the amount lower is the reference transition state's energy minus that of the best route's highest one. Outcomes: lower (more than 1 kcal/mol below), about the same (within 1), only higher (every route more than 1 kcal/mol above). An IRC end of a route found can lie slightly below the floor (another arrangement of the reactant molecules); the barriers shown are then a little high, but the amounts lower do not depend on the floor.
No transition state connecting the requested reactant and
product was found within the budget: either no path search led to one, or every transition state found led
elsewhere. It is not evidence that no such route exists. These reactions are listed in data/search_outcomes.csv
with status no_route.
Nine searches first stopped early: four were killed
for running out of memory, three reached the 2-hour limit and two stopped with an error. All nine were run again
with the same settings, with mepd git commit da31dcb, which only lowers a search's memory use. Seven finished: two
found a lower route, two about the same and three no route. The other two stopped with the same error again: every
path search between their reactant and product failed, so mepd had no result to compare and reports an error
instead of "no route found". They are listed in data/search_outcomes.csv with status error.
The F0001 benchmark set: of Reaction-QM's B3LYP-RXN reactions, the 31,914 whose reference transition state, re-converged on g-xTB, leads by its IRC (both ends minimized) to both of the dataset's endpoints, with the same bond graph and stereochemistry. All are neutral closed-shell singlets of 5 to 33 atoms.
Level of theory. g-xTB 2.0.1 throughout: path search (GSM), TS optimization and IRC (Sella through ASE and mepd's g-xTB engine); gas phase. Reference TSs are Reaction-QM's B3LYP TSs re-converged at g-xTB (F0001).
Software.
Chemical domain.
Settings the result depends on.
Tested on 31,914. All 31,914 reactions of the F0001 benchmark set.
Not tested.
Known exceptions.
Reproducibility: statistical. Rerunning the searches is not expected to find exactly the same routes: they depend on random conformers, timing and the code version.
| File | Size | sha256 | What it is |
|---|---|---|---|
data/benchmark_set.csv |
0.6 MB | 3a7885982374… |
The reactions of the F0001 benchmark set searched here, with their sizes. |
data/search_outcomes.csv |
4.0 MB | d9a83f1c0457… |
One row per reaction searched: outcome, barriers of the reference TS and of the best route, the amount lower. |
data/large/inputs.tar.xz |
51.4 MB | 3d125b3202d8… |
The input of every search: start.xyz, end.xyz (the minimized reference IRC ends) and ts.xyz (the re-converged reference TS) for each reaction, in Å, with reactions.csv and the F0001 screen records (screen/results.jsonl, screen/settings.json) that select the set. Unpack in reproduce/rerun/. |
report/winners.html |
0.4 MB | 083724e42714… |
The 10 single-step and 10 multistep routes furthest below the reference, with both paths and their g-xTB energies (interactive page). |
data/benchmark_set.csv columns:
data/search_outcomes.csv columns:
check.py recomputes all 20 numbers in this report from these files and compares them with expected_numbers.json.
Software. Python 3.12, mepd, g-xTB 2.0.1, patched molecularGSM, RDKit, Sella; one core per search.
mepd version. Git commit da31dcb, the start of the commit hash that identifies this exact version of the mepd code (git checkout da31dcb).
Cost. About 40 minutes of one core per reaction.
Download. F0002-v2.zip holds the data, the check script, the rerun scripts and the input
structures.
| File | What it is |
|---|---|
check.py |
Recomputes every number on this page from data/search_outcomes.csv. Needs only Python 3. |
data/large/inputs.tar.xz |
The input of every search: for each of the 31,914 reactions, the minimized reactant and product (start.xyz, end.xyz) and the re-converged reference transition state (ts.xyz), all in Å, with the reaction list and the F0001 screen records that pick the set. |
reproduce/rerun/benchmark.py |
The script that ran the searches (its search command). A uv script: it installs mepd at the git commit it names. |
reproduce/rerun/search_options.toml |
The mepd channels settings of every search. |
reproduce/rerun/mepd_profile.toml |
The mepd input file: GSM as the path method, g-xTB as the engine. |
reproduce/rerun/outcomes.py |
Builds search_outcomes.csv from the searched workspace. Needs only Python 3. |
Check the numbers (a few seconds):
python check.py
Rerun the searches. This needs uv and 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). It also needs g-xTB 2.0.1 on PATH as gxtb-xtb, and the patched GSM from
jandestrada/molecularGSM (branch mepd) on PATH as gsm. Each search
takes up to 2 hours on one core (median 37 minutes), so all 31,914 took about 18,000 core-hours; --jobs sets how
many run at once.
cd reproduce/rerun
tar xJf ../../data/large/inputs.tar.xz # -> ws/
export OMP_NUM_THREADS=1
uv run --no-config benchmark.py search ws --profile mepd_profile.toml --options search_options.toml \
--timeout 7200 --jobs 8
python outcomes.py ws rerun_search_outcomes.csv
Then compare rerun_search_outcomes.csv with data/search_outcomes.csv. A run can be stopped and started again:
reactions already searched are skipped. To try a few reactions first, keep only their lines in
ws/screen/results.jsonl before the search. The routes found may not match exactly: they depend on random
conformers and timing. (benchmark.py can also send the searches to the authors' cluster, --backend afh; that
is not needed here.)
Reproductions.
Captured: recorded by the run itself (provenance.json). Each search stage records its mepd provenance (code version, settings, programs).
Data this builds on.
Cited.
Software used.
Other Findings.