Command-line interface

The racerts CLI mirrors the core functionality of the Python API. It has three subcommands, racerts ts, racerts gs and racerts constrained, and keeps the legacy racerts form racerts filename.xyz [options] (also racerts run filename.xyz [options]), which is described in the rest of this page. With the same settings, racerts ts and the legacy form write the same ensemble.

racerts ts / racerts gs / racerts constrained

$ racerts ts ts.xyz --reacting-atoms 3 4 5 --smiles "CCCCCC=C" [options]
$ racerts gs "OC(=O)[C@@H]1CCCN1C(C)=C" [options]
$ racerts gs molecule.xyz [options]
$ racerts constrained complex.xyz --hard 0 1 2 3 [options]

racerts constrained samples a structure around atoms that stay where they are in the file, e.g. a binding motif or a core (the task Constrained of the Python API).

racerts gs takes the molecule as a SMILES or as a structure file. From a file it keeps the configuration of the geometry (stereocentres and double bonds). The graph of an xyz file comes from the SMILES (-s) if given, then from the perceived bonds, and from the connectivity alone only with --graph connect: without bond orders the search would run on a different molecule.

Option Explanation
-r, --reacting-atoms (ts) 0-based indices of the atoms whose bonds form or break
--frozen-atoms (ts) frozen atoms instead of the reacting atoms and their neighbours
--hard (constrained) 0-based indices of the atoms held at the geometry of the file
-s, --smiles (ts, constrained, gs with a file) SMILES of the TS topology or of the molecule, one per fragment
--graph (ts, constrained, gs with a file) first method for the graph: smiles, bonds or connect
-c, --charge total charge (default 0; gs with a SMILES: from the SMILES)
--multiplicity spin multiplicity (default: the lowest for the electrons)
--config PipelineConfig as JSON or YAML; the options below override it
-n, --n-conformers, --conf-factor conformers to embed
--embed cmap or bounds
--etkdg, --no-etkdg ETKDGv3 instead of plain distance geometry (default: only for gs)
--refine mmff or uff
--no-fallback no fallback for the graph (bonds, connectivity) or MMFF (UFF)
--seed, --num-threads
--energy-threshold, --rmsd-threshold pruning
-o, --output output file (default conformer_ensemble.xyz)
--crest-energies only the energy (Hartree) on each comment line, as CREST does
-v, -vv progress (INFO) or details (DEBUG) on stderr

racerts filename.xyz (legacy)

The command is:

$ racerts filename.xyz [options]

where the filename.xyz is the path to an .xyz file containing a single TS conformer.

General inputs

Command Options Explanation
-c
--charge
<INT> [0] Overall molecular charge
-mult
--multiplicity
<INT> Spin multiplicity; the lowest for the number of electrons (1 or 2) if omitted
-smiles
--input_smiles
<STR...> One (or multiple) SMILES for either product
or starting material to define topology
-atoms
--reacting_atoms
<INT...> List of (0-based) indices of reacting atoms
-frozen
--frozen_atoms
<INT...> Optional: overwrite of atoms to freeze;
if omitted, neighbors of reacting atoms are inferred

Ensemble size

Command Options Explanation
-cf
--conf_factor
<INT> [80] Number of initially generated conformers:
NumRotatableBonds × conf_factor + 30
-n
--number_of_conformers
<INT> [-1] Specify number of initially generated conformers
(and overwrite conf_factor)

Conformer Generation Configuration

Command Options Explanation
-m
--mol
<smiles|bonds|connect> Method to infer molecular graph from .xyz:
smiles use MolGetterSMILES;
bonds use MolGetterBonds;
connect use MolGetterConnectivity
-e
--embed
<dm|cmap> [cmap] Embedding method:
dm = bounds-matrix; uses BoundsMatrixEmbedder;
cmap = coordinate map; uses CmapEmbedder
-ff
--ff
<mmff|uff> [mmff] Force-field refinement: ;
mmff uses MMFFOptimizer;
uff uses UFFOptimizer

Output

Command Options Explanation
-o
--output
<STR> [conformer_ensemble.xyz] Output .xyz filename; the comment lines are in extended XYZ format
(energy in eV, charge, spin; readable with ase.io.read)
--out_energies - Instead, write only the energy in Eh on each comment line (as in CREST ensembles);
conformer property remains in kcal/mol
-v
--verbose
- Progress on stderr (-vv: details)

Performance and reproducibility

Command Options Explanation
--num_threads <INT> [1] Threads for embedding/optimization
--seed <INT> [12] Random seed
--no_fallback - Disable automatic fallback (see below)

Fallback

In the default setup, an automatic fallback substitutes modules upon failure:

MolGetter:
1. MolGetterSMILES
2. MolGetterBonds
3. MolGetterConnectivity

Optimizer
1. MMFFOptimizer
2. UFFOptimizer

The next module in the chain is used only if the previous one fails.

molgetter options

Command Explanation
--no_assignbonds For bonds getter: don’t assign bonds [default: True]
--disallow_charged_fragments For bonds getter: disallow charged fragments [default: True]

embedder options

Command Explanation
--no_random_coords Disable random coordinates

optimizer options

Command Explanation
--force_constant <FLOAT> [1e6]

RMSDPruner options

Command Options Explanation
-rmsd
--rmsd_thres
<FLOAT> [0.125] RMSD threshold in Å
-rmsd_hs
--rmsd_include_hs
- Include hydrogens when computing RMSDs
[default: False]
--no_filter_energies - Disable energy-based dissimilarity prefilter
[default: True]
--no_filter_rotations - Disable rotational-profile prefilter
[default: True]
--rmsd_energy <FLOAT> [0.1] Energy difference threshold (kcal/mol) for the prefilter
--rmsd_rot_fraction <FLOAT> [0.03] Rotational-difference fraction threshold
-rmsd_match
--rmsd_max_matches
<INT> [10000] Max substructure matches for RMSD calculation

EnergyPruner options

Command Options Explanation
-energy
--energy_thres
<FLOAT> [20.0] Energy window for pruning (kcal/mol)

Common recipes

Basic run

$ racerts example.xyz --charge 0 --reacting_atoms 2 3 4

Use SMILES-defined topology and coordinate-map embedding

$ racerts example.xyz --charge 0 \
  --reacting_atoms 2 3 4 \
  --input_smiles "C1=CC=CC=C1" "O" \
  --mol smiles --embed cmap --ff mmff --out_energies

Increase diversity by allowing more initial conformers

$ racerts example.xyz --charge 0 --reacting_atoms 2 3 4 --conf_factor 120

Faster refinement on many conformers with threads (if using multithreaded optimizers)

$ racerts example.xyz --charge 0 --reacting_atoms 2 3 4 --num_threads 4