Skip to Content
Workflow TemplatesPDBmdAuto Full Pipeline

Package: pdbmdauto 1.2.0 · Template id: pdbmdauto-pipeline

Install the package from the Marketplace, then open this template from Start from Template. Its inputs ship with the package or are fetched for you — the walkthrough says which, and whether it needs the network. The bundled template takes one PDB identifier and returns a complete, protonated, solvated and energy-relaxed system with a short test trajectory — every intermediate on disk.

Structure4Z8J, 0.95 Å — the SNX27 PDZ domain bound to the C-terminal PDZ-binding motif of the parathyroid hormone receptor
ChainsA the PDZ domain (101 residues in sequence, 96 resolved) · B the peptide QEEWETVM (8, 7 resolved)
Unresolved residuessix, all N-terminal: A Gly33–Gly37 (GSHGG, a tag remnant) and B Gln586
pH7
Force fieldamber99sb, TIP3P water
Box5.0 nm cube
Ions0.15 M NaCl, neutralised — 12 Na⁺, 11 Cl⁻
Production2 ps (1000 × 2 fs) at 300 K
Runtime3–5½ min on an Intel laptop (three runs), ≈ 2 min on an Apple Silicon Mac Mini; the first install adds 3½ min on a Mac, ≈ 20 min on Windows through WSL2

Before you run

  • Network. Step 1 fetches 4Z8J from the RCSB PDB. Offline, set Input mode to a local file.
  • A working directory. Everything lands under <working directory>/pdbmdauto-e2e-full/e2e_4z8j/ (the case name comes from the template). Choose an empty folder.
  • The first install builds a 3.1 GB environment once (GROMACS, ProMod3, OpenStructure, PDB2PQR, PROPKA, Biopython, OpenMM). On Windows Salpa sets that environment up inside WSL2 for you.

The structure

The completed model: the PDZ domain in grey, the peptide in teal, the six rebuilt residues in orange

The model after step 5. The five-residue tag on the domain’s N-terminus and the peptide’s first residue were not located in the experiment; ProMod3 built them. They hang off the ends, where a terminal extension has nothing to pack against — a reminder that a rebuilt residue is a prediction.

The pipeline

Eleven nodes in a line. Each reads what the previous one wrote and adds its own files to the case directory. Paths below are relative to pdbmdauto-e2e-full/e2e_4z8j/.

1 · PDB FASTA Parser — Biopython, RCSB PDB

takesthe PDB id 4Z8J, pH 7, case name e2e_4z8j
writes4Z8J.pdb, 4Z8J_rcsb.fasta, chain_A.fasta, chain_B.fasta, missing_residues_chain_A.csv, missing_residues_chain_B.csv
set hereInput mode (PDB id or local file), PDB id, pH

Downloads the entry, splits it by chain, and reads the header’s REMARK 465 records into one CSV per chain: which residues the sequence has and the coordinates do not. For 4Z8J that is five rows for chain A (33–37) and one for chain B (586).

2 · Generate Alignment

takesthe structure and per-chain sequences
writesA/homology.ali, B/homology.ali (+ .seq)

Aligns each chain’s resolved residues to its full sequence — the gaps in that alignment are what step 5 will build.

3 · Multi-Chain Alignment

writesMerge/homology.ali

Consolidates the per-chain alignments into one, so the complex is modelled as a unit.

4 · Merge PDB Chains — Biopython

writesMerge/merge.pdb, Merge/chain_type.json, Merge/chain_name.json

Writes the selected chains as one model, dropping water and hetero residues (ligands, ions, cofactors). If your system needs a bound ligand, this is the step to notice.

5 · Fix Missing Residues — ProMod3 / OpenStructure

takesMerge/merge.pdb, Merge/homology.ali
writesMerge/alignment_A.fasta, Merge/alignment_B.fasta, Merge/fixed.pdb

Builds the six missing residues, reconstructs sidechains and briefly minimises. In the reference run chain A went from 96 to 101 residues and chain B from 7 to 8. Two things to know: ProMod3 renumbers from 1 (merge.pdb carried 38–133 and 587–593; fixed.pdb reads 1–101 and 1–8), and the Model Terminal Extensions option has no effect in this version — termini are always built.

6 · pKa + GROMACS EM — PROPKA, PDB2PQR, GROMACS

takesMerge/fixed.pdb, pH 7
writesgmx/propka.pqr, gmx/protonated.pdb, gmx/pdb2gmx.gro, gmx/pdb2gmx.top (+ per-chain .itp, posre.itp), gmx/box.gro, gmx/em_noconstr.*, gmx/em_hbonds.*
set hereforce field and water model (amber99sb, tip3p), the two .mdp files

pdb2pqr --ff AMBER --titration-state-method=propka --with-ph=7.00 decides which His, Asp, Glu, Lys and Arg are charged at pH 7 and adds hydrogens; pdb2gmx -ff amber99sb -water tip3p -ignh writes the topology; editconf -d 2 puts a box around it; two steepest-descent minimisations follow, first without constraints, then with H-bond constraints. Reference run: the constrained one converged to Fmax < 1000 in 15 steps at −1.26 × 10⁴ kJ/mol.

7 · Original Atom Groups — GROMACS

writesgmx/index.ndx with two extra groups, OriHeavy and OriBackBone

Marks which atoms came from the experiment, so the next step can hold them still while the rebuilt ones move. Reference run: OriHeavy 776 atoms, OriBackBone 414 — the 103 resolved residues × 4 backbone atoms + 2 terminal oxygens, exactly the six rebuilt residues excluded.

8 · GMX MD Relaxation (restrained) — GROMACS, protocol full_4step

