def __cal_firing_rate(self,data,channel,bin_size,overlap,pre_time,post_time):
bins_left = [pre_time]
while bins_left[-1] < post_time:
bins_left.append(bins_left[-1]+bin_size-overlap)
bins_left = np.array(bins_left)
bins_right = bins_left+bin_size
bins_mean = (bins_left+bins_right)/2.0
zero_offset = bins_mean[bins_mean>0][0]
bins_left = bins_left - zero_offset
bins_right = bins_right - zero_offset
bins_mean = bins_mean - zero_offset
bins_left = bins_left[bins_right<=post_time]
bins_mean = bins_mean[bins_right<=post_time]
bins_right = bins_right[bins_right<=post_time]
bins_mean = bins_mean[bins_left>=pre_time]
bins_right = bins_right[bins_left>=pre_time]
bins_left = bins_left[bins_left>=pre_time]
def cal_fr(ite_spike):
ite_fr = list()
for i in range(bins_left.shape[0]):
ite_fr_i = ite_spike[(ite_spike>=bins_left[i])&(ite_spike<bins_right[i])].shape[0]
ite_fr.append(ite_fr_i)
ite_fr = np.array(ite_fr)
ite_fr = ite_fr*1000.0/bin_size
return ite_fr
firing_rate = data[channel].apply(cal_fr)
return firing_rate, bins_mean
# Group data by experimental conditions and plot PSTH and raster of each condition
评论列表
文章目录