opt¶
Relaxes a single structure toward a local minimum, optionally with distance restraints or imaginary-mode flattening. Use --opt-mode grad (alias lbfgs, default) for L-BFGS minimization or --opt-mode hess (alias rfo) for RFOptimizer. The optimizer comes from pysisyphus, while an MLIP backend (UMA by default; ORB, MACE, and AIMNet2 also available via -b/--backend) provides energies, gradients, and Hessians. Supply one geometry as PDB/mmCIF, XYZ, or GJF; extract a desired trajectory frame to .xyz first.
Examples¶
Command form:
pdb2reaction opt -i INPUT.{pdb|cif|mmcif|xyz|gjf} [-q CHARGE] [-l, --ligand-charge <number|'RES:Q,...'>] [-m MULT] \
[-b/--backend uma|orb|mace|aimnet2] \
[--opt-mode grad|hess|lbfgs|rfo] [--flatten/--no-flatten] [--freeze-links/--no-freeze-links] \
[--dist-freeze '[(i,j,target_Å),...]'] [--one-based|--zero-based] \
[--bias-k K_eV_per_Ų] [--dump/--no-dump] [-o/--out-dir DIR] \
[--convert-files/--no-convert-files] [--ref-pdb FILE]
Basic minimization:
pdb2reaction opt -i input.pdb -q 0 -m 1 --out-dir ./result_opt
Tighter threshold and keep trajectory dumps:
pdb2reaction opt -i input.pdb -q 0 -m 1 --thresh gau_tight --dump \
--out-dir ./result_opt_tight
Add a harmonic distance restraint. The example uses --bias-k 20.0 (a loose restraint suitable for gently guiding the structure toward the target distance); the default bias.k is 300 eV·Å⁻² and is better when you want the restraint to dominate during optimization:
pdb2reaction opt -i input.pdb -q 0 -m 1 \
--dist-freeze '[(1,5,2.0)]' --bias-k 20.0 --out-dir ./result_opt_rest
# 2-tuple form restrains atoms 1 and 5 to their current distance: --dist-freeze '[(1,5)]'
Switch explicitly to RFO mode:
pdb2reaction opt -i input.pdb -q 0 -m 1 --opt-mode hess \
--out-dir ./result_opt_hess
Workflow¶
Optimizer naming: the CLI accepts
grad|lbfgsandhess|rfo; in the YAMLopt_modekey, uselbfgsorrfodirectly. See --opt-mode (subcommand-dependent) for the per-subcommand token→algorithm mapping.Flatten loop:
--flattenenables post-optimization flattening of imaginary vibrational modes. Inopt, all detected imaginary modes are flattened each iteration until none remain or the internal loop cap is reached. Its PHVA eigensolver always uses the constrained rigid-mode treatment.Restraints:
--dist-freezeconsumes Python-literal tuples(i, j, target_Å)wheretarget_Åis the target distance in Å; omitting the third element restrains the starting distance.--bias-ksets a global harmonic strength (eV·Å⁻²). Indices default to 1-based but can be flipped to 0-based with--zero-based.Charge/spin resolution: Charge is resolved via the standard priority chain (see CLI Conventions: Charge specification for details).
Freeze atoms: When
--freeze-linksis active, cap-hydrogen parent atoms are automatically frozen (see Cap hydrogen and frozen atoms).Dumping & conversion:
--dumpmirrorsopt.dump=Trueand writesoptimization_trj.xyz; when conversion is enabled, PDB inputs receive.pdbcompanions and mmCIF/oversized-PDB bridge inputs receive both.pdband.cif.opt.dump_restartcan emit restart YAML snapshots.Exit codes: See Exit codes in CLI Conventions.
Outputs¶
out_dir/
├─ final_geometry.xyz # Always written
├─ final_geometry.pdb # PDB/mmCIF topology input, conversion enabled
├─ final_geometry.cif # mmCIF/oversized-PDB bridge input, conversion enabled
├─ final_geometry.gjf # When a Gaussian template was detected and conversion is enabled
├─ optimization_trj.xyz # Only if dumping is enabled
├─ optimization.pdb # PDB conversion of the trajectory (topology input, conversion enabled)
├─ optimization.cif # Bridge-input trajectory with original IDs restored
└─ restart*.yml # Optional restarts when opt.dump_restart is set
The console prints the resolved geom, calc, opt, and lbfgs/rfo blocks, along with cycle-by-cycle progress and total runtime.
See CLI Conventions: Configuration precedence for the full resolution order.
CLI options¶
The full flag list is in the generated command reference; the table below covers the options that need explanation, and the exhaustive list is not hand-duplicated here.
Option |
Description |
Default |
|---|---|---|
|
One PDB/mmCIF, XYZ, or GJF geometry; extract a trajectory frame to |
Required |
|
Net charge. Required unless a |
Required unless template/derivation applies |
|
Either a scalar integer (e.g., |
None |
|
UMA predictor parallelism. |
|
|
Workers per node, forwarded to the parallel predictor. |
|
|
Spin multiplicity (2S+1). Falls back to |
Template/ |
|
Repeatable string parsed as Python literal describing |
None |
|
Interpret |
|
|
Harmonic bias strength applied to every |
|
|
Toggle cap-hydrogen parent freezing (PDB/mmCIF input or XYZ/GJF with |
|
|
Comma-separated 1-based atom indices to freeze explicitly (e.g., |
None |
|
Hard limit on optimization iterations ( |
|
|
Optimizer preset: |
|
|
Enable/disable the post-optimization imaginary-mode flattening loop. |
|
|
Opt in to rejecting energy-raising RFO trial steps in |
|
|
Emit trajectory dumps ( |
|
|
Enable or disable XYZ/TRJ → PDB/CIF companions for PDB/mmCIF topology inputs and XYZ → GJF companions for Gaussian templates. |
|
|
Reference PDB or mmCIF topology to use when the input is XYZ/GJF (keeps XYZ coordinates). |
None |
|
Output directory for all files. |
|
|
Override convergence preset ( |
|
|
Base YAML configuration file. |
None |
|
Print resolved YAML layer information before execution. |
|
|
Write a machine-readable |
|
|
Validate options and print execution plan without running optimization. |
|
|
MLIP backend. |
|
YAML configuration¶
Shared sections reuse YAML Reference; adjust only the values you need to change. geom, calc, opt, and the optimizer-specific lbfgs/rfo blocks use the canonical keys and defaults — see geom, calc, opt, lbfgs, rfo. A minimal representative configuration:
geom:
coord_type: cart # or `dlc` for delocalized internal coordinates
freeze_atoms: [] # 1-based frozen indices; merged with CLI cap detection
calc:
charge: 0 # mirrors the CLI option; defaults from `.gjf` when present
spin: 1
opt:
thresh: gau
max_cycles: 100000
out_dir: ./result_opt/ # opt-specific default
The only opt-specific default is out_dir: ./result_opt/ (also applied to lbfgs.out_dir/rfo.out_dir).
Full schema (every key and default): YAML Reference.
Notes¶
Note
Energy plateau stop (opt-in, default off). With --stop-plateau (YAML
energy_plateau: true), the optimizer terminates with status stalled (not
converged) if the energy range (max − min) over the last
--stop-plateau-window steps falls below --stop-plateau-thresh (default
1×10⁻⁴ au ≈ 0.06 kcal/mol over 50 steps). It saves cycles when the measured
force noise/flatness prevents the selected force threshold from being reached;
the noise level is backend/model/system dependent. A flat energy is not
evidence of a stationary point, so this never reports convergence and
--max-cycles remains the real bound. The stop is skipped for chain-of-states
optimizers, which store per-image energy arrays.
The fixed constrained rigid-mode treatment applies only when --flatten runs; it does not change L-BFGS or RFO optimization steps. See Frozen Atoms.
See Also¶
Common Error Recipes – Symptom-first failure routing
Troubleshooting – Detailed troubleshooting guide
tsopt — Optimize transition states (saddle points) instead of minima
freq — Vibrational analysis to confirm optimization reached a minimum
extract — Generate active site model (binding pocket) PDBs before optimization
all — End-to-end workflow that pre-optimizes endpoints
YAML Reference — Full
opt,lbfgs,rfoconfiguration optionsGlossary — Definitions of L-BFGS, RFO