takesgmx/em_hbonds.gro, gmx/pdb2gmx.top, gmx/index.ndx
writesgmx/nvt_fixOri.*, gmx/nvt_fixOriBackbone.*, gmx/mm1.*, gmx/mm2.*
set hereProtocol (full_4step here, em_only at step 10)

Four stages in vacuo: 5 ps of NVT at 300 K with every experimental heavy atom frozen, the same with only the experimental backbone frozen, then two conjugate-gradient minimisations. The rebuilt residues settle; the crystal structure does not drift. Reference run: the last minimisation converged to Fmax < 100 in 7 steps at −1.55 × 10⁴ kJ/mol. This is the slowest step — 84 s on a cold laptop, 222 s on the same laptop once hot.

9 · GMX Solvate & Ionize — GROMACS

takesgmx/mm2.gro, gmx/pdb2gmx.top, demo_data/ions.mdp (shipped with the node)
writesgmx/box.gro (rewritten as a 5 nm cube), gmx/solv.gro, gmx/ion.tpr, gmx/ion.gro, gmx/topol.top
set herebox size, salt concentration, ion names

editconf -box 5 5 5, solvate with SPC216, then genion -neutral -conc 0.15 -pname NA -nname CL. Reference run: 3,509 waters; the complex carried a charge of −1, so 12 Na⁺ and 11 Cl⁻ bring it to zero at 0.15 M; 12,193 atoms in total.

The solvated system: protein cartoon, water as points, Na⁺ blue and Cl⁻ green, the 5 nm box outlined

10 · GMX MD Relaxation (solvated) — GROMACS, protocol em_only

takesgmx/ion.gro, gmx/topol.top
writesgmx/em.tpr, gmx/em.gro, gmx/em.log, gmx/em.edr

One steepest-descent minimisation of the whole box, 500 steps, tolerance 500. Reference run: it stops at the step limit with Fmax ≈ 2.9 × 10³ kJ mol⁻¹ nm⁻¹ and a potential energy of −1.84 × 10⁵ kJ/mol — the water has relaxed onto the protein (compare the curve below) but the tolerance is not met. For the demonstration that is enough; for a production study raise nsteps in em.mdp until it converges.

Potential energy during the two minimisations: the in-vacuo one converges in 15 steps; the solvated one falls by 1.6 × 10⁵ kJ/mol and is still descending at step 500

11 · GROMACS MD Run (Local) — GROMACS

takesgmx/em.gro, gmx/topol.top, demo_data/md.mdp (shipped with the node)
writesgmx/md.tpr, gmx/md.gro, gmx/md.trr, gmx/md.edr, gmx/md.log, gmx/md.cpt
set herethe .mdp file — steps, time step, thermostat

1000 steps of 2 fs at 300 K (velocity rescaling, no pressure coupling), coordinates every 100 steps: 11 frames in md.trr (uncompressed; no .xtc is written). gen_seed = -1 in the shipped md.mdp, so velocities — and therefore trajectories — differ from run to run. Reference run: 31.6 ns/day on the cold laptop, 9.1 ns/day once hot.

Looking at the result

vmd Merge/fixed.pdb # the completed model — colour by chain, find the termini vmd gmx/md.gro gmx/md.trr # the trajectory, 11 frames printf 'Potential\n0\n' | gmx energy -f gmx/em.edr -o em.xvg # the curve above grep -E 'converged|Potential Energy|Maximum force' gmx/em_hbonds.log gmx/em.log

Expected result

From the reference run (Intel MacBook Pro, Salpa 0.3.1, pdbmdauto 1.2.0, 2026-09-03):

rebuilt residues A 33-37 (GSHGG) + B 586 (Gln) → fixed.pdb chain A 1-101, chain B 1-8 index groups OriHeavy 776 OriBackBone 414 Protein 1643 (with H) vacuum EM (step 6) converged Fmax < 1000 in 15 steps E = -1.26e4 kJ/mol solvated system 12193 atoms 3509 SOL 12 NA 11 CL charge -1 → 0 box 5.0 nm solvated EM (step 10) 500 steps, not converged E = -1.84e5 kJ/mol Fmax = 2.9e3 production 1000 × 2 fs = 2 ps 11 frames in md.trr 9-32 ns/day

What varies between runs: the rebuilt residues’ exact coordinates (ProMod3 samples), the MD velocities (random seed), and the last digits of the energies. What must not vary: six residues rebuilt, 12,193 atoms, a neutral system, eleven nodes green.

Runtime

MachineWhatTime
Intel MacBook Pro (i7-9750H, 6 cores, macOS 15.7), Salpa 0.3.1, GROMACS 2026.3 AVX2full pipeline, three runs179 s · 313 s · 329 s
samefirst install, empty package cache212 s
Apple Silicon Mac Mini, native arm64 (2026-08)full pipeline≈ 2 min
Windows 11 in a VM, WSL2 (2026-04)first install19–22 min

The Intel spread is thermal: a back-to-back run on a hot laptop took 2.5× longer in every GROMACS stage. The template’s “5 minutes” is the honest round figure for an Intel laptop.

Regenerating the figures

vmd/README.md beside this file — two headless VMD renders and one matplotlib plot, from the files a run leaves behind.

Watch

1 · PDBmdAuto 1/4 — install real MD tooling from the Salpa Hub, one click
2 · PDBmdAuto 2/4 — a whole MD preparation pipeline, ready made, with its walkthrough
3 · PDBmdAuto 3/4 — eleven steps, one button: run it and watch every step report
4 · PDBmdAuto 4/4 — what a finished run leaves on disk, and where Salpa shows it