Using quantum chemical computation to find important reactions without requiring human intuition.
This repository contains Python code for automatically discovering chemical reactions using a freezing string method with a subsequent exact transition state search and reaction path verification by intrinsic reaction coordinate calculation.
There are two parts required in order to run the whole program. First, initial
geometries and transition state jobs have to be generated by executing
python ard.py <infile>
from the command line. This will generate a reactions
folder containing input files for each job. Each transition state job can then
be run by python -n <nproc> -m <mem> tssearch.py <infile>
.
It is also possible to only run a freezing string method (without exact TS
search and IRC calculation) by executing
python sm.py <infile>
.
Optional arguments for tssearch.py
and sm.py
are -n <nproc>
and -m <mem>
,
where <mem>
is specified in megabytes.
Several arguments can be specified in the input file in the format arg value. The possible arguments are:
reac_smi
- Valid SMILES string describing the reactant structurenbreak
- Maximum number of bonds that may be brokennform
- Maximum number of bonds that may be formeddH_cutoff
- Heat of reaction cutoff (kcal/mol)forcefield
- Force field for 3D geometry generation (mmff94
oruff
)geometry
- Reactant and product geometry (seemain.py
for details)nsteps
- Number or gradient calculations per optimization stepnnode
- Number of nodes for calculation of interpolation distancelsf
- Line search factor for Newton-Raphson optimizationtol
- Perpendicular gradient tolerancenLSTnodes
- Number of high density LST nodesqprog
- Program for quantum calculations (currently onlygau
)theory
- Level of theory (e.g., m062x/cc-pvtz)name
- Name of the log file for a TS search
Only reac_smi
has to be specified for a full automatic discovery, all other
arguments have default values or are set by running ard.py
.
Default values are:
nbreak
= 3nform
= 3dH_cutoff
= 20forcefield
= mmff94nsteps
= 4nnode
= 15lsf
= 0.7tol
= 0.1nLSTnodes
= 100qprog
= gautheory
= m062x/cc-pvtzname
= 0000
The input file arguments can be specified in any order and comments can be
added. An example is given in input.txt. If a freezing string method or
single transition state search is run, geometry
has to be specified.
Gaussian 03 or 09 has to be available at the command line and the appropriate environment variables have to be set.
Running ard.py
produces ARD.log
, which is a log file containing all feasible
reaction channels.
Each transition state search produces several files:
output.####.log
- Log filereac.####.out
- Optimized reactantprod.####.out
- Optimized product (intended or unintended)ts.####.out
- Optimized transition statestring.####.out
- Nodes along FSM stringirc.####.out
- Points along IRC pathbond_changes.out
- Distance matrices during FSM stepsfsmpath.####.png
- Graph of FSM energiesircpath.####.png
- Graph of IRC energies
There are also several Gaussian input, log, and checkpoint files that are written and rewritten over the course of the calculation.