Browse Source

update on validation: new xy-figures and so on

formozov 2 years ago
parent
commit
c3fc30b287
23 changed files with 6239 additions and 7029 deletions
  1. 6 4
      validation/calcium_imaging/Figure2_super_compact.py
  2. BIN
      validation/calcium_imaging/Validation_motion.png
  3. 35 25
      validation/calcium_imaging/Validation_motion.py
  4. 2790 1912
      validation/calcium_imaging/Validation_motion.svg
  5. BIN
      validation/calcium_imaging/Validation_stability_check_figure2_super_compact.png
  6. 780 827
      validation/calcium_imaging/Validation_stability_check_figure2_super_compact.svg
  7. BIN
      validation/calcium_imaging/__pycache__/capipeline.cpython-38.pyc
  8. 7 6
      validation/calcium_imaging_transition_state/Figure2_super_compact.py
  9. BIN
      validation/calcium_imaging_transition_state/Validation_motion.png
  10. 10 13
      validation/calcium_imaging_transition_state/Validation_motion.py
  11. 668 668
      validation/calcium_imaging_transition_state/Validation_motion.svg
  12. BIN
      validation/calcium_imaging_transition_state/Validation_stability_check_figure2_super_compact.png
  13. 982 1055
      validation/calcium_imaging_transition_state/Validation_stability_check_figure2_super_compact.svg
  14. BIN
      validation/calcium_imaging_transition_state/__pycache__/capipeline.cpython-38.pyc
  15. 7 6
      validation/sleep_data_calcium_imaging/Figure2_compact.py
  16. BIN
      validation/sleep_data_calcium_imaging/Validation_motion.png
  17. 12 7
      validation/sleep_data_calcium_imaging/Validation_motion.py
  18. 344 304
      validation/sleep_data_calcium_imaging/Validation_motion.svg
  19. BIN
      validation/sleep_data_calcium_imaging/Validation_stability_check_figure2.png
  20. 0 1735
      validation/sleep_data_calcium_imaging/Validation_stability_check_figure2.svg
  21. BIN
      validation/sleep_data_calcium_imaging/Validation_stability_check_sleep_figure2.png
  22. 598 467
      validation/sleep_data_calcium_imaging/Validation_stability_check_sleep_figure2.svg
  23. BIN
      validation/sleep_data_calcium_imaging/__pycache__/capipeline.cpython-38.pyc

+ 6 - 4
validation/calcium_imaging/Figure2_super_compact.py

@@ -103,7 +103,9 @@ for rmin,rmax in recordings_ranges:
         df_nneurons = df_estimators.groupby(['recording','multihue','condition'], as_index=False)['number.neurons'].median()
 
         if (i == 0):
-            sns.stripplot(x='condition', y='number.neurons', data=df_nneurons[(df_nneurons.recording>=rmin)&(df_nneurons.recording<=rmax)], hue = "condition", palette = custom_palette, order=['awa', 'iso', 'fenta', 'keta'], ax=axes[i], marker = '.',edgecolor="black", linewidth = lw*0.5, jitter=False)  #
+            #sns.stripplot(x='condition', y='number.neurons', data=df_nneurons[(df_nneurons.recording>=rmin)&(df_nneurons.recording<=rmax)], hue = "condition", palette = custom_palette, order=['awa', 'iso', 'fenta', 'keta'], ax=axes[i], marker = '.',edgecolor="black", linewidth = lw*0.5, jitter=False )  # #
+            #g = sns.catplot(x='condition', y='number.neurons', data=df_nneurons[(df_nneurons.recording>=rmin)&(df_nneurons.recording<=rmax)], hue = "condition", palette = custom_palette, order=['awa', 'iso', 'fenta', 'keta'], ax=axes[i], marker = '.',edgecolor="black", linewidth = lw*0.5, kind="swarm") #
+            sns.swarmplot(x='condition', y='number.neurons', data=df_nneurons[(df_nneurons.recording>=rmin)&(df_nneurons.recording<=rmax)], hue = "condition", palette = custom_palette, order=['awa', 'iso', 'fenta', 'keta'], ax=axes[i], marker = '.',size=1,edgecolor="black", linewidth = lw*0.5) #
         else:
             sns.boxplot(x='condition', y=param, data=df_estimators[(df_estimators.recording>=rmin)&(df_estimators.recording<=rmax)], dodge=False, hue = "condition", palette=custom_palette, order=['awa', 'iso', 'fenta', 'keta'], showfliers = False, ax=axes[i],linewidth=lw)
         #sns.swarmplot(x='multihue', y=param, data=df_estimators[(df_estimators.recording>=rmin)&(df_estimators.recording<=rmax)], dodge=False, hue = "condition", palette=custom_palette, showfliers = False, ax=axes[i], color=".25")
