Reproducibility and validation¶
Record the complete computational contract¶
For every production system, archive:
the exact DROPPS artifact and its SHA-256 checksum;
the command lines and explicit construction seeds;
the force-field, PDB, ITP/TOP, and MDP inputs;
the generated TPR v2 file and the
gromppvalidation output;the Python, OpenMM, and DROPPS versions;
the OpenMM platform, device identifier, and precision;
restart manifests used for continuation; and
analysis commands, selections, index groups, and sampling ranges.
Random seeds¶
pdb2dps and shuffled genmesh construction use seed 1215 by
default. Pass --seed explicitly in scripts. Use a recorded, distinct
seed for each independent replica rather than relying on an unstated change.
The run seed is stored in the MDP/TPR and controls the stochastic integrator,
velocity generation, and barostat random state. mdrun --seed can
override it for a new run; the override does not alter the TPR.
Input validation¶
Run grompp before committing compute time, then inspect the resulting
files:
dps grompp -f system.pdb -p system.top -m md.mdp -o run.tpr
dps check -s run.tpr
dps check -s run.tpr -f run.xtc
TPR v2 validates checksums for its internal members when read. Restart manifests associate checkpoint or State files with a molecular-system identity and record checksums where applicable.
Floating-point scope¶
An identical seed and input do not guarantee bitwise-identical dynamics across different OpenMM versions, compute platforms, hardware, or precision modes. Report those settings and compare scientific observables at an appropriate tolerance. Native OpenMM checkpoints are more environment-specific than portable State XML files.
Diagnosing failures¶
DROPPS normally prints concise command errors. Re-run with the debug environment variable to expose a Python traceback:
DROPPS_DEBUG=1 dps <command> ...
Include the complete command, traceback, version output, and a minimal non-sensitive reproducer in a bug report.