**Download.** [`F0002.zip`](F0002.zip) holds the data, the check script, the rerun scripts and the input structures. | File | What it is | |---|---| | [`check.py`](check.py) | Recomputes every number on this page from `data/search_outcomes.csv`. Needs only Python 3. | | [`data/large/inputs.tar.xz`](data/large/inputs.tar.xz) | The input of every search: for each of the 31,617 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`](reproduce/rerun/benchmark.py) | The script that ran the searches and checked their route steps (its `search` and `rescore` commands). A [uv](https://docs.astral.sh/uv/) script: it installs mepd at the git commit it names. | | [`reproduce/rerun/search_options.toml`](reproduce/rerun/search_options.toml) | The `mepd channels` settings of every search. | | [`reproduce/rerun/mepd_profile.toml`](reproduce/rerun/mepd_profile.toml) | The mepd input file: GSM as the path method, g-xTB as the engine. | | [`reproduce/rerun/outcomes.py`](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](https://docs.astral.sh/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](https://github.com/jandestrada/molecularGSM) (branch `mepd`) on PATH as `gsm`. Each search takes up to 2 hours on one core (median 37 minutes), so all 31,617 took about 18,000 core-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 (a few core-minutes per reaction that needs it). ``` 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 ``` 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.)