CARE (Catalysis Automated Reaction Evaluator) is a tool for generating and manipulating chemical reaction networks (CRNs) on catalytic surfaces. CARE is powered by data-driven models such as GAME-Net-UQ, Open Catalyst models, and MACE potentials.
Installing CARE requires Conda and Git locally installed. The following instructions are optimized to install CARE on Linux systems, while for macOS we noticed a lower performance in the CRN generation mainly due to Python multiprocessing (see Contexts and start methods in the documentation)
- Clone the repo:
git clone git@github.com:LopezGroup-ICIQ/care.git
- Create a conda environment with Python 3.11 and activate it:
conda create -n care_env python=3.11
conda activate care_env
- Enter the repo and install the package with pip:
cd care
python3 -m pip install .
NOTE: MacOS users might need to launch a new shell at this point in order for the entry points to work correctly.
- (optional) To interface to energy evaluators from Open Catalyst Project, first install
torch_sparse
andtorch_scatter
following the instructions in the Pytorch Geomteric page depending on your device settings. Then, just run:
python3 -m pip install .[ocp]
- (optional) To employ MACE models as energy evaluator, run:
python3 -m pip install .[mace]
NOTE: There currently is a dependency clash during installation of OCP and MACE evaluators related to the e3nn
library (see: this issue for MACE). Installation might result in an incompatibility warning, but
both evaluators should work correctly if the installation order shown above is followed.
- (optional) Install Julia and the ODE packages required to perform microkinetic simulations. As alternative, simulations can run with the implemented Scipy solver.
curl -fsSL https://install.julialang.org | sh
python3 -m pip install juliacall # Python-Julia bridge
julia -e 'import Pkg; Pkg.add("DifferentialEquations"); Pkg.add("DiffEqGPU"); Pkg.add("CUDA");'
NOTE: For some systems Julia may present some error while using sh. If that is the case, please install Julia by running instead:
curl -fsSL https://install.julialang.org | sh -s -- -y
The blueprint can be constructed in two ways, by providing (i) the network carbon and oxygen cutoffs ncc and noc, or (ii) the chemical space as list of SMILES.
gen_crn_blueprint -h # documentation
gen_crn_blueprint -ncc 2 -noc 1 -o output_name # Example from ncc and noc
gen_crn_blueprint -cs "CCO" "C(CO)O" -o output_name # Example from user-defined chemical space
The CRN blueprint is stored as pickle file. To access the blueprint, do:
from pickle import load
with open('path_to_blueprint_file', 'rb') as f:
intermediates, reactions = load(f)
The range of catalyst materials on which CRNs can be constructed depends on the domain of the data-driven energy evaluator employed to derive the reaction properties. Currently, CARE provides interfaces to GAME-Net-UQ, OCP models, and MACE-MP potentials.
eval_crn -h # documentation
eval_crn [-i INPUT] [-bp BP] [-o OUTPUT] [-ncpu NUM_CPU]
This script requires an input toml file defining the material/surface of interest, the model of choice and its settings. The output is a ReactionNetwork
object stored as pickle file. You can find examples of input files here.
run_kinetic [-i INPUT] [-crn CRN] [-o OUTPUT]
This script runs microkinetic simulation starting from the evaluated reaction network and an input toml file defining the reaction conditions, solver, inlet conditions. The results are stored as a pickle object file.
You can run the entire pipeline (blueprint generation ➡ properties evaluation ➡ kinetic simulation) running the care_run
script:
care_run -h # documentation
care_run -i input.toml -o output_name
This will generate a directory output_name
containing a crn.pkl
with the generated reaction network.
Examples of input .toml files can be found here.
We currently provide three tutorials, available in the notebooks
directory:
The DFT database in ASE format used to retrieve available CRN intermediates will be uploaded soon in Zenodo.
The code is released under the MIT license.
- A Foundational Model for Reaction Networks on Metal Surfaces Authors: S. Morandi, O. Loveday, T. Renningholtz, S. Pablo-García, R. A. Vargas Hernáńdez, R. R. Seemakurthi, P. Sanz Berman, R. García-Muelas, A. Aspuru-Guzik, and N. López DOI: 10.26434/chemrxiv-2024-bfv3d