我想要创建一个在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的一个元素)是否在-0.2秒(即试验开始)到从t_on (即刺激开始)到0.3秒(即试验结束)之间。请注意,t_on是从峰值时间减去的,因此ts_spk_trial存储了相对于刺激开始时间的峰值时间。
让我们使用这个索引来实现一个函数,比如segment_spike_train(),它在给定的一组刺激开始时间内从给定的尖峰序列中删除片段。
Taks1c:完成以下函数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数组的标准文件格式),spikes.npy包含20个同时记录的神经元的尖峰时间(以秒为单位),stim_on.npy包含刺激演示文稿集合的时间戳(以秒为单位),分别用于4种刺激类型。
在试用索引0处,只有一列有此代码的列车。我不知道我怎么能搭上多列火车。有人能帮忙吗?
发布于 2021-12-16 00:36:53
不确定这是否有帮助:
https://neuron.yale.edu/neuron/static/docs/neuronpython/spikeplot.html
也许你可以使用他们的代码,或者了解如何去做。
https://stackoverflow.com/questions/70103568
复制相似问题