Learn R Programming

TDA (version 1.6.2)

wasserstein: Wasserstein distance between two persistence diagrams

Description

The function wasserstein computes the Wasserstein distance between two persistence diagrams.

Usage

wasserstein(Diag1, Diag2, p = 1, dimension = 1)

Arguments

Diag1

an object of class diagram or a matrix (\(n\) by 3) that stores dimension, birth and death of \(n\) topological features.

Diag2

an object of class diagram or a matrix (\(m\) by 3) that stores dimension, birth and death of \(m\) topological features.

p

integer specifying the power to be used in the computation of the Wasserstein distance. The default value is 1.

dimension

an integer or a vector specifying the dimension of the features used to compute the wasserstein distance. 0 for connected components, 1 for loops, 2 for voids and so on. The default value is 1 (loops).

Value

The function wasserstein returns the value of the Wasserstein distance between the two persistence diagrams.

Details

The Wasserstein distance between two diagrams is the cost of the optimal matching between points of the two diagrams. When a vector is given for dimension, then maximum among bottleneck distances using each element in dimension is returned. This function is an R wrapper of the function "wasserstein_distance" in the C++ library Dionysus. See references.

References

Morozov D (2007). "Dionysus, a C++ library for computing persistent homology". http://www.mrzv.org/software/dionysus/ .

Edelsbrunner H, Harer J (2010). "Computational topology: an introduction." American Mathematical Society.

See Also

bottleneck, alphaComplexDiag, alphaComplexDiag, gridDiag, ripsDiag, plot.diagram

Examples

Run this code
# NOT RUN {
XX1 <- circleUnif(20)
XX2 <- circleUnif(20, r = 0.2)

DiagLim <- 5
maxdimension <- 1

Diag1 <- ripsDiag(XX1, maxdimension, DiagLim, printProgress = FALSE)
Diag2 <- ripsDiag(XX2, maxdimension, DiagLim, printProgress = FALSE)

wassersteinDist <- wasserstein(Diag1[["diagram"]], Diag2[["diagram"]], p = 1,
                               dimension = 1)
print(wassersteinDist)
# }

Run the code above in your browser using DataLab