Releases: choderalab/openmmtools
0.12.0 - GB support in alchemy and new forces module
New features:
- Add
AbsoluteAlchemicalFactory
support for all GB models (#250) - Added
forces
andforcefactories
modules implementingUnishiftedReactionFieldForce
andreplace_reaction_field
respectively. The latter has been moved fromAbsoluteAlchemicalFactory
(#253) - Add
restrain_atoms
to restrain molecule conformation through an harmonic restrain (#255)
Bugfixes:
Hotfix 0.11.2
Hotfix in fringe Python2/3 compatibility issue when using old style serialization systems in Python 2
Release 0.11.1: Optimizations
0.11.0
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
- BREAKS API: Renamed
AlchemicalFactory
toAbsoluteAlchemicalFactory
(#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
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
andExternalPerturbationLangevinIntegrator
, and both are subclasses of a commonNonequilibriumLangevinIntegrator
that provides a consistent interface to setting and gettingprotocol_work
AlchemicalNonequilibriumLangevinIntegrator
now has a defaultalchemical_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 anyNonequilibriumLangevinIntegrator
subclass and returns a unit-bearing work. The optionaldimensionless=True
argument 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
LangevinIntegrator
derivatives matchesopenmm.LangevinIntegrator
so it can act as a drop-in replacement. (#176) - The
get_shadow_work()
andget_heat()
methods are now available for anyLangevinIntegrator
subclass, as well as the corresponding propertiesshadow_work
andheat
. The functions also supportdimensionless=True
. (#163) - The
shadow_work
andheat
properties were added to allLangevinIntegrator
subclasses, returning the values of these properties (if the integrator was constructed with the appropriatemeasure_shadow_work=True
ormeasure_heat=True
flags) as unit-bearing quantities - The
get_protocol_work()
andget_total_work()
methods are now available for anyNonequilibriumLangevinIntegrator
, returning unit-bearing quantities unlessdimensionless=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 withmeasure_shadow_work=True
. - The
protocol_work
andtotal_work
properties were added to allNonequilibriumLangevinIntegrator
subclasses, and return the unit-bearing work quantities.total_work
requires the integrator to have been constructed withmeasure_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 allLangevinIntegrator
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 multipleH
steps.
Internal changes
- Adding new
LangevinIntegrator
step 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
AlchemicalWaterBox
was 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
LangevinSplittingIntegrator
class that includes several popular integrators of Langevin dynamics as special cases. - Added
BAOABIntegrator
andGeodesicBAOABIntegrator
. - New base
CustomIntegrator
s:ThermostatedIntegrator
, which offers utilities for integrators that maintain the distribution at a certain temperature, andRestorableIntegrator
that enable restoring class members (e.g. temperature getter/setters) that are otherwise lost with OpenMM serialization. - New state classes
ThermodynamicState
,SamplerState
andCompoundThermodynamicState
that can be used to store and manipulate OpenMMSystem
s andContext
s. - New class
ContextCache
that centralizes the creation and caching of OpenMMContext
s by exploiting the mechanism of compatibility betweenThermodynamicState
s. - Imported existing MCMC framework (previously in
choderalab/openmmmcmc
) and adapted it to the new state classes.MCMCMove
s share aContextCache
to minimize the number of createdContext
s during the simulation. - Imported the
alchemy
module and adapted it to the new framework.AlchemicalState
can be used withCompoundThermodynamicState
to extendThermodynamicState
by composition.