コード例 #1
0
 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
コード例 #2
0
    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')
コード例 #3
0
 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)
コード例 #4
0
    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)
コード例 #5
0
    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
コード例 #6
0
    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()
コード例 #7
0
 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)
コード例 #8
0
# -*- 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')
コード例 #9
0
 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)
コード例 #10
0
# -*- 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)]