SparseRipsPersistence

class gtda.homology.SparseRipsPersistence(metric='euclidean', homology_dimensions=0, 1, coeff=2, epsilon=0.1, max_edge_length=inf, infinity_values=None, reduced_homology=True, n_jobs=None)[source]

Persistence diagrams resulting from Sparse Vietoris–Rips filtrations.

Given a point cloud in Euclidean space, or an abstract metric space encoded by a distance matrix, information about the appearance and disappearance of topological features (technically, homology classes) of various dimensions and at different scales is summarised in the corresponding persistence diagram.

Important note:

  • Persistence diagrams produced by this class must be interpreted with care due to the presence of padding triples which carry no information. See transform for additional information.

Parameters
  • metric (string or callable, optional, default: 'euclidean') – If set to 'precomputed', input data is to be interpreted as a collection of distance matrices. Otherwise, input data is to be interpreted as a collection of point clouds (i.e. feature arrays), and metric determines a rule with which to calculate distances between pairs of instances (i.e. rows) in these arrays. If metric is a string, it must be one of the options allowed by scipy.spatial.distance.pdist for its metric parameter, or a metric listed in sklearn.pairwise.PAIRWISE_DISTANCE_FUNCTIONS, including “euclidean”, “manhattan”, or “cosine”. If metric is a callable, it is called on each pair of instances and the resulting value recorded. The callable should take two arrays from the entry in X as input, and return a value indicating the distance between them.

  • homology_dimensions (list or tuple, optional, default: (0, 1)) – Dimensions (non-negative integers) of the topological features to be detected.

  • coeff (int prime, optional, default: 2) – Compute homology with coefficients in the prime field \(\mathbb{F}_p = \{ 0, \ldots, p - 1 \}\) where \(p\) equals coeff.

  • epsilon (float between 0. and 1., optional, default: 0.1) – Parameter controlling the approximation to the exact Vietoris–Rips filtration. If set to 0., SparseRipsPersistence leads to the same results as VietorisRipsPersistence but is slower.

  • max_edge_length (float, optional, default: numpy.inf) – Maximum value of the Sparse Rips filtration parameter. Points whose distance is greater than this value will never be connected by an edge, and topological features at scales larger than this value will not be detected.

  • infinity_values (float or None, default: None) – Which death value to assign to features which are still alive at filtration value max_edge_length. None means that this death value is declared to be equal to max_edge_length.

  • reduced_homology (bool, optional, default: True) – If True, the earliest-born triple in homology dimension 0 which has infinite death is discarded from each diagram computed in transform.

  • n_jobs (int or None, optional, default: None) – The number of jobs to use for the computation. None means 1 unless in a joblib.parallel_backend context. -1 means using all processors.

infinity_values_

Effective death value to assign to features which are still alive at filtration value max_edge_length. Set in fit.

Type

float

See also

VietorisRipsPersistence, FlagserPersistence, WeakAlphaPersistence, EuclideanCechPersistence, ConsistentRescaling, ConsecutiveRescaling

Notes

GUDHI is used as a C++ backend for computing sparse Vietoris–Rips persistent homology 1. Python bindings were modified for performance.

References

1

C. Maria, “Persistent Cohomology”, 2020; GUDHI User and Reference Manual.

__init__(metric='euclidean', homology_dimensions=0, 1, coeff=2, epsilon=0.1, max_edge_length=inf, infinity_values=None, reduced_homology=True, n_jobs=None)[source]

Initialize self. See help(type(self)) for accurate signature.

fit(X, y=None)[source]

Calculate infinity_values_. Then, return the estimator.

This method is here to implement the usual scikit-learn API and hence work in pipelines.

Parameters
  • X (ndarray or list of length n_samples) – Input data representing a collection of point clouds if metric was not set to 'precomputed', and of distance matrices otherwise. Can be either a 3D ndarray whose zeroth dimension has size n_samples, or a list containing n_samples 2D ndarrays. Point cloud arrays have shape (n_points, n_dimensions), and if X is a list these shapes can vary between point clouds. If metric was set to 'precomputed', each entry of X should be compatible with a filtration, i.e. the value at index (i, j) should be no smaller than the values at diagonal indices (i, i) and (j, j).

  • y (None) – There is no need for a target in a transformer, yet the pipeline API requires this parameter.

Returns

self

Return type

object

fit_transform(X, y=None, **fit_params)

Fit to data, then transform it.

Fits transformer to X and y with optional parameters fit_params and returns a transformed version of X.

