Skip to content

OpenMM methods

One page per protocol MD-tools generates. Each page states what the method is for, what this repository implements and does not implement, and what the generated directory contains.

How any of these is actually launched — the Amber-like flags, the platform policy, the MPI rules — is Running.

method ensemble what it is for page
cMD NPT explicit, NVT implicit ordinary molecular dynamics; also the source ensemble of V0 for AIS protocol: cMD
REST2 NVT replica exchange with solute tempering — Hamiltonian scaling at one physical temperature protocol: REST2
AIS fixed volume annealed importance sampling: non-equilibrium switching paths from V0 to V1 and their work protocol: AIS
umbrella as cMD biased sampling along torsion collective variables, one window per run protocol: umbrella
alchemy md-openmm combine-topology on hold — see On hold protocol: alchemical

All five are generated by the same command and differ only by protocol: in the configuration:

md-openmm build-md -odir ./<method>-run1 --config <method>.config

What is shared

Scaling. Fixed-τ cMD and REST2 scale the Hamiltonian through one implementation, and it runs in one place: md-openmm build-top --rest2-scaler writes every scaled state as a file (build/<method>/system_state<i>.xml with its scaler.yaml), and a run integrates those files as they are. AIS scales nothing: it mixes two end-state Systems it is given, V(λ) = (1 − λ)·V0 + λ·V1, and for a REST2 switch V0 is such a saved state. There is no second scaler, so a change to the scaling rules cannot reach one protocol and miss another. The rules themselves are in the REST2 page.

Lengths are integer step counts. Every duration in a configuration is a number of steps. The logs derive picoseconds and nanoseconds for the reader once the numerical timestep is known. A schedule that would have to be rounded is refused, with the arithmetic that would fix it.

τ is the only public scaling coordinate. Neither s nor √s is ever written to a configuration or a record.

Restart is by content, not by name. Every stage records the parent state it continued from with its SHA-256, and a checkpoint is refused if the resolved configuration, System or topology that produced it has changed.

The generated directory

build-md writes small entry points, not copies of the implementation. A stage script is:

#!/usr/bin/env python
from md_tools.md import run_generated_stage
raise SystemExit(run_generated_stage(__file__, "min"))

The behaviour lives in the installed md_tools package; resolved.config beside the script is the single resolved declaration of the workflow, and the script finds it relative to __file__. The whole directory can be moved and it still runs.

Reading order

New to the repository: cMD, then the scientific defaults.

Choosing between enhanced-sampling methods: REST2 → AIS.

rREST2 (REST2 with a Boltzmann reservoir refresh) is archived as of 0.5.4: it is refused by name, and the git tag rREST2-final is the last commit where it runs.

Registering what you produced: data registration.