YAML Reference¶
This page lists, section by section, the keys and default values you can set in a YAML configuration file (--config). The list of sections, the order of precedence, and the mapping from CLI flags to YAML keys come first.
Section |
Description |
Used by |
|---|---|---|
Geometry and coordinate settings |
all, opt, scan, scan2d, scan3d, tsopt, freq, irc, sp, dft, path-opt, path-search |
|
ML/MM calculator settings (alias: |
all, opt, scan, scan2d, scan3d, tsopt, freq, irc, sp, dft, 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, scan, scan2d, scan3d, path-opt, path-search |
|
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 |
Configuration precedence¶
Settings are applied in the following order (later sources override earlier ones):
built-in defaults < --config (YAML) < CLI flags
Built-in defaults — the values shown by
mlmm <subcmd> --help-advancedand as[default: …]in the Command Reference.--config— a YAML file that overrides defaults (e.g.,--config my_settings.yaml).CLI flags — explicit command-line options (e.g.,
-q -1,--thresh gau_loose). Only explicitly supplied flags override YAML; options left at their CLI default do not mask YAML values.
For example, if the YAML sets calc.model_charge: 0 but the CLI passes -q -1, the ML-region charge will be -1.
This precedence applies to every command that takes --config.
To check the values a run uses, run it with -v 3, which prints each section as its name, a dashed underline, and the values in effect:
opt
---
thresh: gau
max_cycles: 100000
…
A misspelled section name prints [config] WARNING: YAML section(s) … are not recognized and were ignored. and the run goes on without that section.
Common CLI-to-YAML mapping¶
CLI flag |
YAML key |
Section |
|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Command-specific: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Default --thresh per subcommand¶
The default --thresh differs per subcommand.
Subcommand |
Default |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Accepted values: gau_loose, gau, gau_tight, gau_vtight, baker, never. Override per run with --thresh <preset> or under opt.thresh in YAML. The MM relaxation of microiteration uses microiter.micro_thresh, which follows the macro-step preset when it is not set.
Note
Subcommands without --thresh. irc, freq, dft, and sp do not expose --thresh:
irc— convergence is governed byirc.rms_grad_thresh,irc.energy_thresh, andirc.max_cycles. The optimizer presets do not apply because IRC follows a predictor–corrector integrator, not a force-based minimizer.freqandsp— there is no optimization step, so no--thresh.dft— SCF convergence usesdft.conv_tol(default1e-9hartree) anddft.max_cycle, not thegau/bakerpresets. See thedftsection.
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 force threshold for adding new string nodes
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 # RS iterations per step (not ML/MM microiteration)
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: 3000 # 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 --dmf-tol)
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 # Recursive subdivision levels allowed (0 = no subdivision)
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
thresh: gau_loose # Convergence preset for string optimization (overridden by --thresh-gsm)
stop_in_when_full: 300 # Always set to max_cycles in path-opt/path-search
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.lbfgs/stopt.rfoconfigure the selected single-structure optimizer for endpoint preoptimization, HEI±1 refinement, and kink nodes.The outer
stoptkeys control the string optimizer (GS or DMF wrapper)The path commands set the output directory and prefix of each of their runs themselves.
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 # Cap used when flattening is enabled (--flatten or this key); tsopt runs no flattening by default
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:
Without
--flatten,tsoptruns no flattening iterations unless the YAML enables them. When flattening is enabled,flatten_max_itersets its cap (default 50).In
tsoptandall,--flattenenables the flattening loop with the defaultflatten_max_iter, and--no-flattensetsflatten_max_iterto 0. 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 # RS iterations per step (not ML/MM microiteration)
augment_bonds: false # Augment reaction path based on bond analysis
min_line_search: false # Always false: RS-P-RFO does not use line searches
max_line_search: false # Always false: RS-P-RFO does not use line searches
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
RS-P-RFO does not use line searches: an explicit true for min_line_search
or max_line_search prints a warning and falls back to false.
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 # EulerPC corrector function
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 # Imaginary modes satisfy nu < -zero_cutoff_cm
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. hessian_dimer.neg_freq_thresh_cm and
rsirfo.saddle_imaginary_threshold_cm are other names for the same cutoff;
two different values stop the run with an error.
The default classifies ν < −5.00 cm⁻¹ as imaginary. n_imag gives the saddle order, and n_negative_modes counts every negative frequency. n_negative_modes does not change optimizer convergence. All signed physical modes and positive thermochemistry modes are retained.
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.
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
Single-Point Section¶
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:
--hess,--hessian-calc-mode, and-o/--out-diroverride these when passed explicitly.
DFT Section¶
dft (section)¶
DFT calculation settings.
dft:
func_basis: wb97m-v/def2-svp # 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 --dft-engine takes precedence
ecp: null # ECP basis name; null auto-derives from def2-* basis sets
lowmem: true # Low-memory direct JK; false enables density fitting
scf_stepwise_grid: true # Coarse-grid first SCF stage (--scf-stepwise-grid)
nprocs: auto # PySCF/OpenMP threads from scheduler/affinity
memory: auto # Host RAM limit, e.g. 64GB (not GPU VRAM)
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, and closed-shell runs withlowmem: trueuserks_lowmem.RKS;cpuuses standard PySCF RKS/UKS.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/Ų for distances; eV/rad² for angles and dihedrals)
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¶
# mlmm configuration example
geom:
coord_type: cart
freeze_atoms: []
calc:
model_charge: 0
model_mult: 1
backend: uma # High-level backend: "uma", "orb", "mace", "aimnet2", or "dft"
uma_model: uma-s-1p2 # uma-s-1p2 | 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-svp
grid_level: 3
Notes¶
calc:andmlmm:are both accepted as the name of the calculator section. If both are present, their keys are merged; the same key with two different values stops the run with an error.opt.lbfgsandopt.rfoare other names forlbfgsandrfo, andfreq.thermois another name forthermo, whichall --thermoalso reads.mlmm allconsumes only the sections for its selected active stages.--show-config(not onscan,scan2d, orscan3d) prints the loaded YAML file and its top-level keys, and the run then continues;spprints its merged settings and exits without calculating.
See Also¶
all — End-to-end workflow
opt — Single-structure optimization
tsopt — Transition state optimization
path-search — Recursive MEP search
freq — Vibrational analysis
dft — DFT calculations
ML/MM Calculator — ML/MM layers, link atoms, and the ONIOM energy
Backends — MLIP backend details
Troubleshooting — What to do when a run fails