查看原文
其他

ERP分析中如何自动删除休息阶段的脑电数据?

念靖晴 流浪心球 2022-04-26
为了保证EEG研究中采集到的脑电数据的质量。因此在整个实验任务进行中,研究者往往会设置休息阶段,休息阶段的时长设置一般有以下几种形式:
  1. 被试自主决定

  2. 强制休息一定时长和被试自主决定

  3. 研究者决定

处于休息阶段的被试,可能会有一些轻微的肢体运动等,进而产生更大的脑电伪迹。从而干扰或影响对后续ERP数据分析中正常任务进行时脑电伪迹的识别判断和拒绝。因此,在进行ERP数据分析前有必要删除休息阶段的脑电数据。
以往的研究者主要依靠手动的方法去删除相应的数据,这种方法往往需要花费大量的时间和精力,有时候一不留神还可能发生遗漏、错删等现象。
我作为一个比较“懒”的人,一直试图摆脱这个痛苦的过程,从知道每次ERP数据分析开始前需要手动删除休息阶段数据开始,我就在寻找一个便捷的方式去计算机去帮我实现这个痛苦的过程,众里寻他千百度,蓦然回首它在别人的代码中。废话到此结束,切入正题,完整代码如下(此代码仅适用于Matlab):
% Transform "boundary" to "-99"EEG = pop_creabasiceventlist( EEG , 'AlphanumericCleaning', 'on', 'BoundaryNumeric', { -99 }, 'BoundaryString',{ 'boundary' } );% Remove segments of EEG during the break periods in between trial blocks (defined as 2 seconds or longer in between successive stimulus event codes)EEG = pop_erplabDeleteTimeSegments( EEG , 'displayEEG', 0, 'endEventcodeBufferMS',  2000, 'ignoreUseEventcodes', [111 112 121 122 211 212 221 222], 'ignoreUseType', 'Use', 'startEventcodeBufferMS',  2000, 'timeThresholdMS',  2000 );
代码解读:

由于代码仅适用于数值,但由于脑电采集设备的第一个Marker或Evencodes为 boundary ,为导致后面的代码没法正常运行,因此需要将boundary 转化为一个相应的数值,如:-99。即代码:

EEG = pop_creabasiceventlist( EEG , 'AlphanumericCleaning', 'on', 'BoundaryNumeric', { -99 }, 'BoundaryString',{ 'boundary' } );
在进行对应转换后,执行如下的代码:
EEG = pop_erplabDeleteTimeSegments( EEG , 'displayEEG', 0, 'endEventcodeBufferMS', 2000, 'ignoreUseEventcodes', [111 112 121 122 211 212 221 222], 'ignoreUseType', 'Use', 'startEventcodeBufferMS', 2000, 'timeThresholdMS', 2000 );
在此代码中,有以下几个内容需要进行修改:
第一处需要修改的地方为Maker 或 Evencodes,代码中的示例为:[111 112 121 122 211 212 221 222],你需要将你研究中使用的所有的Maker 或 Evencodes都需要填入,包含事件Marker 和反应Marker。

第二处需要修改的地方为:Maker 或 Evencodes 开始前和结束后的时长,这个需要根据你自己单个试次的时长来自行确定。示例中的时长为 2s ( 2000 ms)。

温馨提示:运行此代码,需要提前在Matlab 中加载EEGlab 和 ERPlab。

实际使用示例:
代码使用前:

使用代码:
    EEG  = pop_creabasiceventlist( EEG , 'AlphanumericCleaning', 'on', 'BoundaryNumeric', { -99 }, 'BoundaryString',{ 'boundary' } ); %Remove segments of EEG during the break periods in between trial blocks (defined as 2 seconds or longer in between successive stimulus event codes)    EEG  = pop_erplabDeleteTimeSegments( EEG , 'displayEEG', 0, 'endEventcodeBufferMS', 3000, 'ignoreUseEventcodes',[11 21 22 31 41 43 51 53 61 63 71 73 77 88 99], 'ignoreUseType', 'Use', 'startEventcodeBufferMS',  3000, 'timeThresholdMS', 3000);

使用代码后



<本篇完>


==流浪心球 精品推荐==
ERP数据分析入门指导课程:
01 ERP基础知识 || 02 常见的ERP成分 || 03 ERP的产生和溯源过程 || 04 ERP的优势 || 05 ERP的核心背景知识 || 06 ERP记录与分析方法 || 07 ERP研究的评估

ERP数据分析高阶进击:
ERP数据质量检测新指标(SME)网络研讨会笔记
SME:ERP数据质量检测的新指标
基于Matlab、EEGLab和ERPlab的偏侧化差异波(N2pc/Pd/CDA )成分分析方法
EEG数据分析时如何对分段数据进行伪迹检测与排除?
ERP数据分析中N2pc/Pd成分置换检验的实现

EEG/ERP研究中避坑指南:
EEG/ERP研究中如何获得稳定可信的结果或效应
采集最佳质量EEG数据的操作流程(1)
在EEG研究中,如何降低COVID-19的传播风险?
脑电数据分析中如何获取相对干净的数据结果?
EEG神经振荡分析:已公开数据及代码共享

欲知更多详情,请关注公众号知悉。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存