@@ -118,11 +120,11 @@ for rmin,rmax in recordings_ranges:
         if i == 0:
             axes[i].set_ylim([0.0,1200.0])          
         if i > 0:
-            axes[i].set_ylim([0.0,1000.0])
+            axes[i].set_ylim([-100.0,1500.0])
         if i > 1:
-            axes[i].set_ylim([0.0,10.0])
+            axes[i].set_ylim([-3.0,15.0])
         if i > 2:
-            axes[i].set_ylim([0.0,1.0])
+            axes[i].set_ylim([-0.5,1.5])
         if i > 3:
             axes[i].set_ylim([90,110])
             axes[i].get_xaxis().set_visible(True)

BIN
validation/calcium_imaging/Validation_motion.png


+ 35 - 25
validation/calcium_imaging/Validation_motion.py

@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 # coding: utf-8
 
-database_path = '/media/andrey/My Passport/GIN/backup_Anesthesia_CA1/meta_data/meta_recordings - anesthesia.xlsx'
+database_path = '/media/andrey/My Passport/GIN_new/Anesthesia_CA1/meta_data/meta_recordings - anesthesia.xlsx'
 
 
 # ### Select the range of recordings for the analysis (see "Number" row in the meta data file)
@@ -54,6 +54,8 @@ start_quiet_period = np.zeros((len(rec),number_of_quiet_periods),dtype='int')
 
 stop_quiet_period = np.zeros((len(rec),number_of_quiet_periods),dtype='int')
 
+n_quiet_periods_in_recording = np.zeros((len(rec)),dtype='int')
+
 
 for i, r in enumerate(rec):
 
@@ -74,17 +76,23 @@ for i, r in enumerate(rec):
     #plt.plot(stat.item(0)['yoff'],alpha=0.5)
     #plt.plot(stat.item(0)['xoff'],alpha=0.5)
 
-    motion_index[i,:len(stat.item(0)['yoff'])] = stat.item(0)['yoff']
+    motion_index[i,:len(stat.item(0)['yoff'])] = np.sqrt(stat.item(0)['yoff']**2 + stat.item(0)['xoff']**2) 
 
     print("Min motion index:", min(motion_index[i,:]))
     print("Max motion index:", max(motion_index[i,:]))
 
     recording_length[i] = len(stat.item(0)['yoff'])
+
     print("Recording length:", recording_length[i])
-    print("Quiet periods: ", type(meta_data['Quiet periods'][r]),type('str'))
+
+ 
+
     if (type(meta_data['Quiet periods'][r]) == type('str')):
         print("Quiet periods: ", meta_data['Quiet periods'][r].split(','))
-        for k in range(int(len(meta_data['Quiet periods'][r].split(','))/2)):
+
+        n_quiet_periods_in_recording[i] = int(len(meta_data['Quiet periods'][r].split(','))/2)
+
+        for k in range(n_quiet_periods_in_recording[i]):
             start_quiet_period[i,k] = int(meta_data['Quiet periods'][r].split(',')[k*2])
             stop_quiet_period[i,k] = int(meta_data['Quiet periods'][r].split(',')[k*2+1])  
             print(start_quiet_period[i,k])
@@ -92,53 +100,55 @@ for i, r in enumerate(rec):
     else:
         print("Nan for recording:", r)
         start_quiet_period[i,0] = 0
-        stop_quiet_period[i,0] = recording_length[i]     
-
+        stop_quiet_period[i,0] = recording_length[i]
 
-# np.save("./xy-motion.npy",motion_index)
+#np.save("./xy-motion.npy",motion_index)
 
