def test_fisher_rao_invariance(self): """Test invariance of fisher rao metric: d(f,g)= d(foh, goh)""" t = np.linspace(0, np.pi) id = FDataGrid([t], t) cos = np.cos(id) sin = np.sin(id) gamma = normalize_warping(np.sqrt(id), (0, np.pi)) gamma2 = normalize_warping(np.square(id), (0, np.pi)) distance_original = fisher_rao_distance(cos, sin) # Construction of 2 warpings distance_warping = fisher_rao_distance(cos.compose(gamma), sin.compose(gamma)) distance_warping2 = fisher_rao_distance(cos.compose(gamma2), sin.compose(gamma2)) # The error ~0.001 due to the derivation np.testing.assert_almost_equal(distance_original, distance_warping, decimal=2) np.testing.assert_almost_equal(distance_original, distance_warping2, decimal=2)
def test_amplitude_distance_limit(self): """Test limit of amplitude distance penalty""" f = make_multimodal_samples(n_samples=1, random_state=1) g = make_multimodal_samples(n_samples=1, random_state=9999) amplitude_limit = amplitude_distance(f, g, lam=1000) fr_distance = fisher_rao_distance(f, g) np.testing.assert_almost_equal(amplitude_limit, fr_distance)