← All findings

Contents

F0005: mepd channels finds g-xTB transition states below the reference ones in Transition1x-TMC

Status: verified · Version 1 · Jan Estrada Pabon (ORCID) · 2026-10-25 · no DOI yet

Finding. Of 36,446 Transition1x-TMC reactions of transition-metal complexes, 13,006 (35.7%) have a g-xTB transition state whose IRC connects the dataset's reactant and product. Searching them with mepd channels on g-xTB, 1,333 of them gave a verified route, every step of it reaching its minima by its own IRC, whose highest transition state lies more than 1 kcal/mol below that reference (10.2%; median 4.68 kcal/mol lower); for 1,997 (15.4%) no route was found.

Background

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.

Findings F0002 and F0004 tested the search on organic reactions with known transition states. This Finding does the same for Transition1x-TMC: about 36,000 reactions of small organic molecules bound to one of ten transition metals, whose transition states were found with the fast approximate method GFN2-xTB. The search runs on its successor, g-xTB, so each known transition state is first carried over to g-xTB and kept only when it still leads to the dataset's reactant and product. Metal complexes make that test harder: a ligand can shift how it binds to the metal without any covalent bond changing.

Approach

The benchmark set. We gave g-xTB each Transition1x-TMC transition state as a starting point and let it settle into the nearest g-xTB transition state, then followed the path downhill in both directions (the IRC) and minimized each end. A reaction is kept when the two ends are the dataset's reactant and product, and the IRC itself gets there: minimizing an IRC end must not turn it into another species. Where it did, the IRC was followed again with a ten times stricter stopping point, and that IRC decides.1 Two structures are the same species when all their bonds, metal–ligand contacts included, and their stereochemistry agree.2

The search. For each kept reaction, mepd channels built several starting arrangements of the reactant and product and searched for paths between them on g-xTB.3 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.4 Each step's IRC must reach its minima itself, by the same rule and with the same retry.5 We compared the best route's highest transition state with the known one, both on g-xTB; a route counts as lower when it is more than 1 kcal/mol below.6 All 13,006 reactions of the set were searched.7

Results

The benchmark set: 13,006 of 36,446 reactions (35.7%) are kept.

g-xTB outcome for the Transition1x-TMC transition state Reactions
Kept: its IRC connects the same ends 13,006
Same ends only after minimizing changed an IRC end8 212
Connects only one end 11,683
Connects something else 5,570
Both IRC directions end in one place 3,325
An IRC end could not be minimized 279
Not exactly one imaginary frequency 341
Optimization did not converge 1,096
Stereochemistry undecided 911
g-xTB failed9 23

The stricter IRC was needed for 10,420 reactions; 1,233 of them are in the set.

Judged by covalent bonds only, leaving metal–ligand contacts out, 16,260 (44.6%) would be kept.10

The search.

Reactions searched 13,006
Verified route found 10,829
Lower than the reference 1,333 (10.2%)
… as a single step 1,085 (median 3.89 kcal/mol lower)
… through intermediates 248 (median 14.95 kcal/mol lower)
About the same (within 1 kcal/mol) 9,027
Only higher routes 469
No route found 1,997 (15.4%)11
… of which every route found failed the step check5 75
Stopped at the time limit 0
Stopped by an error 18012
Largest amount lower 75.9 kcal/mol

The 10 single-step and 10 multistep routes furthest below the reference:

Counts are what one search budget found: a floor, not a ceiling.13

Details

1. Building the benchmark set

The protocol of F0001 and F0004, unchanged. Each Transition1x-TMC GFN2-xTB transition state was optimized to a first-order saddle at g-xTB 2.0.1 with Sella, 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), and accepted only with exactly one imaginary mode below −10 cm⁻¹. Sella's IRC (fmax 0.1 eV/Å, at most 1000 steps) then ran in both directions, and each end was minimized with the exact Hessian and checked by its frequencies, with up to three 0.1 Å pushes off a remaining saddle. When minimizing changed an IRC end into another species, under this comparison or the covalent-only one below, the IRC was run again from the same transition state with fmax 0.01 eV/Å (at most 3000 steps per direction), and that IRC decides the reaction (10,420 reactions; 43 retries did not finish, and their first IRC stands). A reaction is kept when the minimized ends are the dataset's reactant and product (in either direction) and minimizing left each IRC end the same species. The set's reactant and product are those minimized IRC ends. All reactions are neutral; the 7,010 with Ru or Ir are doublets (one unpaired electron), the rest closed-shell singlets, as in the dataset. The kept ones have 8 to 26 atoms. The kept reference transition states are high: median 70.02 kcal/mol above the reactant-side IRC end. 482 kept reactions have a soft transition state (imaginary mode above −200 cm⁻¹). Per reaction: data/screen.csv.

