openmmtools.storage.storageinterface.StorageInterface

class openmmtools.storage.storageinterface.StorageInterface(storage_driver)[source]

This class interfaces with a StorageIODriver class to internally hold what folders and variables are known to the file on the disk, and dynamically creates them on the fly. Any attempt to reference a property which is not explicitly listed below implies that you wish to define either a storage directory or variable, and creates a new StorageInterfaceVarDir (SIVD) with that name. The SIVD is what handles the read/write operations on this disk by interfacing with the StorageIODriver object you provide StorageInterface class’s __init__.

See StorageInterfaceVarDir for how the dynamic interfacing works.

Examples

Create a basic storage interface and write new my_data to disk >>> my_driver = NetCDFIODriver(‘my_store.nc’) >>> my_data = [4,2,1,6] >>> my_storage = StorageInterface(my_driver) >>> my_storage.my_variable.write(my_data)

Create a folder called “vardir” with two variables in it, “var1” and “var2” holding DATA1 and DATA2 respectively Then, fetch data from the same folders and variables as above >>> my_driver = NetCDFIODriver(‘my_store.nc’) >>> DATA1 = “some string” >>> DATA2 = (4.5, 7.0, -23.1) >>> my_storage = StorageInterface(my_driver) >>> my_storage.vardir.var1.write(DATA1) >>> my_storage.vardir.var2.write(DATA2) >>> var1 = my_storage.vardir.var1.read() >>> var2 = my_storage.vardir.var2.read()

Run some_function() to generate data over an iteration, store each value in a dynamically sized var called “looper” >>> my_driver = NetCDFIODriver(‘my_store.nc’) >>> mydata = [-1, 24, 5] >>> my_storage = StorageInterface(my_driver) >>> for i in range(10): … mydata = i**2 … my_storage.looper.append(mydata)

Attributes:
file_name

Returns the protected _file_name variable, mentioned as an explicit method as it is one of the protected names

storage_driver

Pointer to the object which actually handles read/write operations

Methods

add_metadata(name, data)

Write additional meta data to attach to the storage_driver file itself.

__init__(storage_driver)[source]

Initialize the class by reading in the StorageIODriver in storage_driver. The file name is inferred from the storage driver and the read/write/append actions are handled by the SIVD class which also act on the storage_driver.

Parameters:
storage_driverStorageIODriver object

What type of storage to use. Requires fully implemented and instanced StorageIODriver class to use.

Methods

__init__(storage_driver)

Initialize the class by reading in the StorageIODriver in storage_driver.

add_metadata(name, data)

Write additional meta data to attach to the storage_driver file itself.

Attributes

file_name

Returns the protected _file_name variable, mentioned as an explicit method as it is one of the protected names that cannot be a directory or variable pointer

storage_driver

Pointer to the object which actually handles read/write operations