Easy to use State Reversible Vampnet with fit, transform and fittransform methods
Project description
Easy State Reversible Vampnet
This is an package providign State Reversible Vampnet from the J. Chem. Phys. 150, 214114 (2019). This is a deep dimensionality reduction used for time series to extract low dimensional slow process description. Usually it is used as an pre-processing tool to build Markov State Model to reduce number of dimensions in the system.
Installation
At the moment installation is available through github, but PyPi planned soon.
git clone https://github.com/DanielWicz/easysrv
cd easysrv
pip install .
Usage
To use it you need two things
- Your data as an list of numpy arrays. Where each element of the list is an numpy array of shape (time_series_length, number_of_dims).
- Tensorflow 2 Sequence Model
import tensorflow as tf
# use smooth activation, to have smooth slow process assigment
# use non-smooth activation (relu, lerelu etc.) to have non-smooth slow process assigment
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(100, kernel_regularizer=tf.keras.regularizers.L2(0.0001), kernel_initializer='lecun_normal'),
tf.keras.layers.Activation("swish"),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Dense(100, kernel_regularizer=tf.keras.regularizers.L2(0.0001), kernel_initializer='lecun_normal'),
tf.keras.layers.Activation("swish"),
tf.keras.layers.BatchNormalization(),
tf.keras.layers.Dense(2, kernel_regularizer=tf.keras.regularizers.L2(0.0001))])
# assume that list with data are described as a variable features
# pass single datapoint to set shapes of the matrices
model(features[0])
# initialize optimizer
optimizer = tf.keras.optimizers.Adam(learning_rate=0.001)
# initialize SRV, epochs - number of training iterations, split - train:validation split
srv = SRV(model=model, optimizer=optimizer, epochs=20, lagtime=1, split=0.05)
# fit SRV model
history = srv.fit(features)
# depict training process
plt.plot(history['Training loss'])
plt.title("Training loss")
plt.xlabel("Epochs")
plt.ylabel("Loss")
plt.plot(history['VAMP2 valid score'])
plt.title("Validation VAMP2")
plt.xlabel("Epochs")
plt.ylabel("VAMP2 score")
modes = ["IC{}".format(i+1) for i in range(len(history['eigenvalues']))]
plt.bar(modes, history['eigenvalues'])
plt.title("Slow processses eigenvalues")
# transform relevant features onto slow processes
model_out = svr.transform(features)
References
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
easysrv-0.0.1.tar.gz
(10.9 kB
view hashes)