2. When two metal complexes are the same species

Bonds are perceived from geometry, and stereochemistry is compared as stereo SMILES (RDKit, with an OpenBabel second opinion that can only confirm a match). Two changes were made for metal complexes before the screen ran. RDKit labels a metal centre with the coordination polyhedron it fits to the 3D geometry; for a centre whose ligands are all alike but at most one, which has no stereoisomers, that label flipped between two geometries of one molecule, so it is now dropped there. Real cis/trans isomers at a metal stay different. Metal–ligand contacts count as bonds: a ligand that binds the metal through another atom, or comes off it, makes another species.

mepd channels, with the F0002 and F0004 settings unchanged. Each setting is explained in the mepd manual's page on channel searches (online; a copy is in this Finding's download as reproduce/mepd-manual-channels.html):

The reactant and product are the minimized IRC ends of the re-converged reference transition state, so every search starts from the structures the reference is compared on. Screen and search ran with mepd git commit 7bc3ab5 (da31dcb plus the metal-centre change above).

4. What counts as a found route

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, judged as in the screen (metal–ligand contacts included). 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.

5. Each step must reach its minima by its own IRC

mepd channels files each step under the minima its IRC ends minimize to, without checking that minimizing kept each end the same species. We checked every step of every route found, lowest route first, with the rule of the benchmark set (all bonds, metal–ligand contacts included): when minimizing an IRC end changed it into another species, the step's IRC was run again from its transition state with fmax 0.01 eV/Å (at most 3000 steps). The step stands when both ends of that IRC keep their species on minimization and are the same two species as before. A route counts only when all its steps stand, and the best route is the lowest that counts. 970 step IRCs in 946 reactions were retried; the best route changed in 84 reactions, and in 75 no route was left (they count as no route found). routes_dropped and step_ircs_retried in data/search_outcomes.csv give the counts per reaction.

6. Comparing energies

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. Of the routes shown, these references deserve a second look, though they pass every check: TMC_20796_Pt (imaginary mode -2177 cm⁻¹, end drop 14 kcal/mol); TMC_36334_Zn (imaginary mode -1199 cm⁻¹, end drop 12 kcal/mol); TMC_09247_Ir (imaginary mode -854 cm⁻¹, end drop 44 kcal/mol).

7. Which reactions

Each of the 13,006 reactions of the benchmark set was searched once, with the same settings and code: 11,773 as soon as the screen had kept them, and the 1,233 the stricter IRC brought into the set after the screen's IRC retry. Per reaction: data/search_outcomes.csv.

8. When the IRC itself does not get there

