Releases: dynamicslab/pysindy
Small fixes to docs and scs version
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
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
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
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
Should fix the compatibility errors with scikit-learn >= 1.0
What's Changed
- Add common virtual environment directories to .gitignore by @Jacob-Stevens-Haas in #177
- ENH: Raise explicit error when FROLS has linearly dependent columns. by @Jacob-Stevens-Haas in #193
- BUG: SINDyDerivative set_params() missed sklearn interface by @Jacob-Stevens-Haas in #207
AxesArray and EnsemblingOptimizer
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
time.
Problems that might be fixed before 2.0.0:
- Allow passing
AxesArray
objects to pysindy directly - add
__getitem__
and__setitem__
toAxesArray
to handle slicing correctly and
re-enableAxesWarning
s when trying to create anAxesArray
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
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
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
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, .
Verbose option for optimizers and other fixes
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:
- Fixed a minor test error (see Issue #149)
- Fixed an issue when using multiple_trajectories or ensemble flags with PDEs and Weak PDEs, see Issue #148
- Added Matplotlib to the dependencies so that (hopefully) the binder notebooks are now working properly online.
- Fixed some math notation in the optimizer documentations.