美文网首页脑科学
Letswave 教程:脑电数据预处理与叠加平均

Letswave 教程:脑电数据预处理与叠加平均

作者: 壹脑云 | 来源:发表于2021-02-03 19:06 被阅读0次

    Hello,

    这里是行上行下,我是喵君姐姐~

    之前写过eeglab数据处理,得到了大家的一致好评。拖了很久的时频更新,马上就要和大家见面了。

    考虑到有的小伙伴没有编辑基础,所以我们先介绍一个界面的软件——letswave7。它和eeglab类似,只是它全部的处理都是界面化的,对于小白来说,十分友好。

    今天就以oddball实验为例,简单介绍一下使用letswave7进行脑电数据预处理与叠加平均。然后第二期,再讲时频处理的原理和具体操作哟~

    实验介绍采用视觉Odd-ball实验。在屏幕上,黑色为偏差刺激(标记为“ S 9”),白色为标准刺激(标记为“ S 10”)。每个矩形块持续80毫秒,ISI持续200毫秒。两分钟内总共安排了600次刺激试验,其中偏差刺激的可能性为5%。要求参与者计算黑色矩形块的数量,并在试次结束后报告,以使参与者在屏幕上保持注意力。

    图 经典odd-ball 实验

    工具介绍Letswave7是在Windows,Mac OSX和Linux或Unix平台下基于Matlab进行EEG信号处理的工具箱。在使用Letswave7之前,应下载并安装 Matlab 。

    在本教程中,将使用Letswave7对P300实验进行研究,以展示对单个主题和多个主题的数据分析过程,并且还将介绍在Letswave7中进行功能图形生成和脚本编写的过程。

    1. letswave7安装与数据集准备

    首先,打开matlab,点击“设置路径”。

    其次,点击“添加并包含子文件夹”,将“letswave7”工具包导入进来,并保存所有文件。

    最后,解压本地“rawdata1.zip”文件,其中包括三个文件:sub093.eegsub093.vhdrsub093.vmrk

    2. 数据集导入

    首先,在Matlab的命令窗口中输入“ letswave7 ”以打开Letswave7。将letwave7的路径设置为数据集的文件夹,例如此处的“F:\letswave7\rawdata1”。

    其次,在管理器模块的菜单中选择“File”->“Import”->“Import EEG / MEG datafiles”,弹出导入数据对话框,添加文件“sub093.eeg”

    最后, 点击绿色按钮以导入数据集。导入完成后,相应的数据集变为红色并显示“sub093(Done)”。关闭导入数据对话框,数据集“ sub093 ”将出现在管理器模块中。

    3.数据集检查

    首先,选择数据集“sub093”,然后在菜单中单击“View”->“continues Date Viewer”以检查导入的数据集的数据质量。

    在数据查看器中,可以看到通道P1明显异常。因此,在接下来的步骤中,我们将通道P1视为坏电极,需要对其进行插值。

    由于原始脑电信号存在极大的噪声,它们在EEG信号中始终混合在一起。因此预处理对于提高信噪比,从而获得“清晰” EEG数据非常必要。

    通常,预处理中常用的降噪方法如下:

    1.通道位置赋值

    首先,在管理器模块的数据列表中选择数据集“ sub093 ”,然后在菜单中单击“Edit”->“Electrodes”->“Edit electrode coordinates”

    在处理模块中,显示默认分配的位置文件是“ Standard-10-20-Cap81.locs”。

    然后,点击“ Select custom files with channel locations”以选择频道位置的自定义文件。在Letswave7中的“Electrodes”文件夹中,有多个通道位置文件用于不同的EEG记录系统。

    PS:如果不希望使用所有这些文件,还可以分配自己的频道位置文件。

    最后,点击“Run”,名称为“ chanlocs sub093 ” 的新数据集将出现在管理器模块的数据列表中。

    2.删除无用的通道

    有时,为了进行有效的分析并节省存储空间,我们需要删除无用的通道。在这里,IO记录了眼电信号(EOG)。而我们并不需要对EOG进行分析,因此需要删除通道IO。

    首先,在管理器模块的数据列表中选择数据集“ sub093 ”,然后单击“ Edit”->“Arrange signals”->“Rearrange or delete epochs,channels,indexes”

    然后,在处理模块中,点击”Add All”将所有通道添加到右侧列表框。

    然后,选择通道“IO”,点击“ Remove”进行移除。

    最后,点击“Run ”按钮,名称为“ sel_chan sub093 ” 的新数据集将出现在管理器模块的数据列表中。

    3.滤波

    滤波可以滤除高频伪迹,低频漂移和50 / 60Hz电源线干扰。在letswave7中,采用Butterworth滤波器进行频率滤波。

    对于P300数据集,由于300ms左右的正波是慢波,因此我们将带通滤波器设为0.05-30Hz。对于50Hz电源线干扰,将不使用陷波滤波器,因为它已经超出了带通滤波器的范围。

    PS:这个数值只是一个参考数值,具体情况具体分析,最好自己领域的相关文献哟~

    首先,在管理器模块的数据列表中选择数据集“ sel_chan sub093 ”,点击击”process”- >”Frequency analysis and filters”->”Butterworth filters”

    其次,在处理模块中,将低截止频率(Hz)设置为0.05Hz,然后单击”Run”按钮以进行带通滤波。

    名称为“ butt sel_chan sub093 ”的新数据集将出现在管理器模块的数据列表中。

    4.坏电极插值替换

    当我们检查导入的原始数据时,发现通道P1是坏的。在此步骤中,我们将通道P1进行插值。

    首先, 在管理器模块的数据列表中选择数据集“ butt sel_chan sub093 ”,然后在菜单中单击“ Edit”->“Electrodes”->“Interpolate channel using neighbouring electrodes ”

    其次, 在处理模块中,在“ Channel to Interpolate:Channels for”列表框中选择通道P1,然后单击“ Find closest electrodes ”按钮。

    由于默认设置中用于插值的通道数为3,因此Letswave7将根据通道的位置自动找到最接近的电极“ P3 ”“ Pz ”“ CP1 ”进行插值。

    PS:也可以采用4个电极点,根据自己的实验进行设置哈。

    最后,点击”Run”。名称为“ chan_interp butt sel_chan sub093 ” 的新数据集将出现在管理器模块的数据列表中。

    5.ICA分解以删除成分

    ICA是一种基于矩阵算法的盲源信号分离方法。假设X代表基于“通道X时间”的EEG信号,S代表基于“成分X时间”的信号源,A代表基于“通道X成分”的混合矩阵。ICA的目的是计算出A矩阵以分离出每个成分。根据这个模型,我们使用ICA在EEG信号中进行人工移除。

    5.1 计算ICA矩阵

    首先,在管理器模块的数据列表中选择数据集“ chan_interp butt sel_chan sub093 ”,然后在菜单中单击“ Process”->“Spatial filters(ICA / PCA)->Compute ICA matrix ”

    其次,在处理模块中,成分数量选择“decide by user”,并将“Components Number”设置为“40”

    PS:数值也是可以自己进行设置的,一般要小于通道数目,但是数值也不要太小。若是64通道,常用30-64之间。

    最后,单击“Run ”。名称为“ ica chan_interp butt sel_chan sub093 ”的新数据集将出现在管理器模块的数据列表中。

    5.2 人工识别成分

    在获得ICA矩阵,混合矩阵A和分离矩阵pinv(A)之后,我们需要人工识别成分。

    首先,在管理器模块的数据列表中选择数据集“ ica chan_interp butt sel_chan sub093 ”,然后在菜单中单击“ Process”->“Spatial filters(ICA / PCA)”->“Apply ICA / PCA Spatial filters ”。我们将看到手动删除空间过滤器成分的界面。

    其次,在此界面中,黑色代表原始信号X,蓝色代表源信号S,橙色曲线代表滤波后的信号X_bar。我们将成分1识别为眨眼伪迹。成分2识别为水平眼球运动伪迹。在右侧面板中选择橙色comp 1,comp 2。单击“OK”对其进行移除。

    最后,名称为“sp_filter ica chan _interp butt sel_chan sub093” 的新数据集将出现在管理器模块的数据列表中。

    7.分段

    在处理数据时需要对获取的EEG信号进行分段,以分析不同时期的数据。

    首先,在管理器模块的数据列表中选择数据集“ sp_filter ica chan_interp butt sel_chan sub093 ”,然后在菜单中单击“Process”- >“Epoch Segmentation”->“Segment relative to events(one file per code)”

    其次, 在处理模块中,选择事件代码“S9”“S10”,并将Epoch开始时间和持续时间设置为“-1”“3”

    PS:时间段的选择也可以自己选择而定,因为后期我们会做时频分析,所以选取的时间比较长。若是只做ERP分析,也可以使用-0.21

    最后, 单击处理模块底部的“Run ”按钮,然后两个新数据集名称为“ ep_S 9 sp_filter ica chan_interp butt sel_chan sub093 ”“ ep_S 10 sp_filter ica chan_interp butt sel_chan sub093 ”模块

    8.伪迹去除

    在消除伪迹之前,有必要对所有时期进行观察。

    首先,选择数据集“ ep_S9 sp_filter ica chan_interp butt sel_chan sub093 ”“ ep_S10 sp_filter ica chan_interp butt sel_chan sub093 ”,然后在右键菜单中选择“View”

    其次, 在波形画面查看器中,选择所有Epoch,将Epoch设置为叠加波。我们在这里对Pz进行观察,因为它是P300分析中最有效的电极点。将y轴设置为从-100100。在通道Pz上,对于这两个数据集,所有Epoch均未观察到明显的伪迹。

    虽然这里没有观察到伪迹,但其它实验数据可能会存在伪迹。剔除伪迹有两种方法:

    8.1 手动剔除带有伪迹的Epoch。

    首先,选择数据集“ ep_S 9 sp_filter ica chan_interp butt sel_chan sub093 ”“ ep_S 10 sp_filter ica chan_interp butt sel_chan sub093 ”,然后单击“ Edit” ->“Arrange signals”->“Rearrange or delete epochs,channels,indexes”

    其次,在处理模块中,将选择项设置为“ Epoch ”,然后将要保留的Epoch放在右栏中。单击“Run ”以完成成分剔除。

    最后,两个名为“ sel_epoch ep_S 9 sp_filter ica chan_interp butt sel_chan sub093 ”“sel_epoch ep_S 10 sp_filter ica chan_interp butt sel_chan sub093 ”将出现在管理器模块的数据列表中。

    8.2  第二种方法是参照标准来剔除伪迹。

    首先,选择数据集“ep_S9 sp_filter ica chan_interp butt sel_chan sub093”和“ep_S10 sp_filter ica chan_interp butt sel_chan sub093”,然后在菜单中单击“Process”- > “ Artefact rejection and suppression”->“Reject epoch (amplitude criterion)”

    其次,在处理模块中,选中“Select channels”,然后选择通道Pz。在右侧选中“X-axis limits”,并将相应的间隔设置为02s。单击处理模块底部的Run”按钮以完成成分剔除。

    最后,名称为“ar-amp ep_S 9 sp_filter ica chan_interp butt sel_chan sub093”和“ar-amp ep_S 10 sp_filter ica chan_interp butt sel_chan sub093”的两个新数据集将出现在管理器模块的数据列表中。

    9.重参考

    在P300的研究中,通常选择双侧乳突区域的平均值作为参考。因此,我们将重新参考TP9和TP10的平均值。

    PS:不同的型号有不同的说法,也有的叫A1和A2。此外,也可以采用其他参考方法,例如,零参考,全脑平均等。(详情可点击:

    EEG信号处理与分析常用工具包介绍

    首先,选择数据集“ep_S9 sp_filter ica chan_interp butt sel_chan sub093”和“ ep_S10 sp_filter ica chan_interp butt sel_chan sub093”,然后在菜单中单击“Process”- >“Rereference signals”->“Rereference ”

    其次,处理模块中,在左侧列表框里选择TP9TP10作为新参考,并在右侧列表框中选择“Apply reference for”。点击“Run”按钮在处理模块的底部完成成分剔除。

    最后,名称为“reref ep_S 9 sp_filter ica chan_interp butt sel_chan sub093”和“reref ep_S 10 sp_filter ica chan_interp butt sel_chan sub093”的两个新数据集将出现在管理器模块的数据列表中。

    10.基线校正

    在分段中,我们将Epoch的开始时间和持续时间设置为-13,这意味着Epoch将从-1s持续到2s。因此,我们将基线设置为从-1s0s,以进行基线校正。

    首先,选择数据集“reref ep_S 9 sp_filter ica chan_interp butt sel_chan sub093”和“reref ep_S 10 sp_filter ica chan_interp butt sel_chan sub093”,然后在菜单中单击“Process”- >“Baseline”->“Baseline correction”

    其次,将默认设置保留在处理模块中,然后单击处理模块底部的Run”以完成成分剔除。

    最后,名称为“bl reref ep_S 9 sp_filter ica chan_interp butt sel_chan sub093”和“bl reref ep_S 10 sp_filter ica chan_interp butt sel_chan sub093”的两个新数据集将出现在管理器模块的数据列表中。

    11.平均

    在预处理的十个步骤之后,我们可以简单地对各个时期进行平均以进行ERP的分析。 

    首先,选择数据集“bl reref ep_S 9 sp_filter ica chan_interp butt sel_chan sub093”和“bl reref ep_S 10 sp_filter ica chan_interp butt sel_chan sub093”,然后在菜单中单击“Process”- > “ Arrange ”- >“Compute arrange,std,median across epoch”

    其次将默认设置保留在处理模块中,然后单击处理模块底部的“Run”按钮进行平均。

    最后,名称为“avg bl reref ep_S 9 sp_filter ica chan_interp butt sel_chan sub093”和“avg bl reref ep_S 10 sp_filter ica chan_interp butt sel_chan sub093”的两个新数据集将出现在管理器模块的数据列表中。

    12.查看结果

    首先,选择数据集“avg bl reref ep_S 9 sp_filter ica chan_interp butt sel_chan sub093”和“avg bl reref ep_S 10 sp_filter ica chan_interp butt sel_chan sub093”。单击右键菜单中的“View”,我们可以在多视图器中查看波形的结果。

    然后选择两个数据集并选择通道Pz,我们可以在Pz上看到P300的结果。在工具栏中选中“cursor”并将设置为0.35,我们可以观察到P300的波形。由于这是单个主题的结果,因此ERP仍然很嘈杂。

    总结:在这一部分中,我们逐步演示了预处理和ERP的分析。对于每个步骤,文件名中都会添加一个前缀,例如butt,ica和reref。

    因此,根据数据集的名称,我们对处理步骤有了大致的了解,有关画图以及处理脚本等更高级的教程将在后面进行介绍,敬请期待哟~

    排版:华华

    相关文章

      网友评论

        本文标题:Letswave 教程:脑电数据预处理与叠加平均

        本文链接:https://www.haomeiwen.com/subject/vaymtltx.html