Releases: choderalab/openmmtools
Release 0.10.0 - Optimizations of ThermodynamicState, renamed AlchemicalFactory, readthedocs
- BREAKS API: Renamed
AlchemicalFactorytoAbsoluteAlchemicalFactory(#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
Major changes
- Overhaul of
LangevinIntegratorand 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
AlchemicalNonequilibriumLangevinIntegratorandExternalPerturbationLangevinIntegrator, and both are subclasses of a commonNonequilibriumLangevinIntegratorthat provides a consistent interface to setting and gettingprotocol_work AlchemicalNonequilibriumLangevinIntegratornow has a defaultalchemical_functionsto 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 anyNonequilibriumLangevinIntegratorsubclass and returns a unit-bearing work. The optionaldimensionless=Trueargument returns a dimensionless float in units ofkT. - 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
LangevinIntegratorderivatives matchesopenmm.LangevinIntegratorso it can act as a drop-in replacement. (#176) - The
get_shadow_work()andget_heat()methods are now available for anyLangevinIntegratorsubclass, as well as the corresponding propertiesshadow_workandheat. The functions also supportdimensionless=True. (#163) - The
shadow_workandheatproperties were added to allLangevinIntegratorsubclasses, returning the values of these properties (if the integrator was constructed with the appropriatemeasure_shadow_work=Trueormeasure_heat=Trueflags) as unit-bearing quantities - The
get_protocol_work()andget_total_work()methods are now available for anyNonequilibriumLangevinIntegrator, returning unit-bearing quantities unlessdimensionless=Trueis provided in which case they return the work in implicit units of kT.get_total_work()requires the integrator to have been constructed withmeasure_shadow_work=True. - The
protocol_workandtotal_workproperties were added to allNonequilibriumLangevinIntegratorsubclasses, and return the unit-bearing work quantities.total_workrequires the integrator to have been constructed withmeasure_shadow_work=True. - The subclasses have been reworked to support any
kwargsthat the base classes support, and defaults have all been made consistent. - Various
reset()methods have been added to reset statistics for allLangevinIntegratorsubclasses. - All custom integrators support
.pretty_format()and.pretty_print()with optional highlighting of specific step types.
Bugfixes
- Zero-step perturbations now work correctly (#177)
AlchemicalNonequilibriumLangevinIntegratornow correctly supports multipleHsteps.
Internal changes
- Adding new
LangevinIntegratorstep methods now uses aself._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
AlchemicalWaterBoxwas added, which has the first water molecule in the system alchemically modified
0.9.3 Update ExternalPerturbationLangevinIntegrator
This update enables resetting the work, and other statistics of the ExternalPerturbationLangevinIntegrator by setting the first_step global variable to 0.
Updated Langevin integrators
This release includes updates to the Langevin integrators with variable splitting schemes, such as BAOAB and others.
Release 0.9.1 - bugfix 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
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
LangevinSplittingIntegratorclass that includes several popular integrators of Langevin dynamics as special cases. - Added
BAOABIntegratorandGeodesicBAOABIntegrator. - New base
CustomIntegrators:ThermostatedIntegrator, which offers utilities for integrators that maintain the distribution at a certain temperature, andRestorableIntegratorthat enable restoring class members (e.g. temperature getter/setters) that are otherwise lost with OpenMM serialization. - New state classes
ThermodynamicState,SamplerStateandCompoundThermodynamicStatethat can be used to store and manipulate OpenMMSystems andContexts. - New class
ContextCachethat centralizes the creation and caching of OpenMMContexts by exploiting the mechanism of compatibility betweenThermodynamicStates. - Imported existing MCMC framework (previously in
choderalab/openmmmcmc) and adapted it to the new state classes.MCMCMoves share aContextCacheto minimize the number of createdContexts during the simulation. - Imported the
alchemymodule and adapted it to the new framework.AlchemicalStatecan be used withCompoundThermodynamicStateto extendThermodynamicStateby composition.
Release 0.8.3 - minor feature update
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, andLysozymeImplicitnow accept theimplicitSolventoption, allowing GB models fromsimtk.openmm.app(such asHCT,OBC1,OBC2,GBn, andGBn2) to be optionally specified.OBC1remains the default.- These three classes also support any
kwargssupported byAmberPrmtopFile.createSystem(). Any parameters thatcreateSystemsupports will be passed along from the constructor. TolueneImplicitandHostGuestImplicitalso have variants likeTolueneImplicitHCT,TolueneImplicitOBC1, etc. for all OpenMM-supported implicit solvent models.
Release 0.8.2 - bugfix release
Fixes a py3 issue in installation.
Release 0.8.1 - bugfix release
- Fixed a bug in
GHMCIntegratorwhereupdateContextState()was not being called - Improvements to
GHMCIntegratorfor speed potential_newandpotential_oldhave been added as global parameters forGHMCIntegrator
Release 0.8.0
- Added a host-guest system (CB7:B2):
HostGuestVacuumHostGuestImplicitHostGuestExplicit
GHMCIntegratornow includes protection fromnans