def test_mstump(T, m): left_P, left_I = naive_mstump(T, m) # Right d = T.shape[0] n = T.shape[1] k = n - m + 1 excl_zone = int(np.ceil(m / 4)) # See Definition 3 and Figure 3 M_T, Σ_T = _multi_compute_mean_std(T, m) μ_Q, σ_Q = _multi_compute_mean_std(T, m) P = np.empty((d, k), dtype='float64') D = np.zeros((d, k), dtype='float64') D_prime = np.zeros(k, dtype='float64') I = np.ones((d, k), dtype='int64') * -1 start = 0 stop = k P, I = _get_first_mstump_profile(start, T, m, excl_zone, M_T, Σ_T) QT, QT_first = _get_multi_QT(start, T, m) right_P, right_I = _mstump(T, m, P, I, D, D_prime, stop, excl_zone, M_T, Σ_T, QT, QT_first, μ_Q, σ_Q, k, start + 1) npt.assert_almost_equal(left_P, right_P) npt.assert_almost_equal(left_I, right_I)
def test_get_multi_QT(T, m): start = 0 Q = core.rolling_window(T, m) left_QT = np.empty((Q.shape[0], Q.shape[1]), dtype="float64") left_QT_first = np.empty((Q.shape[0], Q.shape[1]), dtype="float64") for dim in range(T.shape[0]): left_QT[dim] = naive_rolling_window_dot_product( T[dim, start:start + m], T[dim]) left_QT_first[dim] = naive_rolling_window_dot_product( T[dim, :m], T[dim]) right_QT, right_QT_first = _get_multi_QT(start, T, m) npt.assert_almost_equal(left_QT, right_QT) npt.assert_almost_equal(left_QT_first, right_QT_first)