Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 24 additions & 20 deletions tests/test_gpu_aamp_ostinato.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ def test_random_gpu_aamp_ostinato(runs):
Ts = [rng.RNG.rand(n) for n in [64, 128, 256]]

ref_radius, ref_Ts_idx, ref_subseq_idx = naive.aamp_ostinato(Ts, m)
comp_radius, comp_Ts_idx, comp_subseq_idx = gpu_aamp_ostinato(Ts, m)
cmp_radius, cmp_Ts_idx, cmp_subseq_idx = gpu_aamp_ostinato(Ts, m)

npt.assert_almost_equal(ref_radius, comp_radius)
npt.assert_almost_equal(ref_Ts_idx, comp_Ts_idx)
npt.assert_almost_equal(ref_subseq_idx, comp_subseq_idx)
npt.assert_allclose(cmp_radius, ref_radius, atol=1.5e-07)
npt.assert_allclose(cmp_Ts_idx, ref_Ts_idx, atol=1.5e-07)
npt.assert_allclose(cmp_subseq_idx, ref_subseq_idx, atol=1.5e-07)


@pytest.mark.filterwarnings("ignore", category=NumbaPerformanceWarning)
Expand All @@ -54,11 +54,11 @@ def test_deterministic_gpu_aamp_ostinato(seed):

for p in [1.0, 2.0, 3.0]:
ref_radius, ref_Ts_idx, ref_subseq_idx = naive.aamp_ostinato(Ts, m, p=p)
comp_radius, comp_Ts_idx, comp_subseq_idx = gpu_aamp_ostinato(Ts, m, p=p)
cmp_radius, cmp_Ts_idx, cmp_subseq_idx = gpu_aamp_ostinato(Ts, m, p=p)

npt.assert_almost_equal(ref_radius, comp_radius)
npt.assert_almost_equal(ref_Ts_idx, comp_Ts_idx)
npt.assert_almost_equal(ref_subseq_idx, comp_subseq_idx)
npt.assert_allclose(cmp_radius, ref_radius, atol=1.5e-07)
npt.assert_allclose(cmp_Ts_idx, ref_Ts_idx, atol=1.5e-07)
npt.assert_allclose(cmp_subseq_idx, ref_subseq_idx, atol=1.5e-07)


@pytest.mark.filterwarnings("ignore", category=NumbaPerformanceWarning)
Expand All @@ -77,8 +77,10 @@ def test_input_not_overwritten():
gpu_aamp_ostinato(Ts_input, m)
for i in range(len(Ts)):
T_ref = Ts[i]
T_comp = Ts_input[i]
npt.assert_almost_equal(T_ref[np.isfinite(T_ref)], T_comp[np.isfinite(T_comp)])
T_cmp = Ts_input[i]
npt.assert_allclose(
T_cmp[np.isfinite(T_cmp)], T_ref[np.isfinite(T_ref)], atol=1.5e-07
)


@pytest.mark.filterwarnings("ignore", category=NumbaPerformanceWarning)
Expand All @@ -88,31 +90,33 @@ def test_extract_several_consensus():
# does not tamper with the original data.
Ts = [rng.RNG.rand(n) for n in [64, 128]]
Ts_ref = [T.copy() for T in Ts]
Ts_comp = [T.copy() for T in Ts]
Ts_cmp = [T.copy() for T in Ts]

m = 20

k = 2 # Get the first `k` consensus motifs
for _ in range(k):
# Find consensus motif and its NN in each time series in Ts_comp
# Remove them from Ts_comp as well as Ts_ref, and assert that the
# Find consensus motif and its NN in each time series in Ts_cmp
# Remove them from Ts_cmp as well as Ts_ref, and assert that the
# two time series are the same
radius, Ts_idx, subseq_idx = gpu_aamp_ostinato(Ts_comp, m)
consensus_motif = Ts_comp[Ts_idx][subseq_idx : subseq_idx + m].copy()
for i in range(len(Ts_comp)):
radius, Ts_idx, subseq_idx = gpu_aamp_ostinato(Ts_cmp, m)
consensus_motif = Ts_cmp[Ts_idx][subseq_idx : subseq_idx + m].copy()
for i in range(len(Ts_cmp)):
if i == Ts_idx:
query_idx = subseq_idx
else:
query_idx = None

idx = np.argmin(
core.mass(
consensus_motif, Ts_comp[i], normalize=False, query_idx=query_idx
consensus_motif, Ts_cmp[i], normalize=False, query_idx=query_idx
)
)
Ts_comp[i][idx : idx + m] = np.nan
Ts_cmp[i][idx : idx + m] = np.nan
Ts_ref[i][idx : idx + m] = np.nan

npt.assert_almost_equal(
Ts_ref[i][np.isfinite(Ts_ref[i])], Ts_comp[i][np.isfinite(Ts_comp[i])]
npt.assert_allclose(
Ts_cmp[i][np.isfinite(Ts_cmp[i])],
Ts_ref[i][np.isfinite(Ts_ref[i])],
atol=1.5e-07,
)
Loading