Source code for tssearch.search.search_utils

import numpy as np
from scipy.signal import find_peaks








[docs]def start_sequences_index(distance, output=("number", 1), overlap=1.0): """ Method to retrieve the k-best occurrences from a given vector distance Parameters ---------- distance: nd-array distance values output: tuple number of occurrences overlap: float minimum distance between occurrences Returns ------- id_s: nd-array indexes of k-best occurrences """ # pks - min pks, _ = find_peaks(-distance, distance=overlap) # TODO if necessary add first and last sequence pks_val = distance[pks] if output[0] == "number": num_events = output[1] pks_val_sort = np.argsort(pks_val) id_s = pks[pks_val_sort[:num_events]] elif output[0] == "percentile": perct = output[1] perct_val = np.percentile(distance, 100 - perct) pks_perct = np.where(pks_val < perct_val)[0] id_s = pks[pks_perct] elif output[0] == "threshold": thres = output[1] pks_thres = np.where(pks_val < thres)[0] id_s = pks[pks_thres] else: id_s = pks[np.argmin(pks_val)] return id_s