From 0ade3b101a928c9ea3ae6dd525840e3b2d7fd78b Mon Sep 17 00:00:00 2001 From: wendtalexander Date: Tue, 17 Jan 2023 09:07:50 +0100 Subject: [PATCH] plotting true zeros --- code/chirp_sim.py | 15 ++++++++++----- code/chirpdetection.py | 8 +++++--- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/code/chirp_sim.py b/code/chirp_sim.py index e91d05a..cc30fd8 100644 --- a/code/chirp_sim.py +++ b/code/chirp_sim.py @@ -8,7 +8,7 @@ from chirpdetection import instantaneos_frequency from modules.simulations import create_chirp # create chirp - +""" time, signal, ampl, freq = create_chirp( chirptimes=[0.05, 0.2501, 0.38734, 0.48332, 0.73434, 0.823424], ) # filter signal with bandpass_filter @@ -22,7 +22,7 @@ baseline_freq_time, baseline_freq = instantaneos_frequency(signal, 1/0.00001) axs[1].plot(baseline_freq_time[1:], baseline_freq[1:]) plt.close() - +""" # trying thunderfish fakefish chirp simulation --------------------------------- samplerate = 44100 freq, ampl = fakefish.chirps(eodf=500, chirp_contrast=0.2) @@ -30,16 +30,21 @@ data = fakefish.wavefish_eods(fish='Alepto', frequency=freq, phase0=3) # filter signal with bandpass_filter data_filterd = bandpass_filter(data*ampl+1, samplerate, 0.01, 1.99) -data_freq_time, data_freq = instantaneos_frequency(data*ampl, samplerate) +data_freq_time, data_freq, true_zero = instantaneos_frequency(data*ampl, samplerate) fig, ax = plt.subplots(4, 1, figsize=(20 / 2.54, 12 / 2.54), sharex=True) -ax[0].plot(np.arange(len(data))/samplerate, data*ampl+1) +ax[0].plot(np.arange(len(data))/samplerate, data*ampl) +ax[0].scatter(true_zero, np.zeros_like(true_zero), color='red') ax[1].plot(np.arange(len(data_filterd))/samplerate, data_filterd) ax[2].plot(np.arange(len(freq))/samplerate, freq) ax[3].plot(data_freq_time[1:], data_freq[1:]) plt.show() -embed() \ No newline at end of file +embed() + + + + diff --git a/code/chirpdetection.py b/code/chirpdetection.py index cde1d9a..ad733da 100644 --- a/code/chirpdetection.py +++ b/code/chirpdetection.py @@ -58,7 +58,7 @@ def instantaneos_frequency( # compute frequency inst_freq = gaussian_filter1d(1 / np.diff(true_zero), 5) - return inst_freq_time, inst_freq + return inst_freq_time, inst_freq, true_zero def plot_spectrogram(axis, signal: np.ndarray, samplerate: float, t0: float) -> None: @@ -353,7 +353,7 @@ def main(datapath: str) -> None: ) # compute instantaneous frequency on narrow signal - baseline_freq_time, baseline_freq = instantaneos_frequency( + baseline_freq_time, baseline_freq, true_zero = instantaneos_frequency( baseline, data.raw_rate ) @@ -423,7 +423,7 @@ def main(datapath: str) -> None: baseline_freq_time = baseline_freq_time[(baseline_freq_time >= valid_t0) & ( baseline_freq_time <= valid_t1)] + t0 - + true_zero = true_zero + t0 # overwrite raw time to valid region time_oi = time_oi[valid] baseline = baseline[valid] @@ -468,6 +468,8 @@ def main(datapath: str) -> None: # plot waveform of filtered signal axs[2, i].plot(time_oi, baseline, c=ps.green) + axs[2, i].scatter( + true_zero, np.zeros_like(true_zero), c=ps.red) # plot broad filtered baseline axs[2, i].plot(