pysindy.feature_library.PDELibrary

class pysindy.feature_library.PDELibrary(function_library: ~pysindy.feature_library.base.BaseFeatureLibrary | None = None, derivative_order=0, spatial_grid=None, temporal_grid=None, include_bias=False, include_interaction=True, implicit_terms=False, multiindices=None, differentiation_method=<class 'pysindy.differentiation.finite_difference.FiniteDifference'>, diff_kwargs={}, is_uniform=None, periodic=None)[source]

Generate a PDE library with custom functions.

Parameters:
  • function_library (BaseFeatureLibrary, optional (default) – PolynomialLibrary(degree=3,include_bias=False)) SINDy library with output features representing library_functions to include in the library, in place of library_functions.

  • derivative_order (int, optional (default 0)) – Order of derivative to take on each input variable, can be arbitrary non-negative integer.

  • spatial_grid (np.ndarray, optional (default None)) – The spatial grid for computing derivatives

  • temporal_grid (np.ndarray, optional (default None)) – The temporal grid if using SINDy-PI with PDEs.

  • include_bias (boolean, optional (default False)) – If True (default), then include a bias column, the feature in which all polynomial powers are zero (i.e. a column of ones - acts as an intercept term in a linear model). This is hard to do with just lambda functions, because if the system is not 1D, lambdas will generate duplicates.

  • include_interaction (boolean, optional (default True)) – This is a different than the use for the PolynomialLibrary. If true, it generates all the mixed derivative terms. If false, the library will consist of only pure no-derivative terms and pure derivative terms, with no mixed terms.

  • implicit_terms (boolean) – Flag to indicate if SINDy-PI (temporal derivatives) is being used for the right-hand side of the SINDy fit.

  • multiindices (list of integer arrays, (default None)) – Overrides the derivative_order to customize the included derivative orders. Each integer array indicates the order of differentiation along the corresponding axis for each derivative term.

  • differentiation_method (callable, (default FiniteDifference)) –

    Spatial differentiation method.

    diff_kwargs: dictionary, (default {})

    Keyword options to supply to differtiantion_method.

Attributes:
  • 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 number of library functions and the number of input features.

Examples

>>> import numpy as np
>>> from pysindy.feature_library import PDELibrary

Methods

fit

Compute number of output features.

get_feature_names

Return feature names for output features.

get_spatial_grid

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 to pde features

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)) – Measurement data.

Returns:

self

Return type:

instance

get_feature_names(input_features=None)[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$') PDELibrary

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$') PDELibrary

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 to pde features

Parameters:

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

Returns:

xp – The matrix of features, where n_output_features is the number of features generated from the tensor product of the derivative terms and the library_functions applied to combinations of the inputs.

Return type:

np.ndarray, shape (n_samples, n_output_features)