-mi = motion_index
+#mi = motion_index
 
-#mi = np.load("./xy-motion.npy")
+mi = np.load("./xy-motion.npy")
 
 print(np.max(mi))
 
 print(np.min(mi))
 
-mi_av = np.mean(mi[:,:9000].reshape(mi.shape[0],100,90), axis=2)
+mi_av = np.mean(mi[:,:18000].reshape(mi.shape[0],60,300), axis=2)
 plt.rcParams["axes.grid"] = False
 
-plt.figure(figsize = (15,10))
+plt.figure(figsize = (10,15))
+
+pos = plt.imshow(mi_av,cmap='Purples',vmin = 0, vmax = 10) #,aspect='equal'
 
-plt.imshow(mi_av,cmap='RdBu',vmin = -10, vmax = 10,aspect='equal')
+plt.colorbar(pos)
 
 
-for k in range(int(number_of_quiet_periods/2)):
-    plt.scatter(start_quiet_period[0:len(rec),k]/90,np.arange(len(rec)),marker=9,color='k',label='start of quite period')
-    plt.scatter(stop_quiet_period[0:len(rec),k]/90,np.arange(len(rec)),marker=8,color='k',label='end of quite period')
+for i in range(len(rec)):
+    for k in range(int(n_quiet_periods_in_recording[i])):
+        line = plt.scatter(start_quiet_period[i,k]/300,i,marker='>',color='k',s = 10,label='start of quiet period')
+        line.set_clip_on(False)
+        line = plt.scatter(stop_quiet_period[i,k]/300,i,marker='<',color='k',s = 10, label='end of quiet period')
+        line.set_clip_on(False)
 
+line = plt.scatter(recording_length[0:len(rec)]/300, np.arange(len(rec)) ,marker='|',color='k', s = 10, label='end of the recording')
+line.set_clip_on(False)
 
-plt.scatter(recording_length[0:len(rec)]/90, np.arange(len(rec)) ,marker='|',color='k',label='end of the recording')
 
-plt.legend(loc='upper right')
+#plt.legend(loc='upper right')
 
-plt.xlabel('x 90 frames')
+plt.xlabel('x 300 frames')
 plt.ylabel('recording')
 
-plt.title('Transition state dataset motion validation')
+plt.title('Anesthesia dataset motion validation')
 
 #plt.gcf().set_facecolor("white")
 
-plt.xlim([0,100])
+plt.xlim([0,60])
+
+line.set_clip_on(False)
 
 plt.savefig("Validation_motion.png")
 plt.savefig("Validation_motion.svg")
 
-#import plotly.express as px
-#import numpy as np
-
-#fig = px.imshow(mi, color_continuous_scale='RdBu_r',zmin = -10, zmax = 10)
-#fig.show()
 
 
 plt.show()

File diff suppressed because it is too large
+ 2790 - 1912
validation/calcium_imaging/Validation_motion.svg


BIN
validation/calcium_imaging/Validation_stability_check_figure2_super_compact.png


File diff suppressed because it is too large
+ 780 - 827
validation/calcium_imaging/Validation_stability_check_figure2_super_compact.svg


BIN
validation/calcium_imaging/__pycache__/capipeline.cpython-38.pyc


+ 7 - 6
validation/calcium_imaging_transition_state/Figure2_super_compact.py

@@ -131,7 +131,7 @@ recordings_ranges = [[0,198]]
 
 for rmin,rmax in recordings_ranges:
 
-    f, axes = plt.subplots(number_subplots, 1, figsize=(1, 5)) # sharex=Truerex=True
+    f, axes = plt.subplots(number_subplots, 1, figsize=(1.25, 4.5)) # sharex=Truerex=True
     #plt.subplots_adjust(left=None, bottom=0.1, right=None, top=0.9, wspace=None, hspace=0.2)
     #f.tight_layout()
     sns.despine(left=True)
@@ -145,7 +145,8 @@ for rmin,rmax in recordings_ranges:
         df_nneurons = df_estimators.groupby(['recording','multihue','CONDITION'], as_index=False)['number.neurons'].median()
 
         if (i == 0):
