| 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)
  }
}