irc¶
Runs EulerPC-based IRC (Intrinsic Reaction Coordinate) integration from a transition state toward reactants and products using the ML/MM calculator. Use it to validate that an optimized TS connects the expected reactant and product, or to generate reactant/product structures for downstream thermochemistry and DFT single-point energy evaluation — typically as tsopt -> freq (confirm one imaginary mode) -> irc. By default both forward and backward branches are computed. mlmm irc keeps the CLI intentionally narrow; parameters not surfaced on the command line should be provided via YAML so the run remains explicit and reproducible. The common input bridge accepts PDB/mmCIF and geom_loader formats. With a PDB/mmCIF topology (direct input or --ref-pdb) and conversion enabled, trajectories receive PDB companions; mmCIF and oversized-PDB bridge inputs also receive CIF companions with restored identifiers.
Examples¶
# Minimal run from a TS PDB
mlmm irc -i ts.pdb --parm real.parm7 --model-pdb ml_region.pdb \
-q 0 -m 1 --max-cycles 50 --out-dir ./result_irc
Forward branch only:
# Forward branch only
mlmm irc -i ts.pdb --parm real.parm7 --model-pdb ml_region.pdb \
-q 0 --no-backward --out-dir ./result_irc_forward
Smaller step size with analytical Hessians:
# Smaller step size for a shallow surface
mlmm irc -i ts.pdb --parm real.parm7 --model-pdb ml_region.pdb \
-q 0 -m 1 --step-size 0.05 \
--hessian-calc-mode Analytical --out-dir ./result_irc_analytical
# keep both branches and raise the step limit with --max-cycles 150
If an IRC stops almost immediately, first reduce --step-size (for example,
from 0.10 to 0.05 Bohr). To ignore every physical endpoint criterion and trace
unconditionally, opt in to --never-stop:
mlmm irc -i ts.pdb --parm real.parm7 --model-pdb ml_region.pdb -q 0 \
--step-size 0.05 --never-stop --max-cycles 250 -o result_irc_continue
This is not an unlimited loop: numerical/integration failures, external interruption, and the cycle cap still stop the run. A force threshold reached in this mode is not reported as directional convergence. Inspect both trajectories and endpoint connectivity before accepting them.
Command form:
mlmm irc -i TS_STRUCTURE --parm PARM7 --model-pdb ML_REGION [options]
mlmm irc --help shows core options; mlmm irc --help-advanced shows the full option list.
Workflow¶
Input preparation – Load the TS structure, Amber topology (
--parm), and ML-region definition (--model-pdb/--model-indices); resolve charge and spin. Direct PDB/mmCIF input or--ref-pdbsupplies the topology used for companion output.ML/MM calculator setup – Build the ML/MM calculator from
--parmand--model-pdb. The-b/--backendoption selects the MLIP (uma,orb,mace, oraimnet2; defaultuma). The--hessian-calc-modecontrols ML backend Hessian evaluation.Frozen-boundary TR treatment – The fixed constrained treatment removes only full-system rigid motions that leave all frozen anchors fixed. Its generic effective rank is 6/3/1/0 for zero/one/two/at least three non-collinear anchors; realistic ML/MM boundaries normally have rank 0.
IRC integration – The EulerPC integrator propagates along the IRC in both directions (unless
--no-forwardor--no-backwarddisables a branch). Step size and cycle count control integration length.Output & conversion – Trajectories are written as XYZ. PDB companions are generated when a PDB/mmCIF reference topology is available and
--convert-filesis enabled. Bridge inputs additionally produce CIF companions with original identifiers.
Outputs¶
out_dir/ (default: ./result_irc/)
├─ result.json # Present with --out-json; includes rigid_projection provenance
├─ <prefix>irc_data.h5 # Low-level periodic checkpoint; YAML opt-in only
├─ <prefix>finished_irc_trj.xyz # Full IRC trajectory (XYZ/TRJ)
├─ <prefix>forward_irc_trj.xyz # Forward path segment
├─ <prefix>backward_irc_trj.xyz # Backward path segment
├─ <prefix>finished_irc.pdb # PDB companion (reference topology + conversion enabled)
├─ <prefix>finished_irc.cif # Bridge-input companion with restored IDs
├─ <prefix>forward_irc.pdb # Forward PDB companion (same gating)
├─ <prefix>forward_irc.cif # Forward CIF companion (bridge input)
├─ <prefix>backward_irc.pdb # Backward PDB companion (same gating)
├─ <prefix>backward_irc.cif # Backward CIF companion (bridge input)
├─ <prefix>forward_first.xyz # Single-frame forward IRC endpoint (XYZ)
├─ <prefix>forward_first.pdb/.cif # Forward endpoint companions, when available
├─ <prefix>backward_last.xyz # Single-frame backward IRC endpoint (XYZ)
└─ <prefix>backward_last.pdb/.cif # Backward endpoint companions, when available
When irc.prefix is non-empty, EulerPC inserts one underscore before the
filename; for example, prefix: trial produces
trial_finished_irc_trj.xyz. result.json.files records the normalized names.
irc.dump_every defaults to null, so the HDF5 checkpoint is not written.
With a positive YAML value it is overwritten periodically with the current
direction’s coordinates, energies, and gradients. It is not a final combined
IRC artifact, contains no Hessian, and is intentionally omitted from
result.json.files.
Standalone IRC records stitched-path first / last endpoints and their
directed bond changes; it does not assign chemical reactant/product identity.
Inspect or match the endpoint structures before naming them R/P.
CLI options¶
The full flag list is in the generated command reference; the table below covers the options that need explanation.
Option |
Description |
Default |
|---|---|---|
|
Structure file ( |
Required |
|
Amber topology for the full enzyme/MM region. Required unless |
None |
|
PDB defining the ML region. Optional when valid B-factor layers or |
None |
|
Comma-separated ML-region atom indices (ranges allowed, e.g. |
None |
|
Interpret |
|
|
Automatically detect ML/MM layers from input PDB B-factors ( |
Enabled |
|
Comma-separated 1-based frozen-atom indices. |
None |
|
Net charge of the ML region/model system; overrides |
None (required unless |
|
Total charge for unknown ligand residues or a per-resname mapping (e.g., |
None |
|
Spin multiplicity (2S+1); overrides |
|
|
IRC-step cap; overrides |
|
|
Step length in Bohr (unweighted Cartesian); overrides |
|
|
Imaginary mode index for the initial displacement; overrides |
|
|
Run the forward IRC; overrides |
|
|
Run the backward IRC; overrides |
|
|
Ignore RMS-gradient, hard-gradient, energy-rise, and one-step energy-change stops ( |
|
|
Output directory; overrides |
|
|
Reference PDB or mmCIF topology to use when |
None |
|
Toggle XYZ/TRJ to PDB/CIF companions when a reference topology is available. |
|
|
How the ML backend builds the Hessian ( |
|
|
UMA predictor workers. Values greater than 1 require |
|
|
Workers per node for the parallel UMA predictor. |
None |
|
Base YAML configuration applied before explicit CLI options. |
None |
|
Print resolved YAML layers/config and continue. |
|
|
MLIP backend for the ML region: |
|
|
Preserve CMAP in both REAL and MODEL MM layers. |
|
|
Device for initial Hessian storage and IRC operations: |
|
|
Read an identified |
None |
|
Permit a schema-1 Hessian file whose charge/multiplicity cannot be verified; requires |
|
|
MM backend. Hessians use finite differences by default; set |
|
|
Link-atom placement: scaled ($g$-factor) or fixed 1.09/1.01 Å. |
|
|
Write machine-readable |
|
|
Validate and print execution plan without running IRC. Shown in |
|
NPZ geometry, atom order, active basis, model charge, and multiplicity must
match the current run. Schema-1 files lack electronic-state identity and
require the explicit --allow-unverified-hess-state opt-in; schema-2 state
mismatches are always fatal.
result.json["rigid_projection"]["electronic_state_verified"] records whether
the file handoff was verified.
YAML configuration¶
Provide mappings with merge order defaults < config < explicit CLI.
Shared sections reuse YAML Reference for geometry/calculator keys. For irc, geom.coord_type is forced to cart after YAML/CLI merging. When calc.return_partial_hessian is absent, IRC defaults it to true for active-block processing; an explicit YAML false requests the full Hessian.
geom:
coord_type: cart # forced to cart for irc (YAML value ignored)
freeze_atoms: [] # 1-based frozen atoms merged with CLI/link detection
tr_projection: constrained # fixed internal PHVA treatment
calc:
model_charge: 0 # ML-region/model-system net charge
model_mult: 1 # spin multiplicity 2S+1
real_parm7: real.parm7 # Amber parm7 topology
model_pdb: ml_region.pdb # ML-region definition
backend: uma # MLIP backend: uma | orb | mace | aimnet2
uma_model: uma-s-1p2 # uma-s-1p2 | uma-m-1p1
uma_task_name: omol # UMA task name (UMA backend only)
ml_device: auto # ML backend device selection
hessian_calc_mode: Analytical # override; default is FiniteDifference
return_partial_hessian: true # absent-key default; set false to request the full Hessian
irc:
step_length: 0.1 # integration step length (CLI: --step-size)
max_cycles: 125 # IRC-step cap
forward: true # propagate forward branch (CLI: --forward)
backward: true # propagate backward branch (CLI: --backward)
never_stop: false # ignore physical endpoint criteria through max_cycles
energy_increase_thresh: 0.0 # stop on any ordinary-mode one-step rise
Full schema (every irc key and default): YAML Reference.
Notes¶
Both branches run by default; disable one with
--no-forwardor--no-backwardwhen you only need a single direction.For early stopping, reduce
--step-sizebefore enabling--never-stop; use the latter only when tracing to the cycle cap is intended.An all-frozen selection has no IRC direction and raises an explicit error.
With
--out-json,result.json.rigid_projectionrecords the selected treatment, effective rank, initial-Hessian source, and Hessian shape.A stale non-constrained
geom.tr_projectionvalue fails explicitly.
See Also¶
Common Error Recipes — Symptom-first failure routing
Troubleshooting — Detailed troubleshooting guide
tsopt — Optimize the TS before running IRC
freq — Verify the TS candidate has one imaginary frequency; analyze IRC endpoints
opt — Optimize IRC endpoints to true minima
all — End-to-end workflow that runs IRC after tsopt
YAML Reference — Full
ircconfiguration optionsGlossary — Definition of IRC (Intrinsic Reaction Coordinate)