Esempio n. 1
0
def test_aamp_mmotifs_default_parameters():

    motif_distances_ref = np.array(
        [[0.0, 0.06315749, 0.25275899, 0.34087884, 0.3452315]])
    motif_indices_ref = np.array([[19, 77, 63, 52, 71]])
    motif_subspaces_ref = [np.array([2])]
    motif_mdls_ref = [
        np.array([
            411.60964047, 423.69925001, 449.11032383, 476.95855027,
            506.62406252
        ])
    ]

    np.random.seed(0)
    T = np.random.rand(500).reshape(5, 100)

    m = 5
    excl_zone = int(np.ceil(m / config.STUMPY_EXCL_ZONE_DENOM))
    P, I = naive.maamp(T, m, excl_zone)
    (
        motif_distances_cmp,
        motif_indices_cmp,
        motif_subspaces_cmp,
        motif_mdls_cmp,
    ) = aamp_mmotifs(T, P, I)

    npt.assert_array_almost_equal(motif_distances_ref, motif_distances_cmp)
    npt.assert_array_almost_equal(motif_indices_ref, motif_indices_cmp)
    npt.assert_array_almost_equal(motif_subspaces_ref, motif_subspaces_cmp)
    npt.assert_array_almost_equal(motif_mdls_ref, motif_mdls_cmp)
Esempio n. 2
0
def test_aamp_mmotifs_more_motif_pairs_cutoffs_as_list(T):

    motif_distances_ref = np.array([[0.0, 1.41421356]])
    motif_indices_ref = np.array([[2, 9]])
    motif_subspaces_ref = [np.array([3])]
    motif_mdls_ref = [
        np.array([244.0, 260.67970001, 279.86313714, 281.35940001])
    ]

    m = 4
    cutoffs = [2, 3, 4, 5]
    excl_zone = int(np.ceil(m / config.STUMPY_EXCL_ZONE_DENOM))
    P, I = naive.maamp(T, m, excl_zone)
    (
        motif_distances_cmp,
        motif_indices_cmp,
        motif_subspaces_cmp,
        motif_mdls_cmp,
    ) = aamp_mmotifs(T,
                     P,
                     I,
                     max_distance=np.inf,
                     cutoffs=cutoffs,
                     max_matches=2,
                     max_motifs=10)

    npt.assert_array_almost_equal(motif_distances_ref, motif_distances_cmp)
    npt.assert_array_almost_equal(motif_indices_ref, motif_indices_cmp)
    npt.assert_array_almost_equal(motif_subspaces_ref, motif_subspaces_cmp)
    npt.assert_array_almost_equal(motif_mdls_ref, motif_mdls_cmp)
Esempio n. 3
0
def test_aamp_mmotifs_two_motif_pairs_max_motifs_2(T):

    motif_distances_ref = np.array([[0.0, 1.41421356], [0.0, 2.06639783]])
    motif_indices_ref = np.array([[2, 9], [0, 5]])
    motif_subspaces_ref = [np.array([3]), np.array([2])]
    motif_mdls_ref = [
        np.array([244.0, 260.67970001, 279.86313714, 281.35940001]),
        np.array([254.33985, 260.67970001, 279.86313714, 291.20703549]),
    ]

    m = 4
    excl_zone = int(np.ceil(m / config.STUMPY_EXCL_ZONE_DENOM))
    P, I = naive.maamp(T, m, excl_zone)
    (
        motif_distances_cmp,
        motif_indices_cmp,
        motif_subspaces_cmp,
        motif_mdls_cmp,
    ) = aamp_mmotifs(
        T,
        P,
        I,
        max_distance=np.inf,
        cutoffs=np.inf,
        max_matches=2,
        max_motifs=2,
    )

    npt.assert_array_almost_equal(motif_distances_ref, motif_distances_cmp)
    npt.assert_array_almost_equal(motif_indices_ref, motif_indices_cmp)
    npt.assert_array_almost_equal(motif_subspaces_ref, motif_subspaces_cmp)
    npt.assert_array_almost_equal(motif_mdls_ref, motif_mdls_cmp)
