gridDiag {TDA} | R Documentation |
Persistence Diagram of a function over a Grid
Description
The function gridDiag
computes the Persistence Diagram of a filtration of sublevel sets (or superlevel sets) of a function evaluated over a grid of points in arbitrary dimension d
.
Usage
gridDiag(
X = NULL, FUN = NULL, lim = NULL, by = NULL, FUNvalues = NULL,
maxdimension = max(NCOL(X), length(dim(FUNvalues))) - 1,
sublevel = TRUE, library = "GUDHI", location = FALSE,
printProgress = FALSE, diagLimit = NULL, ...)
Arguments
X |
an |
FUN |
a function whose inputs are 1) an |
lim |
a |
by |
either a number or a vector of length |
FUNvalues |
an |
maxdimension |
a number that indicates the maximum dimension of the homological features to compute: |
sublevel |
a logical variable indicating if the Persistence Diagram should be computed for sublevel sets ( |
library |
a string specifying which library to compute the persistence diagram. The user can choose either the library |
location |
if |
printProgress |
if |
diagLimit |
a number that replaces |
... |
additional parameters for the function |
Details
If the values of X
, FUN
are set, then FUNvalues
should be NULL
. In this case, gridDiag
evaluates the function FUN
over a grid. If the value of FUNvalues
is set, then X
, FUN
should be NULL
. In this case, FUNvalues
is used as function values over the grid. If location=TRUE
, then lim
, and by
should be set.
Once function values are either computed or given, gridDiag
constructs a filtration by triangulating the grid and considering the simplices determined by the values of the function of dimension up to maxdimension+1
.
Value
The function gridDiag
returns a list with the following components:
diagram |
an object of class |
birthLocation |
only if |
deathLocation |
only if |
cycleLocation |
only if |
Note
The user can decide to use either the C++ library GUDHI, Dionysus, or PHAT. See references.
Since dimension of simplicial complex from grid points in R^d
is up to d
, homology of dimension \ge d
is trivial. Hence setting maxdimension
with values \ge d
is equivalent to maxdimension=d-1
.
Author(s)
Brittany T. Fasy, Jisu Kim, and Fabrizio Lecci
References
Fasy B, Lecci F, Rinaldo A, Wasserman L, Balakrishnan S, Singh A (2013). "Statistical Inference For Persistent Homology." (arXiv:1303.7117). Annals of Statistics.
Morozov D (2007). "Dionysus, a C++ library for computing persistent homology." https://www.mrzv.org/software/dionysus/
Bauer U, Kerber M, Reininghaus J (2012). "PHAT, a software library for persistent homology." https://bitbucket.org/phat-code/phat/
See Also
summary.diagram
, plot.diagram
,
distFct
, kde
, kernelDist
, dtm
,
alphaComplexDiag
, alphaComplexDiag
, ripsDiag
Examples
## Distance Function Diagram and Kernel Density Diagram
# input data
n <- 300
XX <- circleUnif(n)
## Ranges of the grid
Xlim <- c(-1.8, 1.8)
Ylim <- c(-1.6, 1.6)
lim <- cbind(Xlim, Ylim)
by <- 0.05
h <- .3 #bandwidth for the function kde
#Distance Function Diagram of the sublevel sets
Diag1 <- gridDiag(XX, distFct, lim = lim, by = by, sublevel = TRUE,
printProgress = TRUE)
#Kernel Density Diagram of the superlevel sets
Diag2 <- gridDiag(XX, kde, lim = lim, by = by, sublevel = FALSE,
library = "Dionysus", location = TRUE, printProgress = TRUE, h = h)
#plot
par(mfrow = c(2, 2))
plot(XX, cex = 0.5, pch = 19)
title(main = "Data")
plot(Diag1[["diagram"]])
title(main = "Distance Function Diagram")
plot(Diag2[["diagram"]])
title(main = "Density Persistence Diagram")
one <- which(Diag2[["diagram"]][, 1] == 1)
plot(XX, col = 2, main = "Representative loop of grid points")
for (i in seq(along = one)) {
points(Diag2[["birthLocation"]][one[i], , drop = FALSE], pch = 15, cex = 3,
col = i)
points(Diag2[["deathLocation"]][one[i], , drop = FALSE], pch = 17, cex = 3,
col = i)
for (j in seq_len(dim(Diag2[["cycleLocation"]][[one[i]]])[1])) {
lines(Diag2[["cycleLocation"]][[one[i]]][j, , ], pch = 19, cex = 1, col = i)
}
}