MCPcopy Index your code
hub / github.com/stumpy-dev/stumpy / aampdist_snippets

Function aampdist_snippets

tests/naive.py:1712–1787  ·  view source on GitHub ↗
(
    T,
    m,
    k,
    percentage=1.0,
    s=None,
    mpdist_percentage=0.05,
    mpdist_k=None,
    p=2.0,
)

Source from the content-addressed store, hash-verified

1710
1711
1712def 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):

Callers

nothing calls this directly

Calls 2

_get_mask_slicesFunction · 0.70

Tested by

no test coverage detected