Integrators¶
openmmtools.integrators
provides a number of high quality integrators implemented using OpenMM’s CustomIntegrator facility.
The integrators provided in the openmmtools.integrators
package subclass the OpenMM CustomIntegrator, providing a more full-featured Pythonic class wrapping the Swig-wrapped CustomIntegrator.
Warning
OpenMM’s CompoundIntegrator caches OpenMM Integrator
objects, but can only return the SWIG-wrapped base integrator object if you call CompoundIntegrator.getIntegrator()
or CompoundIntegrator.getCurrentIntegrator()
.
If you want to hold onto one of the Python subclasses we make available in openmmtools.integrators
, you will need to cache the original Python integrator you create.
You can still use either integrator.step()
call, but you MUST MAKE SURE THAT INTEGRATOR IS SELECTED currently in CompoundIntegrator.setCurrentIntegrator(index)
before calling integrator.step()
or else the behavior is undefined.
Langevin integrators¶
The entire family of Langevin integrators described by Trotter splittings of the propagator is available. These integrators also support multiple-timestep force splittings and Metropolization. In addition, we provide special subclasses for several popular classes of Langevin integrators.
Note
We highly recommend the excellent geodesic BAOAB (g-BAOAB) integrator of Leimkuhler and Matthews for all equilibrium simulations where only equilibrium configurational properties are of interest. This integrator (g-BAOAB) has extraordinarily good properties for biomolecular simulation.
Integrates Langevin dynamics with a prescribed operator splitting. |
|
Create a velocity Verlet with velocity randomization (VVVR) integrator. |
|
Create a BAOAB integrator. |
|
Create a geodesic-BAOAB integrator. |
|
Create a generalized hybrid Monte Carlo (GHMC) integrator. |
Nonequilibrium integrators¶
These integrators are available for nonequilibrium switching simulations, and provide additional features for measuring protocol, shadow, and total work.
Nonequilibrium integrator mix-in. |
|
Allows nonequilibrium switching based on force parameters specified in alchemical_functions. |
|
Periodic nonequilibrium integrator where master alchemical parameter |
|
Create a LangevinSplittingIntegrator that accounts for external perturbations and tracks protocol work. |
Miscellaneous integrators¶
Other miscellaneous integrators are available.
MTSIntegrator implements the rRESPA multiple time step integration algorithm. |
|
Construct a dummy integrator that does nothing except update call the force updates. |
|
Simple gradient descent minimizer implemented as an integrator. |
|
Verlocity Verlet integrator. |
|
Velocity Verlet integrator with Andersen thermostat using per-particle collisions (rather than massive collisions). |
|
Nosé-Hoover chain thermostat, using the reversible multi time step velocity Verlet algorithm |
|
Metropolis Monte Carlo with Gaussian displacement trials. |
|
Hybrid Monte Carlo (HMC) integrator. |
Mix-ins¶
A number of useful mix-ins are provided to endow integrators with additional features.
A PrettyPrintableIntegrator can format the contents of its step program for printing. |
|
Add temperature functions to a CustomIntegrator. |
Base classes¶
New integrators can inherit from these base classes to inherit extra features
Add temperature functions to a CustomIntegrator. |
|
Nonequilibrium integrator mix-in. |