| 1366 | |
| 1367 | |
| 1368 | def aamp_consensus_search(Ts, m, p=2.0): |
| 1369 | k = len(Ts) |
| 1370 | |
| 1371 | bsf_radius = np.inf |
| 1372 | bsf_Ts_idx = 0 |
| 1373 | bsf_subseq_idx = 0 |
| 1374 | |
| 1375 | for j in range(k): |
| 1376 | radii = np.zeros(len(Ts[j]) - m + 1) |
| 1377 | for i in range(k): |
| 1378 | if i != j: |
| 1379 | mp = aamp(Ts[j], m, Ts[i], p=p) |
| 1380 | radii = np.maximum(radii, mp[:, 0]) |
| 1381 | min_radius_idx = np.argmin(radii) |
| 1382 | min_radius = radii[min_radius_idx] |
| 1383 | if min_radius < bsf_radius: |
| 1384 | bsf_radius = min_radius |
| 1385 | bsf_Ts_idx = j |
| 1386 | bsf_subseq_idx = min_radius_idx |
| 1387 | |
| 1388 | return bsf_radius, bsf_Ts_idx, bsf_subseq_idx |
| 1389 | |
| 1390 | |
| 1391 | def aamp_ostinato(Ts, m, p=2.0): |