Skip to content

Releases: dynamicslab/pysindy

Small fixes to docs and scs version

07 Apr 15:11
4c32d26
Compare
Choose a tag to compare

What's Changed

  • Think we have now actually fixed the example notebook documentation building so that they should all render properly on the readthedocs documentation site.
  • Fixed the SCS version requirements to avoid errors in TrappingSR3 with certain versions of Python.
  • Switched CI to test newer Python version 3.8, 3.9, 3.10.

Small doc fixes

05 Apr 16:01
Compare
Choose a tag to compare

What's Changed

  • Made fixes to the example notebook documentation building so that they should all render properly on the readthedocs documentation site.

Parametric library and benchmarks

25 Feb 20:46
5c6e9fd
Compare
Choose a tag to compare

What's Changed

  • Added ParameterizedLibrary by @znicolaou in #273 from this recent paper https://arxiv.org/abs/2301.02673. SINDy with control parameters (SINDyCP) is described further in the examples.
  • Added big benchmark functionality by @OliviaZ0826, @akaptano and @znicolaou from #266 from this recent paper https://arxiv.org/abs/2302.10787. Big benchmarks are shown using the dysts database and the results/functionality can also be found in the examples.
  • Added StableLinearSR3 optimizer by @akaptano from #269 that allows users to build arbitrarily large linear models that are guaranteed to be stable for any initial condition. Also allows for any number of linear equality and inequality constraints on the coefficients.
  • Fixed a few minor bugs with the Gurobipy version, the sphinx setup with the development tools in requirements-dev.txt, and flake8 website move from gitlab to GitHub.

v1.7.2

12 Oct 00:41
bc131d9
Compare
Choose a tag to compare

What's Changed

Added new mixed-integer optimization algorithm called MIOSR.
Added new external unit tests of all the jupyter notebook examples.
Made Gurobipy and cvxpy optional dependencies. Gurobipy is required for using MIOSR and cvxpy is needed for using inequality-constrained optimizers, the trapping SINDy algorithm, or the SINDy-PI algorithm.
Ensembling functionality moved to the "EnsembleOptimizer", see updated Example 1 notebook for this.

v1.7.1

26 Jul 17:55
a7f94bf
Compare
Choose a tag to compare

Should fix the compatibility errors with scikit-learn >= 1.0

What's Changed

AxesArray and EnsemblingOptimizer

13 Jul 21:57
d0d96f4
Compare
Choose a tag to compare
Pre-release

This is a pre-release of major version 2 of SINDY

This pre-release preserves a significant amount of backwards compatibility that
will be removed in 2.0.0.

Internal array structure is made explicit via the
AxesArray class. AxesArray objects carry axis label attributes, such as
arr.ax_time, as well as shape attributes, such as arr.n_spatial.
Currently, these attributes are incorrect when slicing, but are preserved in
nearly all other operations.

This release also adds an EnsemblingOptimizer class to handle data and library
bagging. While passing ensembling parameters via feature libraries and SINDy
objects is still supported, they simply dispatch to an EnsemblingOptimizer.
Stable versions of 2.x will remove this backwards compatibility, forcing the
use of the EnsemblingOptimizer. In addition, ensembling both data and
library terms creates each ensemble member from one data bag and one library
bag. Previously, each ensemble member came from one library bag and another
ensemble of data bags, which required nested loops and $O(n_{bags}^2)$ run
time.

Problems that might be fixed before 2.0.0:

  • Allow passing AxesArray objects to pysindy directly
  • add __getitem__ and __setitem__ to AxesArray to handle slicing correctly and
    re-enable AxesWarnings when trying to create an AxesArray with missing or
    incompatible axes labels.
  • Fix binder links to example documentation
    Additional changes possible in version 2.0.0:
  • New method for SINDyPI?
  • Derivative methods now also return smoothed X values.

Revamped weak SINDy

30 Apr 20:20
d4e64c4
Compare
Choose a tag to compare

We have implemented new techniques for computing the weak formulation of SINDy, reducing the runtime by at least an order of magnitude. The "num_pts_per_domain" option in the weak formulation is now deprecated, and see the revamped Example 12 notebook for the new performance. This release also addresses Issues #155 #158 #159 #164. We have some minor fixes planned for the future, and hope to have a version of model.predict and model.simulate working for the weak formulation in the coming few months.

Fixed small bug with Generalized Library

28 Jan 15:21
Compare
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
Compare
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
Compare
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.