SimStore: Support for OpenMM Snapshots

This module adds support for OpenMM snapshots in SimStore, the new storage subsystem used by OpenPathSampling.

Purpose of Module

Previous modules have provided the core of the SimStore storage interface for OPS, as well as integration for OPS simulations using either the internal toy engine or using the Gromacs engine. However, one of the most commonly used engines for OPS is OpenMM. Because OpenMM data carries explicit units, it requires special techniques for storing. Additionally, OpenMM snapshots in OPS are split such that the configurational components can be reused for multiple initial velocities, which also requires special treatment. This module adds those techniques, thus adding support for OpenMM simulations in the new SimStore storage subsystem in OPS. SimStore is faster than the current OPS storage, and is essential for the parallelization of OPS.

Background Information

This module builds on OpenPathSampling, a Python package for path sampling simulations. To learn more about OpenPathSampling, you might be interested in reading:

Testing

Tests in OpenPathSampling use pytest.

This was included in the version 1.4 release of OpenPathSampling. It can be installed via the conda package manager with:

conda install -c conda-forge openpathsampling

In addition to previous OPS requirements, this module requires SQLAlchemy, and other parts of the new storage require Dill. These can be installed with, e.g., conda install -c conda-forge sqlalchemy dill.

The tests for this module are split between unit tests included in the OpenPathSampling repository and integration tests in a separate repository. The easiest way to run both sets of tests is to download or clone the integration test repository at https://github.com/dwhswenson/ops-storage-notebooks. Install the required testing software, e.g., with:

conda install -c conda-forge pytest pytest-cov nbval

Then just run the test-storage.sh script in that repository. Note: although the module will work with Python 3.6+, some of the notebook tests are not compatible with more recent versions of Python, so the tests should be run with Python 3.7.

Source Code

This module has been merged into OpenPathSampling. It is composed of the following pull request: