| RiemannianMetric {rgeomstats} | R Documentation |
Abstract Class for Riemannian Metrics
Description
An R6::R6Class object implementing the base
RiemannianMetric class. This is an abstract class for Riemannian and
pseudo-Riemannian metrics which are the associated Levi-Civita connection
on the tangent bundle.
Super classes
rgeomstats::PythonClass -> rgeomstats::Connection -> RiemannianMetric
Public fields
signatureAn integer vector specifying the signature of the metric.
Methods
Public methods
Inherited methods
rgeomstats::PythonClass$get_python_class()rgeomstats::PythonClass$set_python_class()rgeomstats::Connection$christoffels()rgeomstats::Connection$curvature()rgeomstats::Connection$curvature_derivative()rgeomstats::Connection$directional_curvature()rgeomstats::Connection$directional_curvature_derivative()rgeomstats::Connection$exp()rgeomstats::Connection$geodesic()rgeomstats::Connection$geodesic_equation()rgeomstats::Connection$injectivity_radius()rgeomstats::Connection$ladder_parallel_transport()rgeomstats::Connection$log()rgeomstats::Connection$parallel_transport()
Method new()
The RiemannianMetric class constructor.
Usage
RiemannianMetric$new( dim, shape = NULL, signature = NULL, default_coords_type = "intrinsic", py_cls = NULL )
Arguments
dimAn integer value specifying the dimension of the manifold.
shapeAn integer vector specifying the shape of one element of the manifold. Defaults to
NULL.signatureAn integer vector specifying the signature of the metric. Defaults to
c(dim, 0L).default_coords_typeA string specifying the coordinate type. Choices are
extrensicorintrinsic. Defaults tointrinsic.py_clsA Python object of class
RiemannianMetric. Defaults toNULLin which case it is instantiated on the fly using the other input arguments.
Returns
An object of class RiemannianMetric.
Method metric_matrix()
Metric matrix at the tangent space at a base point.
Usage
RiemannianMetric$metric_matrix(base_point = NULL)
Arguments
base_pointA numeric array of shape
dimspecifying a point on the manifold. Defaults toNULL.
Returns
A numeric array of shape dim x dim storing the inner-product
matrix.
Examples
if (reticulate::py_module_available("geomstats")) {
# mt <- SPDMetricLogEuclidean$new(n = 3)
# mt$metric_matrix()
}
Method cometric_matrix()
Inner co-product matrix at the cotangent space at a base point. This represents the cometric matrix, i.e. the inverse of the metric matrix.
Usage
RiemannianMetric$cometric_matrix(base_point = NULL)
Arguments
base_pointA numeric array of shape
dimspecifying a point on the manifold. Defaults toNULL.
Returns
A numeric array of shape dim x dim storing the inverse of the
inner-product matrix.
Examples
if (reticulate::py_module_available("geomstats")) {
# mt <- SPDMetricLogEuclidean$new(n = 3)
# mt$cometric_matrix()
}
Method inner_product_derivative_matrix()
Compute derivative of the inner prod matrix at base point.
Usage
RiemannianMetric$inner_product_derivative_matrix(base_point)
Arguments
base_pointA numeric array of shape
dimspecifying a point on the manifold. Defaults toNULL.
Returns
A numeric array of shape dim x dim storing the derivative of
the inverse of the inner-product matrix.
Examples
if (reticulate::py_module_available("geomstats")) {
# mt <- SPDMetricLogEuclidean$new(n = 3)
# mt$inner_product_derivative_matrix()
}
Method inner_product()
Inner product between two tangent vectors at a base point.
Usage
RiemannianMetric$inner_product(tangent_vec_a, tangent_vec_b, base_point)
Arguments
tangent_vec_aA numeric array of shape
dimspecifying a tangent vector at base point.tangent_vec_bA numeric array of shape
dimspecifying a tangent vector at base point.base_pointA numeric array of shape
dimspecifying a point on the manifold. Defaults toNULL.
Returns
A scalar value representing the inner product between the two input tangent vectors at the input base point.
Examples
if (reticulate::py_module_available("geomstats")) {
mt <- SPDMetricLogEuclidean$new(n = 3)
mt$inner_product(diag(0, 3), diag(1, 3), base_point = diag(1, 3))
}
Method inner_coproduct()
Computes inner coproduct between two cotangent vectors at base point. This is the inner product associated to the cometric matrix.
Usage
RiemannianMetric$inner_coproduct( cotangent_vec_a, cotangent_vec_b, base_point = NULL )
Arguments
cotangent_vec_aA numeric array of shape
dimspecifying a cotangent vector at base point.cotangent_vec_bA numeric array of shape
dimspecifying a cotangent vector at base point.base_pointA numeric array of shape
dimspecifying a point on the manifold. Defaults toNULL.
Returns
A scalar value representing the inner coproduct between the two input cotangent vectors at the input base point.
Examples
if (reticulate::py_module_available("geomstats")) {
# mt <- SPDMetricLogEuclidean$new(n = 3)
# mt$inner_coproduct(diag(0, 3), diag(1, 3), base_point = diag(1, 3))
}
Method hamiltonian()
Computes the Hamiltonian energy associated to the cometric.
The Hamiltonian at state (q, p) is defined by
H(q, p) =
\frac{1}{2} \langle p, p \rangle_q,
where \langle \cdot, \cdot
\rangle_q is the cometric at q.
Usage
RiemannianMetric$hamiltonian(state)
Arguments
stateA list with two components: (i) a numeric array of shape
dimspecifying the position which is a point on the manifold and (ii) a numeric array of shapedimspecifying the momentum which is a cotangent vector.
Returns
A numeric value representing the Hamiltonian energy at state.
Examples
if (reticulate::py_module_available("geomstats")) {
# mt <- SPDMetricLogEuclidean$new(n = 3)
# mt$hamiltonian()
}
Method squared_norm()
Computes the square of the norm of a vector. Squared norm of a vector associated to the inner product at the tangent space at a base point.
Usage
RiemannianMetric$squared_norm(vector, base_point = NULL)
Arguments
vectorA numeric array of shape
dimspecifying a vector.base_pointA numeric array of shape
dimspecifying a point on the manifold. Defaults toNULL.
Returns
A numeric value representing the squared norm of the input vector.
if (reticulate::py_module_available("geomstats")) mt <- SPDMetricLogEuclidean$new(n = 3) mt$squared_norm(diag(0, 3), diag(1, 3))
Method norm()
Computes the norm of a vector associated to the inner product at the tangent space at a base point.
Usage
RiemannianMetric$norm(vector, base_point = NULL)
Arguments
vectorA numeric array of shape
dimspecifying a vector.base_pointA numeric array of shape
dimspecifying a point on the manifold. Defaults toNULL.
Details
This only works for positive-definite Riemannian metrics and inner products.
Returns
A numeric value representing the norm of the input vector.
if (reticulate::py_module_available("geomstats")) mt <- SPDMetricLogEuclidean$new(n = 3) mt$norm(diag(0, 3), diag(1, 3))
Method normalize()
Normalizes a tangent vector at a given point.
Usage
RiemannianMetric$normalize(vector, base_point = NULL)
Arguments
vectorA numeric array of shape
dimspecifying a vector.base_pointA numeric array of shape
dimspecifying a point on the manifold. Defaults toNULL.
Returns
A numeric array of shape dim storing the normalized version of
the input tangent vector.
Examples
if (reticulate::py_module_available("geomstats")) {
# mt <- SPDMetricLogEuclidean$new(n = 3)
# mt$normalize(diag(2, 3), diag(1, 3))
}
Method random_unit_tangent_vec()
Generates a random unit tangent vector at a given point.
Usage
RiemannianMetric$random_unit_tangent_vec(base_point = NULL, n_vectors = 1)
Arguments
base_pointA numeric array of shape
dimspecifying a point on the manifold. Defaults toNULL.n_vectorsAn integer value specifying the number of vectors to be generated at
base_point. For vectorization purposes,n_vectorscan be greater than 1 iffbase_pointcorresponds to a single point. Defaults to1L.
Returns
A numeric array of shape c(n_vectors, dim) storing random unit
tangent vectors at base_point.
Examples
if (reticulate::py_module_available("geomstats")) {
# mt <- SPDMetricLogEuclidean$new(n = 3)
# mt$random_unit_tangent_vec(diag(1, 3))
}
Method squared_dist()
Squared geodesic distance between two points.
Usage
RiemannianMetric$squared_dist(point_a, point_b, ...)
Arguments
point_aA numeric array of shape
dimon the manifold.point_bA numeric array of shape
dimon the manifold....Extra parameters to be passed to the
$log()method of the parentConnectionclass.
Returns
A numeric value storing the squared geodesic distance between the two input points.
if (reticulate::py_module_available("geomstats")) mt <- SPDMetricLogEuclidean$new(n = 3) mt$squared_dist(diag(1, 3), diag(1, 3))
Method dist()
Geodesic distance between two points.
Usage
RiemannianMetric$dist(point_a, point_b, ...)
Arguments
point_aA numeric array of shape
dimon the manifold.point_bA numeric array of shape
dimon the manifold....Extra parameters to be passed to the
$log()method of the parentConnectionclass.
Details
It only works for positive definite Riemannian metrics.
Returns
A numeric value storing the geodesic distance between the two input points.
Examples
if (reticulate::py_module_available("geomstats")) {
mt <- SPDMetricLogEuclidean$new(n = 3)
mt$dist(diag(1, 3), diag(1, 3))
}
Method dist_broadcast()
Computes the geodesic distance between points.
Usage
RiemannianMetric$dist_broadcast(points_a, points_b)
Arguments
points_aA numeric array of shape
c(n_samples_a, dim)specifying a set of points on the manifold.points_bA numeric array of shape
c(n_samples_b, dim)specifying a set of points on the manifold.
Details
If n_samples_a == n_samples_b then dist is the element-wise
distance result of a point in points_a with the point from points_b
of the same index. If n_samples_a != n_samples_b then dist is the
result of applying geodesic distance for each point from points_a to
all points from points_b.
Returns
A numeric array of shape c(n_samples_a, dim) if n_samples_a == n_samples_b or of shape c(n_samples_a, n_samples_b, dim) if
n_samples_a != n_samples_b storing the geodesic distance between
points in set A and points in set B.
Examples
if (reticulate::py_module_available("geomstats")) {
mt <- SPDMetricLogEuclidean$new(n = 3)
mt$dist(diag(1, 3), diag(1, 3))
}
Method dist_pairwise()
Computes the pairwise distance between points.
Usage
RiemannianMetric$dist_pairwise(points, n_jobs = 1, ...)
Arguments
pointsA numeric array of shape
c(n_samples, dim)specifying a set of points on the manifold.n_jobsAn integer value specifying the number of cores for parallel computation. Defaults to
1L....Extra parameters to be passed tothe
joblib.ParallelPython class. See joblib documentation for details.
Returns
A numeric matrix of shape c(n_samples, n_samples) storing the
pairwise geodesic distances between all the points.
Method diameter()
Computes the diameter of set of points on a manifold.
Usage
RiemannianMetric$diameter(points)
Arguments
pointsA numeric array of shape
c(n_samples, dim)specifying a set of points on the manifold.
Details
The diameter is the maximum over all pairwise distances.
Returns
A numeric value representing the largest distance between any two points in the input set.
Method closest_neighbor_index()
Finds the closest neighbor to a point among a set of neighbors.
Usage
RiemannianMetric$closest_neighbor_index(point, neighbors)
Arguments
pointA numeric array of shape
dimspecifying a point on the manifold.neighborsA numeric array of shape
c(n_neighbors, dim)specifying a set of neighboring points for the inputpoint.
Returns
An integer value representing the index of the neighbor in
neighbors that is closest to point.
Method normal_basis()
Normalizes the basis with respect to the metric. This corresponds to a renormalization of each basis vector.
Usage
RiemannianMetric$normal_basis(basis, base_point = NULL)
Arguments
basisA numeric array of shape
c(dim, dim)specifying a basis.base_pointA numeric array of shape
dimspecifying a point on the manifold. Defaults toNULL.
Returns
A numeric array of shape c(dim, n, n) storing the normal basis.
Method sectional_curvature()
Computes the sectional curvature.
Usage
RiemannianMetric$sectional_curvature( tangent_vec_a, tangent_vec_b, base_point = NULL )
Arguments
tangent_vec_aA numeric array of shape
c(n, n)specifying a tangent vector atbase_point.tangent_vec_bA numeric array of shape
c(n, n)specifying a tangent vector atbase_point.base_pointA numeric array of shape
dimspecifying a point on the manifold. Defaults toNULL.
Details
For two orthonormal tangent vectors x and y at a
base point, the sectional curvature is defined by
\langle R(x,
y)x, y \rangle = \langle R_x(y), y \rangle.
For non-orthonormal vectors, it is
\langle R(x, y)x, y \rangle / \\|x \wedge y\\|^2.
See also https://en.wikipedia.org/wiki/Sectional_curvature.
Returns
A numeric value representing the sectional curvature at
base_point.
Method clone()
The objects of this class are cloneable with this method.
Usage
RiemannianMetric$clone(deep = FALSE)
Arguments
deepWhether to make a deep clone.
Author(s)
Nina Miolane
Examples
## ------------------------------------------------
## Method `RiemannianMetric$metric_matrix`
## ------------------------------------------------
if (reticulate::py_module_available("geomstats")) {
# mt <- SPDMetricLogEuclidean$new(n = 3)
# mt$metric_matrix()
}
## ------------------------------------------------
## Method `RiemannianMetric$cometric_matrix`
## ------------------------------------------------
if (reticulate::py_module_available("geomstats")) {
# mt <- SPDMetricLogEuclidean$new(n = 3)
# mt$cometric_matrix()
}
## ------------------------------------------------
## Method `RiemannianMetric$inner_product_derivative_matrix`
## ------------------------------------------------
if (reticulate::py_module_available("geomstats")) {
# mt <- SPDMetricLogEuclidean$new(n = 3)
# mt$inner_product_derivative_matrix()
}
## ------------------------------------------------
## Method `RiemannianMetric$inner_product`
## ------------------------------------------------
if (reticulate::py_module_available("geomstats")) {
mt <- SPDMetricLogEuclidean$new(n = 3)
mt$inner_product(diag(0, 3), diag(1, 3), base_point = diag(1, 3))
}
## ------------------------------------------------
## Method `RiemannianMetric$inner_coproduct`
## ------------------------------------------------
if (reticulate::py_module_available("geomstats")) {
# mt <- SPDMetricLogEuclidean$new(n = 3)
# mt$inner_coproduct(diag(0, 3), diag(1, 3), base_point = diag(1, 3))
}
## ------------------------------------------------
## Method `RiemannianMetric$hamiltonian`
## ------------------------------------------------
if (reticulate::py_module_available("geomstats")) {
# mt <- SPDMetricLogEuclidean$new(n = 3)
# mt$hamiltonian()
}
## ------------------------------------------------
## Method `RiemannianMetric$normalize`
## ------------------------------------------------
if (reticulate::py_module_available("geomstats")) {
# mt <- SPDMetricLogEuclidean$new(n = 3)
# mt$normalize(diag(2, 3), diag(1, 3))
}
## ------------------------------------------------
## Method `RiemannianMetric$random_unit_tangent_vec`
## ------------------------------------------------
if (reticulate::py_module_available("geomstats")) {
# mt <- SPDMetricLogEuclidean$new(n = 3)
# mt$random_unit_tangent_vec(diag(1, 3))
}
## ------------------------------------------------
## Method `RiemannianMetric$dist`
## ------------------------------------------------
if (reticulate::py_module_available("geomstats")) {
mt <- SPDMetricLogEuclidean$new(n = 3)
mt$dist(diag(1, 3), diag(1, 3))
}
## ------------------------------------------------
## Method `RiemannianMetric$dist_broadcast`
## ------------------------------------------------
if (reticulate::py_module_available("geomstats")) {
mt <- SPDMetricLogEuclidean$new(n = 3)
mt$dist(diag(1, 3), diag(1, 3))
}