Testing
Documentation for testing utilities for Manifolds.jl
. The function test_manifold
can be used to verify that your manifold correctly implements the Manifolds.jl
interface. Similarly test_group
and test_action
can be used to verify implementation of groups and group actions.
Manifolds.find_eps
— Methodfind_eps(x...)
Find an appropriate tolerance for given points or tangent vectors, or their types.
Manifolds.test_manifold
— Methodtest_manifold(
M::AbstractManifold,
pts::AbstractVector;
args,
)
Test general properties of manifold M
, given at least three different points that lie on it (contained in pts
).
Arguments
basis_has_specialized_diagonalizing_get = false
: if true, assumes thatDiagonalizingOrthonormalBasis
given inbasis_types
hasget_coordinates
andget_vector
that work without caching.basis_types_to_from = ()
: basis types that will be tested based onget_coordinates
andget_vector
.basis_types_vecs = ()
: basis types that will be tested based onget_vectors
default_inverse_retraction_method = ManifoldsBase.LogarithmicInverseRetraction()
: default method for inverse retractions (log
.default_retraction_method = ManifoldsBase.ExponentialRetraction()
: default method for retractions (exp
).exp_log_atol_multiplier = 0
: change absolute tolerance of exp/log tests (0 use default, i.e. deactivate atol and use rtol).exp_log_rtol_multiplier = 1
: change the relative tolerance of exp/log tests (1 use default). This is deactivated if theexp_log_atol_multiplier
is nonzero.expected_dimension_type = Integer
: expected type of value returned bymanifold_dimension
.inverse_retraction_methods = []
: inverse retraction methods that will be tested.is_mutating = true
: whether mutating variants of functions should be tested.is_point_atol_multiplier = 0
: determines atol ofis_point
checks.is_tangent_atol_multiplier = 0
: determines atol ofis_vector
checks.mid_point12 = test_exp_log ? shortest_geodesic(M, pts[1], pts[2], 0.5) : nothing
: if notnothing
, then check thatmid_point(M, pts[1], pts[2])
is approximately equal tomid_point12
. This is by default set tonothing
iftext_exp_log
is set to false.point_distributions = []
: point distributions to test.rand_tvector_atol_multiplier = 0
: chage absolute tolerance in testing random vectors (0 use default, i.e. deactivate atol and use rtol) random tangent vectors are tangent vectors.retraction_atol_multiplier = 0
: change absolute tolerance of (inverse) retraction tests (0 use default, i.e. deactivate atol and use rtol).retraction_rtol_multiplier = 1
: change the relative tolerance of (inverse) retraction tests (1 use default). This is deactivated if theexp_log_atol_multiplier
is nonzero.retraction_methods = []
: retraction methods that will be tested.test_atlases = []
: Vector or tuple of atlases that should be tested.test_exp_log = true
: if true, check thatexp
is the inverse oflog
.test_injectivity_radius = true
: whether implementation ofinjectivity_radius
should be tested.test_inplace = false
: if true check if inplace variants work if they are activated, e.g. check thatexp!(M, p, p, X)
work iftest_exp_log = true
. This in general requiresis_mutating
to be true.test_is_tangent
: if true check that thedefault_inverse_retraction_method
actually returns valid tangent vectors.test_musical_isomorphisms = false
: test musical isomorphisms.test_mutating_rand = false
: test the mutating random function for points on manifolds.test_project_point = false
: test projections onto the manifold.test_project_tangent = false
: test projections on tangent spaces.test_representation_size = true
: test repersentation size of points/tvectprs.test_tangent_vector_broadcasting = true
: test boradcasting operators on TangentSpace.test_vector_spaces = true
: test Vector bundle of this manifold.test_default_vector_transport = false
: test the default vector transport (usually parallel transport).test_vee_hat = false
: testvee
andhat
functions.tvector_distributions = []
: tangent vector distributions to test.vector_transport_methods = []
: vector transport methods that should be tested.vector_transport_inverse_retractions = [default_inverse_retraction_method for _ in 1:length(vector_transport_methods)]
` inverse retractions to use with the vector transport method (especially the differentiated ones)vector_transport_to = [ true for _ in 1:length(vector_transport_methods)]
: whether to check theto
variant of vector transportvector_transport_direction = [ true for _ in 1:length(vector_transport_methods)]
: whether to check thedirection
variant of vector transport
Manifolds.test_parallel_transport
— Functiontest_parallel_transport(M,P; along=false, to=true, diretion=true)
Generic tests for parallel transport on M
given at least two pointsin P
.
The single functions to transport along
(a curve), to
(a point) or (towards a) direction
are sub-tests that can be activated by the keywords arguemnts
!!! Note Since the interface to specify curves is not yet provided, the along keyword does not have an effect yet
Manifolds.test_action
— Functiontest_action(
A::AbstractGroupAction,
a_pts::AbstractVector,
m_pts::AbstractVector,
X_pts = [];
atol = 1e-10,
atol_ident_compose = 0,
test_optimal_alignment = false,
test_mutating_group=true,
test_mutating_action=true,
test_diff = false,
test_switch_direction = true,
)
Tests general properties of the action A
, given at least three different points that lie on it (contained in a_pts
) and three different point that lie on the manifold it acts upon (contained in m_pts
).
Arguments
atol_ident_compose = 0
: absolute tolerance for the test that composition with identity doesn't change the group element.
Manifolds.test_group
— Functiontest_group(
G,
g_pts::AbstractVector,
X_pts::AbstractVector = [],
Xe_pts::AbstractVector = [];
atol = 1e-10,
test_mutating = true,
test_exp_lie_log = true,
test_diff = false,
test_invariance = false,
test_lie_bracket=false,
test_adjoint_action=false,
diff_convs = [(), (LeftAction(),), (RightAction(),)],
)
Tests general properties of the group G
, given at least three different points elements of it (contained in g_pts
). Optionally, specify test_diff
to test differentials of translation, using X_pts
, which must contain at least one tangent vector at g_pts[1]
, and the direction conventions specified in diff_convs
. Xe_pts
should contain tangent vectors at identity for testing Lie algebra operations. If the group is equipped with an invariant metric, test_invariance
indicates that the invariance should be checked for the provided points.