gridDiag | R Documentation |
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
.
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, ...)
X |
an n by d matrix of coordinates, used by the function |
FUN |
a function whose inputs are 1) an n by d matrix of coordinates |
lim |
a 2 by d matrix, where each column specifying the range of each dimension of the grid, over which the function |
by |
either a number or a vector of length d specifying space between points of the grid in each dimension. If a number is given, then same space is used in each dimension. NULL if this option is not used. The default value is |
FUNvalues |
an m1 * m2 * ... * md array of function values over m1 * m2 * ... * md grid, where mi is the number of scales of grid on ith dimension. NULL if this option is not used. The default value is |
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 |
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
.
The function gridDiag
returns a list with the following components:
diagram |
an object of class |
birthLocation |
only if |
deathLocation |
only if |
cycleLocation |
only if |
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 ≥ d is trivial. Hence setting maxdimension
with values ≥ d is equivalent to maxdimension=d-1
.
Brittany T. Fasy, Jisu Kim, and Fabrizio Lecci
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/
summary.diagram
, plot.diagram
,
distFct
, kde
, kernelDist
, dtm
,
alphaComplexDiag
, alphaComplexDiag
, ripsDiag
## 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) } }
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.