Each minimized IRC end is compared with the raw IRC end it came from. In 212 reactions the minimized ends were the dataset's reactant and product, but minimizing had turned an IRC end into another species, so the g-xTB transition state is not that reaction's transition state. In 69 an end dropped more than 20 kcal/mol when minimized; 58 sit on soft saddles (imaginary mode above −200 cm⁻¹). These are not in the set, even with the stricter IRC. The rule is cautious: some may still be the same reaction. They are listed in data/screen.csv with status match and kept 0. The first IRC stops when the largest force falls below 0.1 eV/Å, which on a flat stretch of the surface can be far from a minimum; the stricter IRC brought 1,233 reactions into the set (1,132 of them had matched the dataset's ends before, by minimization alone). irc_retried and loose_irc_status in data/screen.csv mark them. In the kept set, the median energy drop on minimizing an IRC end is 1.61 kcal/mol.

9. When g-xTB failed

In 23 reactions the g-xTB calculation itself failed (its electronic structure did not converge during an optimization) or ran past the 1-hour limit. All 23 are Ru or Ir complexes, the open-shell doublets; no closed-shell reaction failed. They are listed in data/screen.csv with status error or timeout.

10. Judging by covalent bonds only

Coordination is flexible: along an IRC, or on minimizing its end, a ligand often shifts which atom touches the metal, or comes off it, with no covalent bond changing. Leaving metal–ligand contacts out of the comparison, as dative bonds are treated as zero-order bonds in Li, Hsu and Savoie (2026), the same calculations would keep 16,260 reactions (44.6%): 3,318 more, in 3,262 of which a metal–ligand contact differs on a side, and 64 fewer. The 64 are reactions whose reactant and product differ only in metal–ligand contacts, so with those left out both IRC ends are one species. When the contacts agree, the full comparison decides, so stereochemistry at a carbon bonded to the metal still counts. This set is not the one searched here: the search judges routes with all bonds, and searching these reactions fairly needs the same covalent-only judgment in the search. Share kept by metal:

Metal All bonds (the set) Covalent bonds only
Ti 43.2% 52.7%
Zn 42.2% 50.7%
Ru 32.0% 40.1%
Rh 42.3% 50.8%
Pd 29.1% 42.4%
Ag 34.2% 49.1%
Os 40.1% 46.9%
Ir 30.8% 34.8%
Pt 19.8% 30.2%
Au 41.0% 45.3%

Per reaction: data/screen.csv, columns status_covalent, kept_covalent and metal_ligand_changed.

11. No route found

No transition state connecting the requested reactant and product was found within the budget: either no path search led to one, every transition state found led elsewhere, or every route found had a step whose IRC did not reach its minima by itself.5 It is not evidence that no such route exists. These reactions are listed in data/search_outcomes.csv with status no_route.

12. Searches stopped by an error

In each of these, every path search between the reactant and product failed (the path method, GSM, stopped with an error), 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; they are effectively reactions with no route.

13. Why no route was found

Each search builds conformers of the two ends, pairs them, and runs a path search pair by pair until its 30-minute budget is used up. One candidate pair is the reference IRC's own two ends, between which the reference transition state is known to lie. For the 1,922 reactions where no route was found at all (leaving out the 75 whose routes were all set aside), that pair:

What happened to the pair of IRC ends Reactions
Never queued 23 (1.2%)
Queued, but the budget ran out before its turn 175 (9.1%)
Searched; the path went through intermediates, whose legs these direct-only searches do not follow 943 (49.1%)
Searched as one step; its transition state led to other species 781 (40.6%)

In 6 of these reactions an IRC end was not among the conformers the search kept at all. 616 of the 1,922 searches used up the budget, and 1,170 found transition states that lead to other species. Pairs are compared by geometry (sorted interatomic distances, 0.02 Å), since a search renumbers atoms when it maps the two ends. Per reaction: data/search_diagnostics.csv.

14. Where this holds

Level of theory. g-xTB 2.0.1 throughout: TS re-convergence, IRC and minimization (Sella through ASE and mepd's g-xTB engine), path search (GSM); gas phase. Reference TSs are Transition1x-TMC's GFN2-xTB TSs re-converged at g-xTB.

Software.

Chemical domain.

Settings the result depends on.

Tested on 13,006. Screen: all 36,446 Transition1x-TMC reactions. Search: the reactions of the set (13,006), each searched once.

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. The screen is deterministic up to small numerical differences.

15. Data

File Size sha256 What it is
data/screen.csv 3.2 MB 10e584467e8e… One row per screened Transition1x-TMC reaction: outcome with all bonds and with covalent bonds only, whether it is in the set, and the checks behind it.
data/search_outcomes.csv 1.7 MB b51a19a97c9e… One row per reaction searched: outcome, barriers of the reference TS and of the best route, the amount lower.
data/search_diagnostics.csv 0.5 MB 1c861b3f9391… Per reaction with a route or none (status as in search_outcomes.csv): whether the pair of the reference IRC's two ends was searched, and how the search used its budget.
data/large/inputs.tar.xz 23.5 MB f7a292bc43c1… 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 of the set, in Å, as given to its search, with reactions.csv and the screen records (screen/results.jsonl, all bonds compared, with the IRC retry; screen/settings.json) that select the set. Unpack in reproduce/rerun/.
provenance/rerun_test.json 8 kB 7b719dc853e8… The rerun package run as a reader would, on a few reactions, compared with data/.
report/winners.html 0.5 MB 2624a92ef086… The 10 single-step and 10 multistep routes furthest below the reference, with both paths and their g-xTB energies (interactive page).

data/screen.csv columns:

data/search_outcomes.csv columns:

data/search_diagnostics.csv columns:

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

16. Reproducing it

Software. Python 3.12, mepd, g-xTB 2.0.1, patched molecularGSM, RDKit, OpenBabel, Sella; one thread per task.

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

Cost. Summed over reactions: screen about 1,000 hours for all 36,446, IRC retries about 210; search about 2,500 hours (median 6 minutes per reaction on one core); route-step check about 13 hours.

Download. F0005-v1.zip holds the data, the check script, the rerun scripts and the input structures of the search.

File What it is
check.py Recomputes every number on this page from data/. Needs only Python 3.
data/large/inputs.tar.xz The input of every search: for each of the 13,006 reactions of the set, 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 screen records that pick the set.
reproduce/rerun/benchmark.py The script that ran the screen and the searches (its import-transition1x-tmc, screen, recompare, reirc, search and rescore commands). A uv script: it installs mepd at the git commit it names.
reproduce/rerun/screen_all_bonds.py Picks the reactions whose IRC is retried, and decides the retried IRCs with every bond compared, which selects the set. A uv script, like benchmark.py.
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/screen_table.py Builds screen.csv from a screened workspace. Needs only Python 3.
reproduce/rerun/outcomes.py Builds search_outcomes.csv from the searched workspace. Needs only Python 3.
reproduce/rerun/search_diagnostics.py Builds search_diagnostics.csv from the searched workspace. Needs Python 3 with numpy.
provenance/rerun_test.json A test of these steps on a few reactions, compared with the tables.

Check the numbers (a few seconds):

python check.py

Both reruns need uv and access to mepd (git commit 257dbb7, in the history of its develop branch; mepd is not public yet, so uv fetches it over HTTPS with your GitHub credentials, e.g. after gh auth setup-git), and g-xTB 2.0.1 on PATH as gxtb-xtb.

Rerun the screen. It also needs t1x_with_tmc.xyz, from AEFM.zip of the Transition1x-TMC data. The screen compares every bond, metal–ligand contacts included. The same calculations are then judged by covalent bonds only (recompare). Where an IRC end changed species under either comparison, the IRC is retried with the stricter stopping point (reirc, which decides covalent-only), and screen_all_bonds.py decide decides the retried IRCs with every bond compared. Summed over reactions, the screen of all 36,446 took about 1,000 hours (median 73 s per reaction), and the retries about 210 more:

cd reproduce/rerun
export OMP_NUM_THREADS=1
uv run --no-config benchmark.py import-transition1x-tmc ws_screen PATH/t1x_with_tmc.xyz
uv run --no-config benchmark.py screen ws_screen --timeout 3600 --jobs 8
cp ws_screen/screen/results.jsonl all_bonds.jsonl
uv run --no-config benchmark.py recompare ws_screen --no-metal-ligand-contacts --jobs 8
uv run --no-config screen_all_bonds.py retry-ids ws_screen all_bonds.jsonl > retry_ids.txt
uv run --no-config benchmark.py reirc ws_screen --ids retry_ids.txt --timeout 1800 --jobs 8
uv run --no-config screen_all_bonds.py decide ws_screen all_bonds.jsonl --jobs 8
python screen_table.py ws_screen rerun_screen.csv

Then compare rerun_screen.csv with data/screen.csv. --ids FILE (one reaction id per line, e.g. TMC_00012_Pd) imports only those reactions.

Rerun the searches. These start from the structures in inputs.tar.xz, so the screen need not be rerun first. They also need the patched GSM from jandestrada/molecularGSM (branch mepd) on PATH as gsm. Each search takes up to 2 hours on one core (median 6 minutes); summed over all 13,006, about 2,500 hours. --jobs sets how many run at once. rescore then checks every step of every route found and retries the IRC of a step whose end changed species (about 13 hours in all).

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
uv run --no-config benchmark.py rescore ws --timeout 3600 --jobs 8
python outcomes.py ws rerun_search_outcomes.csv
python search_diagnostics.py ws rerun_search_outcomes.csv rerun_search_diagnostics.csv

Then compare the two tables with data/. 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 work to the authors' cluster, --backend afh; that is not needed here.)

Reproductions.

17. Provenance

Captured: recorded by the run itself (provenance.json). Each screen and search stage records its mepd provenance (code version, settings, programs). The screen, the IRCs and the searches ran with mepd git commit 7bc3ab5; the comparisons that decide the covalent-only judgment, the retried IRCs and the route-step check ran with mepd git commit 257dbb7, which adds the covalent-only comparison as an option and leaves the default, all-bonds comparison unchanged. The rerun package installs 257dbb7, which is in the history of mepd's develop branch.

18. Sources

Cited.

Data this builds on.

Software used.

Other Findings.