-            sns.stripplot(x='CONDITION', y='number.neurons', data=df_nneurons[(df_nneurons.recording>=rmin)&(df_nneurons.recording<=rmax)], hue = "CONDITION", palette = custom_palette,  order = ['awake', 'iso', 'mmf', 'keta', 'post'], ax=axes[i], marker = '.',edgecolor="black", linewidth = lw*0.5)  #
+            #sns.stripplot(x='CONDITION', y='number.neurons', data=df_nneurons[(df_nneurons.recording>=rmin)&(df_nneurons.recording<=rmax)], hue = "CONDITION", palette = custom_palette,  order = ['awake', 'iso', 'mmf', 'keta', 'post'], ax=axes[i], marker = '.',edgecolor="black", linewidth = lw*0.5)  #
+            sns.swarmplot(x='CONDITION', y='number.neurons', data=df_nneurons[(df_nneurons.recording>=rmin)&(df_nneurons.recording<=rmax)], hue = "CONDITION", palette = custom_palette, order=['awake', 'iso', 'mmf', 'keta', 'post'], ax=axes[i], marker = '.',size=1,edgecolor="black", linewidth = lw*0.5)
         else:
             sns.boxplot(x='CONDITION', y=param, data=df_estimators[(df_estimators.recording>=rmin)&(df_estimators.recording<=rmax)],  hue = "CONDITION", palette = custom_palette, dodge=False, order = ['awake', 'iso', 'mmf','keta', 'post' ]
 , showfliers = False,ax=axes[i],linewidth=lw)
@@ -156,13 +157,13 @@ for rmin,rmax in recordings_ranges:
            # sns.swarmplot(x='recording', y=param, data=df_estimators[(df_estimators.recording>=rmin)&(df_estimators.recording<=rmax)&(df_estimators['neuronID'] == 0)],dodge=False,  s=1,  edgecolor='black', linewidth=1, ax=axes[i])
             #ax.set(ylabel="")
         if i == 0:
-            axes[i].set_ylim([0.0,1200.0])    
+            axes[i].set_ylim([0.0,1200.0])          
         if i > 0:
-            axes[i].set_ylim([0.0,1000.0])
+            axes[i].set_ylim([-100.0,1500.0])
         if i > 1:
-            axes[i].set_ylim([0.0,10.0])
+            axes[i].set_ylim([-3.0,15.0])
         if i > 2:
-            axes[i].set_ylim([0.0,1.0])
+            axes[i].set_ylim([-0.5,1.5])
         if i > 3:
             axes[i].set_ylim([90,110])
             axes[i].get_xaxis().set_visible(True)

BIN
validation/calcium_imaging_transition_state/Validation_motion.png


+ 10 - 13
validation/calcium_imaging_transition_state/Validation_motion.py

@@ -76,7 +76,7 @@ for i, r in enumerate(rec):
     #plt.plot(stat.item(0)['yoff'],alpha=0.5)
     #plt.plot(stat.item(0)['xoff'],alpha=0.5)
 
-    motion_index[i,:len(stat.item(0)['yoff'])] = stat.item(0)['yoff']
+    motion_index[i,:len(stat.item(0)['yoff'])] = np.sqrt(stat.item(0)['yoff']**2 + stat.item(0)['xoff']**2) 
 
     print(min(motion_index[i,:]))
     print(max(motion_index[i,:]))
@@ -97,18 +97,21 @@ print(np.max(mi))
 
 print(np.min(mi))
 
-mi_av = np.mean(mi[:,:27000].reshape(mi.shape[0],90,300), axis=2)
+mi_av = np.mean(mi[:,:30000].reshape(mi.shape[0],100,300), axis=2)
 plt.rcParams["axes.grid"] = False
 
-plt.figure(figsize = (15,10))
+plt.figure(figsize = (10,15))
 
-plt.imshow(mi_av,cmap='RdBu',vmin = -10, vmax = 10,aspect='equal')
+plt.imshow(mi_av,cmap='Purples',vmin = 0, vmax = 10) #,aspect='equal'
 
-plt.scatter(start_quiet_period[0:len(rec)]/300,np.arange(len(rec)),marker='>',color='k',label='start of quite period')
+line = plt.scatter(start_quiet_period[0:len(rec)]/300,np.arange(len(rec)),marker='>',color='k',s=10,label='start of quiet period')
+line.set_clip_on(False)
 
