Esempio n. 1
0
    def test_concatenate_coordinates(self):
        fd1 = FDataGrid([[1, 2, 3, 4], [2, 3, 4, 5]])
        fd2 = FDataGrid([[3, 4, 5, 6], [4, 5, 6, 7]])

        fd1.argument_names = ["x"]
        fd1.coordinate_names = ["y"]
        fd2.argument_names = ["w"]
        fd2.coordinate_names = ["t"]
        fd = fd1.concatenate(fd2, as_coordinates=True)

        np.testing.assert_equal(fd.n_samples, 2)
        np.testing.assert_equal(fd.dim_codomain, 2)
        np.testing.assert_equal(fd.dim_domain, 1)

        np.testing.assert_array_equal(fd.data_matrix,
                                      [[[1, 3], [2, 4], [3, 5], [4, 6]],
                                       [[2, 4], [3, 5], [4, 6], [5, 7]]])

        # Testing labels
        np.testing.assert_array_equal(("y", "t"), fd.coordinate_names)
        fd2.coordinate_names = None
        fd = fd1.concatenate(fd2, as_coordinates=True)
        np.testing.assert_array_equal(("y", None), fd.coordinate_names)
        fd1.coordinate_names = None
        fd = fd1.concatenate(fd2, as_coordinates=True)
        np.testing.assert_equal((None, None), fd.coordinate_names)
Esempio n. 2
0
    def test_coordinates(self):
        fd1 = FDataGrid([[1, 2, 3, 4], [2, 3, 4, 5]])
        fd1.argument_names = ["x"]
        fd1.coordinate_names = ["y"]
        fd2 = FDataGrid([[3, 4, 5, 6], [4, 5, 6, 7]])
        fd = fd1.concatenate(fd2, as_coordinates=True)

        # Indexing with number
        np.testing.assert_array_equal(fd.coordinates[0].data_matrix,
                                      fd1.data_matrix)
        np.testing.assert_array_equal(fd.coordinates[1].data_matrix,
                                      fd2.data_matrix)

        # Iteration
        for fd_j, fd_i in zip([fd1, fd2], fd.coordinates):
            np.testing.assert_array_equal(fd_j.data_matrix, fd_i.data_matrix)

        fd3 = fd1.concatenate(fd2, fd1, fd, as_coordinates=True)

        # Multiple indexation
        np.testing.assert_equal(fd3.dim_codomain, 5)
        np.testing.assert_array_equal(fd3.coordinates[:2].data_matrix,
                                      fd.data_matrix)
        np.testing.assert_array_equal(fd3.coordinates[-2:].data_matrix,
                                      fd.data_matrix)
        np.testing.assert_array_equal(
            fd3.coordinates[np.array(
                (False, False, True, False, True))].data_matrix,
            fd.data_matrix)
Esempio n. 3
0
class TestLpMetrics(unittest.TestCase):
    def setUp(self):
        grid_points = [1, 2, 3, 4, 5]
        self.fd = FDataGrid([[2, 3, 4, 5, 6], [1, 4, 9, 16, 25]],
                            grid_points=grid_points)
        basis = Monomial(n_basis=3, domain_range=(1, 5))
        self.fd_basis = FDataBasis(basis, [[1, 1, 0], [0, 0, 1]])
        self.fd_curve = self.fd.concatenate(self.fd, as_coordinates=True)
        self.fd_surface = make_multimodal_samples(n_samples=3,
                                                  dim_domain=2,
                                                  random_state=0)

    def test_lp_norm(self):

        np.testing.assert_allclose(lp_norm(self.fd, p=1), [16., 41.33333333])
        np.testing.assert_allclose(lp_norm(self.fd, p='inf'), [6, 25])

    def test_lp_norm_curve(self):

        np.testing.assert_allclose(lp_norm(self.fd_curve, p=1, p2=1),
                                   [32., 82.666667])
        np.testing.assert_allclose(lp_norm(self.fd_curve, p='inf', p2='inf'),
                                   [6, 25])

    def test_lp_norm_surface_inf(self):
        np.testing.assert_allclose(
            lp_norm(self.fd_surface, p='inf').round(5),
            [0.99994, 0.99793, 0.99868])

    def test_lp_norm_surface(self):
        # Integration of surfaces not implemented, add test case after
        # implementation
        self.assertEqual(lp_norm(self.fd_surface, p=1), NotImplemented)

    def test_lp_error_dimensions(self):
        # Case internal arrays
        with np.testing.assert_raises(ValueError):
            lp_distance(self.fd, self.fd_surface)

        with np.testing.assert_raises(ValueError):
            lp_distance(self.fd, self.fd_curve)

        with np.testing.assert_raises(ValueError):
            lp_distance(self.fd_surface, self.fd_curve)

    def test_lp_error_domain_ranges(self):
        grid_points = [2, 3, 4, 5, 6]
        fd2 = FDataGrid([[2, 3, 4, 5, 6], [1, 4, 9, 16, 25]],
                        grid_points=grid_points)

        with np.testing.assert_raises(ValueError):
            lp_distance(self.fd, fd2)

    def test_lp_error_grid_points(self):
        grid_points = [1, 2, 4, 4.3, 5]
        fd2 = FDataGrid([[2, 3, 4, 5, 6], [1, 4, 9, 16, 25]],
                        grid_points=grid_points)

        with np.testing.assert_raises(ValueError):
            lp_distance(self.fd, fd2)
Esempio n. 4
0
    def test_concatenate(self):
        fd1 = FDataGrid([[1, 2, 3, 4, 5], [2, 3, 4, 5, 6]])
        fd2 = FDataGrid([[3, 4, 5, 6, 7], [4, 5, 6, 7, 8]])

        fd1.argument_names = ["x"]
        fd1.coordinate_names = ["y"]
        fd = fd1.concatenate(fd2)

        np.testing.assert_equal(fd.n_samples, 4)
        np.testing.assert_equal(fd.dim_codomain, 1)
        np.testing.assert_equal(fd.dim_domain, 1)
        np.testing.assert_array_equal(fd.data_matrix[..., 0],
                                      [[1, 2, 3, 4, 5], [2, 3, 4, 5, 6],
                                       [3, 4, 5, 6, 7], [4, 5, 6, 7, 8]])
        np.testing.assert_array_equal(fd1.argument_names, fd.argument_names)
        np.testing.assert_array_equal(fd1.coordinate_names,
                                      fd.coordinate_names)