Skip to content

Releases: dynamicslab/pysindy

Trapping SINDy

Choose a tag to compare

@briandesilva briandesilva released this 06 Jun 22:38
72dde9a

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

Constrained SR3

Choose a tag to compare

@briandesilva briandesilva released this 09 Dec 03:05

Major changes

This release introduces the ConstrainedSR3 optimizer. This is an enhanced version of the SR3 optimizer which allows one to specify linear equality constraints on the learned coefficients.

For example, if you know that the equations you are trying to learn look like

x' = a + by
y' = c - bx

(i.e. that the coefficient on y should be the negative of the coefficient on x), you could enforce that constraint using ConstrainedSR3.

Additionally, ConstrainedSR3 allows you to specify a different threshold parameter for each library function coefficient. This is an improvement on our other optimizers which all take a fixed regularization constant that is applied uniformly to all coefficients. You can use this feature to choose a higher threshold for, say, quadratic interaction terms like x*x or x*y than you do for linear terms, for example.

We also have added a notebook demonstrating these new features on a real world plasma dataset.

Other Updates

  • Fix bug with extrapolating control inputs outside of original time domain with SINDy.simulate
  • It is now possible to specify an initial guess for coefficients with the STLSQ and SR3 optimizers
  • Added some fancy plots to the differentiation notebook
  • Minor bug fixes

[Bug fix] Simulate with control inputs

Choose a tag to compare

@briandesilva briandesilva released this 02 Oct 03:36
f6cac08

This release fixes a minor issue causing SINDy.simulate to fail when vectors of control inputs are passed in (see #94).

Scikit-time objects

Choose a tag to compare

@briandesilva briandesilva released this 19 Sep 00:52

The main update in this release is the addition of two objects meant to conform to the API for Sckit-time: SINDyEstimator and SINDyModel. We also added a notebook showing how these two objects may be used.

We also made some other minor changes:

  • Add support for vector arguments for control inputs to SINDy.simulate (previously control inputs had to be callable)
  • Removed extraneous n_jobs parameter from the SINDy class
  • Added tests for SR3 trimming options
  • Updated some docstrings
  • Restructure examples/README content
  • Minor formatting updates for the new version of black

Expanded derivative options

Choose a tag to compare

@briandesilva briandesilva released this 30 Aug 01:06
e4f7b47

This release implements the SINDyDerivative class, which allows one to use differentiation methods from the derivative package. This will enable the application of SINDy to much noisier datasets.

Note that PySINDy now requires the derivative package.

derivative includes the following numerical differentiation techniques:

  • Spectral derivatives (via the FFT)
  • Spline-based derivatives
  • Finite differences of arbitrary order
  • Polynomial least-squares (Savitzky-Golay)
  • Total variation regularized derivative (the method recommended in the original SINDy paper)

This release also contains some improvements to the documentation:

  • Example using SINDyDerivative in the Feature Overview notebook
  • A new notebook comparing all the differentiation options available in PySINDy
  • An example showing how to optimize parameters of derivative objects with cross-validation

Cross-validation

Choose a tag to compare

@briandesilva briandesilva released this 15 Jul 23:56
b88cc80

This release enables much easier cross-validation of SINDy models using Scikit-learn cross-validation tools. Major changes include:

  • t_default parameter added to the SINDy class. This parameter specifies the default time step that should be used whenever the t argument of a SINDy method is not used.
  • New notebook demonstrating cross-validation and other examples combining Scikit-learn and PySINDy objects.

More details can be found in #84.

Bug fix: Require Scikit-learn 0.23

Choose a tag to compare

@briandesilva briandesilva released this 07 Jul 17:43
a3b2796

PySINDy now requires Scikit-learn version 0.23 instead of 0.21. There are also some minor bug fixes included in this release related to checking when optimizers have been fit.

Bug fix: Make scoring consistent with sklearn

Choose a tag to compare

@briandesilva briandesilva released this 30 Jun 17:17

This release makes the SINDy.score function better conform to the call signature of metrics from sklearn.metrics. Resolves #80.

Bug fix: Make compatible with sklearn 0.21

Choose a tag to compare

@briandesilva briandesilva released this 23 Jun 18:35

Fixes a minor bug in the CustomLibrary class for earlier releases of Scikit-learn (e.g. 0.21). Scikit-learn version 0.23 (the latest version) does not have this issue.

First official PySINDy release

Choose a tag to compare

@briandesilva briandesilva released this 18 May 18:06

This is PySINDy's first major release, including source code, documentation-generating scripts, examples, unit tests, and a markdown version of the PySINDy JOSS submission. This release includes a DOI via Zenodo:

DOI