Parameters
  • X (ndarray or list of length n_samples) – Input data representing a collection of point clouds if metric was not set to 'precomputed', and of distance matrices otherwise. Can be either a 3D ndarray whose zeroth dimension has size n_samples, or a list containing n_samples 2D ndarrays. Point cloud arrays have shape (n_points, n_dimensions), and if X is a list these shapes can vary between point clouds. If metric was set to 'precomputed', each entry of X should be compatible with a filtration, i.e. the value at index (i, j) should be no smaller than the values at diagonal indices (i, i) and (j, j).

  • y (None) – There is no need for a target in a transformer, yet the pipeline API requires this parameter.

Returns

Xt – Array of persistence diagrams computed from the feature arrays or distance matrices in X. n_features equals \(\sum_q n_q\), where \(n_q\) is the maximum number of topological features in dimension \(q\) across all samples in X.

Return type

ndarray of shape (n_samples, n_features, 3)

fit_transform_plot(X, y=None, sample=0, **plot_params)

Fit to data, then apply transform_plot.

Parameters
  • X (ndarray of shape (n_samples, ..)) – Input data.

  • y (ndarray of shape (n_samples,) or None) – Target values for supervised problems.

  • sample (int) – Sample to be plotted.

  • **plot_params – Optional plotting parameters.

Returns

Xt – Transformed one-sample slice from the input.

Return type

ndarray of shape (1, ..)

get_params(deep=True)

Get parameters for this estimator.

Parameters

deep (bool, default=True) – If True, will return the parameters for this estimator and contained subobjects that are estimators.

Returns

params – Parameter names mapped to their values.

Return type

mapping of string to any

static plot(Xt, sample=0, homology_dimensions=None, plotly_params=None)[source]

Plot a sample from a collection of persistence diagrams, with homology in multiple dimensions.

Parameters
  • Xt (ndarray of shape (n_samples, n_features, 3)) – Collection of persistence diagrams, such as returned by transform.

  • sample (int, optional, default: 0) – Index of the sample in Xt to be plotted.

  • homology_dimensions (list, tuple or None, optional, default: None) – Which homology dimensions to include in the plot. None means plotting all dimensions present in Xt[sample].

  • plotly_params (dict or None, optional, default: None) – Custom parameters to configure the plotly figure. Allowed keys are "traces" and "layout", and the corresponding values should be dictionaries containing keyword arguments as would be fed to the update_traces and update_layout methods of plotly.graph_objects.Figure.

Returns

fig – Plotly figure.

Return type

plotly.graph_objects.Figure object

set_params(**params)

Set the parameters of this estimator.

The method works on simple estimators as well as on nested objects (such as pipelines). The latter have parameters of the form <component>__<parameter> so that it’s possible to update each component of a nested object.

Parameters

**params (dict) – Estimator parameters.

Returns

self – Estimator instance.

Return type

object

transform(X, y=None)[source]

For each point cloud or distance matrix in X, compute the relevant persistence diagram as an array of triples [b, d, q]. Each triple represents a persistent topological feature in dimension q (belonging to homology_dimensions) which is born at b and dies at d. Only triples in which b < d are meaningful. Triples in which b and d are equal (“diagonal elements”) may be artificially introduced during the computation for padding purposes, since the number of non-trivial persistent topological features is typically not constant across samples. They carry no information and hence should be effectively ignored by any further computation.

Parameters
  • X (ndarray or list of length n_samples) – Input data representing a collection of point clouds if metric was not set to 'precomputed', and of distance matrices otherwise. Can be either a 3D ndarray whose zeroth dimension has size n_samples, or a list containing n_samples 2D ndarrays. Point cloud arrays have shape (n_points, n_dimensions), and if X is a list these shapes can vary between point clouds. If metric was set to 'precomputed', each entry of X should be compatible with a filtration, i.e. the value at index (i, j) should be no smaller than the values at diagonal indices (i, i) and (j, j).

  • y (None) – There is no need for a target in a transformer, yet the pipeline API requires this parameter.

Returns

Xt – Array of persistence diagrams computed from the feature arrays or distance matrices in X. n_features equals \(\sum_q n_q\), where \(n_q\) is the maximum number of topological features in dimension \(q\) across all samples in X.

Return type

ndarray of shape (n_samples, n_features, 3)

transform_plot(X, sample=0, **plot_params)

Take a one-sample slice from the input collection and transform it. Before returning the transformed object, plot the transformed sample.

Parameters
  • X (ndarray of shape (n_samples, ..)) – Input data.

  • sample (int) – Sample to be plotted.

  • **plot_params – Optional plotting parameters.

Returns

Xt – Transformed one-sample slice from the input.

Return type

ndarray of shape (1, ..)