我想在 y 轴上创建一个带有多个序列的脉冲序列,这就是任务: 分割成试验的脉冲序列图 说明神经元对刺激呈现的反应的更复杂的方法是分别为每个单元绘制脉冲片段列车与刺激呈现的时间一致。要绘制这种类型的点显示,您需要从原始尖峰序列中剪切出时间对齐的段。在 NumPy 中进行此类分段的一种便捷方法是使用高级索引,如下所示:
ts_spk = spikes[0] # spike train of the 0-th unit
t_on = stim_on[0][0] # the 0-th onset time of stimulus 0
ts_spk_trial = ts_spk[(t_on - 0.2 < ts_spk) & (ts_spk < t_on + 0.3)] - t_on
最后一行中的索引 ts_spk[(t_on - 0.2 < ts_spk) & (ts_spk < t_on + 0.3)] 选取满足方括号中给定条件的 ts_spk 元素。这里的条件是尖峰时间(即 ts_spk 的一个元素)是否在从 t_on(即刺激开始)到 -0.2 秒(即试验开始)和 0.3 秒(即试验结束)之间。请注意,从尖峰时间中减去 t_on,以便 ts_spk_trial 存储相对于刺激开始时间的尖峰时间。
让我们使用这个索引来实现一个函数,比如segment_spike_train(),它在给定的一组刺激开始时间周围从给定的脉冲序列中切出段。'''
任务1c:完成下面的函数segment_spike_train()
def segment_spike_train(ts_spk, trig, t_pre, t_post):
Segment a given spike train around a given set of trigger times.
Arguments
---------
ts_spk : a list or array containing spike times
trig : a list or array containing trigger times for segmentation
t_pre : start time of a segment relative to trigger time
t_post : end time of a segment relative to trigger time
Returns
-------
segments : a list containing segments cut out from the spike train
around the trigger times
segments = []
for t_trig in trig:
t_on = stim_on[0][0]
ts_spk = ts_spk[(t_on + t_pre < ts_spk) & (ts_spk < t_on + t_post)] - t_on
segments.append(ts_spk)
return segments
# set parameter values
t_start = -0.2
t_end = 0.3
unitID = 0
# cut out spike train segments and draw a dot display for each stimulus type
for stimID in range(len(stim_on)):
# cut out spike train segments
spikes_trial = segment_spike_train(spikes[unitID],stim_on[unitID], t_start, t_end)
# give appropriate arguments
# plot spike train segments
plt.subplot(2, 2, stimID + 1)
dotdisplay(spikes_trial) # give an appropriate argument
# decorate the plot
plt.grid()
plt.xlabel("Time from stimulus onset (s)")
plt.ylabel("Trial index")
plt.title("Stimulus Type {0}".format(stimID))
plt.suptitle("Dot display: unit {0}".format(unitID))'''
数据格式 数据以 .npy 格式保存(即保存 numpy 数组的标准文件格式) peaks.npy 包含 20 个同时记录的神经元的尖峰时间(以秒为单位) stim_on.npy 包含时间戳(以秒为单位的第二个)刺激呈现的开始,分别针对 4 种刺激类型中的每一种
在试用索引 0 处,我只得到一列带有此代码的火车。我不知道如何才能得到多列火车。有人可以帮忙吗?