Skip to main content

Chemical Reaction Network generator for heterogenous catalysis

Project description

PyPI version DOI License: MIT Python 3.12 Python package codecov PyPI Downloads GitHub last commit Powered by RDKit Open In Colab

CARE: Catalysis Automated Reaction Evaluator

CARE (Catalytic Automated Reaction Evaluator) is a framework for the automated generation and manipulation of chemical reaction networks (CRNs) in heterogeneous catalysis. CARE is powered by ML-based energy evaluators (GAME-Net-UQ, FairChem, MACE potentials, etc.) and includes kinetic functionalities enabling the quantification of catalytic activity for reactions containing thousands of elementary steps.

🪛 Installation

1. From PyPI

pip install care-crn

2. ML evaluators

care-crn interfaces with several external ML models, most of them ML interatomic potentials (MLIPs). These must be installed separately as they depend on different versions of Pytorch, causing conflicts. You can install FairChemV1 or FairChemV2, MACE, UPET, Orb-v2, and SevenNet by running:

pip install care-crn[mace]
pip install care-crn[fairchemv1]
pip install care-crn[fairchemv2]
pip install care-crn[upet]
pip install care-crn[orb]
pip install care-crn[sevennet]
pip install care-crn[gamenetuq]

Note: as each ML model depends on specific versions of Python packages (pytorch, e3nn, ase, etc.), starting from care-crn==0.6.0 you will need to create one distinct environment for each ML evaluator you want to employ.

3. Julia microkinetic solver

To run microkinetic simulations, the workflow relies on a Julia backend for high-performance ODE integration. No manual installation is required. Thanks to juliapkg, the first time you execute a simulation that requires the Julia solver, the package will automatically:

  1. Download a private, compatible version of Julia (if you don't already have one).
  2. Install the necessary Julia packages (DifferentialEquations.jl, etc.) defined in src/care/juliapkg.json into an isolated environment.

Note: The very first time you run a simulation, it may take a few extra minutes to download and precompile these dependencies. Subsequent runs will be instantaneous.


4. Developer Installation

If you want to contribute to the code or use the very latest (unstable) version, you can install from the source.

  • 💾 Required disk space: ~6.5 GB (Conda environment), ~4.3 GB (Julia+dependencies)
  1. Clone the repo:

    git clone git@github.com:LopezGroup-ICIQ/care.git
    cd care
    
  2. Create a conda environment:

    conda create -n care_env python==3.12
    conda activate care_env
    
  3. Install the package in "editable" mode:

    python3 -m pip install -e .[gamenetuq,mace,etc.]  # with ML evaluators of choice
    

💥 Usage

Network generation

The blueprint can be constructed by providing (i) reactants and products as SMILES, (ii) the network carbon and oxygen cutoffs ncc and noc, or (iii) the chemical space as SMILES. Current version allows generation of CRNs with CHONS-containing species.

from care import ReactionNetwork

# from reactants and products (e.g., CO2 to Methanol)
crn = ReactionNetwork.from_species(reactants=["O=C=O", "[H][H]"], products=["CO", "O"])

# from carbon and oxygen cutoffs
crn = ReactionNetwork.from_cutoffs(ncc=2, noc=1)

# from chemical space (e.g., Ethanol decomposition network)
crn = ReactionNetwork.from_chemical_space(cs=["CCO"])

ML energy evaluation

The range of catalyst materials on which CRNs can be evaluated depends on the domain of the employed ML model. CARE currently provides interfaces to GAME-Net-UQ and MLIPs such as FairChem-v1/v2, MACE, Orb, UPET, and SevenNet.

from care import Surface 
from care.evaluators import MACEIntermediateEvaluator, NEBReactionEnergyEstimator

catalyst = Surface.from_mp("mp-2", mp_api_key="your_key", hkl="110", xy_repeat=2)  # Pt(110)
ml_evaluator = MACEIntermediateEvaluator(catalyst, device="cuda", num_configs=2, max_steps=5, fmax=0.5)
neb_evaluator = NEBReactionEnergyEstimator(mlp=ml_evaluator, num_images=3, max_steps=5)

for intermediate in crn.intermediates.values():
    ml_evaluator(intermediate)

for reaction in crn.reactions:
    neb_evaluator(reaction)

Microkinetic run

operating_conditions = {'T': 473, 'P': 1e6}  # T in K, P in Pa
y0 = {"CO2": 0.33, "H2": 0.67}  # reactants composition (mole fraction)

results = crn.run_kinetics(iv=y0, oc=operating_conditions)

Run all together

You can run the entire pipeline (blueprint generation ➡ energy evaluation ➡ kinetic simulation) running the care_run script:

care_run -h  # documentation
care_run -i input.toml -o output_name

This will generate a output_name folder with the generated reaction network and additional results from the kinetic simulation. Examples of input .toml files can be found here.

📖 Tutorials

We currently provide two tutorials, available in the notebooks directory:

✒️ License

The code is released under the MIT license.

📜 Reference

Morandi, S., Loveday, O., Renningholtz, T. et al. An end-to-end framework for reactivity in heterogeneous catalysis. Nat. Chem. Eng. (2026). https://doi.org/10.1038/s44286-026-00361-8

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

care_crn-0.8.0.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

care_crn-0.8.0-py3-none-any.whl (232.3 kB view details)

Uploaded Python 3

File details

Details for the file care_crn-0.8.0.tar.gz.

File metadata

  • Download URL: care_crn-0.8.0.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for care_crn-0.8.0.tar.gz
Algorithm Hash digest
SHA256 58a81e6e3891da9ef7dd9e04658d10b9a6fecac5362bef56c3feb2c61b5a6166
MD5 01c2ade9e7c15ff1da3d2e76f0033b8b
BLAKE2b-256 18c71484c09a4a11cab6b7c1d0e86b00239572209207e979deff6e997ec4a77f

See more details on using hashes here.

Provenance

The following attestation bundles were made for care_crn-0.8.0.tar.gz:

Publisher: publish-to-pypi.yml on LopezGroup-ICIQ/care

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file care_crn-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: care_crn-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 232.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for care_crn-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a45048080f5b70b48212287c8c951b6478ff82e564c21999ad539bddca650868
MD5 bd27b21478a5f5616a53ba83c6d9e5b2
BLAKE2b-256 20557c84d91bddb7ac4eef5c6fc64d3b6fec72a8d00d961c8947d11904342eca

See more details on using hashes here.

Provenance

The following attestation bundles were made for care_crn-0.8.0-py3-none-any.whl:

Publisher: publish-to-pypi.yml on LopezGroup-ICIQ/care

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page