Esempio n. 4
0
def test_maamp_discords(T, m):
    excl_zone = int(np.ceil(m / 4))

    ref_P, ref_I = naive.maamp(T, m, excl_zone, discords=True)
    comp_P, comp_I = maamp(T, m, discords=True)

    npt.assert_almost_equal(ref_P, comp_P)
    npt.assert_almost_equal(ref_I, comp_I)
Esempio n. 5
0
def test_maamp(T, m):
    excl_zone = int(np.ceil(m / 4))

    for p in [1.0, 2.0, 3.0]:
        ref_P, ref_I = naive.maamp(T, m, excl_zone, p=p)
        comp_P, comp_I = maamp(T, m, p=p)

        npt.assert_almost_equal(ref_P, comp_P)
        npt.assert_almost_equal(ref_I, comp_I)
Esempio n. 6
0
def test_maamp_include(T, m):
    for width in range(T.shape[0]):
        for i in range(T.shape[0] - width):
            include = np.asarray(range(i, i + width + 1))
            excl_zone = int(np.ceil(m / 4))

            ref_P, ref_I = naive.maamp(T, m, excl_zone, include)
            comp_P, comp_I = maamp(T, m, include)

            npt.assert_almost_equal(ref_P, comp_P)
            npt.assert_almost_equal(ref_I, comp_I)
Esempio n. 7
0
def test_constant_subsequence_self_join():
    T_A = np.concatenate((np.zeros(20, dtype=np.float64), np.ones(5, dtype=np.float64)))
    T = np.array([T_A, T_A, np.random.rand(T_A.shape[0])])
    m = 3

    excl_zone = int(np.ceil(m / 4))

    ref_P, ref_I = naive.maamp(T, m, excl_zone)
    comp_P, comp_I = maamp(T, m)

    npt.assert_almost_equal(ref_P, comp_P)  # ignore indices
Esempio n. 8
0
def test_query_maamp_profile(T, m):
    _T, T_subseq_isfinite = core.preprocess_non_normalized(T, m)
    excl_zone = int(np.ceil(m / 4))
    for query_idx in range(_T.shape[0] - m + 1):
        ref_P, ref_I = naive.maamp(T, m, excl_zone)
        ref_P = ref_P[:, query_idx]
        ref_I = ref_I[:, query_idx]

        comp_P, comp_I = _query_maamp_profile(query_idx, _T, _T, m, excl_zone,
                                              T_subseq_isfinite)

        npt.assert_almost_equal(ref_P, comp_P)
        npt.assert_equal(ref_I, comp_I)
Esempio n. 9
0
def test_get_first_maamp_profile(T, m):
    excl_zone = int(np.ceil(m / 4))
    start = 0

    ref_P, ref_I = naive.maamp(T, m, excl_zone)
    ref_P = ref_P[:, start]
    ref_I = ref_I[:, start]

    _T, T_subseq_isfinite = core.preprocess_non_normalized(T, m)
    comp_P, comp_I = _get_first_maamp_profile(start, _T, _T, m, excl_zone,
                                              T_subseq_isfinite)

    npt.assert_almost_equal(ref_P, comp_P)
    npt.assert_equal(ref_I, comp_I)
Esempio n. 10
0
def test_maamp_wrapper(T, m):
    excl_zone = int(np.ceil(m / 4))

    ref_P, ref_I = naive.maamp(T, m, excl_zone)
    comp_P, comp_I = maamp(T, m)

    npt.assert_almost_equal(ref_P, comp_P)
    npt.assert_almost_equal(ref_I, comp_I)

    df = pd.DataFrame(T.T)
    comp_P, comp_I = maamp(df, m)

    npt.assert_almost_equal(ref_P, comp_P)
    npt.assert_almost_equal(ref_I, comp_I)
