def test_srv_transform_and_srv_transform_inverse(self, rtol, atol): """Test that srv and its inverse are inverse.""" metric = SRVMetric(ambient_manifold=r3) curve = DiscreteCurves(r3).random_point(n_samples=2) srv = metric.srv_transform(curve) srv_inverse = metric.srv_transform_inverse(srv, curve[:, 0]) result = srv.shape expected = (curve.shape[0], curve.shape[1] - 1, 3) self.assertAllClose(result, expected) result = srv_inverse expected = curve self.assertAllClose(result, expected, rtol, atol)
def test_srv_transform_and_inverse(self, times, curve_a, curve_b): """Test of SRVT and its inverse. N.B: Here curves_ab are seen as curves in R3 and not S2. """ l2_metric_s2 = L2CurvesMetric(ambient_manifold=s2) srv_metric_r3 = SRVMetric(ambient_manifold=r3) curves_ab = l2_metric_s2.geodesic(curve_a, curve_b) curves_ab = curves_ab(times) curves = curves_ab srv_curves = srv_metric_r3.srv_transform(curves) starting_points = curves[:, 0, :] result = srv_metric_r3.srv_transform_inverse(srv_curves, starting_points) expected = curves self.assertAllClose(result, expected)