Skip to content

Releases: choderalab/openmmtools

Hotfix 0.11.2

07 Jul 15:04
Compare
Choose a tag to compare
Hotfix 0.11.2 Pre-release
Pre-release

Hotfix in fringe Python2/3 compatibility issue when using old style serialization systems in Python 2

Release 0.11.1: Optimizations

06 Jul 17:15
Compare
Choose a tag to compare
Pre-release
  • Adds Drew-Dickerson DNA dodecamer test system (#223)
  • Bugfix and optimization to ContextCache (#235)
  • Compress serialized ThermodynamicState strings for speed and size (#232)
    • Backwards compatible with uncompressed serialized ThermodynamicStates

0.11.0

20 Jun 19:12
Compare
Choose a tag to compare
0.11.0 Pre-release
Pre-release

New Features:

  • LangevinIntegrator now sets measure_heat=False by default for increased performance (#211)
  • AbsoluteAlchemicalFactor now supports disable_alchemical_dispersion_correction to prevent 600x slowdowns with nonequilibrium integration (#218)
  • We now require conda-forge as a dependency for testing and deployment (#216)
  • Conda-forge added as channel to conda packages

Release 0.10.0 - Optimizations of ThermodynamicState, renamed AlchemicalFactory, readthedocs

26 May 00:51
Compare
Choose a tag to compare
  • BREAKS API: Renamed AlchemicalFactory to AbsoluteAlchemicalFactory (#206)
  • Major optimizations of ThermodynamicState (#200, #205)
    • keep in memory only a single System object per compatible state
    • fast copy/deepcopy
    • enable custom optimized serialization for multiple states
  • Added readthedocs documentation (#191)
  • Bugfix for serialization of context when NaN encountered (#199)
  • Added tests for python 3.6 (#184)
  • Added tests for integrators (#186, #187)

Release 0.9.4 - Nonequilibrium integrators overhaul

10 May 02:22
Compare
Choose a tag to compare

Major changes

  • Overhaul of LangevinIntegrator and subclasses to better support nonequilibrium integrators
  • Add true reaction-field support to AlchemicalFactory
  • Add some alchemical test systems

Updates to openmmtools.integrators.LangevinIntegrator and friends

API-breaking changes:

  • The nonequilibrium integrators are now called AlchemicalNonequilibriumLangevinIntegrator and ExternalPerturbationLangevinIntegrator, and both are subclasses of a common NonequilibriumLangevinIntegrator that provides a consistent interface to setting and getting protocol_work
  • AlchemicalNonequilibriumLangevinIntegrator now has a default alchemical_functions to eliminate need for every test to treat it as a special case (#180)
  • The get_protocol_work() method allows you to retrieve the protocol work from any NonequilibriumLangevinIntegrator subclass and returns a unit-bearing work. The optional dimensionless=True argument returns a dimensionless float in units of kT.
  • Integrator global variables now store all energies in natural OpenMM units (kJ/mol) but the new accessor methods (see below) should b used instead of getting integrator global variables for work and heat. (#181)
  • Any private methods for adding steps to the integrator have been prepended with _ to hide them from the public API.

New features

  • Order of arguments for all LangevinIntegrator derivatives matches openmm.LangevinIntegrator so it can act as a drop-in replacement. (#176)
  • The get_shadow_work() and get_heat() methods are now available for any LangevinIntegrator subclass, as well as the corresponding properties shadow_work and heat. The functions also support dimensionless=True. (#163)
  • The shadow_work and heat properties were added to all LangevinIntegrator subclasses, returning the values of these properties (if the integrator was constructed with the appropriate measure_shadow_work=True or measure_heat=True flags) as unit-bearing quantities
  • The get_protocol_work() and get_total_work() methods are now available for any NonequilibriumLangevinIntegrator, returning unit-bearing quantities unless dimensionless=True is provided in which case they return the work in implicit units of kT. get_total_work() requires the integrator to have been constructed with measure_shadow_work=True.
  • The protocol_work and total_work properties were added to all NonequilibriumLangevinIntegrator subclasses, and return the unit-bearing work quantities. total_work requires the integrator to have been constructed with measure_shadow_work=True.
  • The subclasses have been reworked to support any kwargs that the base classes support, and defaults have all been made consistent.
  • Various reset() methods have been added to reset statistics for all LangevinIntegrator subclasses.
  • All custom integrators support .pretty_format() and .pretty_print() with optional highlighting of specific step types.

Bugfixes

  • Zero-step perturbations now work correctly (#177)
  • AlchemicalNonequilibriumLangevinIntegrator now correctly supports multiple H steps.

Internal changes

  • Adding new LangevinIntegrator step methods now uses a self._register_step_method(step_string, callback_function, supports_force_groups=False) call to simplify this process.
  • Code duplication has been reduced through the use of calling base class methods whenever possible.
  • run_nonequilibrium_switching() test now uses BAR to test dragging a harmonic oscillator and tests a variety of integrator splittings (["O { V R H R V } O", "O V R H R V O", "R V O H O V R", "H R V O V R H"]).
  • Integrator tests use deterministic PME and mixed precision when able.

Updates to openmmtools.alchemy.AlchemicalFactory

Reaction field electrostatics now removes the shift, setting c_rf = 0.

A convenience method AlchemicalFactory.replace_reaction_field() has been added to allow fully-interacting systems to be modified to force c_rf = 0 by recoding reaction-field electrostatics as a CustomNonbondedForce

New openmmtools.testsystems classes

  • AlchemicalWaterBox was added, which has the first water molecule in the system alchemically modified

0.9.3 Update ExternalPerturbationLangevinIntegrator

26 Apr 15:06
Compare
Choose a tag to compare

This update enables resetting the work, and other statistics of the ExternalPerturbationLangevinIntegrator by setting the first_step global variable to 0.

Updated Langevin integrators

11 Apr 20:40
Compare
Choose a tag to compare
Pre-release

This release includes updates to the Langevin integrators with variable splitting schemes, such as BAOAB and others.

Release 0.9.1 - bugfix release

06 Apr 17:28
Compare
Choose a tag to compare
Pre-release

This release fixes a Python 2 bug caused by how Python 2 and Python 3 handle differently user-defined equality operators. This made the sanity checks in alchemy.AlchemicalState to always fail when checking the compatibility of a System.

Release 0.9.0 - Langevin splitting integrators, MCMC framework and alchemy

03 Apr 21:32
Compare
Choose a tag to compare

This version adds several improvements to the integrators module, it introduces a general framework to perform MCMC simulations, and it imports the functionalities of choderalab/alchemy.

  • Added a LangevinSplittingIntegrator class that includes several popular integrators of Langevin dynamics as special cases.
  • Added BAOABIntegrator and GeodesicBAOABIntegrator.
  • New base CustomIntegrators: ThermostatedIntegrator, which offers utilities for integrators that maintain the distribution at a certain temperature, and RestorableIntegrator that enable restoring class members (e.g. temperature getter/setters) that are otherwise lost with OpenMM serialization.
  • New state classes ThermodynamicState, SamplerState and CompoundThermodynamicState that can be used to store and manipulate OpenMM Systems and Contexts.
  • New class ContextCache that centralizes the creation and caching of OpenMM Contexts by exploiting the mechanism of compatibility between ThermodynamicStates.
  • Imported existing MCMC framework (previously in choderalab/openmmmcmc) and adapted it to the new state classes. MCMCMoves share a ContextCache to minimize the number of created Contexts during the simulation.
  • Imported the alchemy module and adapted it to the new framework. AlchemicalState can be used with CompoundThermodynamicState to extend ThermodynamicState by composition.

Release 0.8.3 - minor feature update

01 Jan 17:58
Compare
Choose a tag to compare
Pre-release

This release extends some of the systems in openmmtools.testsystems to allow multiple CustomGBForce-based GB models supported by OpenMM's customgbforces.py functionality to be used.

  • TolueneImplicit, HostGuestImplicit, and LysozymeImplicit now accept the implicitSolvent option, allowing GB models from simtk.openmm.app (such as HCT, OBC1, OBC2, GBn, and GBn2) to be optionally specified. OBC1 remains the default.
  • These three classes also support any kwargs supported by AmberPrmtopFile.createSystem(). Any parameters that createSystem supports will be passed along from the constructor.
  • TolueneImplicit and HostGuestImplicit also have variants like TolueneImplicitHCT, TolueneImplicitOBC1, etc. for all OpenMM-supported implicit solvent models.