New features
PyTest framework
- Fully migrated from `unittest` to `pytest`, motivated by inscrutable test failures on Travis when the old framework was used
- All tests are now located in `<root>/src/tests`
MacOS support
- Mac OS is supported for Python 3.5 or greater.
- A small but important fix was added in `nifty.py` to handle streams from processes on Mac OS
Torsion profile target
- This target allows 1D relaxed torsion profiles to be included in the objective function, with the option to carry out MM relaxations (with torsion atoms frozen).
- Implemented and tested using SMIRNOFF engine but expected to work for OpenMM.
- Support in other engines will require implementing energy minimizations with frozen atoms.
Optimized geometry target
- This target allows (QM-MM) deviations in energy-minimized bonds and angles to be included in the objective function.
- Implemented and tested using SMIRNOFF engine but expected to work for OpenMM and other engines that support energy minimization.
Surface tension target
- This target calculates surface tension and enables the deviation of calculated vs. experimental surface tension to be included in the objective function.
- Implemented and tested using OpenMM engine.
- Implementation is described in publication located at <https://doi.org/10.1021/acs.jpcb.9b05455>
PropertyEstimator / Evaluator target
- This target includes an interface to the OpenFF Evaluator framework (previously called PropertyEstimator) to include evaluated properties in the objective function.
- Uses Evaluator API to compute parametric gradients.
- SMIRNOFF is the only supported engine.
- PropertyEstimator can be found here: <https://github.com/openforcefield/propertyestimator>
Fitting vibrational frequencies using OpenMM
- `Vibration_OpenMM`: OpenMM can now compute vibrational frequencies and normal modes
Minor changes
- Enable optimization of charges in `.mol2` files when working with SMIRNOFF-formatted force field
- Cookiecutter, codecov and versioneer integrations
- Sanitizing `.offxml` force field parsing for SMIRKS strings
- `constrain_h` option in FB input file for specifying H-bond constraints in OpenMM targets
- Improved `tools/install_cctools.sh` script for Work Queue installs
- Simplify `AtomContact` function in `molecule.py`
- Improvements in performance using SMIRNOFF force fields
- Improved remote target file handling
- Improved stability of Hessian diagonalization
- Keep up to date with SMIRNOFF `.offxml` formatting
- Improved handling of Work Queue workers
- Fix a bug in radius of gyration calculation in `molecule.py`
Credits
- Yudong Qiu (Optimized geometry target, surface tension target, OpenMM normal modes, SMIRNOFF performance, and various improvements)
- Jeffrey Wagner (MacOS support, Pytest framework)
- Simon Boothroyd (OpenFF Evaluator / propertyestimator interface)
- Hyesu Jang (Pytest framework)
- Michael Schauperl (H-bond constraint)
- Open Force Field Initiative (financial support)