PySINDy: A comprehensive Python package for robust sparse system identification

Journal of Open Source Software

paper
Bringing nonlinear system identification to Python
Authors

Alan A. Kaptanoglu

Brian M. de Silva

Urban Fasel

Kadierdan Kaheman

Andy J. Goldschmidt

Jared Callaham

Charles B. Delahunt

Zachary G. Nicolaou

Kathleen Champion

Jean-Christophe Loiseau

J. Nathan Kutz

Steven L. Brunton

Published

January 29, 2022

Abstract

Automated data-driven modeling, the process of directly discovering the governing equations of a system from data, is increasingly being used across the scientific community. PySINDy is a Python package that provides tools for applying the sparse identification of nonlinear dynamics (SINDy) approach to data-driven model discovery. In this major update to PySINDy, we implement several advanced features that enable the discovery of more general differential equations from noisy and limited data. The library of candidate terms is extended for the identification of actuated systems, partial differential equations (PDEs), and implicit differential equations. Robust formulations, including the integral form of SINDy, and ensembling techniques, are also implemented to improve performance for real-word data. Finally, we provide a range of new optimization algorithms, including several sparse regression techniques and algorithms to enforce and promote inequality constraints and stability. Together, these updates enable entirely new SINDy model discovery capabilities that have not been reported in the literature, such as constrained PDE identification and ensembling with different sparse regression optimizers.

Citation

BibTeX citation:
@article{a._kaptanoglu2022,
  author = {A. Kaptanoglu, Alan and M. de Silva, Brian and Fasel, Urban
    and Kaheman, Kadierdan and J. Goldschmidt, Andy and Callaham, Jared
    and B. Delahunt, Charles and G. Nicolaou, Zachary and Champion,
    Kathleen and Loiseau, Jean-Christophe and Nathan Kutz, J. and L.
    Brunton, Steven},
  title = {PySINDy: {A} Comprehensive {Python} Package for Robust Sparse
    System Identification},
  journal = {Journal of Open Source Software},
  volume = {7},
  number = {69},
  pages = {3994},
  date = {2022-01-29},
  url = {https://joss.theoj.org/papers/10.21105/joss.03994},
  doi = {10.21105/joss.03994},
  langid = {en}
}
For attribution, please cite this work as:
A. Kaptanoglu, Alan, Brian M. de Silva, Urban Fasel, Kadierdan Kaheman, Andy J. Goldschmidt, Jared Callaham, Charles B. Delahunt, et al. 2022. “PySINDy: A Comprehensive Python Package for Robust Sparse System Identification.” Journal of Open Source Software 7 (69): 3994. https://doi.org/10.21105/joss.03994.