-plt.scatter(stop_quiet_period[0:len(rec)]/300,np.arange(len(rec)),marker='<',color='k',label='end of quite period')
+line = plt.scatter(stop_quiet_period[0:len(rec)]/300,np.arange(len(rec)),marker='<',color='k',s=10,label='end of quiet period')
+line.set_clip_on(False)
 
-plt.scatter(recording_length[0:len(rec)]/300, np.arange(len(rec)) ,marker='|',color='k',label='end of the recording')
+line = plt.scatter(recording_length[0:len(rec)]/300, np.arange(len(rec)) ,marker='|',color='k',s=10,label='end of the recording')
+line.set_clip_on(False)
 
 plt.legend()
 
@@ -124,12 +127,6 @@ plt.xlim([0,100])
 plt.savefig("Validation_motion.png")
 plt.savefig("Validation_motion.svg")
 
-#import plotly.express as px
-#import numpy as np
-
-#fig = px.imshow(mi, color_continuous_scale='RdBu_r',zmin = -10, zmax = 10)
-#fig.show()
-
 
 plt.show()
 

File diff suppressed because it is too large
+ 668 - 668
validation/calcium_imaging_transition_state/Validation_motion.svg


BIN
validation/calcium_imaging_transition_state/Validation_stability_check_figure2_super_compact.png


File diff suppressed because it is too large
+ 982 - 1055
validation/calcium_imaging_transition_state/Validation_stability_check_figure2_super_compact.svg


BIN
validation/calcium_imaging_transition_state/__pycache__/capipeline.cpython-38.pyc


+ 7 - 6
validation/sleep_data_calcium_imaging/Figure2_compact.py

@@ -191,7 +191,7 @@ recordings_ranges = [[0,74]]
 
 for rmin,rmax in recordings_ranges:
 
-    f, axes = plt.subplots(number_subplots, 1, figsize=(1, 4.5)) # sharex=Truerex=True
+    f, axes = plt.subplots(number_subplots, 1, figsize=(0.75, 4.5)) # sharex=Truerex=True
     #plt.subplots_adjust(left=None, bottom=0.1, right=None, top=0.9, wspace=None, hspace=0.2)
     #f.tight_layout()
     sns.despine(left=True)
@@ -203,18 +203,19 @@ for rmin,rmax in recordings_ranges:
         df_nneurons = df_estimators.groupby(['recording','animal'], as_index=False)['number.neurons'].median()
 
         if (i == 0):
-            sns.scatterplot(x='animal', y='number.neurons', data=df_nneurons[(df_nneurons.recording>=rmin)&(df_nneurons.recording<=rmax)],  ax=axes[i], marker = '.',edgecolor="black", linewidth = lw*0.5)  #
+            sns.swarmplot(x='animal', y='number.neurons', data=df_nneurons[(df_nneurons.recording>=rmin)&(df_nneurons.recording<=rmax)], ax=axes[i], marker = '.',size=1,edgecolor="black", linewidth = lw*0.5) #
+            #sns.scatterplot(x='animal', y='number.neurons', data=df_nneurons[(df_nneurons.recording>=rmin)&(df_nneurons.recording<=rmax)],  ax=axes[i], marker = '.',edgecolor="black", linewidth = lw*0.5)  #
         else:
             sns.boxplot(x='animal', y=param, data=df_estimators[(df_estimators.recording>=rmin)&(df_estimators.recording<=rmax)], color = (15./255.,117./255.,188./255.),showfliers = False,ax=axes[i],linewidth=lw)
 
         if i == 0:
-            axes[i].set_ylim([0.0,1200.0])       
+            axes[i].set_ylim([0.0,1200.0])          
         if i > 0:
-            axes[i].set_ylim([0.0,1000.0])
+            axes[i].set_ylim([-100.0,1500.0])
         if i > 1:
-            axes[i].set_ylim([0.0,10.0])
+            axes[i].set_ylim([-3.0,15.0])
         if i > 2:
