Usage: mlmm tsopt [OPTIONS]
TS optimization: grad (Dimer) or hess (RS-P-RFO) for the ML/MM calculator.
Options:
-v, --verbose LEVEL Console verbosity 0-3 (default 2). 0=silent;
1=milestones only; 2=+optimizer cycle tables,
per-stage timing, VRAM, deliverable paths;
3=everything (full config blocks, per-file
paths, DEBUG logging). [0<=x<=3]
--help-advanced Show all options (including advanced settings)
and exit.
-i, --input FILE Starting geometry (PDB/mmCIF or XYZ). XYZ
provides higher coordinate precision. If XYZ,
use --ref-pdb to specify PDB topology for atom
ordering and output conversion. [required]
--ref-mode FILE Advanced/internal Cartesian reference
direction(s) for Hessian TS root selection and
overlap tracking. Accepts .npz path-mode
caches, .npy arrays, or whitespace text
containing one 3N vector or a 2-D candidate
table. This guides mode identity; it does not
replace the Hessian and is not supported by
Dimer. The all workflow supplies it from the
MEP; standalone tsopt users normally leave it
unset.
--ref-pdb FILE Reference PDB topology when input is XYZ. XYZ
coordinates are used (higher precision) while
PDB provides atom ordering and residue
information for output conversion.
--parm7, --parm FILE Amber parm7 topology for the whole enzyme (MM
region). [required]
--model-pdb FILE ML-only, link-H-free PDB subset; atom
identity/order must match the full PDB/parm7.
When provided, it defines ML membership;
--detect-layer still reads valid
movable/frozen MM B-factors.
--model-indices TEXT Comma-separated atom indices for the ML region
(ranges allowed like 1-5). Used when --model-
pdb is omitted.
-q, --charge INTEGER Total charge of the ML region. Required unless
--ligand-charge or YAML calc.model_charge
gives it.
-l, --ligand-charge TEXT Total charge for unknown ligand residues or a
per-resname mapping (e.g., GPP:-3,SAM:1), used
to derive the ML-region charge when -q is
omitted (requires PDB/mmCIF input or --ref-
pdb).
-m, --multiplicity INTEGER RANGE
Spin multiplicity (2S+1) for the ML region.
[default: (1); x>=1]
--freeze-atoms TEXT Comma-separated 1-based indices to freeze
(e.g., '1,3,5').
--hessian-cutoff, --radius-hessian, --hess-cutoff FLOAT
Distance cutoff (Å) from ML region for MM
atoms to include in Hessian calculation.
Applied to movable MM atoms. Unset includes
every required movable MM atom; 0.0 requests
an ML-only Hessian and should be paired with
--active-dof-mode ml-only for final frequency
validation. [default: (all movable MM atoms)]
--movable-cutoff FLOAT Distance cutoff (Å) from ML region for movable
MM atoms. MM atoms beyond this are frozen.
Providing --movable-cutoff disables --detect-
layer. [default: (use freeze_atoms)]
--hessian-calc-mode [analytical|finitedifference]
How the ML backend builds the Hessian
(Analytical or FiniteDifference); overrides
calc.hessian_calc_mode from YAML. Runtime and
memory depend on the backend and system;
compare both modes on a representative pilot.
[default: (FiniteDifference)]
--max-cycles INTEGER RANGE Maximum total optimization cycles. [default:
(100000); x>=1]
--dump / --no-dump Write concatenated trajectory
'optimization_all_trj.xyz'. [default: no-
dump]
-o, --out-dir TEXT Output directory. [default: ./result_tsopt/]
--thresh [gau_loose|gau|gau_tight|gau_vtight|baker|never]
Convergence preset. [default: (baker)]
--opt-mode [grad|hess|dimer|rsirfo|trim|rsprfo]
grad/dimer → Hessian Guided Dimer; hess/rsprfo
→ RS-P-RFO (Banerjee); rsirfo → RS-I-RFO; trim
→ TRIM (Helgaker). All three Hessian TS
optimizers (rsirfo/rsprfo/trim) are microiter-
capable. [default: hess]
--microiter / --no-microiter Alternate one Hessian TS step with MM L-BFGS
relaxation. Disabled for grad/dimer modes and
embedding. [default: microiter]
--flatten / --no-flatten Enable/disable extra imaginary-mode flattening
loop. --flatten uses the default
flatten_max_iter (50); --no-flatten forces it
to 0. When not provided, the loop is disabled
unless YAML/config enables it. [default: (no-
flatten)]
--ml-only-hessian-dimer / --no-ml-only-hessian-dimer
Use ML-region-only Hessian (no MM Hessian
contribution) for dimer orientation in grad
mode. Faster but less accurate for mode
direction. [default: no-ml-only-hessian-
dimer]
--active-dof-mode [all|ml-only|partial|unfrozen]
Active DOF selection for final frequency
analysis: all (all atoms), ml-only (ML only),
partial (ML + MovableMM, default), unfrozen
(all except frozen layer). [default: partial]
--config FILE Base YAML configuration file applied before
explicit CLI options.
--show-config / --no-show-config
Print the loaded YAML file and its top-level
keys, then continue. [default: no-show-
config]
--dry-run / --no-dry-run Validate options and inputs without running TS
optimization. [default: no-dry-run]
--convert-files / --no-convert-files
Convert XYZ/TRJ outputs into PDB companions
based on the input format. [default: convert-
files]
-b, --backend [uma|orb|mace|aimnet2|dft]
High-level backend for the ONIOM model region.
[default: (uma)]
--embedcharge / --no-embedcharge
Enable electrostatic embedding. MLIP backends
use the computationally expensive xTB point-
charge delta correction; dft uses native PySCF
MM point charges. [default: no-embedcharge]
--embedcharge-cutoff FLOAT Distance cutoff (Å) from the ML region for MM
point charges used by embedding. [default:
(12.0)]
--link-atom-method [scaled|fixed]
Link-atom position mode: scaled (g-factor) or
fixed (1.09/1.01 Å). [default: (scaled)]
--mm-backend [hessian_ff|openmm]
MM backend. MM Hessians use finite differences
by default; set calc.mm_fd: false for the
hessian_ff analytical path. [default:
(hessian_ff)]
--cmap / --no-cmap Preserve CMAP terms in both real and model MM
layers when present in parm7. [default:
(cmap)]
--skip-final-freq / --no-skip-final-freq
Skip the terminal PHVA/frequency analysis
after convergence (a plateau stop still runs
it); RS-P-RFO/RS-I-RFO/TRIM also skip
--flatten, which needs it. Standalone tsopt
retains the final structure with unverified
saddle order; all stops before IRC because no
imaginary direction can be validated.
[default: no-skip-final-freq]
--read-hess FILE Start from the Hessian in this .npy file (e.g.
from freq or tsopt --dump-hess) instead of
computing it: the Cartesian Hessian of the
input geometry in Hartree/bohr^2, for all
atoms, only the movable ones, or only the
atoms in the Hessian calculation. [default:
(None)]
--dump-hess FILE Save the Hessian of the final geometry as a
NumPy .npy array (Cartesian, Hartree/bohr^2;
only the atoms in the Hessian calculation when
atoms are frozen or --hess-cutoff is set) for
'--read-hess' in freq, tsopt, or irc, or for
other programs. [default: (None)]
--out-json / --no-out-json Write machine-readable result.json to out_dir.
[default: no-out-json]
--detect-layer / --no-detect-layer
Automatically detect ML/MM layers from input
PDB B-factors (ML=0, MovableMM=10,
FrozenMM=20) when explicit ML membership is
absent. With explicit membership, retain valid
movable/frozen MM B-factor layers. [default:
detect-layer]
--precision [fp32|fp64] MLIP backend precision: fp32 or fp64. Unset
defaults per backend (uma: fp32; orb, mace:
fp64). Routed to backend-specific kwargs (UMA
precision / ORB precision / MACE
default_dtype). aimnet2: fp32 no-op; fp64
rejected. [default: (per backend: uma fp32;
orb, mace fp64)]
--uma-workers, --workers INTEGER
MLIP predictor workers (UMA). >1 uses a
parallel predictor (fairchem-core[extras]);
combining it with an analytical Hessian is an
error. Default 1. [default: (1)]
--uma-workers-per-node, --workers-per-node INTEGER
Workers per node when the parallel MLIP
predictor is used (--workers > 1). [default:
(1)]
--backend-model TEXT Model variant for the selected --backend (e.g.
uma-s-1p2 / uma-m-1p1 for uma,
orb_v3_conservative_omol for orb, MACE-OMOL-0
/ off:small for mace). [default: (the
selected backend's own model)]
--calc-file FILE Python file exposing get_calculator(...) -> an
ASE Calculator used as the ML-region backend
(overrides --backend). Couples GFN-xTB / DFTB+
/ any ASE engine. See --calc-file-func-name.
--calc-factory, --calc-file-func-name TEXT
Name of the callable in --calc-file that
returns an ASE Calculator (or a module-level
Calculator instance). CLI overrides config
YAML; otherwise defaults to get_calculator.
[default: (get_calculator)]
--deterministic / --no-deterministic
Request deterministic algorithms for
controlled operations; verify exact
reproducibility on the complete target stack.
[default: no-deterministic]
--coord-type [cart|redund|dlc|tric]
Optimization coordinate system
(cart|redund|dlc|tric). cart is the default;
command-specific choices are listed here.
[default: (cart)]
--print-every INTEGER RANGE Print optimizer status every N cycles.
[default: (100); x>=1]
--allow-charge-mult-mismatch Skip the ML-region charge/multiplicity
electron-parity check (logs that it was
skipped). An open-shell ML region needs a
matching multiplicity; use this only for an
intentional nonstandard input such as a
covalently-cut region.
--func-basis TEXT High-level method as FUNCTIONAL/BASIS;
HF/BASIS is accepted. [default:
(wb97m-v/def2-svp)]
--dft-engine, --engine [gpu|cpu]
PySCF execution engine used by --backend dft.
[default: (gpu)]
--save-scf-checkpoint / --no-save-scf-checkpoint
Persist a structure-bound PySCF checkpoint.
[default: (disabled)]
--scf-checkpoint FILE Load/save the optional structure-bound PySCF
checkpoint at PATH.
--dft-low-memory, --lowmem / --no-dft-low-memory, --no-lowmem
Use GPU4PySCF rks_lowmem for closed-shell GPU
DFT; open-shell GPU and CPU use standard
direct JK. --no-lowmem enables density
fitting. [default: (lowmem)]
--scf-stepwise-grid / --no-scf-stepwise-grid
Converge the first SCF on a coarse grid, then
on the final grid (later SCFs reuse the
previous density as usual). [default:
(enabled)]
--dft-nprocs INTEGER RANGE PySCF/OpenMP CPU threads; GPU count is
unaffected. [default: (auto); x>=1]
--dft-memory, --dft-mem TEXT PySCF host RAM limit (for example 64GB or
120000MB). [default: (auto)]
--stop-plateau / --no-stop-plateau
Stop when the energy stops changing while the
convergence criteria are still unmet, and
report the run as stalled. It never signals
convergence; --max-cycles remains the real
bound. The MM micro iterations are never
stopped this way. [default: no-stop-plateau]
--stop-plateau-thresh FLOAT Energy range (hartree) below which --stop-
plateau treats the window as flat. [default:
(1e-4)]
--stop-plateau-window INTEGER Number of consecutive cycles --stop-plateau
inspects. [default: (50)]
-h, --help Show this message and exit.