Beispiel #1
0
    def test_akima(self):
        dtype = np.float32

        emd = EMD()
        emd.splineKind = 'akima'
        emd.DTYPE = dtype

        arr = lambda x: np.array(x)

        # Test error: len(X)!=len(Y)
        with self.assertRaises(ValueError):
            akima(arr([0]), arr([1, 2]), arr([0, 1, 2]))

        # Test error: any(dt) <= 0
        with self.assertRaises(ValueError):
            akima(arr([1, 0, 2]), arr([1, 2]), arr([0, 1, 2]))
        with self.assertRaises(ValueError):
            akima(arr([0, 0, 2]), arr([1, 2]), arr([0, 1, 1]))

        # Test for correct responses
        T = np.array([0, 1, 2, 3, 4], dtype)
        S = np.array([0, 1, -1, -1, 5], dtype)
        t = np.array([i / 2. for i in range(9)], dtype)

        _t, s = emd.spline_points(t, np.array((T, S)))
        s_true = np.array([
            S[0], 0.9125, S[1], 0.066666, S[2], -1.35416667, S[3], 1.0625, S[4]
        ], dtype)

        self.assertTrue(np.allclose(s_true, s), "Comparing akima with true")

        s_np = akima(np.array(T), np.array(S), np.array(t))
        self.assertTrue(np.allclose(s, s_np), "Shouldn't matter if with numpy")
Beispiel #2
0
    def test_cubic(self):
        dtype = np.float64

        emd = EMD()
        emd.splineKind = 'cubic'
        emd.DTYPE = dtype

        T = np.array([0, 1, 2, 3, 4], dtype=dtype)
        S = np.array([0, 1, -1, -1, 5], dtype=dtype)
        t = np.arange(9, dtype=dtype) / 2.

        # TODO: Something weird with float32.
        # Seems to be SciPy problem.
        _t, s = emd.spline_points(t, np.array((T, S)))

        s_true = np.array([S[0], 1.203125, S[1], 0.046875, \
                    S[2], -1.515625, S[3], 1.015625, S[4]], dtype=dtype)
        self.assertTrue(np.allclose(s, s_true), "Comparing cubic")

        T = T[:-2].copy()
        S = S[:-2].copy()
        t = np.arange(5, dtype=dtype) / 2.

        _t, s3 = emd.spline_points(t, np.array((T, S)))

        s3_true = np.array([S[0], 0.78125, S[1], 0.28125, S[2]], dtype=dtype)
        self.assertTrue(np.allclose(s3, s3_true), "Compare cubic 3pts")
Beispiel #3
0
    def test_unsupporter_spline(self):
        emd = EMD()
        emd.splineKind = "waterfall"

        S = np.random.random(20)

        with self.assertRaises(ValueError):
            emd.emd(S)
Beispiel #4
0
    def test_slinear(self):
        dtype = np.float64

        emd = EMD()
        emd.splineKind = 'slinear'
        emd.DTYPE = dtype

        T = np.array([0, 1, 2, 3, 4], dtype=dtype)
        S = np.array([0, 1, -1, -1, 5], dtype=dtype)
        t = np.arange(9, dtype=dtype) / 2.

        _t, s = emd.spline_points(t, np.array((T, S)))

        s_true = np.array([S[0], 0.5, S[1], 0, \
                    S[2], -1, S[3], 2, S[4]], dtype=dtype)
        self.assertTrue(np.allclose(s, s_true), "Comparing SLinear")