Skip to content

AxesArray and EnsemblingOptimizer

Pre-release
Pre-release
Compare
Choose a tag to compare
@Jacob-Stevens-Haas Jacob-Stevens-Haas released this 13 Jul 21:57
· 528 commits to master since this release
d0d96f4

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.