Release history¶
This section features and improvements of note in each release.
The full release history can be viewed at the GitHub yank releases page.
0.23.4 Bugfix release¶
0.23.3 Adds support for single mutations using Modeller¶
- Adds an optional
modeller` directive to the ``molecules
section of the YAML file through Modeller, a tool for comparative modeling of protein structures. - The following options are accessible through the
modeller
directive. (docs)apply_mutations
: Specify protein single mutations (e.g., T315I). (docs)
0.23.2 More Multi-Experiment Cleanup¶
resume_setup
andresume_experiment
areTrue
by default- Fixed bug where
yank analyze extract-trajectory
could not be executed - Further updated multi-analysis docs to reflect multi-experiment changes
0.23.1 Multi-Experiment and Online Bug¶
- Fixed bug in
MultiExperimentAnalyzer
where a path ending in the folder separator (e.g./
) caused all files to write to the same place. - Fixed bug where increasing number of iterations did not continue experiment if online analysis was turned on and previously hit the max number of iterations
- Fixed bug where online analysis and harmonic unbiasing caused MBAR to not form due to misformed
initial_f_k
MultiExperimentAnalyzer
now gracefully traps an error caught by one experiment without crashing others- Fixed bug in
MultiStateReporter
when there were unsampled thermodynamic states as end-states but they referenced sampled thermodynamic states for their standard system
0.23.0 Multi-Analysis¶
- Added new
ExperimentAnalyzer
class as API call forauto_analyze
like functions. Supports serialized output to Pickle - Added new
MultiExperimentAnalyzer
class to analyze all experiments found in a YAML input file with theExperimentAnalyzer
. Supported by MPI for parallel action - Unified all
auto_analyze
like objects to go through theExperimentAnalyzer
, such as the API and Jupyter Notebook calls - Existing API calls should remain unchanged and serve as pass-throughs to the new classes
- Major changes to the CLI behavior of
yank analyze
andyank analyze report
to support the new features. These should not affect existing code, only support new features. - Fixed bug in
yank selftest
with the OpenEye tests. Also silenced the OpenEye internal tests due to time. Dependency checks are still active - Update API docs
0.22.3 Balance Checkpoint with IO¶
- Reduced default checkpoint interval to 50 (was 200) to balance disk IO time with time between checkpoints
- Fixed bug in DSL selection string from YAML
0.22.2 Topography Property Copy¶
- Critical bug fix for Topology where ions of charged ligands were considered part of the ligand
- Online analysis MBAR failures can no longer halt simulations
- Added ability for analyze CLI (
--fulltraj
) and API (use_full_trajectory=True
) to force use the full trajectory
0.22.1 Online Analysis Default¶
- Online analysis will always run by default now, with no target error, run every checkpoint interval, and with at least 200 iterations
- Online analysis can now be a set to the checkpoint interval by setting
online_analysis_interval: "checkpoint"
in the YAML files (application layer, not API) - Checkpoint interval increased from default of 10 to 200
- Analysis now uses the online-analysis data if available by default
0.22.0 RMSD the Casbah¶
Enhancements and features¶
- Added RMSD Type restraint, requires OpenMM 7.3 or greater to access. You can have older versions of OpenMM, but this feature is unavailable and will raise a graceful error should you attempt to use it.
- Added more robust last good iteration saving
- Added more robust restore from checkpoint access
- Exposed checkpoint interval iterations in
MultiStateReporter
- Generalized the Boresch restraints to a BoreschLike restraint to support new energy functions.
- Boresch restraint automatic atom selection now picks bonded heavy atoms
- Boresch restraints no longer accept
standard_state_correction_method
as an option - Added new Haversined Torsion Boresch Torsion (
PeriodicTorsionBoresch
) Boresch-like restraint where functional form of torsion is periodic support more numerically stable energy functions - Changed the timeseries analysis to only consider a maximum number of points on which to evaluate “is this equilibrium” to speed up process.
- Implement #848 Use MDTraj Trajectory.save() method instead of inferring function from extension.
- Implement #635 Allow extract-trajectory to handle trajectories with 1 frame.
Bugfixes¶
- Fix bug #941 where unbiasing the restraint would crash the analysis if using a 32-bit OpenCL platform.
- Fix bug #945 where relative imports of OpenEye tools would cause problems on some systems.
- Temporarily pinned NetCDF4 to 1.3.1 until we can fix the bug introduced in 1.4.0 where masked arrays are always returned. This pin will be lifted in future releases.
- Fix a bug where max_n_iterations was ignored when computing the mixing statistics of the calculation (PR #963).
- Fix bug #944 where ReplicaExchange.create() did not accept a single SamplerState anymore.
- Fix a bug where the box vectors of SamplerStates were initialized incorrectly in MultiStateSampler.create() for NVT calculations (PR #969).
- Fix bug #964 where using the state index argument in extract_trajectory with SAMS calculations would cause a crash.
0.21.2 More Post-Sams Bugfixes¶
- Fix analysis on 32-bit platforms OS agnostic
- More robust analysis tests
- Pin Cerberus to 1.1 as 1.2 breaks some schemas. Proper fix in a later version.
- UML Diagrams added to docs
- Fix API bug for resuming simulations without specifying how many iterations to run
0.21.1 Post-SAMS Bugfixes¶
- Fix bug in FIRE minimizer logging
- Fix Cray environment variables
- Make tests more robust to undersampled analysis results
- Fix molecule imaging incorrectly in trajectory extraction
0.21.0 SAMS and General Multistate Samplers¶
This release represents a major change in the YANK codebase.
Summary of Release¶
YANK’s sampling scheme now has a generalized scheme and runs on one of three primary samplers:
MultiStateSampler
: Fixed state sampler where no states mixReplicaExchange
: Dense state sampling with state swapping each iterationParallelTempering
: Special extension ofReplicaExchange
which swaps temperatures, with more efficient energy evaluationSAMSSampler
: Self-Adjusted Mixture Sampling [21], Single replica sampler which dynamically samples all thermodynamic states with long enough run time
The samplers are now part of the YANK multistate
module and will eventually be ported to OpenMMTools
. The
YAML syntax has been extended that two new sections can be specified: MCMC Moves, and
Samplers. These are fully optional blocks which default to a specific set if not specified.
Several old YAML options like number_of_iterations
have been moved to the samplers
block and replaced with
default_X
where X
is the old setting name.
The old scheme of the single repex.py
file housing all sampler and reporter information has been removed and the
entire multistate
module is designed to be extended and experimented with. Similarly, much of the old
analyze.py
module has been migrated to multistate
and can be extended as well.
Detailed Changes¶
- Generalize the Sampler framework into a new
multistate
module and generalized sampler class structure - Analysis suite now general and part of
multistate
with additional YANK-specific extensions in YANK’sanalyze.py
module - Analysis energies have been converted from old
u_kln
format tou_kn
formalism - Test suites for samplers refactored to be general and test all samplers
- Test suites for analysis refactored to be general and test all samplers
- Samplers now operate on concept of
neighborhood
to determine which thermodynamic states the energy of a sample was evaluated at - Cleaned up language in “replica” (sampler), “state” (thermodynamic state), and “sample” (drawn from replica)
- Improved online analysis in samplers with general I/O functions in reporter
- Python notebooks now can serialize their data
- Added notebook feature to do a free energy trace trying to converge free energies by progressively truncating more data from front and back
- Restraint factories improved and redundant code cleaned up
- Generalized utilities for checking function calls
- Improved storage read speads by chunking HDF5 data to use the checkpoint interval for per-iteration instead of each iteration
- Dependencies now defined purely by Conda
meta.yaml
and no longer throughsetup.py
. Pip can no longer check for dependencies because of this - Added ability to unbias harmonic restraints during
analysis
mcmc
block added to the YAML syntaxsamplers
block added to the YAML syntax- Improved resuming boot up times by requiring newer OpenMMTools features
- Renamed global option
number_of_iterations
todefault_number_of_iterations
. (docs) - Renamed global option
timestep
todefault_timestep
. (docs) - Renamed global option
nsteps_per_iteration
todefault_nsteps_per_iteration
. (docs) - The global options
collision_rate
,mc_displacement_sigma
, andintegration_splitting
are not supported anymore, but they can still be specified in the mcmc_moves` block. - Added support for automatic determination of
processes_per_experiment
(now the default). (docs) - Simulation minimization tries FIRE Minimizer [26] first before falling back to L-BFGS.
- Fixed bug in Boresch restraints where atoms were not correctly re-randomized when initial pick is numerically unstable
0.20.1 Alchemical factory options and fast computation of the energy matrix¶
- Allow user to specify options for
openmmtools.alchemy.AbsoluteAlchemicalFactory
in the YAML file. In particular, this introduces exact treatment of PME electrostatics for charged ligands. (docs) - Major optimization of the computation of the energy matrix.
- Added the option
max_n_contexts
. (docs) - Bumped minimum required version of
openmmtools
to0.14.0
.
0.20.0 Support for processing proteins through PDBFixer¶
- Adds an optional
pdbfixer
directive to themolecules
section of the YAML file through PDBFixer, a simple OpenMM-based protein structure processing tool. - The following options are accessible through the
pdbfixer
directive. (docs)replace_nonstandard_residues
: Replace nonstandard amino acids. (docs)remove_heterogens
: Remove heterogens (such as ligands and waters). (docs)add_missing_residues
: Add missing residues from the SEQRES block. (docs)add_missing_atoms
: Add missing heavy atoms. (docs)apply_mutations
: Specify protein mutations (e.g., T315I). (docs)
0.19.4 Schema and Parallel Setup Fixes¶
- Fixed bug in parallel molecule setup which caused the same molecule to be setup multiple times.
- Fixed bug in Cerberus schema for LEaP where molecule parameters accumulated.
- Fixed bug where options in experiment section were not coerced.
- Fixed status command to print information about all combinatorial experiments.
- Faster restart with combinatorial experiments.
0.19.3 Support for Amber restart files¶
- Added support for Amber
rst7
files inphase1_path
/phase2_path
. - The CLI option
jobid
now uses 1-based numbering like Torque and LSF do for array jobs.
0.19.2 Include ions in solute-only trajectory¶
- Ions are now included in the solute-only trajectories.
0.19.1 Trailblaze fix and restart stability from OpenMMTools¶
- OpenMMTools 0.13.4 now required to fix issues listed below
- Restrained atoms to absolute coordinates caused issue in Trailblaze with a Barostat
- Last restart attempt uses a slower, but more robust restart method
0.19.0 Regions, Cerberus, and Errors¶
- Added custom region selection to Topography
- Custom regions can now be defined through YAML
- Compound custom Topography regions can now be selected
- Restraints atom selection can now use Topography Regions
- Topography now can select from arbitrary string, either complex regions, DSL strings, and in the future SMARTS strings
- Changed to Cerberus for data validation (was Schema), public facing validation schemas in the future
- Added better error handling of known LEaP Errors
- Fixed issue for
start_frame
andend_frame
were ignored for trajectory extraction - OpenMMTools 0.13.3 now required to fix bug in
SamplerState
0.18.0 Python 2 Dropped, Solute Only Trajectories, and Trailblaze Bugfixes¶
- Python 2.X Support officially removed
- Additional doc cleanups
- Added restraint selection flowchart to documentation
- Implement #772: Use infinity instead of None to specify unlimited number of iterations.
- Implemented #557: Parallelized setup of molecules and systems with MPI.
- Generalized restrained atoms selection during trailblaze scheme to include non-protein receptors (see also choderalab/openmmtools#290).
- Fix loading of leap parameters from a local .dat files (allow us to use local versions of gaff parameters for validation).
- Fix #762: Trailblaze protocol crashes with MPI.
- Fixed bug when computing reduced potentials of simulated energies during trailblaze scheme.
- Fix #763: Automatic path is saved in YAML as a mix of python and numpy floats.
- Fixed the number of neutralizing counterions when receptor and ligand have opposite charges (we were adding too many in this case).
- Fixed the log file name with lists of experiments that ended up being just .log.
- Implemented workaround for fixing the net charge of cyclic multi-residue mol2 files.
- Added GAFF2 Torsion support based on YAML input files
- Solute-only trajectories can now be stored every iteration, regardless of checkpoint interval
0.17.0 Auto Alchemical Path and Split Langevin Integrators¶
- Added Langevin Splitting Integrator which allows time-substep operation order
- Automatic Alchemical Path selection feature added.
- Many Website additions and cleanups
- Online analysis allowing simulations to be run until they reach a target free energy uncertainty
- Renamed and refactored
YAMLBuilder
to more generalExperimentBuilder
- Remove ligand rotation and displacement with Boresch restraints to improve acceptance rates
- Analyze module fully tested now
- Fully updated API docstrings. API auto-generated on website
- Parallelize multiple experiments over MPI by splitting MPI Communicator
- Anisotropic dispersion options in YAML reduced to single option
- Ionic Strength ability added to setup pipeline
- Centroids for restraints now selectable through DSL string instead of whole molecule
- Added MDTraj, Matplotlib, and Jupyter as requirements
- Analyze Jupyter Notebooks can now be exported as pre-rendered static HTML or PDF pages (LaTeX required for PDF)
- Refactor some API function names and keywords
0.16.2 Startup Speed and Reduced File Sizes¶
- Automatic Expanded Cutoff Distance Selection
- Compressed stored systems drastically reduce initial file sizes
- Use C Yaml Dumper and Loaders to speed up YAML object processing
- Requires OpenMMTools 0.11.2 at minimum
0.16.1 Auto Expanded Cutoffs and bug fixes for Transition Matrix and Reporter¶
- Expanded cutoff now able to be chosen automatically instead of just hard coded number
- Fixes bug causing transition matrix to be computed incorrectly, uses empirical to estimate
- Allows user to drop samples equilibration report to avoid plot scale being dominated by initial fast equilibration
0.16.0 Full API and Python 3.6¶
- Full feature API for setting up, running, and analyzing experiments
- Supports new generalized MCMC moves, ThermodynamicStates, and other features from improved OpenMMTools
- Checkpoint feature added to reduce file size, add portability to data analysis files.
- Simulations can now alternate between phases to allow analysis even before simulations are done
- OpenEye features compartmentalized so you don’t need every OpenEye feature YANK could use to use any of them
- Major under the hood speed ups to base code and MPI behavior, includes a full code refactor.
- Mol2 files can now read in multi-molecule files
- No longer uses standalone Alchemy module, uses the one built into OpenMMTools
- Added Python 3.6 support.
- Retired Python 3.4 support
0.15.2 Health Report and Anisotropic Dispersion Control¶
- Added simulation Health Report through a Jupyter Notebook with CLI support
- Added ability to control Anisotropic Dispersion Correction through YAML files
0.15.0 Backend and Helpful Debugging Build¶
- Added support for
solvent_dsl
in user defined systems of YAML pages - Removed Command Line Interface ability to do
yank prepare
andyank run
- Added ability to overwrite individual YAML commands from command line
- Added YAML feature to
extend_simulation
without modifying YAML files or command line every iteration - NaN’s generated during simulations serialize system, state, and integrator which can be passed off for debugging to others
- Backend website updating and pushes improved
- Improved GROMACS extension file handling
0.14.1 Early Access of 1.0 Release¶
- YAML Syntax Structure Frozen. YANK YAML Version 1.0. All YAML scripts from this version will be compatible with future versions until YAML 2.0 New features may appear in the time meantime, but scripts will be forwards compatible.
- Initial support for OpenMM XML systems and PDB files
- Support for separate solvent configurations for the two phases when defined from amber/gromacs/openmm files
clearance
in YAML now mandatory parameter of explicit solvent, but only when molecule setup goes through pipeline- Boresch Orientational Restraints fully implemented and documented.
- Long range anisotropic dispersion correction improved to work on both ends of thermodynamic cycle leg
- Documentation updated with better algorithms and theory sections.
- Full walkthroughs of
yank-examples
added to online documentation - Various other documentation improvements
- Support for upcoming OpenMM 7.1 Release and features (still works with 7.0.1)
- YANK now on MIT License
- Many bugfixes
0.12.0 (development)¶
- Examples split into their own repository
- Old CLI commands staring depreciation
0.11.2 (development)¶
- Better long range dispersion and electrostatics corrections
- Best practices and guidelines for the YAML documentation published
0.11.0 (development)¶
- Full YAML documentation available online with all possible options specified
- Developer documentation
0.10.0 (development)¶
- Python 3.X support
- Online documentation has been updated to include the YAML input files
- Selftests now provide more helpful output
0.9.0 (development)¶
- Changed YAML Syntax
- New Command
yank analyze extrat-trajectory
to extract data from NetCDF4 file in a common trajectory format. - Support for solvation free energy calculations.
- Automatic detection of MPI.
- Various bug fixes.
0.8.0 (development)¶
alchemy
split to a standalone repository- YAML based input files for setting up and running simulations. Uses an AmberTools-based pipeline
0.7.0 (development)¶
- Convert to single
Context
Hamiltonian Replica Exchange
v0.6.1 (development)¶
- mpi4py automatically installed via conda
v0.6.0 (development)¶
- New command-line interface
- Sphinx-based documentation
v0.5.0 (development)¶
- Release for deployment to collaborators