固定脑视记录仪的脑电图标记数据

一名研究生最近在一项最近完成的研究中发现了脑电图数据的问题。在实验早期,EEG PC机与刺激PC机之间的平行电缆连接被干扰,导致在实验的关键点发送触发器,但与最初指定的值完全不同。

标记是Brainvision Recorder软件中的指示,指示您想要“标记”以供以后分析的关键事件何时发生。在这个实验中,当特定的反应或刺激显示在屏幕上时,特定的标记数字将通过并行端口发射并嵌入到脑电图数据中。

幸运的是,这个问题在早期就被发现了,并为大多数参与者修复了,但仍然有大约6个参与者数据文件标记错误。

在大多数情况下,Brainvision Analyser提供了用其他值替换所有数据标记的机会。如果发送的标记对于事件是唯一的,那么这一切都很好。在这种特殊情况下,当并行连接损坏时,将放入相同的事件标记值。幸运的是,该实验还记录了自己的参与者数据文件,其中包含了展示的刺激内容和时间的详细信息——因此,你可以手动同时查看两组数据,并找出代码是什么。但要做到这一点,每个参与者文件可能要花费你一整天的时间,并且可能会让你在睡梦中看到标记数字和嘟囔平行电缆。

避免不必要的痛苦

值得庆幸的是,对于这种规模的分析和替换,您可以使用Python之类的编程语言自动化该过程——在本例中正是这样做的。

通过与研究人员的交谈,我们从刺激数据文件中获得了哪些条件可以指示预期的标记标志。接下来,我们建立了标记数据的存储方式——幸运的是,它是在一个单独的数据文件中。vmrk”扩展。标记数据只是一个按顺序排列的平面列表,因此另一个关键细节是关联单个试验循环中将发生多少标记事件(本例中为3个)。因此,当我们读取单个试验并检查其条件时,我们在每次试验中只对这些数量的标记应用条件。

PsychoPy实验输出一个CSV数据文件,.vmrk文件也是CSV的一种形式。Python可以很容易地读入CSV数据,并使用几个简短的命令将其转换为一个数组,之后我们可以简单地遍历数据,在进入创建的标记数组时应用条件检查。一旦我们完成了所有的试验,我们只需保存标记数组的内容,以创建替换的.vmrk文件。

在Brainvision数据目录中替换它,我们只需要删除任何历史文件,以便分析器拾取更改的标记数据。

这个脚本用不了一个下午的时间,而且实现起来非常简单,可以“完成工作”。这种简单性主要归功于Python的强大功能,创建自己的脚本来为您进行数据处理或修复非常简单。这个特定的脚本在命令行上运行,并接受两个参数——首先是PsychoPy数据CSV文件,然后是相应的. vmrk文件。在几秒钟内,就完成了更改,并将新文件输出到具有相同文件名的输出目录中(将覆盖先前存在的文件)。

如。

> python convert.py input/psychopydata.csv input/participant01.vmrk

使用的脚本已附在下面,以防您想看一看,看看它是如何完成的。评论已经被留下,指出每个部分在做什么-所以希望如果你来做类似的事情,你可以为你自己的脚本改编或重用这些部分。

下载示例脚本

John关于数据处理的更多细节也可以在这里找到:

http://blogs.开云体育app客服kent.ac.uk/psychotech/2013/08/01/data-programming-support-for-working-with-large-data-files/

6个对“固定脑视记录仪的脑电图标记数据

  1. 你好,

    听起来对我来说也很有希望。但是,问题是我不熟悉Python。每次试验有3个标记。前两个是刺激,第三个是反应(所有这些都被视为。vmrk文件中的刺激,但这不是问题,因为我可以稍后在大脑视觉分析器中更改它)。但是,不幸的是,我忘记定义对应于正确或错误响应的响应标记。我想改变列表中的每三个标记。我可以使用一些指导来做这件事。我粘贴了.vmrk和csv文件的头部,以了解我的数据。Csv文件包括每个第三个标记(响应)的名称。提前感谢您的任何建议等。

    .vmrk文件:

    脑视觉数据交换标记文件1.0版本
    ;创建于Porter 2.4.2.0
    (常见的信息)
    sbj10.bva
    (标记信息)
    Mk5 =刺激,72733年c61 1 0
    Mk6 =刺激,73357年c62 1 0
    Mk7 =刺激,73840年c63 1 0
    Mk8 =刺激,74544年c11 1 0
    Mk9 =刺激、c12 74734、1 0
    Mk10 =刺激、c13、75016 1 0

    csv文件:

    L1long
    shortshort
    龙龙的
    GMshort
    L2long
    S2short
    S1short
    L1long
    GMlong
    L2long
    shortshort
    龙龙的
    S2short
    S1short
    S1short
    龙龙的
    GMlong
    S2short
    L2short
    L1long

    1. 你好,

      示例脚本显示了一种遍历VMRK文件并检测“刺激”行的方法。对于您的问题,您需要做的是每第三个“刺激”行停止并更改触发器,为此您可以使用模函数(Python中的符号是%)。

      我们需要有一个“计数器”来计算找到的每一行“刺激”,然后进行如下检查:

      如果计数器% 3 == 0那么
      把我的扳机换成别的东西

      在您的情况下,因为您希望它被更改为CSV中的任何内容(按顺序),那么我们只需为CSV设置另一个计数器,从0开始。如果我们在上面做了一个模数匹配,那么我们将触发器设置为CSV的计数器位置的内容(在开始时为0 -第一行)。然后,当我们进行匹配时,我们增加下一次的CSV计数器。

      下面是一个使用您提供的数据的示例。我希望这是一个好的开始:
      http://www.开云体育app客服kent.ac.uk/psychology/technical/scripts/marker-script-mod.zip

  2. 这就跟你问声好!这是一个非常有用的帖子,但链接到实际的代码是坏的。我只是想知道你是否可以重新上传?谢谢你!

留下回复