Quickstart: pdb2reaction all --scan-lists¶
pdb2reaction all --scan-lists (-s) builds a reaction path from one structure. It drives the distances you choose to target values under harmonic restraints (a scan) and uses the scan endpoints to search the minimum energy path (MEP). With --tsopt, it continues to transition-state (TS) optimization and an intrinsic reaction coordinate (IRC) calculation. You define the reaction coordinate yourself, so the rest of the model changes less and the intended TS is easier to reach. The starting structure can be a reactant, an intermediate, or a product.
The commands below use 1.R.pdb from the bundled examples/; run them in that directory.
What it is for¶
No product structure: drive the forming and breaking bonds to make the product (P) from the reactant (R).
Two-step reactions: drive one step after another, such as a methyl transfer followed by a proton transfer.
MEP and TS from the scan: go on from the scanned path to the MEP and the TS in the same run.
Choosing a scan command¶
Goal |
Command |
|---|---|
Restrained structures and a scan trajectory only |
|
Go on from the scan to the MEP, and optionally to TS and IRC |
|
A 2D or 3D energy map over two or three coordinates |
|
Examples¶
1. Check the input first¶
--dry-run checks the input, the model extraction, the charge and spin parity (electron count vs. multiplicity), and the mapping of the scan atoms to the model, and then stops without any calculation.
pdb2reaction all -i 1.R.pdb -c 'SAM,GPP,MG' -l 'SAM:1,GPP:-3' \
-s '[(4360, 4419, 1.60)]' --dry-run
The check has passed when the console shows [all] --dry-run parity check OK: ... and [all] Planned stages: extract -> scan -> path_opt., and ends with [Dry run] --dry-run completed. Input command is valid. When the check fails, the run stops with an error such as --dry-run parity check failed; look up the message in Troubleshooting.
2. One stage¶
Drive the distance between SAM CS1 (atom 4360) and GPP C7 (atom 4419; C6 in IUPAC numbering) to 1.60 Å. Give the atoms by number or by name; the two commands are the same scan.
# Atom numbers (1-based by default)
pdb2reaction all -i 1.R.pdb -c 'SAM,GPP,MG' -l 'SAM:1,GPP:-3' \
-s '[(4360, 4419, 1.60)]' -o ./result_scan
# Atom names
pdb2reaction all -i 1.R.pdb -c 'SAM,GPP,MG' -l 'SAM:1,GPP:-3' \
-s '[("SAM,320,CS1", "GPP,321,C7", 1.60)]' -o ./result_scan
The run succeeded when the ====== Pipeline summary ====== block near the end of the console shows Scientific status: success; summary.json holds the same value in scientific_status.
3. Two stages¶
Each bracketed list after -s is one stage, called a literal (a list written out as text), and the stages run in order:
# Stage 1: drive the methyl-transfer distance to 1.60 Å
# Stage 2: then drive the proton transfer to 0.90 Å
pdb2reaction all -i 1.R.pdb -c 'SAM,GPP,MG' -l 'SAM:1,GPP:-3' -s \
'[("SAM,320,CS1","GPP,321,C7",1.60)]' \
'[("GPP,321,H11","GLU,186,OE2",0.90)]' \
-o ./result_scan
This short example drives only the bonds that form. In your own reaction, put the bonds that break and the H atoms that move in the same stage too; see Decide how to split the reaction.
Writing --scan-lists¶
Tuples: each literal is a list of tuples: distance
(atom1, atom2, target_Å), angle(atom1, atom2, atom3, target_deg), or dihedral(atom1, atom2, atom3, atom4, target_deg). Distances are in ångströms, and angles and dihedrals in degrees.Atoms: give 1-based integer atom numbers in the order of the full input structure (
--scan-zero-basedfor 0-based), or atom names in double quotes. With-c, both are mapped to the extracted model.Stages: the tuples in one literal move together, and each stage starts from the relaxed result of the previous one. Give
-sonce and list the literals after it;allstops with an error when-sis repeated.Quoting: wrap each literal in single quotes so that the shell leaves the parentheses and spaces alone.
Bundled PDBs: they have an empty chain column, so use the name or number forms such as
"SAM,320,CS1", not the forms with a chain ID.
For the full syntax of atom names and quoting, see Scan-list spec.
Output files¶
The commands above write:
result_scan/
├── summary.log
├── summary.json # Results, with scientific_status
├── mep_trj.pdb # MEP over all segments
├── energy_diagram_MEP.png # MEP energy profile
└── _work/ # Intermediate files, including the HEI (TS candidate); kept after the run
├── scan/
│ ├── preopt/ # Optimized starting structure
│ ├── stage_01/ # Scan stage 1
│ │ ├── result.{xyz,pdb} # Restrained endpoint (optimized without restraints only with --scan-endopt)
│ │ ├── scan_trj.xyz # Scan trajectory
│ │ └── scan.pdb
│ ├── stage_02/ # Scan stage 2 (two-stage run)
│ └── result.json # Scan results of each stage
└── path_opt/ # MEP search (path_search/ with --refine-path, the recursive MEP search)
└── hei_seg_01.{xyz,pdb} # Highest-energy image of segment 1
These commands stop after the MEP search and do not create segments/. Add --tsopt for the R/TS/P structures and IRC of each reactive segment in segments/seg_NN/, and --thermo for freq/.
Checking the result¶
Completion:
scientific_statusissuccesswhen every requested stage converged; otherwise it ispartialorfailed, with the reasons inscientific_status_reasons. With--tsopt, two checks are left for you: that the imaginary mode moves the bonds that form or break, and that the endpoints are the intended R and P.Scan: open
_work/scan/stage_01/scan_trj.xyzin a viewer and check that the distances change as intended. At the end of each stage the console prints[stage 1] Covalent-bond changes (start vs final): YesorNo, and_work/scan/result.jsonrecords it instages[].bond_changes.MEP: open
mep_trj.pdband_work/path_opt/hei_seg_01.pdb, the highest-energy image (HEI) and TS candidate, and check thatenergy_diagram_MEP.pngshows a clear barrier.TS (with
--tsopt): a successful TS optimization gives one imaginary mode along the reaction coordinate. The console then prints[tsopt] Converged (n_imag=1)., andsummary.jsonrecords the count inpost_segments[].tsopt.n_imaginary_modes. Opensegments/seg_01/ts/vib/imag_*_trj.xyzin a viewer and check that the mode moves the bonds that form or break.Endpoints (with
--tsopt): opensegments/seg_01/irc/finished_irc_trj.xyzand the optimized endpointssegments/seg_01/reactant.pdbandproduct.pdb, and check that they are the intended R and P. Even if the IRC does not converge, the result is usable when the endpoint optimizations reach the intended R and P.
Notes¶
Input: PDB/mmCIF, XYZ, or GJF.
-c(PDB/mmCIF only) cuts out a cluster model from the full system; without it the structure is used as is.Defaults of
allandscan: the two commands share the scan engine, but the option names and the defaults for the optimizations before and after the scan differ:Command
Step / restraint
Relaxation limit
Optimization before / after the scan
pdb2reaction all--scan-max-step-size 0.20Å;--scan-restraint-k 300eV/Ų--scan-relax-max-cycles 100000before: on (
--preopt/--no-preopt); after: off (--scan-endopt/--no-scan-endopt)pdb2reaction scan--max-step-size 0.20Å;--restraint-k 300eV/Ų--relax-max-cycles 100000before: off (
--preopt/--no-preopt); after: off (--endopt/--no-endopt)The restraint strength can also be set with YAML
bias.k.Bond changes and
--refine-path: every scan endpoint goes on to the MEP search, whether or not its stage shows a bond change.--refine-pathalone decides whether the MEP is refined recursively (path_search/).Scan endpoints: a finished scan gives restrained structures. They are not minima or transition states until an optimization without restraints, or a TS optimization and IRC, confirms them.
scanon its own: the standalonescanalso accepts a YAML or JSON spec file and scan ranges;all -stakes inline target tuples only.scan --dry-run: it checks the input, the charge and spin parity, and the parse of--scan-lists, but not the extraction or atom mapping ofall. Useall --dry-runfor those.
Next steps¶
Quickstart: TS-only mode: optimize and check a TS candidate, such as the top of a scan
Tips for studying reaction mechanisms: how to split a reaction into stages (“Decide how to split the reaction”)
Freeze atoms and restrain distances: what the restraint strength means
scan: run the scan on its ownall: option descriptions (alsopdb2reaction all --help-advanced)Glossary: MEP, TS, IRC, and other terms
Troubleshooting: find an error message or symptom and its fix