def test_estimate_transform_spd(self): point = spd.SPDMatrices(3).random_uniform() points = gs.stack([point, point]) transformer = ToTangentSpace(geometry=spd.SPDMetricAffine(3)) transformer.fit(X=points) result = transformer.transform(points) expected = gs.zeros((2, 6)) self.assertAllClose(expected, result, atol=1e-5)
def test_estimate_transform_sphere(self): point = gs.array([0., 0., 0., 0., 1.]) points = gs.array([point, point]) transformer = ToTangentSpace(geometry=self.sphere) transformer.fit(X=points) result = transformer.transform(points) expected = gs.zeros_like(points) self.assertAllClose(expected, result)
def test_estimate_transform_so_group(self): point = self.so_matrix.random_uniform() points = gs.array([point, point]) transformer = ToTangentSpace(geometry=self.so_matrix) transformer.fit(X=points) result = transformer.transform(points) expected = gs.zeros((2, 6)) self.assertAllClose(expected, result)
def test_inverse_transform_no_fit_sphere(self): point = self.sphere.random_uniform(3) base_point = point[0] point = point[1:] transformer = ToTangentSpace(geometry=self.sphere) X = transformer.transform(point, base_point=base_point) result = transformer.inverse_transform(X, base_point=base_point) expected = point self.assertAllClose(expected, result)
def test_inverse_transform_so(self): point = self.so_matrix.random_uniform(10) transformer = ToTangentSpace( geometry=self.so_matrix.bi_invariant_metric) X = transformer.transform(X=point, base_point=self.so_matrix.identity) result = transformer.inverse_transform( X, base_point=self.so_matrix.identity) expected = point self.assertAllClose(expected, result)