YAML Reference¶
Overview¶
mlmm all consumes only the sections for its selected active stages.
Section |
Description |
Used by |
|---|---|---|
Geometry and coordinate settings |
all, opt, scan, scan2d, scan3d, tsopt, freq, irc, path-opt, path-search |
|
ML/MM calculator settings (alias: |
all, opt, scan, scan2d, scan3d, tsopt, freq, irc, path-opt, path-search |
|
Single-point output settings |
sp |
|
Shared optimizer settings |
all, opt, scan, scan2d, scan3d, tsopt, path-opt, path-search |
|
L-BFGS optimizer settings |
all, opt, scan, scan2d, scan3d, tsopt (microiteration MM relaxation), path-opt, path-search |
|
RFO optimizer settings |
all, opt |
|
Growing String Method settings |
all, path-opt, path-search |
|
Direct Max Flux settings |
all, path-opt, path-search |
|
IRC integration settings |
all, irc |
|
Vibrational analysis settings |
all, freq |
|
Thermochemistry settings |
all, freq |
|
DFT calculation settings |
all, dft |
|
Harmonic bias settings |
all, scan, scan2d, scan3d |
|
Bond-change detection settings |
all, scan, path-search |
|
Recursive path search settings |
all, path-search |
|
Hessian Dimer TS optimization |
all, tsopt |
|
Hessian TS optimization settings |
all, tsopt |
|
String optimizer settings |
all, path-opt, path-search |
|
Micro-iteration (MM relaxation) settings |
all, opt, tsopt |
Path Optimization Sections¶
gs¶
Growing String Method settings.
gs:
fix_first: true # Keep first endpoint fixed
fix_last: true # Keep last endpoint fixed
max_nodes: 20 # Maximum string nodes (internal images)
perp_thresh: 0.005 # Perpendicular displacement threshold
reparam_check: rms # Reparameterization check metric
reparam_every: 1 # Reparameterization stride
reparam_every_full: 1 # Full reparameterization stride
param: equi # Parameterization scheme
max_micro_cycles: 10 # Micro-iteration limit
reset_dlc: true # Rebuild delocalized coordinates each step
climb: true # Enable climbing image
climb_rms: 0.0005 # Climbing RMS threshold
climb_lanczos: true # Lanczos refinement for climbing
climb_lanczos_rms: 0.0005 # Lanczos RMS threshold
climb_fixed: false # Keep climbing image fixed
scheduler: null # Optional scheduler backend
gs.param accepts equi or energy. Energy weighting is applied only after the GSM string is fully grown and shifts node density toward high-energy regions. The equivalent CLI option is --gsm-param.
dmf¶
Direct Max Flux settings for MEP optimization.
dmf:
max_cycles: 300 # DMF/IPOPT iteration cap
tol: tight # IPOPT dual_inf_tol: tight (0.04) | middle (0.10) | loose (0.20) or a positive float (overridden by --thresh-dmf)
correlated: true # Correlated DMF propagation
sequential: true # Sequential DMF execution
fbenm_only_endpoints: false # Run FB-ENM beyond endpoints
fbenm_options:
delta_scale: 0.2 # FB-ENM displacement scaling
bond_scale: 1.25 # Bond cutoff scaling
fix_planes: true # Enforce planar constraints
cfbenm_options:
bond_scale: 1.25 # CFB-ENM bond cutoff scaling
corr0_scale: 1.1 # Correlation scale for corr0
corr1_scale: 1.5 # Correlation scale for corr1
corr2_scale: 1.6 # Correlation scale for corr2
eps: 0.05 # Correlation epsilon
pivotal: true # Pivotal residue handling
single: true # Single-atom pivots
remove_fourmembered: true # Prune four-membered rings
dmf_options:
remove_rotation_and_translation: false # Keep rigid-body motions
mass_weighted: false # Toggle mass weighting
parallel: false # Enable parallel DMF
eps_vel: 0.01 # Velocity tolerance
eps_rot: 0.01 # Rotational tolerance
beta: 10.0 # Beta parameter for DMF
update_teval: false # Update transition evaluation
k_fix: 300.0 # Harmonic constant for restraints
dmf.tol is the tolerance the DMF solve applies last, so it takes precedence over an ipopt_options.dual_inf_tol set in the same file. Set only ipopt_options.dual_inf_tol (and leave dmf.tol unset) to pin the raw IPOPT option instead. Gaussian presets such as gau_tight are rejected here; they belong to --thresh and --thresh-gsm.
search¶
Recursive path search settings (path-search only).
search:
max_depth: 10 # Recursion depth limit
stitch_rmsd_thresh: 0.0001 # RMSD threshold for stitching segments
bridge_rmsd_thresh: 0.0001 # RMSD threshold for bridging nodes
max_nodes_segment: 20 # Max nodes per segment
max_nodes_bridge: 5 # Max nodes per bridge
kink_max_nodes: 3 # Max nodes for kink optimizations
max_seq_kink: 2 # Max sequential kinks
refine_mode: null # Refinement strategy: peak, minima, or null (auto)
stopt¶
String optimizer settings for path-opt and path-search. Controls the GS/DMF string optimization (not individual node optimization).
stopt:
type: string # Optimizer type label (used by StringOptimizer)
thresh: gau_loose # Convergence preset for string optimization (overridden by --thresh-gsm)
stop_in_when_full: 300 # Early stop threshold when string is full
align: false # Alignment toggle
scale_step: global # Step scaling mode
max_cycles: 300 # String-optimizer cycle cap
dump: false # Dump trajectory/restart data
dump_restart: false # Dump restart checkpoints
reparam_thresh: 0.0 # Reparameterization threshold
coord_diff_thresh: 0.0 # Coordinate difference threshold
out_dir: ./result_path_opt/ # Output directory
print_every: 10 # Logging stride
lbfgs:
# Same keys as lbfgs section (for single-structure optimizer)
thresh: gau
# max_cycles: 100000 # optional override
#... (see lbfgs section)
Notes:
stopt.lbfgsconfigures the single-structure L-BFGS optimizer used for HEI+/-1 endpoint optimization and kink node optimization within path-search. Only L-BFGS is consumed at this nested level; astopt.rfo:block is not honored.The outer
stoptkeys control the string optimizer (GS or DMF wrapper)
TS Optimization Sections¶
hessian_dimer¶
Hessian Dimer TS optimization settings (tsopt --opt-mode grad). If
opt.thresh and hessian_dimer.thresh are both explicit, they must match.
One explicit value is used by both; otherwise the Dimer default wins.
hessian_dimer:
thresh_loose: gau_loose # Loose convergence preset
thresh: baker # Main convergence preset
update_interval_hessian: 500 # Hessian rebuild cadence
flatten_amp_ang: 0.1 # Flattening amplitude (Å)
flatten_max_iter: 50 # Flattening iteration cap (default 50; --no-flatten sets to 0)
flatten_sep_cutoff: 0.0 # Minimum distance between representative atoms
flatten_k: 10 # Representative atoms sampled per mode
flatten_loop_bofill: false # Bofill update for flatten displacements
partial_hessian_flatten: true # Use partial Hessian for imaginary mode detection
ml_only_hessian_dimer: false # Use only ML-region atoms for Dimer rotation
mem: 100000 # Memory limit for solver
device: auto # Device selection for eigensolver
root: 0 # Targeted TS root index
dimer:
length: 0.0189 # Dimer separation (Bohr)
rotation_max_cycles: 15 # Max rotation iterations
rotation_method: fourier # Rotation optimizer method
rotation_thresh: 0.0001 # Rotation convergence threshold
rotation_tol: 1 # Rotation tolerance factor
rotation_max_element: 0.001 # Max rotation matrix element
rotation_interpolate: true # Interpolate rotation steps
rotation_disable: false # Disable rotations entirely
rotation_disable_pos_curv: true # Disable when positive curvature detected
rotation_remove_trans: true # Remove the selected rigid-null components
trans_force_f_perp: true # Project forces perpendicular to translation
bonds: null # Bond list for constraints
N_hessian: null # Hessian size override
bias_rotation: false # Bias rotational search
bias_translation: false # Bias translational search
bias_gaussian_dot: 0.1 # Gaussian bias dot product
seed: null # RNG seed for rotations
write_orientations: false # Write rotation orientations (explicit true is allowed)
forward_hessian: true # Propagate Hessian forward
lbfgs:
# Same keys as lbfgs section
thresh: baker
line_search: false # Required: Dimer effective force is not energy-conjugate
Notes:
Ordinary TSOPT omission leaves flattening off with an effective iteration count of 0. When flattening is enabled,
flatten_max_itercontrols its cap and defaults to 50.The CLI flags
--flatten/--no-flatten(intsoptandall) interact with this setting:--flattenenables the flattening loop with the defaultflatten_max_iter(50);--no-flattenforcesflatten_max_iterto 0, effectively disabling the loop. An explicit YAML value forflatten_max_itertakes precedence when provided alongside--flatten.Inner L-BFGS settings live under
hessian_dimer.lbfgs, not the top-levellbfgssection. Sharedprint_everyandenergy_plateau*values follow the conflict rule above.line_searchis fixed tofalse;trueis rejected because Dimer’s effective force is not the gradient of the reported physical energy.max_cyclesis not configurable because each segment receives the cycles remaining fromopt.max_cycles.
rsirfo¶
Shared Hessian TS optimization settings. They apply to the default RS-P-RFO
(tsopt --opt-mode hess / rsprfo) and to explicit rsirfo or trim modes.
rsirfo:
thresh: baker # Hessian TS convergence preset
max_cycles: 100000 # Cycle cap shared with opt.max_cycles
print_every: 100 # Logging stride
min_step_norm: 1.0e-08 # Minimum accepted step norm
assert_min_step: true # Assert when steps stagnate
roots: [0] # One target root; empty or multi-root lists are rejected
hessian_ref: null # Reference Hessian
rx_modes: null # Reaction-mode definitions
prim_coord: null # Primary coordinates to monitor
rx_coords: null # Reaction coordinates to monitor
hessian_update: bofill # Hessian update scheme
hessian_init: calc # Hessian initialization
hessian_recalc_reset: true # Reset recalc counter after exact Hessian
max_micro_cycles: 50 # Micro-iterations per macro cycle
augment_bonds: false # Augment reaction path based on bond analysis
min_line_search: false # RS-P-RFO only: interpolate in the minimization subspace
max_line_search: false # RS-P-RFO only: interpolate in the maximization subspace
assert_neg_eigval: false # Require negative eigenvalue at convergence
track_mode_by_overlap: false # mlmm-specific: track the target mode by overlap
trust_radius: 0.10 # Trust region radius
trust_update: true # Trust region update
trust_min: 0.0001 # Minimum trust radius
trust_max: 0.10 # Maximum trust radius (tuned for ML/MM stability)
hessian_recalc: 500 # Hessian rebuild cadence
small_eigval_thresh: 1.0e-08 # Eigenvalue threshold for stability
out_dir: ./result_tsopt/ # Output directory
min_line_search and max_line_search are consumed only by
--opt-mode rsprfo; explicit YAML values are honored.
Settings duplicated in opt and rsirfo must match when both are explicit.
One explicit value is used by both; otherwise the rsirfo default wins.
IRC Section¶
irc (section)¶
IRC integration settings.
irc:
step_length: 0.1 # Integration step length
never_stop: false # Ignore physical endpoint criteria and trace to max_cycles
max_cycles: 125 # IRC-step cap
forward: true # Propagate in forward direction
backward: true # Propagate in backward direction
root: 0 # Normal-mode root index
hessian_init: calc # Hessian initialization source
hessian_update: bofill # Hessian update scheme
hessian_recalc: null # Hessian rebuild cadence
displ: energy # Displacement construction method
displ_energy: 0.001 # Energy-based displacement scaling
displ_length: 0.1 # Length-based displacement fallback
rms_grad_thresh: 0.001 # RMS gradient convergence threshold
hard_rms_grad_thresh: null # Hard RMS gradient stop
energy_thresh: 0.000001 # Energy change threshold
energy_increase_thresh: 0.0 # Stop on any one-step rise in ordinary mode
imag_below: 0.0 # Imaginary frequency cutoff
force_inflection: true # Enforce inflection detection
check_bonds: false # Check bonds during propagation
out_dir: ./result_irc/ # Output directory
prefix: "" # Filename prefix
dump_fn: irc_data.h5 # IRC data filename
dump_every: null # Disabled by default; set a positive dump stride to opt in
max_pred_steps: 500 # Predictor-corrector max steps
loose_cycles: 3 # Loose cycles before tightening
corr_func: mbs # Correlation function choice
Vibrational Analysis Sections¶
freq (section)¶
Vibrational frequency analysis settings.
freq:
active_dof_mode: partial # Active-atom selection: "all" | "ml-only" | "partial" | "unfrozen"
zero_cutoff_cm: 5.0 # Remove modes with |frequency| <= this value (cm^-1)
amplitude_ang: 0.8 # Displacement amplitude for modes (Å)
n_frames: 20 # Number of frames per mode trajectory
max_write: 10 # Maximum number of modes to write
sort: value # Sort order: "value" or "abs"
out_dir: ./result_freq/ # Output directory
freq.zero_cutoff_cm is shared by standalone freq, opt flattening,
Dimer, and Hessian-family TS optimization. The legacy
hessian_dimer.neg_freq_thresh_cm and
rsirfo.saddle_imaginary_threshold_cm spellings remain accepted as aliases;
conflicting values are rejected.
Notes:
active_dof_modeselects which atoms participate in the vibrational analysis.alluses every atom;ml-onlyrestricts to ML-region atoms;partial(default) uses ML + Movable-MM atoms;unfrozenuses every non-frozen atom. The CLI flag--active-dof-modeoverrides the YAML value when explicitly passed.
sp (section)¶
Single-point settings. Read only by mlmm sp.
sp:
hess: false # Also compute the active-coordinate ONIOM Hessian block
hessian_calc_mode: FiniteDifference # "FiniteDifference" | "Analytical"
out_dir: ./result_sp/ # Output directory
Notes:
The matching CLI flags (
--hess,--hessian-calc-mode,-o/--out-dir) override these when passed explicitly.
thermo¶
Thermochemistry settings.
thermo:
temperature: 298.15 # Thermochemistry temperature (K)
pressure_atm: 1.0 # Thermochemistry pressure (atm)
symmetry_number: null # Auto-detect; a positive integer is an advanced override
dump: false # Write thermoanalysis.yaml
microiter¶
Micro-iteration settings for ML/MM optimization. When --microiter is enabled,
the MM region is relaxed (with frozen ML atoms) between each macro-step of the
ML-region optimizer. This can substantially reduce the number of expensive
ML Hessian evaluations needed.
microiter:
micro_thresh: null # Convergence preset for MM relaxation (L-BFGS); null → same as macro thresh
micro_max_cycles: 100000 # Micro-iteration cycle cap
Notes:
Enabled via
--microiter/--no-microiterCLI flag (default: on)Available in
opt --opt-mode hessand every Hessian TS mode (hess,rsirfo,rsprfo,trim)Uses L-BFGS to minimize MM-region forces while ML atoms are frozen
micro_threshaccepts the same presets asopt.thresh(gau_loose, gau, gau_tight, etc.); whennullor omitted, defaults to the same threshold as the macro step
DFT Section¶
dft (section)¶
DFT calculation settings.
dft:
func_basis: wb97m-v/def2-tzvpd # Combined "FUNC/BASIS" string
conv_tol: 1.0e-09 # SCF convergence tolerance (Hartree)
max_cycle: 100 # SCF iteration cap
grid_level: 3 # PySCF grid level
engine: gpu # Compute engine: "gpu" (gpu4pyscf) or "cpu" (pyscf); CLI --engine takes precedence
ecp: null # ECP basis name; null auto-derives from def2-* basis sets
lowmem: true # Use gpu4pyscf rks_lowmem.RKS for closed-shell GPU runs
verbose: 0 # PySCF verbosity level; CLI -v 2/3 raises runtime PySCF verbosity to >=4
out_dir: ./result_dft/ # Output directory
Notes:
engine:gpuruns through gpu4pyscf (closed-shell usesrks_lowmem.RKSwhenlowmem: true);cpufalls back to standard PySCF RKS/UKS. The CLI flag--engineoverrides the YAML value when explicitly passed.ecp: when the basis name starts withdef2-andecpisnull, the same basis name is used as the ECP automatically. Set explicitly to override.
Scan Sections¶
bias¶
Harmonic bias settings for scans.
bias:
k: 300.0 # Harmonic bias strength (eV/Ų)
bond¶
MLIP-based bond-change detection.
bond:
device: auto # MLIP device for bond analysis
bond_factor: 1.2 # Covalent-radius scaling for cutoff
margin_fraction: 0.05 # Fractional tolerance for comparisons
delta_fraction: 0.05 # Minimum relative change to flag bond formation/breaking
Example: Complete Configuration File¶
Below is a full example combining multiple sections:
# mlmm configuration example
geom:
coord_type: cart
freeze_atoms: []
tr_projection: constrained
calc:
model_charge: 0
model_mult: 1
backend: uma # MLIP backend: "uma", "orb", "mace", or "aimnet2"
uma_model: uma-s-1p2 # uma-s-1p2 | uma-s-1p1 | uma-m-1p1
ml_device: auto
hessian_calc_mode: Analytical # Compare with FiniteDifference on a pilot
mm_device: cpu
mm_fd: true
use_bfactor_layers: true # Read layers from PDB B-factors
gs:
max_nodes: 20
climb: true
climb_lanczos: true
opt:
thresh: gau
max_cycles: 100000 # optimizer cycle cap
dump: false
out_dir: ./result_all/
stopt:
thresh: gau_loose
max_cycles: 300 # string-optimizer cycle cap
lbfgs:
thresh: gau
# max_cycles: 100000 # optional override
bond:
bond_factor: 1.2
delta_fraction: 0.05
search:
max_depth: 10
max_nodes_segment: 20
freq:
max_write: 10
amplitude_ang: 0.8
thermo:
temperature: 298.15
pressure_atm: 1.0
symmetry_number: null
dft:
func_basis: wb97m-v/def2-tzvpd
grid_level: 3