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