diff --git a/code/chirpdetection.py b/code/chirpdetection.py index c657aff..a6ab9b7 100644 --- a/code/chirpdetection.py +++ b/code/chirpdetection.py @@ -140,13 +140,6 @@ def main(datapath: str) -> None: # load raw file data = LoadData(datapath) - # ititialize data collection - baseline_ts = [] - search_ts = [] - freq_ts = [] - fish_ids = [] - electrodes = [] - # load config file config = ConfLoader("chirpdetector_conf.yml") @@ -186,7 +179,25 @@ def main(datapath: str) -> None: nwindows = int( input("How many windows should be calculated (integer number)? ")) - for start_index in window_starts[:nwindows]: + # ititialize lists to store data + window_index = np.arange(nwindows) + electrode_index = np.arange(config.number_electrodes) + track_index = np.arange(len(data.ids)) + + baseline_ts = [[[ + [] for el in range(config.number_electrodes)] + for tr in range(len(data.ids))] + for wi in range(nwindows)] + search_ts = [[[ + [] for el in range(config.number_electrodes)] + for tr in range(len(data.ids))] + for wi in range(nwindows)] + freq_ts = [[[ + [] for el in range(config.number_electrodes)] + for tr in range(len(data.ids))] + for wi in range(nwindows)] + + for st, start_index in enumerate(window_starts[: nwindows]): # make t0 and dt t0 = start_index / data.raw_rate @@ -210,15 +221,8 @@ def main(datapath: str) -> None: median_freq = np.asarray(median_freq) track_ids = np.asarray(track_ids) - # make empty lists for data collection - baseline_ts_sub = [] - search_ts_sub = [] - freq_ts_sub = [] - electrodes_sub = [] - fish_ids_sub = [] - # iterate through all fish - for i, track_id in enumerate(np.unique(data.ident[~np.isnan(data.ident)])): + for tr, track_id in enumerate(np.unique(data.ident[~np.isnan(data.ident)])): print(f"Track ID: {track_id}") @@ -243,7 +247,7 @@ def main(datapath: str) -> None: fig, axs = plt.subplots( 7, - config.electrodes, + config.number_electrodes, figsize=(20 / 2.54, 12 / 2.54), constrained_layout=True, sharex=True, @@ -266,7 +270,7 @@ def main(datapath: str) -> None: check_track_ids = track_ids[(median_freq > search_window[0]) & ( median_freq < search_window[-1])] - # iterate through theses tracks + # iterate through theses tracks if check_track_ids.size != 0: for j, check_track_id in enumerate(check_track_ids): @@ -328,15 +332,8 @@ def main(datapath: str) -> None: print(f"Search frequency: {search_freq}") - # ititialize sublists to collect electrodes for this fish in this - # time window - baseline_ts_subsub = [] - search_ts_subsub = [] - freq_ts_subsub = [] - electrodes_subsub = [] - # iterate through electrodes - for i, electrode in enumerate(best_electrodes): + for el, electrode in enumerate(best_electrodes): # load region of interest of raw data file data_oi = data.raw[start_index:stop_index, :] @@ -460,11 +457,9 @@ def main(datapath: str) -> None: # SAVE DATA --------------------------------------------------- - baseline_ts_subsub.append(time_oi[baseline_peaks].tolist()) - search_ts_subsub.append(time_oi[search_peaks].tolist()) - freq_ts_subsub.append( - baseline_freq_time[inst_freq_peaks].tolist()) - electrodes_subsub.append(electrode) + baseline_ts[st][tr][el] = baseline_envelope[baseline_peaks] + search_ts[st][tr][el] = search_envelope[search_peaks] + freq_ts[st][tr][el] = inst_freq_filtered[inst_freq_peaks] # PLOT -------------------------------------------------------- @@ -538,20 +533,6 @@ def main(datapath: str) -> None: plt.show() - baseline_ts_sub.append(baseline_ts_subsub) - search_ts_sub.append(search_ts_subsub) - freq_ts_sub.append(freq_ts_subsub) - electrodes_sub.append(electrodes_subsub) - fish_ids_sub.append(track_id) - - baseline_ts.append(baseline_ts_sub) - search_ts.append(search_ts_sub) - freq_ts.append(freq_ts_sub) - fish_ids.append(fish_ids_sub) - electrodes.append(electrodes_sub) - - # reorder this mess of nested lists to make it understandable - num_snippets = len(window_starts) embed() diff --git a/code/chirpdetector_conf.yml b/code/chirpdetector_conf.yml index dd3d285..cfe0157 100644 --- a/code/chirpdetector_conf.yml +++ b/code/chirpdetector_conf.yml @@ -4,7 +4,7 @@ overlap: 1 edge: 0.25 # Number of electrodes to go over -electrodes: 3 +number_electrodes: 3 # Boundary for search frequency in Hz search_boundary: 100