pysindy.feature_library.base.TensoredLibrary

class pysindy.feature_library.base.TensoredLibrary(libraries: list, inputs_per_library: Sequence[Sequence[int]] | None = None)[source]

Tensor multiple libraries together into one library. All settings provided to individual libraries will be applied.

Parameters:
  • libraries (list of libraries) – Library instances to be applied to the input matrix.

  • inputs_per_library (Sequence of Sequences of ints (default None)) – list that specifies which input indexes should be passed as inputs for each of the individual feature libraries. length must equal the number of feature libraries. Default is that all inputs are used for every library.

Attributes:
  • libraries_ (list of libraries) – Library instances to be applied to the input matrix.

  • n_features_in_ (int) – The total number of input features.

  • n_output_features_ (int) – The total number of output features. The number of output features is the product of the numbers of output features for each of the libraries that were tensored together.

Examples

>>> import numpy as np
>>> from pysindy.feature_library import FourierLibrary, CustomLibrary
>>> from pysindy.feature_library import TensoredLibrary
>>> x = np.array([[0.,-1],[1.,0.],[2.,-1.]])
>>> functions = [lambda x : np.exp(x), lambda x,y : np.sin(x+y)]
>>> lib_custom = CustomLibrary(library_functions=functions)
>>> lib_fourier = FourierLibrary()
>>> lib_tensored = lib_custom * lib_fourier
>>> lib_tensored.fit(x)
>>> lib_tensored.transform(x)

Methods

calc_trajectory

fit

Compute number of output features.

get_feature_names

Return feature names for output features.

set_fit_request

Configure whether metadata should be requested to be passed to the fit method.

set_transform_request

Configure whether metadata should be requested to be passed to the transform method.

transform

Transform data with libs provided below.

Attributes

n_features_in_

n_output_features_

fit(x_full, y=None)[source]

Compute number of output features.

Parameters:

x (array-like, shape (n_samples, n_features)) – The data.

Returns:

self

Return type:

instance

get_feature_names(input_features: list[str] | None = None) list[str][source]

Return feature names for output features.

Parameters:

input_features (list of string, length n_features, optional) – String names for input features if available. By default, “x0”, “x1”, … “xn_features” is used.

Returns:

output_feature_names

Return type:

list of string, length n_output_features

set_fit_request(*, x_full: bool | None | str = '$UNCHANGED$') TensoredLibrary

Configure whether metadata should be requested to be passed to the fit method.

Note that this method is only relevant when this estimator is used as a sub-estimator within a meta-estimator and metadata routing is enabled with enable_metadata_routing=True (see sklearn.set_config). Please check the User Guide on how the routing mechanism works.

The options for each parameter are:

  • True: metadata is requested, and passed to fit if provided. The request is ignored if metadata is not provided.

  • False: metadata is not requested and the meta-estimator will not pass it to fit.

  • None: metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str: metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default (sklearn.utils.metadata_routing.UNCHANGED) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Parameters:

x_full (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for x_full parameter in fit.

Returns:

self – The updated object.

Return type:

object

set_transform_request(*, x_full: bool | None | str = '$UNCHANGED$') TensoredLibrary

Configure whether metadata should be requested to be passed to the transform method.

Note that this method is only relevant when this estimator is used as a sub-estimator within a meta-estimator and metadata routing is enabled with enable_metadata_routing=True (see sklearn.set_config). Please check the User Guide on how the routing mechanism works.

The options for each parameter are:

  • True: metadata is requested, and passed to transform if provided. The request is ignored if metadata is not provided.

  • False: metadata is not requested and the meta-estimator will not pass it to transform.

  • None: metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str: metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default (sklearn.utils.metadata_routing.UNCHANGED) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Parameters:

x_full (str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED) – Metadata routing for x_full parameter in transform.

Returns:

self – The updated object.

Return type:

object

transform(x_full)[source]

Transform data with libs provided below.

Parameters:

x (array-like, shape [n_samples, n_features]) – The data to transform, row by row.

Returns:

xp – The matrix of features, where NP is the number of features generated from applying the custom functions to the inputs.

Return type:

np.ndarray, shape [n_samples, NP]