A Nextflow pipeline to perform molecular dynamics (MD) simulations and analysis of proteins in solution.
[One or two paragraphs: what the pipeline simulates, the MD engine used (e.g. GROMACS/OpenMM), and what analyses it outputs.]
- Nextflow (>= 23.x)
- A container runtime: Docker or Singularity (see
containers/) - [MD engine + any Python/analysis dependencies]
quickMD-nf/ ├── .github/workflows/ # CI build workflows ├── bin/ # Helper / analysis scripts ├── conf/ # Configuration profiles ├── containers/ # Container definitions (Docker/Singularity) ├── testdata/ # Small test dataset ├── main.nf # Pipeline entry point ├── nextflow.config # Default configuration ├── proton_list*.txt # Protonation input lists (see below) └── readme.md
Each run produces re-centred PDB structures from the OpenMM MD stage, organised by run date.
results_30ns_salting/
└── <YYYY-MM-DD>/ # run date
└── openmm-md/ # OpenMM MD stage
└── wildtype_center_box_<salt>_<pH>_<temp>_traj<N>.pdb
Note: early runs (March 2025) use a flattened form,
results_30ns_salting_<YYYY-MM-DD>/openmm-md/…, where the date is appended with an underscore. From April 2025 onwards the date is a nested subdirectory. New runs should follow the nested convention.
wildtype_center_box_0.1500M_4.6pH_310K_traj1.pdb
| Field | Example | Description |
|---|---|---|
| variant | wildtype |
Protein variant |
| processing | center_box |
Re-centred in the simulation box |
| salt | 0.1500M |
NaCl concentration (0.15 M) |
| pH | 4.6pH |
Protonation pH |
| temperature | 310K |
Temperature (310 K, 37 °C) |
| replicate | trajN |
Independent trajectory number |
All simulations: wildtype, 0.1500 M salt, 310 K, 30 ns.
| pH | Replicates | Trajectories |
|---|---|---|
| 4.6 | 3 | traj1–3 |
| 4.8 | 3 | traj1–3 |
| 5.0 | 3 | traj1–3 |
| 5.2 | 3 | traj1–3 |
| 5.4 | 3 | traj1–3 |
| 5.6 | 3 | traj1–3 |
| 5.8 | 3 | traj1–3 |
| 6.0 | 3 | traj1–3 |
| 6.2 | 3 | traj1–3 |
| 6.4 | 3 | traj1–3 |
| 6.6 | 3 | traj1–3 |
| 6.8 | 3 | traj1–3 |
| 7.0 | 3 | traj1–3 |
| 7.2 | 3 | traj1–3 |
| 7.4 | 18 | traj1–18 |
Total: 15 pH conditions, 60 trajectory structures.
A second series removes a single proton from the His225 (H225) side chain,
modelling it as the neutral HIE tautomer (proton retained on the epsilon
nitrogen, NE2). This corresponds to the intrajH225HIE set in the analysis
scripts. These runs share the base conditions of the titration set —
wildtype, 0.1500 M salt, pH 4.6, 310 K, 30 ns — with an
added removed_protons_<...> token in the file name.
wildtype_center_box_0.1500M_4.6pH_removed_protons_194_155_310K_traj1.pdb
The residue numbers use mature-protein numbering (the 31-residue signalling peptide is removed, so full-sequence 225 → 194):
| Token | Mature no. | Full-sequence no. | Meaning |
|---|---|---|---|
194 |
194 | 225 (H225) | Histidine deprotonated to the HIE tautomer |
155 |
155 | 186 | Legacy token — no proton removed here |
Note on
155: a vestige of an earlier convention used when two histidine protons were removed. None of the current trajectories remove a proton at residue 155; the token is kept only for filename continuity and can be ignored. Consider dropping it from future runs to avoid confusion.
| Run date | Trajectories | Count |
|---|---|---|
| 2025-05-19 | traj1–5, traj7–10 | 9 |
| 2025-05-22 | traj6 | 1 |
| 2025-06-27 | traj11, traj13–15, traj17–20 | 8 |
| 2025-07-01 | traj21–23, traj27–30 | 7 |
| 2025-07-04 | traj24, traj26 | 2 |
| 2026-04-22 | traj12, traj16, traj25 | 3 |
Total: 30 trajectories, numbered traj1–traj30
To test whether enzymes driven into a deactivated state can recover active-state behaviour, the medoid structure of each deactivated-range run was used to seed a fresh simulation with the pH reassigned to 4.6 (within the active range).
- Deactivated range (source): pH 6.6–7.4 of the initial titration run
- Recovery condition: pH reassigned to 4.6, otherwise identical (wildtype, 0.1500 M, 310 K, 30 ns)
- Starting structures: the medoid of each of the 30 deactivated-range runs, stripped to protein only
- Replicates: one recovery trajectory (
traj1) per medoid
Stored in two dated batches inside results_30ns_salting/:
results_30ns_salting/
├── Medoid_2026-03-23/
│ └── openmm-md/
└── Medoid_2026-04-20/
└── openmm-md/
<source_run>_medoid_protein_only_<recovery_run>.pdb
Example:
wildtype_center_box_0.1500M_7.4pH_310K_traj9_medoid_protein_only_0.1500M_4.6pH_310K_traj1.pdb
| Segment | Meaning |
|---|---|
wildtype_center_box_0.1500M_7.4pH_310K_traj9 |
Source (deactivated) run whose medoid was extracted |
medoid_protein_only |
Representative (medoid) structure, solvent/ions stripped |
0.1500M_4.6pH_310K_traj1 |
Recovery run at reassigned pH 4.6 |
| Source pH | Source trajectories | Medoids |
|---|---|---|
| 6.6 | traj1–3 | 3 |
| 6.8 | traj1–3 | 3 |
| 7.0 | traj1–3 | 3 |
| 7.2 | traj1–3 | 3 |
| 7.4 | traj1–18 | 18 |
Total: 30 medoids → 30 recovery trajectories (one traj1 each), split
across the two Medoid_* batches.
A separate study applies the same pipeline to five α-galactosidase variants
(TDGAL18, 20, 35, 63, 75) at the two endpoint pH values, 4.6 and
7.4. These are stored outside the wildtype tree, in
TDGAL_results_30ns_salting/, across two dated batches.
TDGAL_results_30ns_salting/
├── 2025-05-28/
│ └── openmm-md/
└── 2025-06-09/
└── openmm-md/
TDGAL<variant>_center_box_0.1500M_<pH>pH_310K_traj<N>.pdb
e.g. TDGAL18_center_box_0.1500M_4.6pH_310K_traj1.pdb
Cells show the run date of each trajectory (— = not present):
| Variant | pH | traj1 | traj2 | traj3 |
|---|---|---|---|---|
| TDGAL18 | 4.6 | — | 2025-05-28 | 2025-05-28 |
| TDGAL18 | 7.4 | 2025-05-28 | 2025-06-09 | 2025-06-09 |
| TDGAL20 | 4.6 | 2025-06-09 | 2025-05-28 | 2025-05-28 |
| TDGAL20 | 7.4 | 2025-05-28 | 2025-06-09 | 2025-06-09 |
| TDGAL35 | 4.6 | 2025-05-28 | 2025-05-28 | 2025-05-28 |
| TDGAL35 | 7.4 | 2025-05-28 | 2025-06-09 | 2025-05-28 |
| TDGAL63 | 4.6 | 2025-06-09 | 2025-06-09 | 2025-05-28 |
| TDGAL63 | 7.4 | 2025-05-28 | 2025-05-28 | 2025-05-28 |
| TDGAL75 | 4.6 | 2025-05-28 | 2025-05-28 | 2025-05-28 |
| TDGAL75 | 7.4 | 2025-05-28 | 2025-06-09 | 2025-06-09 |
Total: 29 trajectories (missing TDGAL18 pH 4.6 traj1).