Esempio n. 11
0
def test_naive_maamp():
    T = np.random.uniform(-1000, 1000, [1, 1000]).astype(np.float64)
    m = 20

    zone = int(np.ceil(m / 4))

    ref_mp = naive.aamp(T[0], m, exclusion_zone=zone)
    ref_P = ref_mp[np.newaxis, :, 0]
    ref_I = ref_mp[np.newaxis, :, 1]

    comp_P, comp_I = naive.maamp(T, m, zone)

    npt.assert_almost_equal(ref_P, comp_P)
    npt.assert_almost_equal(ref_I, comp_I)
Esempio n. 12
0
def test_maamp_nan_self_join_all_dimensions(T, m, substitute, substitution_locations):
    excl_zone = int(np.ceil(m / 4))

    T_sub = T.copy()

    for substitution_location in substitution_locations:
        T_sub[:] = T[:]
        T_sub[:, substitution_location] = substitute

        ref_P, ref_I = naive.maamp(T_sub, m, excl_zone)
        comp_P, comp_I = maamp(T_sub, m)

        npt.assert_almost_equal(ref_P, comp_P)
        npt.assert_almost_equal(ref_I, comp_I)
Esempio n. 13
0
def test_identical_subsequence_self_join():
    identical = np.random.rand(8)
    T_A = np.random.rand(20)
    T_A[1:1 + identical.shape[0]] = identical
    T_A[11:11 + identical.shape[0]] = identical
    T = np.array([T_A, T_A, np.random.rand(T_A.shape[0])])
    m = 3

    excl_zone = int(np.ceil(m / 4))

    ref_P, ref_I = naive.maamp(T, m, excl_zone)
    comp_P, comp_I = maamp(T, m)

    npt.assert_almost_equal(
        ref_P, comp_P, decimal=config.STUMPY_TEST_PRECISION)  # ignore indices
Esempio n. 14
0
def test_aamp_mmotifs_max_motifs_1_max_matches_2_k_1(T):

    motif_distances_ref = np.array([[0.0, 2.87778559]])
    motif_indices_ref = np.array([[0, 5]])
    motif_subspaces_ref = [np.array([2, 1])]
    motif_mdls_ref = [
        np.array([244.0, 260.67970001, 279.86313714, 281.35940001])
    ]

    m = 4
    excl_zone = int(np.ceil(m / config.STUMPY_EXCL_ZONE_DENOM))
    P, I = naive.maamp(T, m, excl_zone)
    (
        motif_distances_cmp,
        motif_indices_cmp,
        motif_subspaces_cmp,
        motif_mdls_cmp,
    ) = aamp_mmotifs(T, P, I, max_distance=np.inf, max_matches=2, k=1)

    npt.assert_array_almost_equal(motif_distances_ref, motif_distances_cmp)
    npt.assert_array_almost_equal(motif_indices_ref, motif_indices_cmp)
    npt.assert_array_almost_equal(motif_subspaces_ref, motif_subspaces_cmp)
    npt.assert_array_almost_equal(motif_mdls_ref, motif_mdls_cmp)
Esempio n. 15
0
def test_aamp_mmotifs_max_distance(T):

    motif_distances_ref = np.array(
        [[0.0, 1.41421356, 4.46430286, 6.85346628, 8.207923, 8.50529247]])
    motif_indices_ref = np.array([[2, 9, 0, 11, 7, 5]])
    motif_subspaces_ref = [np.array([3])]
    motif_mdls_ref = [
        np.array([244.0, 260.67970001, 279.86313714, 281.35940001])
    ]

    m = 4
    excl_zone = int(np.ceil(m / config.STUMPY_EXCL_ZONE_DENOM))
    P, I = naive.maamp(T, m, excl_zone)
    (
        motif_distances_cmp,
        motif_indices_cmp,
        motif_subspaces_cmp,
        motif_mdls_cmp,
    ) = aamp_mmotifs(T, P, I, max_distance=np.inf)

    npt.assert_array_almost_equal(motif_distances_ref, motif_distances_cmp)
    npt.assert_array_almost_equal(motif_indices_ref, motif_indices_cmp)
    npt.assert_array_almost_equal(motif_subspaces_ref, motif_subspaces_cmp)
    npt.assert_array_almost_equal(motif_mdls_ref, motif_mdls_cmp)