tdads.kernel

Classes

kernel

Module Contents

class tdads.kernel.kernel(dim: int = 0, sigma: float = 1, t: float = 1, inf_replace_val: float = None, n_cores: int = cpu_count() - 1)[source]
__str__()[source]

Describe a persistence Fisher kernel by its sigma and t parameters.

compute(D1, D2)[source]

Compute the kernel value between two persistence diagrams.

Parameters:
  • D1 (any) – The first persistence diagram (computed from either the ripser, gph, flagser, gudhi or cechmate packages).

  • D2 (any) – The second persistence diagram.

Returns:

The numeric kernel calculation value.

Return type:

float

Examples

>>> from tdads import kernel
>>> from ripser import ripser
>>> import numpy as np
>>> # create 2 datasets
>>> data1 = np.random((100,2))
>>> data2 = np.random((100,2))
>>> # compute persistence diagrams with ripser
>>> diagram1 = ripser(data1)
>>> diagram2 = ripser(data2)
>>> # create kernel object
>>> k = kernel()
>>> # compute kernel value
>>> k.compute(diagram1, diagrams2)

Citations

Le T, Yamada M (2018). “Persistence fisher kernel: a riemannian manifold kernel for persistence diagrams.” https://proceedings.neurips.cc/paper/2018/file/959ab9a0695c467e7caf75431a872e5c-Paper.pdf.

compute_matrix(diagrams, other_diagrams=None)[source]

Compute a Gram (kernel) matrix between one or two lists of persistence diagrams. :param diagrams: The first first of persistence diagram (computed from either the ripser, gph, flagser, gudhi or cechmate packages). :type diagrams: list :param other_diagrams: The optional second list of persistence diagram for computing a cross-Gram matrix. Default None. :type other_diagrams: any

Returns:

The (cross) Gram matrix.

Return type:

numpy.ndarray

Examples

>>> from tdads import kernel
>>> from ripser import ripser
>>> import numpy as np
>>> # create 2 datasets
>>> data1 = np.random((100,2))
>>> data2 = np.random((100,2))
>>> # compute persistence diagrams with ripser
>>> diagram1 = ripser(data1)
>>> diagram2 = ripser(data2)
>>> # create kernel object
>>> k = kernel()
>>> # compute Gram matrix
>>> k.compute_matrix([diagram1, diagram2])
>>> # this is the same as:
>>> k.compute_matrix([diagram1, diagram2], [diagram1, diagram2])