Table of Contents
Fetching ...

PyDMD: A Python package for robust dynamic mode decomposition

Sara M. Ichinaga, Francesco Andreuzzi, Nicola Demo, Marco Tezzele, Karl Lapo, Gianluigi Rozza, Steven L. Brunton, J. Nathan Kutz

TL;DR

The paper tackles robust dynamic mode decomposition (DMD) for real-world data that are noisy, multiscale, parameterized, or nonlinear by expanding PyDMD, a Python package for DMD, to include state-of-the-art methods such as BOP-DMD, CoSTS, parametric DMD, randomized DMD, and physics-informed DMD. It presents a modular, open-source framework with a DMDBase core, dedicated modules for each variant, time-delay preprocessing (e.g., Hankel embeddings), and thorough tutorials to facilitate practical usage. Key contributions include version 1.0 enhancements that broaden robustness, provide extensive documentation, and offer end-to-end pipelines for reconstruction and prediction across diverse datasets. The work demonstrates PyDMD’s ability to deliver robust, scalable, and accessible tools for extracting coherent spatiotemporal structures, making advanced DMD techniques more usable across scientific disciplines.

Abstract

The dynamic mode decomposition (DMD) is a simple and powerful data-driven modeling technique that is capable of revealing coherent spatiotemporal patterns from data. The method's linear algebra-based formulation additionally allows for a variety of optimizations and extensions that make the algorithm practical and viable for real-world data analysis. As a result, DMD has grown to become a leading method for dynamical system analysis across multiple scientific disciplines. PyDMD is a Python package that implements DMD and several of its major variants. In this work, we expand the PyDMD package to include a number of cutting-edge DMD methods and tools specifically designed to handle dynamics that are noisy, multiscale, parameterized, prohibitively high-dimensional, or even strongly nonlinear. We provide a complete overview of the features available in PyDMD as of version 1.0, along with a brief overview of the theory behind the DMD algorithm, information for developers, tips regarding practical DMD usage, and introductory coding examples. All code is available at https://github.com/PyDMD/PyDMD .

PyDMD: A Python package for robust dynamic mode decomposition

TL;DR

The paper tackles robust dynamic mode decomposition (DMD) for real-world data that are noisy, multiscale, parameterized, or nonlinear by expanding PyDMD, a Python package for DMD, to include state-of-the-art methods such as BOP-DMD, CoSTS, parametric DMD, randomized DMD, and physics-informed DMD. It presents a modular, open-source framework with a DMDBase core, dedicated modules for each variant, time-delay preprocessing (e.g., Hankel embeddings), and thorough tutorials to facilitate practical usage. Key contributions include version 1.0 enhancements that broaden robustness, provide extensive documentation, and offer end-to-end pipelines for reconstruction and prediction across diverse datasets. The work demonstrates PyDMD’s ability to deliver robust, scalable, and accessible tools for extracting coherent spatiotemporal structures, making advanced DMD techniques more usable across scientific disciplines.

Abstract

The dynamic mode decomposition (DMD) is a simple and powerful data-driven modeling technique that is capable of revealing coherent spatiotemporal patterns from data. The method's linear algebra-based formulation additionally allows for a variety of optimizations and extensions that make the algorithm practical and viable for real-world data analysis. As a result, DMD has grown to become a leading method for dynamical system analysis across multiple scientific disciplines. PyDMD is a Python package that implements DMD and several of its major variants. In this work, we expand the PyDMD package to include a number of cutting-edge DMD methods and tools specifically designed to handle dynamics that are noisy, multiscale, parameterized, prohibitively high-dimensional, or even strongly nonlinear. We provide a complete overview of the features available in PyDMD as of version 1.0, along with a brief overview of the theory behind the DMD algorithm, information for developers, tips regarding practical DMD usage, and introductory coding examples. All code is available at https://github.com/PyDMD/PyDMD .
Paper Structure (9 sections, 5 equations, 5 figures)

This paper contains 9 sections, 5 equations, 5 figures.

Figures (5)

  • Figure 1: Summary of all PyDMD functionalities as of version 1.0. All features are organized according to use case, and features introduced to PyDMD as a part of this update are indicated via vivid boxes. Previously-available features are represented via semi-transparent boxes.
  • Figure 2: Flow chart for determining an appropriate DMD method based on problem type and data set. DMD methods and tools are color-coded following Figure \ref{['fig:pydmd-overview']}.
  • Figure 3: Schematic of a typical PyDMD module. In general, modules keep track of user-inputted parameters, a DMD operator, DMD diagnostics, and information on the input data, among other attributes. Modules also implement a fit method, which when called and given data, performs the DMD pipeline and makes the results available for user access. Note that each module of PyDMD implements a unique DMD variant, where any number of these steps may be performed differently.
  • Figure 4: The synthetic data set described by Equation \ref{['eq:example']}. The data consists of two spatiotemporal signals $f_1$ and $f_2$, and is collected along the spatial grid $x \in [-5,5]$ across times $t \in [0, 4\pi]$.
  • Figure 5: plot_summary output using a PyDMD model fitted to the synthetic data in Figure \ref{['fig:ex-data']}. The function always produces a $3 \times 3$ grid that plots (1) the singular value spectrum of the data matrix $\mathbf{X}$, (2) the "discrete-time eigenvalues" $\lambda_i$ of the linear operator $\mathbf{A}$, (3) the "continuous-time eigenvalues" from $\bm{\omega}$, (4-6) three spatial modes from $\bm{\Phi}$, which default to the modes with the highest corresponding amplitudes in $\mathbf{b}$, and (7-9) the time dynamics from $\mathbf{T}(\bm{\omega})$ that are associated with the plotted modes. Associations between eigenvalues, modes, and dynamics are indicated via color coordination, and the size of an eigenvalue marker reflects the amplitude, or the general significance, of that DMD eigenvalue, mode pairing. See Section \ref{['sec:background']} for notation definitions.