PersistenceLandscape.RdExport, and create and manipulate objects of, the PersistenceLandscape' C++ class.
# S3 method for class 'Rcpp_PersistenceLandscape'
summary(object, ...)
# S3 method for class 'summary.Rcpp_PersistenceLandscape'
print(x, digits = max(1L, getOption("digits") - 3L), ...)
# S3 method for class 'Rcpp_PersistenceLandscape'
as.vector(x, mode = "any")
# S3 method for class 'Rcpp_PersistenceLandscape'
as.matrix(x, by_level = FALSE, ...)
# S3 method for class 'Rcpp_PersistenceLandscape'
as.data.frame(x, row.names = NULL, optional = FALSE, ...)an object for which a summary is desired.
additional arguments affecting the summary produced.
a result of the default method of summary().
integer, used for number formatting with
signif() (for summary.default) or
format() (for summary.data.frame). In
summary.default, if not specified (i.e.,
missing(.)), signif() will not be called
anymore (since R >= 3.4.0, where the default has been changed to
only round in the print and format methods).
character string naming an atomic mode or
"list" or "expression" or (except for vector)
"any". Currently, is.vector() allows any type (see
typeof) for mode, and when mode is not
"any", is.vector(x, mode) is almost the same as
typeof(x) == mode.
Logical; whether the levels are encoded as rows (the default) or columns.
NULL or a character vector giving the row
names for the data frame. Missing values are not allowed.
logical. If TRUE, setting row names and
converting column names (to syntactic names: see
make.names) is optional. Note that all of R's
base package as.data.frame() methods use
optional only for column names treatment, basically with the
meaning of data.frame(*, check.names = !optional).
See also the make.names argument of the matrix method.
The C++ class 'PersistenceLandscape' is exposed as the S4 class
'Rcpp_PersistenceLandscape' via the RCPP_MODULE() macro provided by
Rcpp. See
https://github.com/coatless-rd-rcpp/rcpp-modules-student for an
introduction. New objects should be created from persistence data
(diagrams) using pl_new().
newConstructor.
exactRepresentation of the underlying PL.
min_xInfimum (left endpoint) of the support of a discrete PL.
max_xSupremum (right endpoint) of the support of a discrete PL.
dxResolution of the representation of a discrete PL.
pl_new() for the R wrapper.
# double matrix
pl <- new(
PersistenceLandscape,
cbind(c(0, 0, 1, 2), c(1.5, 2.5, 3.5, 4.5)),
TRUE,
0, 10, .01
)
pl$isExact()
#> [1] TRUE
pl$xMin()
#> [1] 0
pl$xMax()
#> [1] 10
pl$xBy()
#> [1] 0.01
pl$getInternal()
#> [[1]]
#> [,1] [,2]
#> [1,] -Inf 0.00
#> [2,] 0.00 0.00
#> [3,] 1.25 1.25
#> [4,] 1.75 0.75
#> [5,] 2.25 1.25
#> [6,] 2.75 0.75
#> [7,] 3.25 1.25
#> [8,] 4.50 0.00
#> [9,] Inf 0.00
#>
#> [[2]]
#> [,1] [,2]
#> [1,] -Inf 0.00
#> [2,] 0.00 0.00
#> [3,] 0.75 0.75
#> [4,] 1.25 0.25
#> [5,] 1.75 0.75
#> [6,] 2.25 0.25
#> [7,] 2.75 0.75
#> [8,] 3.50 0.00
#> [9,] Inf 0.00
#>
#> [[3]]
#> [,1] [,2]
#> [1,] -Inf 0.00
#> [2,] 1.00 0.00
#> [3,] 1.25 0.25
#> [4,] 1.50 0.00
#> [5,] 2.00 0.00
#> [6,] 2.25 0.25
#> [7,] 2.50 0.00
#> [8,] Inf 0.00
#>
print(pl)
#> Persistence landscape (exact format) of 3 levels over (0,10)
summary(pl)
#> Internal representation: exact
#> Number of levels: 3
#> Representation limits: ( 0 , 4.5 )
#> Landscape range: ( 0 , 1.25 )
#> Magnitude: 4.187
#> Integral: 5.25
dim(pl$discretize()$getInternal())
#> [1] 3 1001 2
length(as.vector(pl))
#> [1] 3003
as.data.frame(pl)
#> level x fx
#> 1.1 1 -Inf 0.00
#> 1.2 1 0.00 0.00
#> 1.3 1 1.25 1.25
#> 1.4 1 1.75 0.75
#> 1.5 1 2.25 1.25
#> 1.6 1 2.75 0.75
#> 1.7 1 3.25 1.25
#> 1.8 1 4.50 0.00
#> 1.9 1 Inf 0.00
#> 2.1 2 -Inf 0.00
#> 2.2 2 0.00 0.00
#> 2.3 2 0.75 0.75
#> 2.4 2 1.25 0.25
#> 2.5 2 1.75 0.75
#> 2.6 2 2.25 0.25
#> 2.7 2 2.75 0.75
#> 2.8 2 3.50 0.00
#> 2.9 2 Inf 0.00
#> 3.1 3 -Inf 0.00
#> 3.2 3 1.00 0.00
#> 3.3 3 1.25 0.25
#> 3.4 3 1.50 0.00
#> 3.5 3 2.00 0.00
#> 3.6 3 2.25 0.25
#> 3.7 3 2.50 0.00
#> 3.8 3 Inf 0.00
pl2 <- pl$scale(2)
pl2$getInternal()
#> [[1]]
#> [,1] [,2]
#> [1,] -Inf 0.0
#> [2,] 0.00 0.0
#> [3,] 1.25 2.5
#> [4,] 1.75 1.5
#> [5,] 2.25 2.5
#> [6,] 2.75 1.5
#> [7,] 3.25 2.5
#> [8,] 4.50 0.0
#> [9,] Inf 0.0
#>
#> [[2]]
#> [,1] [,2]
#> [1,] -Inf 0.0
#> [2,] 0.00 0.0
#> [3,] 0.75 1.5
#> [4,] 1.25 0.5
#> [5,] 1.75 1.5
#> [6,] 2.25 0.5
#> [7,] 2.75 1.5
#> [8,] 3.50 0.0
#> [9,] Inf 0.0
#>
#> [[3]]
#> [,1] [,2]
#> [1,] -Inf 0.0
#> [2,] 1.00 0.0
#> [3,] 1.25 0.5
#> [4,] 1.50 0.0
#> [5,] 2.00 0.0
#> [6,] 2.25 0.5
#> [7,] 2.50 0.0
#> [8,] Inf 0.0
#>
pl3 <- pl$add(pl2)
pl3$getInternal()
#> [[1]]
#> [,1] [,2]
#> [1,] -Inf 0.00
#> [2,] 0.00 0.00
#> [3,] 1.25 3.75
#> [4,] 1.75 2.25
#> [5,] 2.25 3.75
#> [6,] 2.75 2.25
#> [7,] 3.25 3.75
#> [8,] 4.50 0.00
#> [9,] Inf 0.00
#>
#> [[2]]
#> [,1] [,2]
#> [1,] -Inf 0.00
#> [2,] 0.00 0.00
#> [3,] 0.75 2.25
#> [4,] 1.25 0.75
#> [5,] 1.75 2.25
#> [6,] 2.25 0.75
#> [7,] 2.75 2.25
#> [8,] 3.50 0.00
#> [9,] Inf 0.00
#>
#> [[3]]
#> [,1] [,2]
#> [1,] -Inf 0.00
#> [2,] 1.00 0.00
#> [3,] 1.25 0.75
#> [4,] 1.50 0.00
#> [5,] 2.00 0.00
#> [6,] 2.25 0.75
#> [7,] 2.50 0.00
#> [8,] Inf 0.00
#>
# integer matrix
pl <- new(
PersistenceLandscape,
cbind(c(0L, 0L, 1L, 2L), c(2L, 3L, 4L, 5L)),
TRUE,
0, 10, .01
)
pl$getInternal()
#> [[1]]
#> [,1] [,2]
#> [1,] -Inf 0.0
#> [2,] 0.0 0.0
#> [3,] 1.5 1.5
#> [4,] 2.0 1.0
#> [5,] 2.5 1.5
#> [6,] 3.0 1.0
#> [7,] 3.5 1.5
#> [8,] 5.0 0.0
#> [9,] Inf 0.0
#>
#> [[2]]
#> [,1] [,2]
#> [1,] -Inf 0.0
#> [2,] 0.0 0.0
#> [3,] 1.0 1.0
#> [4,] 1.5 0.5
#> [5,] 2.0 1.0
#> [6,] 2.5 0.5
#> [7,] 3.0 1.0
#> [8,] 4.0 0.0
#> [9,] Inf 0.0
#>
#> [[3]]
#> [,1] [,2]
#> [1,] -Inf 0.0
#> [2,] 1.0 0.0
#> [3,] 1.5 0.5
#> [4,] 2.0 0.0
#> [5,] 2.5 0.5
#> [6,] 3.0 0.0
#> [7,] Inf 0.0
#>
print(pl)
#> Persistence landscape (exact format) of 3 levels over (0,10)
# discrete landscape
pl <- new(
PersistenceLandscape,
cbind(c(0, 0, 1, 2), c(1.5, 2.5, 3.5, 4.5)),
FALSE,
0, 5, .5
)
pl$xBy()
#> [1] 0.5
pl$getInternal()
#> , , 1
#>
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
#> [1,] 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
#> [2,] 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
#> [3,] 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
#> [4,] 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
#>
#> , , 2
#>
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
#> [1,] 0 0.5 1.0 1.0 1.0 1.0 1.0 1 0.5 0 0
#> [2,] 0 0.5 0.5 0.5 0.5 0.5 0.5 0 0.0 0 0
#> [3,] 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 0 0
#> [4,] 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 0 0
#>
print(pl)
#> Persistence landscape (discrete format) of 4 levels over (0,5)
dim(pl$discretize()$getInternal())
#> Warning: PL is already discrete.
#> [1] 4 11 2
length(as.vector(pl))
#> Warning: PL is already discrete.
#> [1] 44
dim(as.matrix(pl))
#> Warning: PL is already discrete.
#> [1] 4 11
dim(as.matrix(pl, by_level = TRUE))
#> Warning: PL is already discrete.
#> [1] 11 4
as.data.frame(pl)
#> level x fx
#> 1.1 1 0.0 0.0
#> 1.2 1 0.5 0.5
#> 1.3 1 1.0 1.0
#> 1.4 1 1.5 1.0
#> 2.1 2 2.0 1.0
#> 2.2 2 2.5 1.0
#> 2.3 2 3.0 1.0
#> 2.4 2 3.5 1.0
#> 3.1 3 4.0 0.5
#> 3.2 3 4.5 0.0
#> 3.3 3 5.0 0.0
#> 3.4 3 0.0 0.0
#> 4.1 4 0.5 0.5
#> 4.2 4 1.0 0.5
#> 4.3 4 1.5 0.5
#> 4.4 4 2.0 0.5
#> 5.1 5 2.5 0.5
#> 5.2 5 3.0 0.5
#> 5.3 5 3.5 0.0
#> 5.4 5 4.0 0.0
#> 6.1 6 4.5 0.0
#> 6.2 6 5.0 0.0
#> 6.3 6 0.0 0.0
#> 6.4 6 0.5 0.0
#> 7.1 7 1.0 0.0
#> 7.2 7 1.5 0.0
#> 7.3 7 2.0 0.0
#> 7.4 7 2.5 0.0
#> 8.1 8 3.0 0.0
#> 8.2 8 3.5 0.0
#> 8.3 8 4.0 0.0
#> 8.4 8 4.5 0.0
#> 9.1 9 5.0 0.0
#> 9.2 9 0.0 0.0
#> 9.3 9 0.5 0.0
#> 9.4 9 1.0 0.0
#> 10.1 10 1.5 0.0
#> 10.2 10 2.0 0.0
#> 10.3 10 2.5 0.0
#> 10.4 10 3.0 0.0
#> 11.1 11 3.5 0.0
#> 11.2 11 4.0 0.0
#> 11.3 11 4.5 0.0
#> 11.4 11 5.0 0.0
pl2 <- pl$scale(2)
pl2$isExact()
#> [1] FALSE
pl2$xBy()
#> [1] 0.5
pl2$getInternal()
#> , , 1
#>
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
#> [1,] 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
#> [2,] 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
#> [3,] 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
#> [4,] 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
#>
#> , , 2
#>
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
#> [1,] 0 1 2 2 2 2 2 2 1 0 0
#> [2,] 0 1 1 1 1 1 1 0 0 0 0
#> [3,] 0 0 0 0 0 0 0 0 0 0 0
#> [4,] 0 0 0 0 0 0 0 0 0 0 0
#>
show(pl2)
#> Persistence landscape (discrete format) of 4 levels over (0,5)
(pl3 <- pl$add(pl2))
#> Persistence landscape (discrete format) of 4 levels over (0,5)
pl3$getInternal()
#> , , 1
#>
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
#> [1,] 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
#> [2,] 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
#> [3,] 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
#> [4,] 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
#>
#> , , 2
#>
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11]
#> [1,] 0 1.5 3.0 3.0 3.0 3.0 3.0 3 1.5 0 0
#> [2,] 0 1.5 1.5 1.5 1.5 1.5 1.5 0 0.0 0 0
#> [3,] 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 0 0
#> [4,] 0 0.0 0.0 0.0 0.0 0.0 0.0 0 0.0 0 0
#>
pl3$xBy()
#> [1] 0.5