(
T,
m,
k,
percentage=1.0,
s=None,
mpdist_percentage=0.05,
mpdist_k=None,
p=2.0,
)
| 1710 | |
| 1711 | |
| 1712 | def aampdist_snippets( |
| 1713 | T, |
| 1714 | m, |
| 1715 | k, |
| 1716 | percentage=1.0, |
| 1717 | s=None, |
| 1718 | mpdist_percentage=0.05, |
| 1719 | mpdist_k=None, |
| 1720 | p=2.0, |
| 1721 | ): |
| 1722 | D = get_all_aampdist_profiles(T, m, percentage, s, mpdist_percentage, mpdist_k, p=p) |
| 1723 | |
| 1724 | pad_width = (0, int(m * np.ceil(T.shape[0] / m) - T.shape[0])) |
| 1725 | T_padded = np.pad(T, pad_width, mode="constant", constant_values=np.nan) |
| 1726 | n_padded = T_padded.shape[0] |
| 1727 | |
| 1728 | snippets = np.empty((k, m)) |
| 1729 | snippets_indices = np.empty(k, dtype=np.int64) |
| 1730 | snippets_profiles = np.empty((k, D.shape[-1])) |
| 1731 | snippets_fractions = np.empty(k) |
| 1732 | snippets_areas = np.empty(k) |
| 1733 | Q = np.inf |
| 1734 | indices = np.arange(0, n_padded - m, m) |
| 1735 | snippets_regimes_list = [] |
| 1736 | |
| 1737 | for snippet_idx in range(k): |
| 1738 | min_area = np.inf |
| 1739 | for i in range(D.shape[0]): |
| 1740 | profile_area = np.sum(np.minimum(D[i], Q)) |
| 1741 | if min_area > profile_area: |
| 1742 | min_area = profile_area |
| 1743 | idx = i |
| 1744 | |
| 1745 | snippets[snippet_idx] = T[indices[idx] : indices[idx] + m] |
| 1746 | snippets_indices[snippet_idx] = indices[idx] |
| 1747 | snippets_profiles[snippet_idx] = D[idx] |
| 1748 | snippets_areas[snippet_idx] = np.sum(np.minimum(D[idx], Q)) |
| 1749 | |
| 1750 | Q = np.minimum(D[idx], Q) |
| 1751 | |
| 1752 | total_min = np.min(snippets_profiles, axis=0) |
| 1753 | |
| 1754 | for i in range(k): |
| 1755 | mask = snippets_profiles[i] <= total_min |
| 1756 | snippets_fractions[i] = np.sum(mask) / total_min.shape[0] |
| 1757 | total_min = total_min - mask.astype(float) |
| 1758 | slices = _get_mask_slices(mask) |
| 1759 | snippets_regimes_list.append(slices) |
| 1760 | |
| 1761 | n_slices = [] |
| 1762 | for regime in snippets_regimes_list: |
| 1763 | n_slices.append(regime.shape[0]) |
| 1764 | |
| 1765 | snippets_regimes = np.empty((sum(n_slices), 3), dtype=np.int64) |
| 1766 | i = 0 |
| 1767 | j = 0 |
| 1768 | for n_slice in n_slices: |
| 1769 | for _ in range(n_slice): |
nothing calls this directly
no test coverage detected