Skip to main content

AESINDy is a Python package for automated system identification of low-dimensional systems combining autoencoders and SINDy.

Project description

:warning: More examples will be available soon

VENI-VINDy-VICI

A variational reduced-order modeling framework with uncertainty quantification [1].

overview

Reference

The preprint is available on arXiv.

Framework

The framework discovers probabilistic governing equations from high-dimensional data in a low-dimensional latent space. It consists of three steps:

VENI (Variational Encoding of Noisy Inputs)

A generative model utilizing variational autoencoders (VAEs) is applied to transform high-dimensional, noisy data into a low-dimensional latent space representation that is suitable to describe the dynamics of the system.

VINDy (Variational Identification of Nonlinear Dynamics)

On the time series data expressed in the new set of latent coordinates, a probabilistic dynamical model of the system is learned by a variational version of SINDy (Sparse Identification of Nonlinear Dynamics) [2].

VICI (Variational Inference with Certainty Intervals)

The resulting ROM allows to evolve the temporal system solution by variational inference on both the latent variable distribution and the dynamic model, given new parameter/force values and initial conditions. This, naturally, provides an estimate of the reliability of the prediction through certainty intervals.

Features

This repository implements the classic SINDy autoencoders [3] as well as its variational extension: the newly proposed VENI, VINDy, VICI framework [1].

  • Autoencoders (AEs) for dimensionality reduction
  • Variational autoencoders (VAEs) for probabilistic latent representations
  • SINDy layer to identify interpretable governing equations from data using standard backpropagation algorithms
  • VINDy layer to identify interpretable probabalistic governing equations, where coefficients are represented as distributions.
    • Direct uncertainty quantification on modeling terms
    • Sampling-based uncertainty quantification for time evolution of system states
  • Infuse preknowledge
    • Select priors
    • Fix certain weights
    • Model your system as second order system dx/ddt = f(x, xdt, mu)
  • Several callbacks
    • Update governing equation coefficients with separate SINDy optimization schemes (using pysindy)
    • Thresholding coefficents w.r.t their magnitude or their probability density function around zero
    • Log the coefficients during training to monitor convergence

The individual contributions can be used standalone (plain SINDy or VINDy) or arbitrarily be combined with dimensionality reducition schemes (e.g. VAEs with SINDy, AE with VINDy, VAE with VINDy, ...)

Installation

You can either clone the repository and install the package locally or install it directly from PyPI.

PyPI

pip install vindy

Local

Clone this repository and install it to your local environment as package using pip:

git clone git@github.com:jkneifl/VENI-VINDy-VICI.git
cd VENI-VINDy-VICI
pip install -e .

You can run the jupyter notebook for the Roessler system to check if the installation was successful. It is in the examples folder. Please note that you'll need to have jupyter installed in order to run the notebook.

References

[1] Paolo Conti, Jonas Kneifl, Andrea Manzoni, Attilio Frangi, Jörg Fehr, Steven L. Brunton, J. Nathan Kutz. VENI, VINDy, VICI -- a variational reduced-order modeling framework with uncertainty quantification. Arxiv preprint: 2405.20905. doi:10.48550/ARXIV.2405.20905.

[2] S. L. Brunton, J. L. Proctor, J. N. Kutz, Discovering governing equations from data by sparse identifi cation of nonlinear dynamical systems, Proceedings of the national academy of sciences 113 (15) (2016) 3932–3937. doi:10.1073/pnas.1517384113.

[3] Champion, K., Lusch, B., Kutz, J. N., & Brunton, S. L. (2019). Data-driven discovery of coordinates and governing equations. Proceedings of the National Academy of Sciences, 116(45), 22445-22451. doi:10.1073/pnas.1906995116.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vindy-0.1.5.tar.gz (4.4 kB view details)

Uploaded Source

Built Distribution

vindy-0.1.5-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

Details for the file vindy-0.1.5.tar.gz.

File metadata

  • Download URL: vindy-0.1.5.tar.gz
  • Upload date:
  • Size: 4.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.11.9

File hashes

Hashes for vindy-0.1.5.tar.gz
Algorithm Hash digest
SHA256 9d87ddd21f7cab0f43d9b0da2851ee499e71e841226f3034dc6f3037aa05224a
MD5 27e212c00d618d9d8c0680c3cfa947a7
BLAKE2b-256 8ffef5430d9dba87ac45461f098757a39e08e89720d1d3d6b6f4943ac0a58d60

See more details on using hashes here.

File details

Details for the file vindy-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: vindy-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 4.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.11.9

File hashes

Hashes for vindy-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 0d2dcaf1cd6d199b733b7539e3edd796573a52eb4eb81440d59beaf759840f7b
MD5 d0be4c5e94b62d60c1b675accf12ea51
BLAKE2b-256 6d8ce638fd6a1185c5162019722d10a29b3268417abb670f9292490196123c1a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page