Release History¶
0.16.0 - Py2 deprecated, GlobalParameterState class, SamplerState reads CVs¶
New features¶
- Add ability for
SamplerStateto access new OpenMM Custom CV Force Variables (#362). SamplerState.update_from_contextnow has keywords to support finer grain updating from the Context. This is only recommended for advanced users (#362).- Added the new class
states.GlobalParameterStatedesigned to simplify the implementation of composable states that control global variables (#363). - Allow restraint force classes to be controlled by a parameter other than
lambda_restraints. This will enable multi-restraints simulations (#363).
Enhancements¶
- Global variables of integrators are now automatically copied over the integrator returned by
ContextCache.get_context. It is possible to specify exception throughContextCache.INCOMPATIBLE_INTEGRATOR_ATTRIBUTES(#364).
Others¶
- Integrator
MCMCMove``s now attempt to recover from NaN automatically by default (with ``n_restart_attemptsset to 4) (#364).
Deprecated¶
- Python2 is officially deprecated. Support will be dropped in future versions.
- Deprecated the signature of
IComposableState._on_setattrto fix a bug where the objects were temporarily left in an inconsistent state when an exception was raised and caught. - Deprecated
update_alchemical_chargesinAlchemicalStatein anticipation of the new implementation of the exact PME that will be based on theNonbondedForceoffsets rather thanupdateParametersInContext().
0.15.0 - Restraint forces¶
0.14.0 - Exact treatment of alchemical PME electrostatics, water cluster test system, optimizations¶
New features¶
Enhancements¶
0.13.4 - Barostat/External Force Bugfix, Restart Robustness¶
Bug fixes¶
- Fixed implementation bug where
CustomExternalForcerestraining atoms to absolute coordinates caused an issue when a Barostat was used (#310)
Enhancements¶
- MCMC Integrators now attempt to re-initialize the
Contextobject on the last restart attempt when NaN’s are encountered. This has internally been shown to correct some instances where normally resetting positions does not work around the NaN’s. This is a slow step relative to just resetting positions, but better than simulation crashing.
0.13.3 - Critical Bugfix to SamplerState Context Manipulation¶
0.13.2 - SamplerState Slicing and BitWise And/Or Ops¶
Added support for SamplerState slicing (#298)
Added bit operators and and or to math_eval (#301)
0.13.1 - Bugfix release¶
0.13.0 - Alternative reaction field models, Langevin splitting MCMCMove¶
New Features¶
- Storage Interface module with automatic disk IO handling
- Option for shifted or switched Reaction Field
LangevinSplittingDynamicMCMC move with specifiable sub step ordering- Nose-Hoover Chain Thermostat
Bug Fixes¶
- Many doc string cleanups
- Tests are based on released versions of OpenMM
- Tests also compare against development OpenMM, but do not fail because of it
- Fixed bug in Harmonic Oscillator tests’ error calculation
- Default collision rate in Langevin Integrators now matches docs
0.12.1 - Add virtual sites support in alchemy¶
0.12.0 - GB support in alchemy and new forces module¶
New features¶
- Add AbsoluteAlchemicalFactory support for all GB models (#250)
- Added
forcesandforcefactoriesmodules implementingUnishiftedReactionFieldForceandreplace_reaction_fieldrespectively. The latter has been moved fromAbsoluteAlchemicalFactory(#253) - Add
restrain_atomsto restrain molecule conformation through an harmonic restrain (#255)
0.11.2 - Bugfix release¶
- Hotfix in fringe Python2/3 compatibility issue when using old style serialization systems in Python 2
0.11.1 - Optimizations¶
0.11.0 - Conda forge installation¶
New Features¶
LangevinIntegratornow setsmeasure_heat=Falseby default for increased performance (#211)AbsoluteAlchemicalFactorynow supportsdisable_alchemical_dispersion_correctionto 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
0.10.0 - Optimizations of ThermodynamicState, renamed AlchemicalFactory¶
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)
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 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
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_workand heat. The functions also supportdimensionless=True.(#163) - The
shadow_workandheatproperties were added to all LangevinIntegrator subclasses, 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 kwargs that the base classes support, and defaults have all been made consistent.
- Various reset() methods have been added to reset statistics for all
LangevinIntegratorsubclasses. - 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 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 = 0by recoding reaction-field electrostatics as aCustomNonbondedForce
New openmmtools.testsystems classes¶
- AlchemicalWaterBox was added, which has the first water molecule in the system alchemically modified