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

Function multi_distance_profile

tests/naive.py:554–598  ·  view source on GitHub ↗
(
    query_idx, T, m, include=None, discords=False, T_subseq_isconstant=None
)

Source from the content-addressed store, hash-verified

552
553
554def multi_distance_profile(
555 query_idx, T, m, include=None, discords=False, T_subseq_isconstant=None
556):
557 excl_zone = int(np.ceil(m / config.STUMPY_EXCL_ZONE_DENOM))
558
559 d = T.shape[0]
560 if T_subseq_isconstant is None or callable(T_subseq_isconstant):
561 T_subseq_isconstant = [T_subseq_isconstant] * d
562
563 T_subseq_isconstant = np.array(
564 [rolling_isconstant(T[i], m, T_subseq_isconstant[i]) for i in range(d)]
565 )
566
567 Q = T[:, query_idx : query_idx + m]
568 Q_subseq_isconstant = np.expand_dims(T_subseq_isconstant[:, query_idx], axis=1)
569 D = multi_mass(
570 Q,
571 T,
572 m,
573 include,
574 discords,
575 T_subseq_isconstant=T_subseq_isconstant,
576 Q_subseq_isconstant=Q_subseq_isconstant,
577 )
578
579 start_row_idx = 0
580 if include is not None:
581 apply_include(D, include)
582 start_row_idx = include.shape[0]
583
584 if discords:
585 D[start_row_idx:][::-1].sort(axis=0)
586 else:
587 D[start_row_idx:].sort(axis=0)
588
589 d, n = T.shape
590 D_prime = np.zeros(n - m + 1)
591 D_prime_prime = np.zeros((d, n - m + 1))
592 for j in range(d):
593 D_prime[:] = D_prime + D[j]
594 D_prime_prime[j, :] = D_prime / (j + 1)
595
596 apply_exclusion_zone(D_prime_prime, query_idx, excl_zone, np.inf)
597
598 return D_prime_prime
599
600
601def mstump(T, m, excl_zone, include=None, discords=False, T_subseq_isconstant=None):

Callers 1

mstumpFunction · 0.70

Calls 4

multi_massFunction · 0.85
apply_includeFunction · 0.85
rolling_isconstantFunction · 0.70
apply_exclusion_zoneFunction · 0.70

Tested by

no test coverage detected