在 Python 中分割成试验的尖峰列车图(神经科学)

Posted

技术标签:

【中文标题】在 Python 中分割成试验的尖峰列车图(神经科学)【英文标题】:Plot of spike trains segmented into trials in Python (Neuroscience) 【发布时间】:2022-01-03 06:50:05 【问题描述】:

我想创建一个在 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

让我们使用这个索引来实现一个函数,比如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 处只得到一列带有此代码的火车。我不知道如何才能得到多列火车。有人可以帮忙吗?

【问题讨论】:

【参考方案1】:

不确定这是否有帮助:

https://neuron.yale.edu/neuron/static/docs/neuronpython/spikeplot.html

也许您可以使用他们的代码或了解如何操作。

【讨论】:

以上是关于在 Python 中分割成试验的尖峰列车图(神经科学)的主要内容,如果未能解决你的问题,请参考以下文章

在 python 中模拟神经元脉冲序列

蒲骄子,等丨基于文本挖掘与神经网络的高速列车意象造型设计

英特尔发布首个7nm芯片Loihi 2,用于神经拟态计算,可模拟100万神经元

神经网络

TAMU发布《图神经网络可解释》综述论文,14页pdf阐述实例级与模型级解释

列车调度