Skip to content

Repository files navigation

SVD-ROM

Actions Status PyPI version PyPI platforms Documentation Status

A Python package for the application of Reduced Order Modeling (ROM) to large spatio-temporal datasets using the Singular Value Decomposition (SVD). A spatio-temporal dataset is one that has both spatial and temporal dimensions, such as weather or climate data, or a numerical simulation of flow past a circular cylinder. Despite the many degrees of freedom present in such datasets, they often exhibit low-dimensional structures that can be captured using dimensionality reduction techniques.

SVD-ROM is specifically designed for very large datasets that do not fit in memory. It leverages out-of-core, parallel computing, as well as scalable and noise-robust versions of matrix decomposition algorithms such as the Randomized SVD and the Optimized Dynamic Mode Decomposition (DMD). SVD-ROM provides a user-friendly API fully built on the Python ecosystem, abstracting away the complexity of distributed computing and memory management from the user. It is built on top of Dask, a Python library for parallel computing, which enables efficient handling of large-scale data processing on laptops, HPC clusters or the cloud with minimal code changes.

SVD-ROM is work in progress, and currently supports Principal Component Analysis (PCA), Proper Orthogonal Decomposition (POD) and Dynamic Mode Decomposition (DMD). We will soon add support for other methods such as the Spectral Proper Orthogonal Decomposition (SPOD).

SVD-ROM is an open-source project that originated at The Alan Turing Institute (London, UK).

Installation

Intall SVD-ROM from source:

git clone https://github.com/SVDROM/svdrom
cd svdrom
python -m pip install .

It is strongly recommended to install SVD-ROM using uv:

uv venv
source .venv/bin/activate
uv pip install .

Documentation

The documentation is built with Sphinx from the source/ directory and hosted on Read the Docs. See source/contents/development.md for instructions on building it locally.

Usage

The best way to get started is to have a look at the notebooks in the demos/ folder.

Contributing

See CONTRIBUTING.md for instructions on how to contribute.

License

Distributed under the terms of the MIT license.

Contributors

Robert Vava
Robert Vava

👀 💻 🚧 📖
David Salvador Jasin
David Salvador Jasin

💻 🚧 👀 🚇 📖

About

A Python package for SVD-based Reduced Order Modeling of massive datasets, made easy.

Resources

Code of conduct

Contributing

Stars

22 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages