path-opt¶
pdb2reaction path-opt searches for a minimum-energy path (MEP) between exactly two structures with GSM (default) or DMF (--mep-mode dmf). It writes the path trajectory and exports the highest-energy image (HEI) as a TS candidate. Treat the HEI as a candidate transition state until it is validated with tsopt (which includes an imaginary-frequency check) and irc. For workflows that start from two or more structures and automatically refine only the reactive region, use path-search.
Use it when you have exactly two endpoint structures (R → P) and need a first-pass MEP without recursive refinement. Choose GSM (default) for a string-based path generator, or switch to DMF with --mep-mode dmf for the Direct Max Flux generator.
An MLIP backend (UMA by default; switch with -b/--backend to ORB, MACE, or AIMNet2) provides energies, gradients, and Hessians for every image. Before optimization starts, a rigid-body alignment step keeps the string stable.
Note
Frozen atoms in DMF mode use HarmonicFixAtoms (harmonic restraints with k=300 eV/Ų) instead of pysisyphus’s hard coordinate freeze used by GSM. This means frozen atoms in DMF can move slightly from their reference positions, which differs from the rigid freeze in GSM mode.
Examples¶
Command form:
pdb2reaction path-opt -i REACTANT.{pdb|xyz} PRODUCT.{pdb|xyz} [-q CHARGE] [-l, --ligand-charge <number|'RES:Q,...'>] [-m MULT] \
[-b/--backend uma|orb|mace|aimnet2] [--solvent SOLVENT] [--solvent-model alpb|cpcmx] \
[--workers N] [--workers-per-node N] \
[--mep-mode {gsm|dmf}] [--freeze-links/--no-freeze-links] [--max-nodes N] [--max-cycles N] \
[--climb/--no-climb] [--dump/--no-dump] [--thresh PRESET] [--thresh-stopt PRESET] \
[--preopt/--no-preopt] [--preopt-max-cycles N] [--opt-mode grad|hess] [--fix-ends/--no-fix-ends] \
[--show-config/--no-show-config] [--dry-run/--no-dry-run] \
[--convert-files/--no-convert-files] [--ref-pdb FILE]
MEP search between two endpoints:
pdb2reaction path-opt -i reactant.pdb product.pdb -q 0 -m 1 \
--out-dir ./result_path_opt
Pre-optimize endpoints before MEP search:
# Pre-optimize endpoints before MEP search
pdb2reaction path-opt -i reactant.pdb product.pdb -q 0 -m 1 \
--preopt --preopt-max-cycles 20000 --out-dir ./result_path_opt_preopt
Use DMF mode instead of GSM:
# Use DMF mode instead of GSM
pdb2reaction path-opt -i reactant.pdb product.pdb -q 0 -m 1 \
--mep-mode dmf --max-nodes 12 --out-dir ./result_path_opt_dmf
Note
DMF mode additionally requires cyipopt (install from conda-forge before running with --mep-mode dmf). pydmf ships with pdb2reaction as a dependency. The default --dmf-backend gpu uses the PyTorch/CUDA dmf.torch backend; pass --dmf-backend cpu (dmf/NumPy) on a GPU out-of-memory error.
A quick pass that freezes cap parents and disables climb: add --freeze-links --no-climb.
Workflow¶
Pre-alignment & freeze resolution
All endpoints after the first are Kabsch-aligned to the first structure. If either endpoint defines
freeze_atoms, only those atoms participate in the RMSD fit and the resulting transform is applied to every atom.When
--freeze-linksis active, cap-hydrogen parent atoms are automatically frozen (see Cap hydrogen and frozen atoms).
String growth and HEI export
After the path is grown and refined, the tool searches for the highest-energy internal local maximum (preferred). If none exists, it falls back to the maximum among internal nodes; if no internal nodes are present, the global maximum is exported.
The highest-energy image (HEI) is written both as
.xyzand.pdbwhen a PDB reference exists, and as.gjfwhen a Gaussian template is available; these conversions honor--convert-files.
Outputs¶
out_dir/
├─ final_geometries_trj.xyz # XYZ path; comment line holds energies when provided
├─ final_geometries.pdb # PDB of every image when a PDB reference is available (input PDB or --ref-pdb) and conversion enabled
├─ final_geometries.gjf # Gaussian companion when a Gaussian template is detected (conversion enabled)
├─ hei.xyz # Highest-energy image with its energy on the comment line
├─ hei.pdb # HEI converted to PDB when a PDB reference is available (conversion enabled)
├─ hei.gjf # HEI written using a detected Gaussian template (conversion enabled)
├─ align_refine/ # Intermediate files from the rigid alignment/refinement stage (created when alignment runs)
└─ <optimizer dumps> # Trajectory dumps when --dump (restart YAML only via YAML dump_restart)
Console output echoes the resolved YAML blocks and prints cycle-by-cycle MEP progress (GSM/DMF) with timing information.
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.
Option |
Description |
Default |
|---|---|---|
|
Reactant and product structures ( |
Required |
|
Total charge ( |
Required unless template/derivation applies |
|
Total charge or per-resname mapping used when |
None |
|
MLIP predictor parallelism (workers > 1 disables analytic Hessians; UMA backend only; |
|
|
Spin multiplicity ( |
Template/ |
|
PDB input (or XYZ/GJF with |
|
|
Comma-separated 1-based atom indices to freeze explicitly (e.g., |
None |
|
Number of internal nodes. GSM: total images = |
|
|
Select GSM (string-based) or DMF (Direct Max Flux) path generator. |
|
|
DMF compute backend ( |
|
|
MEP optimizer cycle cap (sets |
|
|
Enable climbing-image refinement (and Lanczos tangent). |
|
|
Dump MEP trajectories (GSM/DMF). Restart YAML is written only when enabled in YAML. |
|
|
Single-structure optimizer for endpoint preoptimization ( |
|
|
Toggle XYZ/TRJ → PDB/GJF companions for PDB/Gaussian inputs. |
|
|
Reference PDB topology for XYZ/GJF inputs (keeps XYZ coordinates) to enable PDB conversions. |
None |
|
Output directory. |
|
|
Override convergence preset for endpoint preoptimization only ( |
|
|
Override convergence preset for the string optimizer ( |
|
|
Base YAML configuration layer applied before explicit CLI values. |
None |
|
Print resolved configuration (including YAML layers) and continue. |
|
|
MLIP backend. |
|
|
Implicit solvent name for xTB correction (e.g. |
|
|
xTB solvent model. |
|
|
Validate options and print the execution plan without running optimization. |
|
|
Pre-optimize each endpoint with the selected single-structure optimizer before alignment/MEP search (GSM/DMF). |
|
|
Cap for endpoint preoptimization cycles. |
|
|
Keep the endpoint geometries fixed during GSM growth/refinement. |
|
|
Write a machine-readable |
|
YAML configuration¶
YAML sections used by path-opt¶
See YAML Reference for full key listings:
geom—--freeze-linksaugmentsfreeze_atomsfor PDB inputs.calc— MLIP backend setup.gs— Growing String representation (GSM mode).dmf— Direct Max Flux + (C)FB-ENM interpolation (DMF mode).stopt— StringOptimizer settings.opt.lbfgs/opt.rfo— Endpoint single-structure preoptimization. YAML overrides CLI--preopt-max-cycles.
path-opt-specific defaults¶
The following keys differ from the canonical defaults when invoked via path-opt:
stopt:
out_dir: ./result_path_opt/ # output directory (path-opt default)
opt:
lbfgs:
out_dir: ./result_path_opt/ # output directory (path-opt default)
rfo:
out_dir: ./result_path_opt/ # output directory (path-opt default)
Exit codes¶
See Exit codes in CLI Conventions.
See Also¶
path-search — Recursive MEP search with automatic refinement (for 2+ structures)
tsopt — Optimize the HEI as a TS candidate (includes imaginary-frequency check; follow with IRC)
extract — Generate active site model (binding pocket) PDBs for path-opt inputs
all — End-to-end workflow (defaults to single-pass path-opt; add
--refine-path Truefor recursive path-search. The--refine-pathflag lives onpdb2reaction allonly — see all.md → MEP search for its definition.)YAML Reference — Full
gs,dmf,stopt,optconfiguration optionsGlossary — Definitions of MEP, GSM, DMF, HEI
Common Error Recipes — Symptom-first failure routing
Troubleshooting — Detailed troubleshooting guide