by msmbuilder

msmbuilder / vde

Variational Autoencoder for Dimensionality Reduction of Time-Series

141 Stars 35 Forks Last release: Not found MIT License 17 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Variational Dynamical Encoder (VDE)

Often the analysis of time-dependent chemical and biophysical systems produces high-dimensional time-series data for which it can be difficult to interpret which features are most salient in defining the observed dynamics. While recent work from our group and others has demonstrated the utility of time-lagged co-variate models to study such systems, linearity assumptions can limit the compression of inherently nonlinear dynamics into just a few characteristic components. Recent work in the field of deep learning has led to the development of variational autoencoders (VAE), which are able to compress complex datasets into simpler manifolds. We present the use of a time-lagged VAE, or variational dynamics encoder (VDE), to reduce complex, nonlinear processes to a single embedding with high fidelity to the underlying dynamics. We demonstrate how the VDE is able to capture nontrivial dynamics in a variety of examples, including Brownian dynamics and atomistic protein folding. Additionally, we demonstrate a method for analyzing the VDE model, inspired by saliency mapping, to determine what features are selected by the VDE model to describe dynamics. The VDE presents an important step in applying techniques from deep learning to more accurately model and interpret complex biophysics.


  • numpy
  • pytorch
  • msmbuilder


Using the VDE is as easy as using any


from vde import VDE
from msmbuilder.example_datasets import MullerPotential

trajs = MullerPotential().get().trajectories

lag_time = 10 vde_mdl = VDE(2, lag_time=lag_time, hidden_layer_depth=3, sliding_window=True, cuda=True, n_epochs=10, learning_rate=5E-4)

latent_output = vde_mdl.fit_transform(trajs)


If you use this code in your work, please cite:

  title = {Variational encoding of complex dynamics},
  author = {Hern\'andez, Carlos X. and Wayment-Steele, Hannah K. and Sultan, Mohammad M. and Husic, Brooke E. and Pande, Vijay S.},
  journal = {Phys. Rev. E},
  volume = {97},
  issue = {6},
  pages = {062412},
  numpages = {11},
  year = {2018},
  month = {Jun},
  publisher = {American Physical Society},
  doi = {10.1103/PhysRevE.97.062412},
  url = {https://link.aps.org/doi/10.1103/PhysRevE.97.062412}

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.