From da43058f41af19dad823f7ec765f6202f8a88beb Mon Sep 17 00:00:00 2001 From: ferrari <maxence.ferrari@gmail.com> Date: Wed, 7 Apr 2021 17:32:45 +0200 Subject: [PATCH] fix yscale --- global_ipi.py | 66 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 57 insertions(+), 9 deletions(-) diff --git a/global_ipi.py b/global_ipi.py index 67182aa..adad1ba 100644 --- a/global_ipi.py +++ b/global_ipi.py @@ -149,28 +149,56 @@ def main(args): spec = spec_ax.specgram(pointers['clicks'].mean(0), Fs=sr, NFFT=128, noverlap=127, cmap='jet')[-1] spec.set_clim(spec.get_clim()[1] - 80, spec.get_clim()[1]) + pointers['spectro_mode'] = False + pointers['abs_mode'] = False + + def update_spectro(): + if pointers['spectro_mode']: + spectro = np.flipud(np.mean([10 * np.log10( + plt.mlab.specgram(click, Fs=sr, NFFT=128, noverlap=127)[0]) for click in pointers['clicks']],0)) + else: + spectro = np.flipud(10 * np.log10( + plt.mlab.specgram(pointers['clicks'].mean(0), Fs=sr, NFFT=128, noverlap=127)[0])) + spec.set_data(spectro) + spec.set_clim(spectro.max() - 80, spectro.max()) + def change_graph(label): if label == 'signal': - im.set_data(pointers['clicks'].T) - im.set_clim(pointers['clicks'].min(), pointers['clicks'].max()) + if pointers['abs_mode']: + im.set_data(np.abs(pointers['clicks'].T)) + im.set_clim(0, pointers['clicks'].max()) + else: + im.set_data(pointers['clicks'].T) + im.set_clim(pointers['clicks'].min(), pointers['clicks'].max()) im.set_extent([0, len(pointers['clicks']), -10, 10]) raster.set_xlim(0, len(pointers['clicks'])) - line.set_xdata(pointers['clicks'].sum(0)) + if pointers['abs_mode']: + s_sum = np.abs(pointers['clicks'].sum(0)) + else: + s_sum = pointers['clicks'].sum(0) + line.set_xdata(s_sum) line.set_ydata(np.arange(int(-sr*10e-3), int(sr*10e-3))/sr*1e3) + mean_raster.set_xlim(s_sum.min(), s_sum.max()) mean_raster.set_ylim(-10, 10) elif label == 'autocorr': im.set_data(pointers['autocorr'].T) im.set_clim(pointers['autocorr'].min(), pointers['autocorr'].max()) im.set_extent([0, len(pointers['clicks']), 0, 10]) - line.set_xdata(pointers['autocorr'].sum(0)) + raster.set_xlim(0, len(pointers['clicks'])) + s_sum = pointers['autocorr'].sum(0) + line.set_xdata(s_sum) line.set_ydata(np.arange(0, int(sr*10e-3))/sr*1e3) + mean_raster.set_xlim(s_sum.min(), s_sum.max()) mean_raster.set_ylim(0, 10) elif label == 'cepstrum': im.set_data(pointers['cepstrum'].T) im.set_clim(0, 2*np.nanstd(pointers['cepstrum'])) im.set_extent([0, len(pointers['clicks']), 0, 10]) - line.set_xdata(np.nansum(pointers['cepstrum'], 0)) + raster.set_xlim(0, len(pointers['clicks'])) + s_sum = np.nansum(pointers['cepstrum'], 0) + line.set_xdata(s_sum) line.set_ydata(np.arange(0, int(sr*10e-3))/sr*1e3) + mean_raster.set_xlim(0, 2*s_sum.std()) mean_raster.set_ylim(0, 10) plt.draw() @@ -218,16 +246,36 @@ def main(args): pointers['autocorr'] = all_autocorr[pointers['mask']] pointers['cepstrum'] = all_cepstrum[pointers['mask']] scat.set_offsets(np.vstack((fine_pos_glob[pointers['mask']]/sr, song[fine_pos_glob[pointers['mask']]])).T) - spectro = np.flipud(20 * np.log10( - plt.mlab.specgram(pointers['clicks'].mean(0), Fs=sr, NFFT=128, noverlap=127)[0])) - spec.set_data(spectro) - spec.set_clim(spectro.max() - 80, spectro.max()) + update_spectro() change_graph(r_button.value_selected) cur = Cursor(hist_ax, horizOn=False, vertOn=True, useblit=True, c='r') cur.connect_event('button_press_event', onclick_down) cur.connect_event('button_release_event', onclick_up) + rabs_b_ax = plt.subplot(gs[-1:, -4:-2]) + rabs_b = Button(rabs_b_ax, 'Signal\nin abs') + smean_b_ax = plt.subplot(gs[-1:, -2:]) + smean_b = Button(smean_b_ax, 'Mean spectro\non magnitude') + + def raster_abs(event): + pointers['abs_mode'] = not pointers['abs_mode'] + rabs_b.label.set_text('Signal\nnot in abs' if pointers['abs_mode'] + else 'Signal\nin abs') + if r_button.value_selected == 'signal': + change_graph('signal') + + def spec_mean(event): + pointers['spectro_mode'] = not pointers['spectro_mode'] + smean_b.label.set_text('Mean spectro\non signal' if pointers['spectro_mode'] + else 'Mean spectro\non magnitude') + update_spectro() + plt.draw() + + rabs_b.on_clicked(raster_abs) + smean_b.on_clicked(spec_mean) + + plt.draw() plt.pause(0.2) fig.set_constrained_layout(False) -- GitLab