Skip to contents

A Tangential Delaunay complex is a simplicial complex designed to reconstruct a \(k\)-dimensional manifold embedded in \(d\)-dimensional Euclidean space. The input is a point sample coming from an unknown manifold. The running time depends only linearly on the extrinsic dimension \(d\) and exponentially on the intrinsic dimension \(k\).

Details

The TangentialComplex class represents a tangential complex. After the computation of the complex, an optional post-processing called perturbation can be run to attempt to remove inconsistencies.

See also

Other filtrations and reconstructions: AlphaComplex, RipsComplex, WitnessComplex

Author

Clément Jamin

Super class

rgudhi::PythonClass -> TangentialComplex

Methods

Inherited methods


Method new()

TangentialComplex constructor.

Usage

TangentialComplex$new(points, intrinsic_dim = NULL)

Arguments

points

Either a character string specifying the path to an OFF file which the points can be read from or a numeric matrix or list of numeric vectors specifying the points directly.

intrinsic_dim

An integer value specifying the intrinsic dimension of the manifold. This is nedded when points are provided as a numeric matrix or a list of numeric vectors. Defaults to NULL.

Returns

A TangentialComplex object storing the tangential complex.


Method compute_tangential_complex()

This function computes the tangential complex.

Usage

TangentialComplex$compute_tangential_complex()

Details

In debug mode, it may raise a ValueError if the computed star dimension is too low. Try to set a bigger maximal edge length value via the $set_max_squared_edge_length() method if this happens.

Returns

The updated TangentialComplex class itself invisibly.


Method create_simplex_tree()

Exports the complex into a simplex tree.

Usage

TangentialComplex$create_simplex_tree()

Returns

A SimplexTree object storing the computed simplex tree.


Method get_point()

This function returns the point corresponding to a given vertex from the SimplexTree.

Usage

TangentialComplex$get_point(vertex)

Arguments

vertex

An integer value specifying the desired vertex.

Returns

A numeric vector storing the point corresponding to the input vertex.


Method num_inconsistent_simplices()

Usage

TangentialComplex$num_inconsistent_simplices()

Returns

An integer value storing the number of inconsistent simplicies.


Method num_inconsistent_stars()

Usage

TangentialComplex$num_inconsistent_stars()

Returns

An integer value storing the number of stars containing at least one inconsistent simplex.


Method num_simplices()

Usage

TangentialComplex$num_simplices()

Returns

An integer value storing the total number of simplices in stars (including duplicates that appear in several stars).


Method num_vertices()

Usage

TangentialComplex$num_vertices()

Returns

An integer value storing the number of vertices.


Method set_max_squared_edge_length()

Sets the maximal possible squared edge length for the edges in the triangulations.

Usage

TangentialComplex$set_max_squared_edge_length(max_squared_edge_length)

Arguments

max_squared_edge_length

A numeric value specifying the maximal possible squared edge length.

Details

If the maximal edge length value is too low, the $compute_tangential_complex() method will throw an exception in debug mode.

Returns

The updated TangentialComplex class itself invisibly.


Method clone()

The objects of this class are cloneable with this method.

Usage

TangentialComplex$clone(deep = FALSE)

Arguments

deep

Whether to make a deep clone.

Examples

if (FALSE) { # reticulate::py_module_available("gudhi")
X <- seq_circle(10)
tc <- TangentialComplex$new(points = X, intrinsic_dim = 1)
tc
}
if (FALSE) { # reticulate::py_module_available("gudhi")
X <- seq_circle(10)
tc <- TangentialComplex$new(points = X, intrinsic_dim = 1)
tc$compute_tangential_complex()
}
if (FALSE) { # reticulate::py_module_available("gudhi")
X <- seq_circle(10)
tc <- TangentialComplex$new(points = X, intrinsic_dim = 1)
st <- tc$compute_tangential_complex()$create_simplex_tree()
}
if (FALSE) { # reticulate::py_module_available("gudhi")
X <- seq_circle(10)
tc <- TangentialComplex$new(points = X, intrinsic_dim = 1)
st <- tc$compute_tangential_complex()$create_simplex_tree()
tc$get_point(1)
}
if (FALSE) { # reticulate::py_module_available("gudhi")
X <- seq_circle(10)
tc <- TangentialComplex$new(points = X, intrinsic_dim = 1)
tc$compute_tangential_complex()
tc$num_inconsistent_simplices()
}
if (FALSE) { # reticulate::py_module_available("gudhi")
X <- seq_circle(10)
tc <- TangentialComplex$new(points = X, intrinsic_dim = 1)
tc$compute_tangential_complex()
tc$num_inconsistent_stars()
}
if (FALSE) { # reticulate::py_module_available("gudhi")
X <- seq_circle(10)
tc <- TangentialComplex$new(points = X, intrinsic_dim = 1)
tc$compute_tangential_complex()
tc$num_simplices()
}
if (FALSE) { # reticulate::py_module_available("gudhi")
X <- seq_circle(10)
tc <- TangentialComplex$new(points = X, intrinsic_dim = 1)
tc$compute_tangential_complex()
tc$num_vertices()
}
if (FALSE) { # reticulate::py_module_available("gudhi")
X <- seq_circle(10)
tc <- TangentialComplex$new(points = X, intrinsic_dim = 1)
tc$set_max_squared_edge_length(1)
}