为什么我的脑电数据会丢mark?
说到脑电实验,就有一个绕不开的话题:打mark。而围绕这个话题,我相信大家或多或少都遇到过mark丢失的问题。今天咱们就来聊一聊mark为什么会丢失的问题。
首先我们来回顾一下打mark的过程:
简单来说就是外部设备(包括刺激呈现电脑、同步研究中的其他设备等)向脑电放大器发送触发信号,脑电硬件接收到这个触发信号后和记录到的脑电信号一起传输给采集电脑并记录下来。
上述过程中涉及到3个主体和2个信号传输过程,其中任意一方面出现问题都会导致mark丢失。
如果出现mark丢失的情况,就需要对每个方面进行检查。首先来看3个主体中:
1.硬件层面
要确保过程中涉及到的外部设备的信号发送端口、脑电放大器的信号接收端口以及脑电记录电脑的数据接收端口没有问题。如果不确定问题是否出现在这些地方,最简单的方法是用替换法进行排除。
2.软件层面
外部设备的软件中,信号输出的选项需要打开,端口号必须设置正确。以用e-prime呈现刺激的电脑作为外部设备通过并口打mark为例,软件中对应端口类型需要勾选,端口号需要和设备管理器中查看到的与脑电硬件连接的端口号保持一致。
对于脑电放大器来说,程序是写入EPROM或EEPROM或FLASH芯片中的,也就是通常所说的固件,通常是无法被用户直接读出或修改的。所以脑电放大器的软件部分我们通常不做太多的考虑。
不过需要注意的是,如果我们使用的脑电放大器是通过并口接收mark的,那我们就需要关注一下这款放大器是否会对并口端口进行自动归零。如果不会,那么我们需要在外部设备的软件中设置信号最开始发送时,发一个数值为0的信号、每一个mark发送后到下一个mark发送前也需要发送一个数值为0的信号。不然最后收到的mark值会出现丢失的情况,某些设备还可能导致mark值错乱。简单举个例子:
以8位并口为例,用○表示低电平、●表示高电平,从左到右依次是1-8位,那么初始状态就是○ ○ ○ ○ ○ ○ ○ ○,当接收到一个值为11的mark时第1、2、4位会升高状态变为● ● ○ ● ○ ○ ○ ○,脑电放大器识别出一个值为11的mark并记录。如果这之后没有进行清0,下一次的初始状态就是● ● ○ ● ○ ○ ○ ○,这个时候再接收到一个值为11的mark,电位状态不会有任何变化,放大器就不会识别和记录,这个mark就丢失了。
除此之外,我们还需要通过产品手册确认固件预留的系统mark,以ANT的脑电放大器为例,其中一个系统预留mark值为1,该预留mark用作停止采集,也就是说当放大器接收到值为1的mark时并不会记录并发送到采集软件,而是会直接结束采集。所以我们在外部设备的软件设置中也需要规避这些系统预留mark。
最后对于采集软件,某些产品的采集软件会有是否接收mark的选项,需要确认打开。
接着再来看2个信号传输过程:
1.硬件层面
外部设备连接脑电放大器和脑电放大器连接采集电脑的线缆和所用接口需确认完好,连接处需确认牢固。如果不确定问题是否出现在这些地方,也可用用替换法进行排除。
2.软件层面
对于使用并口作为信号接收口的脑电设备来说,我们不用关注传输信号属性的问题。但是对于使用串口作为信号接收口的设备来说,我们就需要保证信号发送方的信号属性和接收方能接收的信号属性一致,其中最具主要的就是波特率。
我们必须首先查阅硬件手册确定脑电放大器接收信号的波特率,然后在外部设备的软件中设置一致,上图以e-prime为例。如果两者不一致,脑电放大器则可能无法正确识别信号,导致mark丢失或mark值错乱的问题。
以上就是一个最基础的通过外部设备打mark的系统以及其中可能出现问题的地方。可能实际实验过程中搭建的系统更为复杂一些,比如信号传输过程中经过信号转换器或信号分发器等主体,每增加一个主体则对应会增加一个传输过程,亦可按照上述分主体和过程、分硬件和软件进行排查。
———— / END / ————