def folder_generation(self, upper_folder): #给定特定目录,在其下级建立result和Aligned文件夹,并返回目录 result_folder = upper_folder + r'\results' pp.mkdir(result_folder) aligned_frame_folder = result_folder + '\Aligned_Frames' #保存对齐过后图片的文件夹 pp.mkdir(aligned_frame_folder) return result_folder, aligned_frame_folder
def plot_all(self): all_keys = list(self.all_stim_graph.keys()) plt.figure(figsize=(200, 7)) plt.title('Correlation Plot of Spon & All plots Graph') plt.xlabel('Frames') plt.ylabel('Pearson R') plt.grid() #网格 plt.axhline(y=0, color='#d62728') #红色 plt.ylim((-0.4, 0.4)) plt.xlim((0, self.N_frame)) x_ticks = np.arange(0, self.N_frame, 50) plt.xticks(x_ticks) correlation_folder = save_folder + r'\\Correlation_vs_Stim_Maps' pp.mkdir(correlation_folder) all_colors = ['b', 'g', 'r', 'c', 'm', 'y', 'k', 'w'] for i in range(len(all_keys)): #cycle all stim graphs if self.shuffle_flag == True: # if true, add shuffle data in it. down_lim = self.Shuffled_Dictionary[all_keys[i]][0] shuffle_avr = self.Shuffled_Dictionary[all_keys[i]][1] up_lim = self.Shuffled_Dictionary[all_keys[i]][2] plt.fill_between(range(self.N_frame), up_lim, 0, color='#dfdfdf') plt.fill_between(range(self.N_frame), down_lim, 0, color='#dfdfdf') plt.plot(shuffle_avr, color='#8d8d8d') current_plot = self.correlation_calculator( self.all_stim_graph[all_keys[i]]) plt.plot(current_plot, color=all_colors[i], label=all_keys[i]) plt.legend() plt.savefig(correlation_folder + r'\\All_plots.png') plt.close('all')
def __init__(self,save_folder,target_graph,clustered_data,correlation_name): self.target_graph = target_graph self.clustered_data = clustered_data self.correlation_name = correlation_name self.correlation_folder = save_folder+r'\\Correlation_Folder' pp.mkdir(self.correlation_folder)
def __init__(self, stim_set_A, stim_set_B, map_name, save_folder, cell_find_type, spike_train, cell_group): self.map_folder = save_folder + r'\\Stim_Graphs_' + cell_find_type pp.mkdir(self.map_folder) self.stim_set_A = stim_set_A self.stim_set_B = stim_set_B self.map_name = map_name self.spike_train = pp.read_variable(spike_train) self.cell_group = pp.read_variable(cell_group)
def __init__(self, save_folder, spike_train_name, shuffle_times, shuffle_type): self.save_folder = save_folder self.spike_train = pp.read_variable(save_folder + r'\\' + spike_train_name) self.N_cell, self.N_frame = np.shape(self.spike_train) self.shuffled_folder = save_folder + r'\\Shuffled_trains' pp.mkdir(self.shuffled_folder) self.shuffle_times = shuffle_times #How many times you want to shuffle self.shuffle_type = shuffle_type ####in_frame or cross_frames
def condition_spikes(self): self.radar_folder = save_folder + r'\Cell_Tuning_' + self.cell_type pp.mkdir(self.radar_folder) self.stim_set = list( self.Frame_Stim_Check.keys())[:-1] #所有刺激的set,去掉了Stim-Off self.cell_condition_data = np.zeros(shape=(np.shape( self.spike_train)[0], len(self.stim_set)), dtype=np.float64) for i in range(0, np.shape(self.spike_train)[0]): #循环细胞 for j in range(0, len(self.stim_set)): #循环全部condition temp_frame = self.Frame_Stim_Check[str( self.stim_set[j])] #当前condition的全部帧id self.cell_condition_data[i, j] = self.spike_train[ i, temp_frame[:]].mean()
def cell_graph_plot(self,name,features):#注意输入格式,需要features第一个维度是样本数 graph_folder = save_folder+r'\\'+name pp.mkdir(graph_folder) for i in range(np.shape(features)[0]): temp_graph = np.ones(shape = (512,512),dtype = np.uint8)*127#基底图 temp_feature = features[i] if temp_feature.max() !=0: norm_temp_feature = (temp_feature/(abs(temp_feature).max())+1)/2#保持0不变,并拉伸至0-1的图 else: norm_temp_feature = (temp_feature+1)/2 for j in range(len(self.cell_group)):#循环细胞 x_list,y_list = pp.cell_location(self.cell_group[j]) temp_graph[y_list,x_list] = norm_temp_feature[j]*255 temp_graph_name = graph_folder+r'\\'+name+str(i+1) current_graph_labled = cv2.cvtColor(np.uint8(temp_graph),cv2.COLOR_GRAY2BGR) cv2.imwrite(temp_graph_name+'.png',np.uint8(cv2.resize(current_graph_labled,(1024,1024)))) pp.show_cell(temp_graph_name+'.png',self.cell_group)
# -*- coding: utf-8 -*- """ Created on Thu Apr 25 17:02:24 2019 @author: ZR 利用这一段小代码对Spike_Train数据体进行shuffle,可以与未shuffle的进行比较,从而验证结论的可靠性。 """ import General_Functions.my_tools as pp pp.mkdir('ab')
def plot_initialize(self): #进行绘图的初始化准备 self.spike_train_folder = self.save_folder + '\Spike_Trains_' + self.cell_find_type pp.mkdir(self.spike_train_folder) self.cell_Num, self.frame_Num = np.shape(self.spike_train)
# -*- coding: utf-8 -*- """ Created on Sun Apr 14 10:37:05 2019 @author: ZR """ import numpy as np import matplotlib.pyplot as plt import General_Functions.my_tools as pp #%%首先得到每个cell对各个condition的dF/F平均。 #注意,如果刺激没有0id的话,这里需要做一些修改。 have_blank = True #condition里是否有condition0,如果有的话则为真,否则为假。 radar_folder = save_folder + r'\Radar_Map' pp.mkdir(radar_folder) cell_condition_data = np.zeros(shape=(np.shape(spike_train)[0], len(stim_set)), dtype=np.float64) #得到每个细胞的condition tuning 数据 for i in range(0, np.shape(spike_train)[0]): #循环细胞 for j in range(0, len(stim_set)): #循环全部condition temp_frame = Frame_Stim_Check[str(stim_set[j])] #当前condition的全部帧id cell_condition_data[i, j] = spike_train[i, temp_frame[:]].mean() #%% 接下来进行雷达图的绘制。 # 中文和负号的正常显示 plt.rcParams['font.sans-serif'] = 'Microsoft YaHei' plt.rcParams['axes.unicode_minus'] = False # 使用ggplot的绘图风格 plt.style.use('ggplot') # 构造数据 if have_blank == True: cell_condition_data = cell_condition_data[:, 1:] #去掉conditionid的影响。 feature = list(Frame_Stim_Check.keys())[1:(len(Frame_Stim_Check) - 1)]