Quickstart: pdb2reaction all --tsopt (TS-only mode)¶
Goal¶
Validate an existing TS candidate end-to-end without running extract or the MEP (path-opt) stage. pdb2reaction all --tsopt chains tsopt → irc → freq → (dft) from a single input structure and emits canonical reactant / TS / product geometries and thermochemistry.
Prerequisites¶
pdb2reaction installed (see Installation)
One TS candidate geometry:
.pdb(preferred — carries residue / charge info) or.xyzCharge: exactly one of
-q/--charge INT,--ligand-charge/-l 'RES:Q,...', or a.gjfheader. For.xyzinputs-qand-mare mandatory — pass--ref-pdb cluster.pdbif you want-l 'RES:Q'resolution.TS-only mode activates when all three hold: exactly one
-iinput, no--scan-lists, and--tsopt(or--tsopt True). Otherwise the CLI raisesBadParameterat the input gate (Provide at least two structures with -i/--input in reaction order, or use a single structure with --scan-lists, or a single structure with --tsopt True.)
Minimal command¶
pdb2reaction all -i ts_candidate.pdb -l 'SAM:1,GPP:-3' \
--tsopt --thermo -o ./result_ts_only
For an XYZ TS candidate, supply -q and -m explicitly:
pdb2reaction all -i ts_candidate.xyz -q -1 -m 1 -b uma \
--tsopt --thermo -o ./result_ts_only
--tsopt activates the validation chain; --thermo adds ZPE / Gibbs corrections from the freq stage. Both stages run on the same backend (UMA by default).
(Optional) Add DFT single-points¶
pdb2reaction all -i ts_candidate.pdb -l 'SAM:1,GPP:-3' \
--tsopt --thermo --dft --dft-func-basis 'wb97m-v/def2-tzvpd' \
-o ./result_ts_only
VRAM warning:
--dftlaunches GPU4PySCF single-point jobs and can OOM on GPUs with < 24 GB VRAM for clusters above ~200 atoms. If you hitCUDA out of memory, drop--dftand runpdb2reaction dftseparately with a smaller basis or trimmed cluster, or move the DFT step to a larger-VRAM node. The[dft]extra must also be installed (see Installation).
Expected output¶
A successful run produces:
result_ts_only/
├── summary.log # Human-readable summary
├── summary.json # status: success | partial | failed
└── segments/
└── seg_01/ # TS-only deliverables
├── reactant.pdb # Canonical R/TS/P (TS-only mode)
├── ts.pdb
├── product.pdb
├── ts/
│ ├── final_geometry.{xyz,pdb}
│ └── vib/imag_*_trj.xyz # Imaginary-mode animation
├── irc/
│ └── {forward,backward,finished}_irc_trj.xyz
├── freq/{R,TS,P}/
│ ├── frequencies_cm-1.txt
│ └── thermoanalysis.yaml
└── dft/{R,TS,P}/ # --dft only
├── result.yaml # always (when --dft)
└── result.json # --out-json opt-in
Inspecting the result¶
Walk these in order; each step has a fast pass/fail check before you move on.
1. Top-level verdict — open result_ts_only/summary.json:
statusshould be"success"("partial"= stages ran but one validator flagged;"failed"= a stage errored).rate_limiting_step.barrier_kcalandsegments[0].delta_kcalare the headline ΔE‡ and ΔE in kcal/mol.post_segments[0].gibbs_uma.barrier_kcal/.delta_kcalare the same numbers with ZPE + thermal corrections applied (ΔG‡, ΔG at 298.15 K, 1 atm).
2. Imaginary mode at the saddle — post_segments[0].ts_imag:
n_imagmust be exactly1.nu_imag_max_cm(negative cm⁻¹) is the imaginary wavenumber.A chemistry-relevant TS sits in |ν| ≈ 100–2000 cm⁻¹. If
|nu_imag_max_cm|is below ~50 cm⁻¹, the “imag” mode is a soft delocalised motion, not a reactive coordinate — IRC will wander. Re-pick the TS guess, tighten--thresh-post, or raiseirc.imag_belowin the YAML (default0.0cm⁻¹) to skip very-soft modes when initializing IRC.Visualise the mode:
pymol result_ts_only/segments/seg_01/ts/vib/imag_*_trj.xyz— the animation should swing precisely the bond(s) you expect to break/form, not show whole-molecule/residue tumbling.
3. IRC connectivity — open the IRC trajectory in PyMOL:
pymol result_ts_only/segments/seg_01/irc/finished_irc_trj.xyz
The merged trajectory (forward + backward) should land on the intended reactant and product wells. Cross-check segments[0].bond_changes in summary.json: a non-empty list of Bond formed / Bond broken entries with sensible distance changes (e.g. C12-O14 : 3.7 Å --> 1.4 Å) is the chemistry-level confirmation.
4. Endpoint minima and thermochemistry — for each of R, TS, P:
result_ts_only/segments/seg_01/freq/{R,TS,P}/frequencies_cm-1.txt— R and P should list zero negative frequencies; TS exactly one (matching step 2).result_ts_only/segments/seg_01/freq/{R,TS,P}/thermoanalysis.yaml— fields areelectronic_energy_ha,zpe_correction_ha,sum_EE_and_ZPE_ha, andsum_EE_and_thermal_free_energy_ha(the absolute Gibbs energy in hartree, attemperature_K: 298.15,pressure_atm: 1.0). Subtract R from TS for ΔG‡; p2r already reports the difference ingibbs_uma.barrier_kcal.
5. Visual structure check — load the canonical R/TS/P PDBs:
pymol result_ts_only/segments/seg_01/reactant.pdb result_ts_only/segments/seg_01/ts.pdb result_ts_only/segments/seg_01/product.pdb
In PyMOL: align the three states, label the reactive atoms (label name C12+O14+C2+C17, name), and confirm bond-length deltas match bond_changes.
Troubleshoot:
Symptom |
Likely cause |
Fix |
|---|---|---|
|
TS guess collapsed to a minimum |
Re-do the TS guess (e.g. via |
|
Near-degenerate negative modes |
Add |
|
Imaginary mode not along the intended coordinate, or TS connects two essentially identical wells |
Visualize |
|
IRC endpoint is not a true minimum |
Tighten convergence ( |
Tips¶
For finer control over
tsoptparameters (--opt-mode,--max-cycles, Hessian options), run the standalone subcommand — see tsopt.--hessian-calc-mode Analyticalis recommended when VRAM permits (default:FiniteDifference).Inspect the full option surface with
pdb2reaction all --help-advanced.
Next step¶
Multi-structure MEP route: Quickstart:
pdb2reaction allSingle-structure scan route: Quickstart:
pdb2reaction all --scan-lists