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 grompp validation 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.