Skip to main content

autocatpath

CI PyPI Python License: GPL v3

Reaction-pathway explorer for catalyst surfaces, driven by ML interatomic potentials. Give it an environment (a metal surface), a substrate, and a target; it builds the reaction network, relaxes every intermediate, finds the barriers with climbing-image NEB, and reports energies with honest uncertainty — pooled across random seeds and across ML potentials.

  • Reaction networks — curated templates or rule-based autodetection of intermediates (network: auto).
  • Pluggable ML potentials — mace, chgnet, fairchem (UMA), grace, or auto (best installed). emt is a dependency-free dev backend.
  • Barriers — climbing-image NEB with automatic retry on non-convergence, and a mid-band detachment guard that flags a barrier through a geometry where the adsorbate flew off the slab.
  • Electrochemistry (CHE) — optional post-processing over a computed network: closed-form limiting potential and span-minimizing operating potential (V vs RHE), no extra relax/NEB calls.
  • Screening vs verify — search.screening skips NEB for a cheap thermodynamic-only ranking pass. The ammonia network's coadsorbed template — both dissociated fragments tracked jointly until a product desorbs — is the default; fragment parking (template: parked) is an explicit opt-in approximation, honestly referenced by the gas ledger.
  • Cross-model comparison — run the same network under several potentials and box-plot where they agree and disagree (intermediates, barriers, and which transition state is the true rate-limiting "highest point").
  • Reproducible — every run writes a provenance snapshot; unstable results are flagged low-confidence rather than reported as precise numbers.

NO→NH3 reaction energy profile on Pd

NO→NH₃ on Pd (EMT demo — set mlip.backend: mace for near-DFT energies): span-ranked competing routes at full gas-ledger composition, transition states as barrier bumps with Ea, ± uncertainty bands, ⚠ kinetic-trap flags, and the CO site-competition panel — one autocatpath run. → more outputs and their commands in the gallery.

Install

pip install autocatpath

The default emt backend is pure numpy/ASE (no torch, no GPU) and runs the whole pipeline anywhere — great for trying it out and for CI. For real numbers, add exactly one ML backend (their dependencies conflict, so one per environment):

pip install "autocatpath[mace]"      # MACE-MP-0 universal potential (GPU)
pip install "autocatpath[chgnet]"    # CHGNet (CPU-friendly)
pip install "autocatpath[fairchem]"  # Meta FAIRChem / UMA (adsorbates on metals)
pip install "autocatpath[grace]"     # GRACE foundation models

Quickstart

# no config file needed — set the chemistry on the command line:
autocatpath run --substrate NO --target NH3 --element Pd --network auto

# or point at a YAML config (see examples/):
autocatpath run examples/no_to_no3_pd.yaml

# discover the intermediates automatically, on a real ML potential:
autocatpath run examples/auto_ammonia.yaml --backend auto

Run autocatpath --help (or autocatpath run --help) for every flag. Config files and flags mix freely — flags override the file.

Outputs land in runs/<name>/:

File Contents
graph_thumbs.png reaction energy-profile with active-site structure thumbnails
graph_network.png node/DAG view of the network (red = low-confidence)
energy_map.png substrate × intermediate heatmap; ★ = rate-limiting state
results.json nodes, edges, barriers, mean ± spread, warnings
methods.md a deterministic methods paragraph for your write-up
config.snapshot.yaml provenance snapshot for exact reproduction

Compare several ML potentials

Because the backends can't share an environment, run states / barriers in each one's env, then compare the JSONs:

autocatpath states   my.yaml --backend chgnet   --out s_chgnet.json
autocatpath states   my.yaml --backend fairchem --out s_uma.json
autocatpath compare  --states s_*.json --out intermediates.png     # box plot per state

autocatpath barriers my.yaml --backend chgnet   --out b_chgnet.json
autocatpath compare  --states b_*.json --out barriers.png          # Ea, rate-limiting ringed
autocatpath compare  --states b_*.json --heights s_*.json --out ts_heights.png

Cross-model comparison of intermediate formation energies

State energies are referenced to per-element gas-phase chemical potentials computed in each potential, so composition-changing states are comparable across models. See the gallery and examples/README.md for the full set of commands.

CLI

autocatpath run <cfg>            # all seeds in-process + outputs
autocatpath states <cfg>         # relax states only (no NEB) -> per-model JSON
autocatpath barriers <cfg>       # NEB for every step -> per-model JSON
autocatpath compare --states ... # box plots (states or barriers, auto-detected)
autocatpath multi <cfg>          # several substrates -> union energy map
autocatpath sweep <cfg> --elements Pd,Pt,Cu   # same network across surfaces

Everything is one YAML file — see docs/CONFIG.md for every field, and docs/USAGE.md for extension points.

Development

uv sync --extra dev
uv run ruff check src tests
uv run pytest

Contributing

Issues and PRs welcome — see CONTRIBUTING.md. Maintained by Reto Stamm.

Acknowledgements

autocatpath was requested by Muhammad Umer, whose help shaping what it should do got the project off the ground.

Built with Claude (Anthropic) via Claude Code, with research assistance from Perplexity.

License

GPL-3.0-or-later. Built on ASE (LGPL) and RDKit (BSD).

Metadata

Release files for autocatpath 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for autocatpath 0.9.0
File Size Uploaded
autocatpath-0.9.0.tar.gz 2.6 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for autocatpath 0.9.0
File Interpreter ABI Platform
autocatpath-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 2.7 MB

Release files / autocatpath-0.9.0.tar.gz

Download URL autocatpath-0.9.0.tar.gz
Size 2.6 MB
Tags Source
SHA-256 checksum
How to use checksums
fec32d3f42b90cd0ee5a43e486df17f34ba9f3c4e74b6c06402ed28e97a6500e
BLAKE2b-256 checksum
How to use checksums
ca34ea7c29a07e1b8d73b483512991e2399c335ec15ffbe0706124af5fe42070
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.

Transparency log

Release files / autocatpath-0.9.0-py3-none-any.whl

Download URL autocatpath-0.9.0-py3-none-any.whl
Size 131.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d507530561e7f6a8070a27919466b7210a73d6922e97539e736d5d8e638db78d
BLAKE2b-256 checksum
How to use checksums
124d62685110c106eee399beb0c35b0d9c1b95879eb9f66d43255c67b81f3e0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.

Transparency log

Release history Release notifications | RSS feed

0.13.0

2 release files

0.12.1

2 release files

This release

0.9.0 This release

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page