Skip to content

Releases: dynamicslab/pysindy

Fixed small bug with Generalized Library

28 Jan 15:21

Choose a tag to compare

The GeneralizedLibrary class had a bug if libraries were tensored together while using the ensembling functionality. This small patch fixes that issue.

Finalized second PySINDy JOSS paper

27 Jan 16:46
c92f03e

Choose a tag to compare

This is PySINDy's second major release, representing new source code, documentation-generating scripts, examples, unit tests, and a markdown version of the new PySINDy JOSS submission openjournals/joss-reviews#3994. There is already a DOI via Zenodo, DOI.

Verbose option for optimizers and other fixes

12 Jan 23:34

Choose a tag to compare

This minor release adds a verbose option to all the optimizers so users can optionally track the error terms in the various optimization problems. See example Jupyter notebook 1 for a simple use case. It also makes some minor fixes, including:

  1. Fixed a minor test error (see Issue #149)
  2. Fixed an issue when using multiple_trajectories or ensemble flags with PDEs and Weak PDEs, see Issue #148
  3. Added Matplotlib to the dependencies so that (hopefully) the binder notebooks are now working properly online.
  4. Fixed some math notation in the optimizer documentations.

PDE-FIND and weak SINDy in arbitrary dimensions

06 Jan 05:54
6d908c3

Choose a tag to compare

This release allows for differentiation along specific axes, revamps the PDE-FIND and weak SINDy functionalities to work in arbitrary spatial dimensions, and moves all the array-reshaping to the internal code so the user-interface is easier. Finite difference coefficients are now computed on the fly depending on the derivative order "d" and accuracy order "order", i.e. finite differences now work for arbitrarily high derivative and accuracy order.

References

Other updates

  • Added a SpectralDerivative() class for spectral differentiation at faster speed than is available with the "derivative" python package.
  • Finite Differences now have periodic boundary condition support.
  • Cleaned up the example notebooks a bit.

System Identification for Noisy Data and PDEs+

05 Dec 19:38
01a0bf9

Choose a tag to compare

This release fixes a minor bug in the README file which prevented the previous release from being properly deployed to PyPI.

System Identification for Noisy Data and PDEs

05 Dec 19:29
c80e50f

Choose a tag to compare

This release introduces a wide range of new and advanced functionality for PySINDy users, which enables the identification of implicit differential equations (SINDy-PI), partial differential equations (PDE-FIND), and weak-formulation differential equations for both ODEs and PDEs. Several new sparse regression optimizers are added, system identification with inequality constraints is now implemented, and ensembling methods are available with all the optimizers, significantly improving performance on noisy data. We include several new Jupyter notebook examples where these advanced features are explained and used for system identification, and additionally revamp a number of existing example notebooks.

References

  • Please see this paper for an overview of all the new tools available in this new release.
  • See this Youtube playlist for tips on using pysindy in practice and examples of new functionality.

Other updates

  • Added a TensoredLibrary class which allows one to combine two feature libraries together by taking all possible pairs of terms and use multiplication syntax like PolynomialLibrary() * FourierLibrary().
  • Additionally, we implement a GeneralizedLibrary class for concatenating and tensoring N different feature libraries together. Also allows each of the feature libraries to only use a subset of the input variables, and users can specify which of the libraries to tensor product together, for maximum flexibility (see Issue #134).
  • All optimizers now have the normalize_columns parameter, which normalizes each column of the feature library to magnitude 1 before performing the optimization. This often helps on systems with a wide range of scales.
  • The scikit-learn bug mentioned in Issues #124, #129, #130, and #131 is now fixed, so users can use PySINDy with scikit-learn versions >= 1.0.
  • The normalize option previously provided by our optimizers is deprecated. Please use the normalize_columns argument instead.
  • A large number of common ODEs have been added to the utils/odes.py file for reuse, and we would be happy if users would like to add additional systems.
  • PySINDy has switched default ODE solvers from odeint to solve_ivp. Note that solve_ivp defaults to the RK45 numerical solver. To reproduce old examples that used odeint, use solve_ivp with the following argument: method='LSODA', atol and rtol below 1e-12. This is the default behavior when calling SINDy.simulate.

Add cvxpy to requirements

08 Jul 02:34

Choose a tag to compare

This release simply moves cvxpy from an optional dependency to a required one. This package is needed to use the TrappingSR3 optimizer.

Trapping SINDy++

08 Jun 02:04

Choose a tag to compare

This version removes auxiliary data files needed only for examples to make PySINDy small enough to deploy on PyPI.

Trapping SINDy+

07 Jun 14:33
db705ba

Choose a tag to compare

This release fixes a minor bug in the README file which prevented the previous release from being properly deployed to PyPI.

Trapping SINDy

06 Jun 22:38
72dde9a

Choose a tag to compare

This release introduces the TrappingSINDy optimizer, which "enables the identification of models that, by construction, only produce bounded trajectories." To use TrappingSINDy you will need to install the cvxpy package.
It includes a new notebook where TrappingSINDy is applied to standard fluid dynamics problems.

Please see this paper for more details about the new method.

Starting with this release, PySINDy will begin requiring Python 3.7 or above.

Other updates

  • Bug fix for SINDy.simulate for discrete systems with multiple control inputs