Release History¶
Releases follow the major.minor.micro
scheme recommended by
PEP440, where
major
increments denote a change that may break API compatibility with previousmajor
releasesminor
increments add features but do not break API compatibilitymicro
increments represent bugfix releases or improvements in documentation
0.3.0¶
The main feature of this release is the overhauling of how the framework computes the gradients of observables with respect to force field parameters.
In particular, from this release onwards all gradients will be computed using the fluctuation formula (also referred to as the thermodynamic gradient), rather than calculation be the re-weighted finite difference approach (PR #280). In general the two methods produce gradients which are numerically indistinguishable, and so this should not markedly change any scientific output of this framework.
The change was made to, in future, enable better integration with automatic differentiation libraries such as jax, and differentiable simulation engines such as timemachine which readily and rapdily give access to \(\mathrm{d} U / \mathrm{d} \theta_i\).
Bugfixes¶
Breaking Changes¶
The
StatisticsArray
array has been completely removed and replaced with a new set of observable (Observable
,ObservableArray
,ObservableFrame
objects (#279, #286).The following classes have been renamed:
OpenMMReducedPotentials
->OpenMMEvaluateEnergies
.AveragePropertyProtocol
->BaseAverageObservable
,ExtractAverageStatistic
->AverageObservable
,ExtractUncorrelatedData
->BaseDecorrelateProtocol
,ExtractUncorrelatedTrajectoryData
->DecorrelateTrajectory
,ExtractUncorrelatedStatisticsData
->DecorrelateObservables
ConcatenateStatistics
->ConcatenateObservables
,BaseReducedPotentials
->BaseEvaluateEnergies
,ReweightStatistics -> ReweightObservable
The following classes have been removed:
OpenMMGradientPotentials
,BaseGradientPotentials
,CentralDifferenceGradient
The final value estimated by a workflow must now be an
Observable
object which contains any gradient information to return. (#296).
0.2.2¶
This release adds documentation for how physical properties are computed within the framework (both for this, and for previous releases.
0.2.0¶
This release overhauls the frameworks data curation abilities. In particular, it adds
a significant amount of data filters, including to filter by state, substance composition and chemical functionalities.
and components to
easily import all of the ThermoML and FreeSolv archives.
convert between property types (currently density <-> excess molar volume).
select data points close to a set of target states, and substances which contain specific functionalities (i.e. select only data points measured for ketones, alcohols or alkanes).
More information about the new curation abilities can be found in the documentation here.
New Features¶
Breaking Changes¶
All of the
PhysicalPropertyDataSet.filter_by_XXX
functions have now been removed in favor of the new curation components. See the documentation for information about the newly available filters and more.
0.1.2¶
A patch release offering minor bug fixes and quality of life improvements.
0.1.0 - OpenFF Evaluator¶
Introducing the OpenFF Evaluator! The release marks a significant milestone in the development of this project, and constitutes an almost full redesign of the framework with a focus on stability and ease of use.
Note: because of the extensive changes made throughout the entire framework, this release should almost be considered as an entirely new package. No files produced by previous versions of this will work with this new release.
Clearer Branding¶
First and foremost, this release marks the complete rebranding from the
previously named propertyestimator to the new openff-evaluator
package. This change is accompanied by the introduction of a new
openff
namespace for the package, signifying it’s position in the
larger Open Force Field infrastructure and piplelines.
What was previously:
import propertyestimator
now becomes:
import openff.evaluator
The rebranded package is now shipped on conda
under the new name of
openff-evaluator
:
conda install -c conda-forge -c omnia openff-evaluator
Markedly Improved Documentation¶
In addition, the release includes for the first time a significant amount of documentation for using the `framework and it's features`_ as well as a collection of user focused tutorials which can be ran directly in the browser.
Support for RDKit¶
This release almost entirely removes the dependence on OpenEye thanks to support for RDKit almost universally across the framework.
The only remaining instance where OpenEye is still required is for host-guest binding affinity calculations where it is used to perform docking.
Model Validation¶
Starting with this release almost all models, range from
PhysicalProperty
entries to ProtocolSchema
objects, are now
heavily validated to help catch any typos or errors early on.
Batching of Similar Properties¶
The EvaluatorServer
now more intelligently attempts to batch
properties which may be computed using the same simulations into a
single batch to be estimated. While the behaviour was already supported
for pure properties in previous, this has now been significantly
expanded to work well with mixture properties.
0.0.9 - Multi-state Reweighting Fix¶
This release implements a fix for calculating the gradients of properties being estimated by reweighting data cached from multiple independant simulations.
0.0.8 - ThermoML Improvements¶
This release is centered around cleaning up the ThermoML data set utilities. The main change is that ThermoML archive files can now be loaded even if they don’t contain measurement uncertainties.
0.0.7 - Bug Quick Fixes¶
This release aims to fix a number of minor bugs.
0.0.6 - Solvation Free Energies¶
This release centers around two key changes -
a general refactoring of the protocol classes to be much cleaner and extensible through the removal of the old stub functions and the addition of cleaner descriptors.
the addition of workflows to estimate solvation free energies via the new
SolvationYankProtocol
andSolvationFreeEnergy
classes.
The implemented free energy workflow is still rather basic, and does not yet support calculating parameter gradients or estimation from cached simulation data through reweighting.
A new table has been added to the documentation to make clear which built-in properties support which features.
New Features¶
PR #110: Cleanup and refactor of protocol classes.
PR #125: Support for PBS based HPC clusters.
PR #127: Adds a basic workflow for estimating solvation free energies with YANK.
PR #130: Adds a cleaner mechanism for restarting simulations from checkpoints.
PR #134: Update to a more stable dask version.
Bugfixes¶
Breaking Changes¶
PR #130: The
RunOpenMMSimulation.steps
input has now been split into thesteps_per_iteration
andtotal_number_of_iterations
inputs.
Migration Guide¶
This release contained several public API breaking changes. For the most part, these can be remedied by the follow steps:
Replace all instances of
run_openmm_simulation_protocol.steps
torun_openmm_simulation_protocol.steps_per_iteration
0.0.5 - Fix For Merging of Estimation Requests¶
This release implements a fix for a major bug which caused incorrect results to be returned when submitting multiple estimation requests at the same time - namely, the returned results became jumbled between the different requests. As an example, if a request was made to estimate a data set using the smirnoff99frosst force field, and then straight after with the gaff 1.81 force field, the results of the smirnoff99frosst request may contain some properties estimated with gaff 1.81 and vice versa.
This issue does not affect cases where only a single request was made and completed at a time (i.e the results of the previous request completed before the next estimation request was made).
0.0.4 - Initial Support for Non-SMIRNOFF FFs¶
This release adds initial support for estimating property data sets using force fields
not based on the SMIRNOFF
specification. In particular, initial AMBER force field support
has been added, along with a protocol which applies said force fields using tleap
.
New Features¶
PR #96: Adds a mechanism for specifying force fields not in the
SMIRNOFF
spec.PR #99: Adds support for applying
AMBER
force field parameters throughtleap
PR #111: Protocols now stream trajectories from disk, rather than pre-load the whole thing.
PR #112: Specific types of protocols can now be easily be replaced using
WorkflowOptions
.PR #117: Adds support for converting
PhysicalPropertyDataSet
objects topandas.DataFrame
.
Bugfixes¶
Breaking Changes¶
PR #96: The
PropertyEstimatorClient.request_estimate(force_field=...
argument has been renamed toforce_field_source
.
Migration Guide¶
This release contained several public API breaking changes. For the most part, these can be remedied by the follow steps:
Change all instances of
PropertyEstimatorClient.request_estimate(force_field=...)
toPropertyEstimatorClient.request_estimate(force_field_source=...)
0.0.3 - ExcessMolarVolume and Typing Improvements¶
This release implements a number of bug fixes and adds two key new features, namely built in support for estimating excess molar volume measurements, and improved type checking for protocol inputs and outputs.
New Features¶
Bugfixes¶
PR #94: Fixes exception when testing equality of
ProtocolPath
objects.PR #100: Fixes precision issues when ensuring mole fractions are <= 1.0.
PR #102: Fixes replicated input for children of replicated protocols.
PR #105: Fixes excess properties weighting by the wrong mole fractions.
PR #107: Fixes excess properties being converged to the wrong uncertainty.
PR #108: Fixes calculating MBAR gradients of reweighted properties.
Breaking Changes¶
PR #98:
Substance.get_amount
renamed toSubstance.get_amounts
and now returns an immutablefrozenset
ofAmount
objects, rather than a singleAmount
.PR #104: The
DivideGradientByScalar
,MultiplyGradientByScalar
,AddGradients
,SubtractGradients
andWeightGradientByMoleFraction
protocols have been removed. TheWeightQuantityByMoleFraction
protocol has been renamed toWeightByMoleFraction
.
Migration Guide¶
This release contained several public API breaking changes. For the most part, these can be remedied by the follow steps:
Change all instances of
Substance.get_amount
toSubstance.get_amounts
and handle the newly returned frozenset of amounts, rather than the previously returned single amount.Replace the now removed protocols as follows:
DivideGradientByScalar
->DivideValue
MultiplyGradientByScalar
->MultiplyValue
AddGradients
->AddValues
SubtractGradients
->SubtractValues
WeightGradientByMoleFraction
->WeightByMoleFraction
WeightQuantityByMoleFraction
->WeightByMoleFraction
0.0.2 - Replicator Quick Fixes¶
A minor release to fix a number of minor bugs related to replicating protocols.
0.0.1 - Initial Release¶
The initial pre-alpha release of the framework.