123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- #!/usr/bin/env python
- # coding: utf-8
- # ### Link to the file with meta information on recordings
- # In[14]:
- #import matplotlib.pyplot as plt
- #plt.rcParams["figure.figsize"] = (20,3)
- database_path = '/media/andrey/My Passport/GIN/backup_Anesthesia_CA1/meta_data/meta_recordings - anesthesia.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,189)]
- #rec = [1,2]
- # In[1]:
- import numpy as np
- import numpy.ma as ma
- import matplotlib.pyplot as plt
- import matplotlib.ticker as ticker
- import pandas as pd
- import seaborn as sns
- import pickle
- import os
- sns.set()
- sns.set_style("whitegrid")
- from scipy.signal import medfilt
- from scipy.stats import skew, kurtosis, zscore
- from scipy import signal
- from sklearn.linear_model import LinearRegression, TheilSenRegressor
- plt.rcParams['figure.figsize'] = [16, 8]
- color_awake = (0,191/255,255/255)
- color_mmf = (245/255,143/255,32/255)
- color_keta = (181./255,34./255,48./255)
- color_iso = (143./255,39./255,143./255)
- custom_palette ={'keta':color_keta, 'iso':color_iso,'fenta':color_mmf,'awa':color_awake}
- # In[2]:
- from capipeline import *
- # ### Load the result of the analysis
- # In[8]:
- df_estimators = pd.read_pickle("./calcium_imaging_stability_validation.pkl")
- df_estimators['neuronID'] = df_estimators.index
- df_estimators["animal_cat"] = df_estimators["animal"].astype("category")
- df_estimators["multihue"] = df_estimators["animal"].astype("string") + df_estimators["condition"]
- print(df_estimators["multihue"])
- # ### Plot
- # In[9]:
- parameters = ['number.neurons','traces.median','traces.skewness','decay','median.stability']
- labels = ['Extracted \n ROIs','Median, \n A.U.','Skewness','Decay time, \n s','1st/2nd \n ratio, %']
- number_subplots = len(parameters)
- #recordings_ranges = [[0,31],[32,55],[56,95],[96,133],[134,160],[161,188]]
- #recordings_ranges = [[0,55],[56,133],[134,188]]
- #recordings_ranges = [[0,133],[134,188]] #test
- recordings_ranges = [[0,188]]
- for rmin,rmax in recordings_ranges:
- f, axes = plt.subplots(number_subplots, 1, figsize=(8, 4.5)) # sharex=Truerex=True
- sns.despine(left=True)
- for i, param in enumerate(parameters):
-
- lw = 0.8
- #else:
- sns.boxplot(x='multihue', y=param, data=df_estimators[(df_estimators.recording>=rmin)&(df_estimators.recording<=rmax)], width=0.6, dodge=False, hue = "condition", palette=custom_palette, 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")
- #if (i == 0):
- # param = "animal_cat"
- # print(np.unique(df_estimators[param]))
- # axes[i].set_yticks(np.unique(df_estimators[param]))
- #
- # sns.swarmplot(x='multihue', y=param, data=df_estimators[(df_estimators.recording>=rmin)&(df_estimators.recording<=rmax)&(df_estimators['neuronID'] == 0)],dodge=False, hue = "condition", palette=custom_palette, s=1, edgecolor='black', linewidth=1, ax=axes[i])
- # #ax.set(ylabel="")
-
- if i > 0:
- axes[i].set_ylim([0.0,2000.0])
- if i > 1:
- axes[i].set_ylim([0.0,10.0])
- if i > 2:
- axes[i].set_ylim([0.0,1.0])
- if i > 3:
- axes[i].set_ylim([80,120])
- axes[i].get_xaxis().set_visible(True)
- else:
- axes[i].get_xaxis().set_visible(False)
-
- if i < number_subplots-1:
- axes[i].xaxis.label.set_visible(False)
- #if i==0:
- # axes[i].set_title("Validation: stability check (recordings #%d-#%d)" % (rmin,rmax), fontsize=6, pad=20)
- axes[i].set_ylabel(labels[i], fontsize=8,labelpad=5)
- #axes[i].set_xlabel("Recording", fontsize=8,labelpad=5)
- #axes[i].axis('off')
- axes[i].xaxis.set_tick_params(labelsize=6)
- axes[i].yaxis.set_tick_params(labelsize=6)
- axes[i].get_legend().remove()
- #axes[i].xaxis.set_major_locator(ticker.MultipleLocator(20))
- #axes[i].xaxis.set_major_formatter(ticker.ScalarFormatter())
- #plt.legend(loc='upper right',fontsize=8)
- #plt.legend(bbox_to_anchor=(1.01, 1), loc=2, borderaxespad=0.,fontsize=9)
- plt.xticks(rotation=45)
- plt.savefig("Validation_stability_check_figure2).png",dpi=300)
- plt.savefig("Validation_stability_check_figure2).svg")
- #plt.show()
- # In[13]:
- '''
- sns.displot(data=df_estimators, x="median.stability", hue = 'multihue',palette=custom_palette, kind="kde")
- plt.xlim([80,120])
- plt.xlabel("Stability, %", fontsize = 25)
- plt.title("Validation: summary on stability (recordings #%d-#%d)" % (min(rec),max(rec)), fontsize = 20, pad=20)
- plt.grid(False)
- plt.savefig("Validation_summary_stability_recordings_#%d-#%d)" % (min(rec),max(rec)))
- #plt.show()
- # In[62]:
- df_estimators["median.stability"].describe()
- '''
|