(Ts, bsf_radius, bsf_Ts_idx, bsf_subseq_idx, m, p=2.0)
| 1342 | |
| 1343 | |
| 1344 | def get_aamp_central_motif(Ts, bsf_radius, bsf_Ts_idx, bsf_subseq_idx, m, p=2.0): |
| 1345 | bsf_nns_radii, bsf_nns_subseq_idx = aamp_across_series_nearest_neighbors( |
| 1346 | Ts, bsf_Ts_idx, bsf_subseq_idx, m, p=p |
| 1347 | ) |
| 1348 | bsf_nns_mean_radii = bsf_nns_radii.mean() |
| 1349 | |
| 1350 | candidate_nns_Ts_idx = np.flatnonzero(np.isclose(bsf_nns_radii, bsf_radius)) |
| 1351 | candidate_nns_subseq_idx = bsf_nns_subseq_idx[candidate_nns_Ts_idx] |
| 1352 | |
| 1353 | for Ts_idx, subseq_idx in zip(candidate_nns_Ts_idx, candidate_nns_subseq_idx): |
| 1354 | candidate_nns_radii, _ = aamp_across_series_nearest_neighbors( |
| 1355 | Ts, Ts_idx, subseq_idx, m, p=p |
| 1356 | ) |
| 1357 | if ( |
| 1358 | np.isclose(candidate_nns_radii.max(), bsf_radius) |
| 1359 | and candidate_nns_radii.mean() < bsf_nns_mean_radii |
| 1360 | ): |
| 1361 | bsf_Ts_idx = Ts_idx |
| 1362 | bsf_subseq_idx = subseq_idx |
| 1363 | bsf_nns_mean_radii = candidate_nns_radii.mean() |
| 1364 | |
| 1365 | return bsf_radius, bsf_Ts_idx, bsf_subseq_idx |
| 1366 | |
| 1367 | |
| 1368 | def aamp_consensus_search(Ts, m, p=2.0): |
no test coverage detected