This is version 3 of F0002, and its results are outdated. Version 5 (2026-10-24) corrected them: Route steps must now reach their minima by their own IRC, and the benchmark set (F0001, version 3) retries a reference IRC that stops short before leaving a reaction out. 8,737 of the 31,617 reactions now in the set have a lower route (version 4: 8,150 of 29,116); in 315 the best route changed (159 now have none). Version 4's counts should not be used. routes were counted although a step's IRC reached its intermediate or end only after minimization turned the IRC end into another molecule (fixed in git commit 87d9f69). reactions whose reference IRC stopped short at fmax 0.1 eV/Å, so that minimizing an end changed its species, were left out without retrying a stricter IRC (fixed in git commit 87d9f69). Read the current version.
Status: verified · Version 3, 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,150 of the 29,116 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 (28.0%; median 4.98 kcal/mol lower). For 4,459 (15.3%) 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 29,116 reactions of the set were searched.4
| Reactions searched | 29,116 |
|---|---|
| Search found a verified route | 24,655 |
| Lower than the known transition state | 8,150 (28.0%) |
| … as a single step | 4,908 (median 3.33 kcal/mol lower) |
| … through intermediates | 3,242 (median 10.95 kcal/mol lower) |
| About the same (within 1 kcal/mol) | 14,443 |
| Only higher routes | 2,062 |
| No route found | 4,459 (15.3%)5 |
| Stopped at the time limit | 0 |
| Stopped by an error | 26 |
| Largest amount lower | 88.24 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 |
|---|---|---|---|
| 3 | 2026-10-22 | Corrected | 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. |
| 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 3:
5f3b655 of mepd-workflows: the benchmark set kept reactions whose reference IRC reached the dataset's endpoints only after minimization changed an IRC end into another speciesErrors 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 2 (2026-10-22) said: Outdated: corrected in version 3.
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.
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.
The F0001 benchmark set: of Reaction-QM's B3LYP-RXN
reactions, the 29,116 whose reference transition state, re-converged on g-xTB, leads by its IRC to both of the
dataset's endpoints, with the same bond graph and stereochemistry. The IRC itself has to get there: each IRC end is
minimized, and the reaction is kept only when that minimization leaves it the same species. In 2,798
more reactions the minimized ends matched the dataset's only because minimizing changed an IRC end into another
molecule. Mostly the IRC stopped far from a minimum: in 1,860 an end dropped more than 20 kcal/mol when minimized.
Some sit on very soft saddles (458 with an imaginary mode above −200 cm⁻¹; RXN_0000011948: −51 cm⁻¹, both ends
dropping about 130 kcal/mol). Then the reference transition state is not the reaction's transition state, so
these reactions are left out; version 2 of this Finding counted them. The rule is cautious: in 327 of them the
saddle is clear and no end drops more than 5 kcal/mol, which may still be the same reaction; they are left out
too. All are listed in data/left_out_irc.csv. All reactions in the set are neutral closed-shell singlets of
5 to 33 atoms.
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.
Eight searches first stopped early: three were
killed for running out of memory, three reached the 2-hour limit and two stopped with an error. All eight were run
again with the same settings, with mepd git commit da31dcb, which only lowers a search's memory use. Six finished:
two found a lower route, two about the same and two 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.
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 29,116. All 29,116 reactions of the F0001 benchmark set (reference IRC reaches both dataset endpoints without minimization changing an end's species).
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 | 620a49c2e54d… |
The reactions of the F0001 benchmark set searched here, with their sizes. |
data/search_outcomes.csv |
3.7 MB | 6007e0a97c6f… |
One row per reaction searched: outcome, barriers of the reference TS and of the best route, the amount lower. |
data/large/inputs.tar.xz |
46.9 MB | e8cd657216f5… |
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/. |
data/left_out_irc.csv |
0.2 MB | b3fcccc2b8a1… |
The reactions left out of the set because minimizing an IRC end changed its species, with what version 2 reported for them. |
report/winners.html |
0.5 MB | 31c07ae1e35a… |
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:
data/left_out_irc.csv columns:
check.py recomputes all 24 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-v3.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 29,116 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 29,116 took about 17,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.