OPS New Storage Subsystem

Authors: David W.H. Swenson

This module interfaces OpenPathSampling with the underlying storage subsystem designed for SimStore.

Purpose of Module

The motivation for this is described in depth in the module SimStore: OPS New Storage Subsystem (part 1). That module focused on the underlying, reusable library SimStore that was developed to meet the storage needs of OpenPathSampling. This module represents the software that integrates the generic code with OPS.

In particular, this includes:

  • Design of the OPS serialization schema
  • Custom handling of some objects, such as snapshots, for which the dimensionality is only known at runtime.
  • Workarounds so that some objects could be stored.
  • Custom subclass of the storable functions introduced in SimStore: Storable Functions that meet the requirements of OpenPathSampling. For example, when a collective variable is calculated on a trajectory, it should return a list with the value for each snapshot within the trajectory.

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:

Installation and Testing

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 includes the general SimStore components of the pull request at: https://github.com/openpathsampling/openpathsampling/pull/928. In particular, this module is for the files in the openpathsampling.experimental.storage subpackage within that pull request.