脑电数据分析工具MNE与EEGLAB的比较分析
1. 概述
-
MNE: 一个开源的Python程序库, 可用于对MEG、EEG、ECoG、NIRS等人类神经生理学数据(neurophysiological data)进行探究、可视化和分析等等。
-
主要功能简介
- 数据预处理(Preprocessing,包括伪迹识别、坏导处理、滤波和重采样、数据分段、通过ICA消除伪迹、通过SSP消除伪迹、电极重参考、基于信号空间分离(SSS)和麦克斯韦滤波的头部移动补偿等等
- 脑电溯源定位(Source localization),即脑电逆向问题,是根据头表记录到的电位信号,反向推算出估计的脑内神经活动源的位置、方向和强度信息。
- 时频分析(Time-Frequency),主要是功率谱估计,并配有多种可视化方式,例如基于各通道的功率密度曲线、功率密度拓扑图、功率密度头皮地图等。
- 统计分析(Statistic analysis),包括排列F检验、排列T检验、基于T检验的FDR校正、回归分析等等。
- 神经活动的机器学习模型(Machine Learning),编码、解码和多元模式分析,例如基于CSP方法和EEG数据的运动想象解码、基于SPoC的连续目标解码等。
-
补充说明:
- MNE还配有一个代码编写工作站,暂无图形工作站,需要对函数接口和数据处理过程很熟悉才不易写出离谱、bug频出的代码。
- 可以读写多种格式的生理数据,例如 .set/.fdt, .fif, .edf. .gdf 等等
- github repo: https://github.com/mne-tools/mne-python
- tutorial doc: https://mne.tools/stable/auto_tutorials/index.html
-
-
EEGLAB: EEGLAB是一个交互式Matlab工具箱,用于处理连续和事件相关EEG、MEG和其他电生理数据,包括独立分量分析(ICA)、时间/频率分析、伪影抑制、事件相关统计以及平均和单次试验数据的几种有用可视化模式。EEGLAB可在Linux、Unix、Windows和Mac OS X下运行。对于创造性研究程序员和方法开发人员,EEGLAB提供了一个可扩展的开源平台,通过该平台,他们可以发布EEGLAB“插件”功能,自动出现在下载这些功能的用户的EEGLAB菜单中,从而与世界研究界共享新方法。例如,可构建并发布新型EEGLAB插件,以在ERP或时间/频率结果中“挑选峰值”,或执行EEG、MEG和/或ECOG数据的专门导入/导出、数据可视化或反向源建模。
- 特点概括:
- Academic (free) software 学术(自由)软件
- Running on Matlab or standalone 在Matlab上运行或独立运行
- Graphic user interface 图形用户界面
- Multiformat data importing 多格式数据导入
- High-density data scrolling 高密度数据滚动
- Interactive plotting functions 交互式绘图功能
- Semi-automated artifact removal 半自动伪影去除
- ICA & time/frequency transforms ICA与时频变换
- Event & channel location handling
事件和频道位置处理 - Forward/inverse head/source modeling
正/逆头/源建模 - Defined EEG & STUDY data structures
定义EEG和研究数据结构 - Over 120 advanced plug-in/extensions
超过120个高级插件/扩展
- 补充说明:
- tutorial doc: https://eeglab.org/#The_EEGLAB_Tutorial_Outline
- github repo: https://github.com/sccn/eeglab
- 通过各种插件扩展数据读取的格式,eeglab专有格式是 .set/.fdt
- 特点概括:
2. 数据处理示例
- 主要步骤(示意)
- (Import data)导入数据
- (Channel locations)电极定位
- (Select data)剔除无用电极
- (filter the data)滤波
- (Extract epochs and Remove baseline)分段和基线校正
- Artifact rejection (bad channel and epoch) (剔除坏段、插值坏导)
- (Independent component analysis, ICA)独立成分分析
- (Remove components)剔除伪迹成分
- (Reject extreme values)自动去除极端值
- (Re-reference)重参考
- 数据文件说明
- 文件格式为 .gdf 文件
- 22个EEG通道, 3个EOG电极
- 事件类型:
Event type Description 276 0x0114 Idling EEG (eyes open) 277 0x0115 Idling EEG (eyes closed) 768 0x0300 Start of a trial 769 0x0301 Cue onset left (class 1) 770 0x0302 Cue onset right (class 2) 771 0x0303 Cue onset foot (class 3) 772 0x0304 Cue onset tongue (class 4) 783 0x030F Cue unknown 1023 0x03FF Rejected trial 1072 0x0430 Eye movements 32766 0x7FFE Start of a new run - 详细说明 BCICompetition-IV-II-2a-Description
MNE
EEGLAB
现场演示
3. 数据文件格式说明
.fif文件
Neuromag数据的.fif文件格式是MEG和EEG数据处理领域中比较常用的一种格式。.fif文件是二进制文件,包含MEG或EEG数据、头信息(header)和事件信息(event)。其中,头信息记录了数据采集时间、通道数、采样率等基本信息,而事件信息则包括实验中各个刺激、响应和标记的时间等信息。 一个.fif文件通常由以下几部分组成:
- 文件头(file header):包含了文件类型、版本、数据存储结构等基本信息。
- 电极信息(electrode location):记录了各个电极在头皮上的位置和名称等信息。
- 通道信息(channel information):记录了每个传感器通道的名称、类型、单位等信息。
- 事件信息(event):记录了实验中的事件类型、时间点等信息。
- 数据主体(data body):包含了MEG或EEG数据本身,以及相关的数据修正、附加信息等。 .fif文件格式除了包含以上基本信息外,还有一些特殊的标记、参数、块等,如下:
- 标记(tag):用来标识文件中各个部分的开始和结束位置,以及与之相关的参数和属性等。
- 块(block):用于将数据按照时间段、采样率、通道等划分为不同的块,方便数据的读取和处理。
- 参数(parameter):用于描述数据修正、滤波、变换等相关信息。 .fif文件格式是Neuromag公司所使用的一种标准格式,近年来也被广泛应用到其他MEG和EEG设备以及数据分析软件中。
.set/.fdt 文件
.set和.fdt文件是EEGLAB软件中常见的两种数据文件格式,用于存储原始或经过处理后的脑电信号数据。下面是这两种文件格式的详解:
- .set文件格式:.set文件是EEGLAB软件的默认数据文件格式,包括了原始或经过处理后的脑电信号数据、事件标记、电极位置信息等。.set文件采用MATLAB格式存储,即可以使用MATLAB自带的load函数进行读取和处理。具体来说,.set文件包含了以下几个部分:
- EEG结构体:包括原始脑电信号数据和各种处理后的数据。
- event结构体:包括事件标记信息。
- channel信息:包括各通道的名称、类型、位置等信息。
- epoch信息:包括刺激信号的时域跨度和响应时间等信息。
- history信息:包括数据处理的历史记录。
- .fdt文件格式:.fdt文件是EEGLAB软件的数据文件之一,也是MATLAB格式文件,用于存储已经处理好的脑电信号数据。.fdt文件中只包含了数据矩阵,不包含任何附加信息(如事件标记、通道信息、电极位置等)。因此,在使用.fdt文件时,需要提前设定通道信息和事件标记等参数。需要注意的是,.fdt文件不能被直接读取,而是需要使用EEGLAB软件打开,并与通道信息文件和事件标记文件一起加载才能正确解析。
总的来说,.set和.fdt文件是脑电信号数据在EEGLAB软件中的两种常见格式,它们都有各自的特点和用途。在实际应用中,需要根据具体的需求和数据处理流程选择合适的文件格式来存储和处理脑电信号数据。同时,还需要注意数据的质量控制和预处理等环节,以确保分析结果的准确性和可靠性。
.edf
.edf文件是一种常见的医学电生理数据格式,被广泛用于记录和存储人脑电(EEG)、眼运动(EOG)、肌肉电活动(EMG)等生理信号。下面是.edf脑电数据文件格式的详解:
- 文件头信息:.edf文件以ASCII码形式存储,由两部分组成:文件头和数据记录。文件头是.edf文件的元数据信息,包括了文件版本、记录持续时间、通道数、采样率、信号类型、标定信息等。文件头中每个字段的含义如下:
- version:edf文件的版本号,通常为“0”或“1”。
- patientID:患者ID,可以是数字或文本。
- recordingID:记录ID,可以是数字或文本。
- startDate:开始日期,格式为dd.mm.yy。
- startTime:开始时间,格式为hh.mm.ss。
- headerBytes:文件头字节数,通常为256。
- dataFormatVersion:数据格式版本,通常为“1”。
- signalCount:信号通道数。
- label:信号通道标签。
- transducerType:传感器类型。
- physicalDimension:物理单位。
- physicalMinimum:物理最小值。
- physicalMaximum:物理最大值。
- digitalMinimum:数字最小值。
- digitalMaximum:数字最大值。
- prefiltering:预滤波。
- samplesPerRecord:每个记录的采样数。
- reservedFields:保留字段。
- 数据记录:数据记录是.edf文件中的主体部分,包括了采集的生理信号数据。数据记录采用二进制形式存储,每个数据点的长度根据数字最大值和最小值确定。一般来说,数据记录中的每一行表示一个时间戳和各通道对应的数据点。时间戳的格式为hh.mm.ss或hh.mm.ss.xxx(毫秒),其中“xxx”是毫秒数。各通道的数据点则按照文件头描述的顺序依次排列。