| 28 | |
| 29 | @pytest.mark.parametrize("T", T) |
| 30 | def test_stimp_1_percent(T): |
| 31 | threshold = 0.2 |
| 32 | percentage = 0.01 |
| 33 | min_m = 3 |
| 34 | n = T.shape[0] - min_m + 1 |
| 35 | |
| 36 | seed = np.random.randint(100000) |
| 37 | |
| 38 | np.random.seed(seed) |
| 39 | pan = stimp( |
| 40 | T, |
| 41 | min_m=min_m, |
| 42 | max_m=None, |
| 43 | step=1, |
| 44 | percentage=percentage, |
| 45 | pre_scrump=True, |
| 46 | # normalize=True, |
| 47 | ) |
| 48 | |
| 49 | for i in range(n): |
| 50 | pan.update() |
| 51 | |
| 52 | ref_PAN = np.full((pan.M_.shape[0], T.shape[0]), fill_value=np.inf) |
| 53 | |
| 54 | np.random.seed(seed) |
| 55 | for idx, m in enumerate(pan.M_[:n]): |
| 56 | zone = int(np.ceil(m / 4)) |
| 57 | s = zone |
| 58 | tmp_P, tmp_I = naive.prescrump(T, m, T, s=s, exclusion_zone=zone) |
| 59 | ref_P, ref_I, _, _ = naive.scrump(T, m, T, percentage, zone, True, s) |
| 60 | naive.merge_topk_PI(ref_P, tmp_P, ref_I, tmp_I) |
| 61 | ref_PAN[pan._bfs_indices[idx], : ref_P.shape[0]] = ref_P |
| 62 | |
| 63 | # Compare raw pan |
| 64 | cmp_PAN = pan._PAN |
| 65 | |
| 66 | naive.replace_inf(ref_PAN) |
| 67 | naive.replace_inf(cmp_PAN) |
| 68 | |
| 69 | npt.assert_almost_equal(ref_PAN, cmp_PAN) |
| 70 | |
| 71 | # Compare transformed pan |
| 72 | cmp_pan = pan.PAN_ |
| 73 | ref_pan = naive.transform_pan( |
| 74 | pan._PAN, pan._M, threshold, pan._bfs_indices, pan._n_processed |
| 75 | ) |
| 76 | |
| 77 | naive.replace_inf(ref_pan) |
| 78 | naive.replace_inf(cmp_pan) |
| 79 | |
| 80 | npt.assert_almost_equal(ref_pan, cmp_pan) |
| 81 | |
| 82 | |
| 83 | @pytest.mark.parametrize("T", T) |