-            axes[i].set_ylim([0.0,1.0])
+            axes[i].set_ylim([-0.5,1.5])
         if i > 3:
             axes[i].set_ylim([90,110])
             axes[i].get_xaxis().set_visible(True)

BIN
validation/sleep_data_calcium_imaging/Validation_motion.png


+ 12 - 7
validation/sleep_data_calcium_imaging/Validation_motion.py

@@ -1,13 +1,13 @@
 #!/usr/bin/env python
 # coding: utf-8
 
-database_path = '/media/andrey/My Passport/GIN/backup_Anesthesia_CA1/meta_data/meta_recordings_sleep.xlsx'
+database_path = '/media/andrey/My Passport/GIN_new/Anesthesia_CA1/meta_data/meta_recordings_sleep.xlsx'
 
 
 # ### Select the range of recordings for the analysis (see "Number" row in the meta data file)
 
 # In[4]:
-rec = [x for x in range(0,74)] #74
+rec = [x for x in range(0,54)] 
 
 # In[1]:
 
@@ -69,6 +69,8 @@ stop_quiet_period = np.zeros((len(rec)),dtype='int')
 
 
 for i, r in enumerate(rec):
+
+    
     
     animal = get_animal_from_recording(r, database_path)
         
@@ -85,7 +87,7 @@ for i, r in enumerate(rec):
     #plt.plot(stat.item(0)['yoff'],alpha=0.5)
     #plt.plot(stat.item(0)['xoff'],alpha=0.5)
 
-    motion_index[i,:len(stat.item(0)['yoff'])] = stat.item(0)['yoff']
+    motion_index[i,:len(stat.item(0)['yoff'])] = np.sqrt(stat.item(0)['yoff']**2 + stat.item(0)['xoff']**2) 
 
     recording_length[i] = len(stat.item(0)['yoff'])
     print(meta_data['Quiet periods'][r].split(','))
@@ -103,16 +105,18 @@ print(np.max(mi))
 
 print(np.min(mi))
 
-mi_av = np.mean(mi[:,:27000].reshape(mi.shape[0],90,300), axis=2)
+mi_av = np.mean(mi[:,:30000].reshape(mi.shape[0],100,300), axis=2)
 plt.rcParams["axes.grid"] = False
 
 plt.figure(figsize = (10,10))
 
-plt.imshow(mi_av,cmap='RdBu',vmin = -10, vmax = 10,aspect='equal')
+pos = plt.imshow(mi_av,cmap='Purples',vmin = 0, vmax = 10,aspect='equal')
 
-plt.scatter(start_quiet_period[0:max(rec)]/300,np.arange(max(rec)),marker='>',color='k',label='start of quite period')
+plt.colorbar(pos)
 
-plt.scatter(stop_quiet_period[0:max(rec)]/300,np.arange(max(rec)),marker='<',color='k',label='end of quite period')
+plt.scatter(start_quiet_period[0:max(rec)]/300,np.arange(max(rec)),marker='>',color='k',label='start of quiet period')
+
+plt.scatter(stop_quiet_period[0:max(rec)]/300,np.arange(max(rec)),marker='<',color='k',label='end of quiet period')
 
 plt.scatter(recording_length[0:max(rec)]/300, np.arange(max(rec)) ,marker='|',color='k',label='end of the recording')
 
@@ -128,6 +132,7 @@ plt.title('Sleep dataset motion validation')
 plt.savefig("Validation_motion.png")
 plt.savefig("Validation_motion.svg")
 
+
 #import plotly.express as px
 #import numpy as np
 

File diff suppressed because it is too large
+ 344 - 304
validation/sleep_data_calcium_imaging/Validation_motion.svg


BIN
validation/sleep_data_calcium_imaging/Validation_stability_check_figure2.png


File diff suppressed because it is too large
+ 0 - 1735
validation/sleep_data_calcium_imaging/Validation_stability_check_figure2.svg


BIN
validation/sleep_data_calcium_imaging/Validation_stability_check_sleep_figure2.png


File diff suppressed because it is too large
+ 598 - 467
validation/sleep_data_calcium_imaging/Validation_stability_check_sleep_figure2.svg


BIN
validation/sleep_data_calcium_imaging/__pycache__/capipeline.cpython-38.pyc