注意
转到末尾下载完整示例代码。
导入 EEG 设备数据#
MNE 提供了多种读取 EEG 数据和电极位置的函数与工具。
BrainVision(.vhdr、.vmrk、.eeg)#
BrainVision 文件格式由三个独立文件组成:
包含元数据的文本头文件(
.vhdr)。包含数据事件信息的文本标记文件(
.vmrk)。包含 EEG 电压值的二进制数据文件(
.eeg)。
这两个文本文件都基于 INI 格式,由以下部分组成:
用
[方括号]标记的节(section),用
; comment标记的注释,以及用
key=value标记的键值对。
Brain Products 为其核心 BrainVision 文件格式提供了文档。格式规范托管在 Brain Products 网站上。
可以使用 mne.io.read_raw_brainvision() 读取 BrainVision EEG 文件,并将 .vhdr 头文件作为参数传入。
警告
由于 BrainVision 文件具有多文件结构,重命名这些文件可能会出现问题。有关操作说明,请参阅此示例。
注意
如需写入 BrainVision 文件,请查看 mne.export 模块,它使用了 pybv Python 包。
欧洲数据格式(.edf)#
可以使用 mne.io.read_raw_edf() 读取 EDF 和 EDF+ 文件。这两种变体都是 16 位格式。
EDF+ 文件可能包含注释通道,可用于存储触发和事件信息。这些注释可在 raw.annotations 中获取。
目前尚不原生支持写入 EDF 文件。可以使用此 gist 或 MNELAB(二者底层均使用 pyedflib)将任意 mne.io.Raw 对象导出为 EDF/EDF+/BDF/BDF+。
BioSemi 数据格式(.bdf)#
BDF 格式是 EDF 格式的 24 位变体,由 BioSemi 制造的 EEG 系统使用。可通过 mne.io.read_raw_bdf() 导入。
BioSemi 放大器不会自动执行“共模噪声抑制”。EEG 文件中的信号是每个电极与 CMS 有源电极之间的电压,其中仍包含一些共模噪声(50 Hz、ADC 参考噪声等)。BioSemi 常见问题解答提供了有关此主题的更多细节。因此,建议在导入 BioSemi 数据后选择一个参考(例如 Cz 等单个通道、链接乳突平均、全部电极平均等),以避免丢失信号信息。如有需要,可在清理后重新参考数据。
警告
BDF 文件中的数据样本以 3 字节(24 位)格式表示。由于 FIF 格式目前不支持 3 字节原始数据缓冲区,这些数据在转换时会被改为 4 字节整数。
通用数据格式(.gdf)#
可以使用 mne.io.read_raw_gdf() 读取 GDF 文件。
GDF(General Data Format,通用数据格式)是一种灵活的生物医学信号格式,克服了 EDF 格式的部分限制。原始规范(GDF v1)包含二进制头并使用事件表。更新后的规范(GDF v2)于 2011 年发布,增加了用于额外被试特异性信息(性别、年龄等)的字段,并允许存储多种物理单位及其他属性。MNE 支持这两种规范。
Neuroscan CNT(.cnt)#
可以使用 mne.io.read_raw_cnt() 读取 CNT 文件。通道位置可从 montage 或文件头读取。若从文件头读取,数据通道(未分配给 EOG、ECG、EMG 或 MISC 的通道)会被拟合到一个球面上,并相应地赋予 z 值。若非数据通道无法拟合到该球面,则其 z 值被设为 0。
警告
从文件头读取通道位置可能存在风险,因为文件头 ELECTLOC 部分中的 x_coord 和 y_coord 并不一定对应绝对位置。此外,无法拟合到球面的 EEG 电极位置会在计算 z 值时扭曲布局。如果不确定文件头中的通道位置,建议使用 montage。
警告
ANT Neuro 也使用扩展名为 .cnt 的文件格式,但它与 Neuroscan CNT 格式不同。ANT Neuro 格式由函数 mne.io.read_raw_ant() 支持。
ANT Neuro CNT(.cnt)#
可以使用 mne.io.read_raw_ant() 读取 ANT Neuro eego 软件的 CNT 文件。如果参数 misc 中的正则表达式能正确匹配通道名称,这些通道可自动识别为辅助的“misc”通道。参数 eog 中的正则表达式对 EOG 通道也是如此。请注意,如果在导出时应用了包含特定双极通道的 montage,则可通过提供参数 bipolars 将它们加载为 EEG 双极通道对。所有其他 EEG 通道将作为参考到同一电极的常规 EEG 通道加载。
警告
Neuroscan 也使用扩展名为 .cnt 的文件格式,但它与 eego CNT 格式不同。Neuroscan CNT 格式由函数 mne.io.read_raw_cnt() 支持。
EGI 简单二进制格式(.egi)#
可以使用 mne.io.read_raw_egi() 读取 EGI 简单二进制文件。EGI 原始文件是带有文件头的简单二进制文件,可由 EGI Netstation 采集软件导出。
EGI MFF(.mff)#
可以使用 mne.io.read_raw_egi() 读取 EGI MFF 文件。
EEGLAB 文件(.set、.fdt)#
可以使用 mne.io.read_raw_eeglab() 和 mne.read_epochs_eeglab() 读取 EEGLAB .set 文件(有时会附带单独的 .fdt 文件)。
Nicolet(.data)#
这些文件可使用 mne.io.read_raw_nicolet() 读取。
eXimia EEG 数据(.nxe)#
来自 Nexstim eXimia 系统的 EEG 数据可使用 mne.io.read_raw_eximia() 读取。
Persyst EEG 数据(.lay、.dat)#
来自 Persyst 系统的 EEG 数据可使用 mne.io.read_raw_persyst() 读取。
请注意,由于 Persyst 有时会随版本更改其规范,被试元数据可能无法正确导入。如果遇到问题,请告知我们。
Nihon Kohden EEG 数据(.eeg、.21e、.pnt、.log)#
来自 Nihon Kohden(NK)系统的 EEG 数据可使用 mne.io.read_raw_nihon() 函数读取。
将读取具有以下扩展名的文件:
.eeg文件包含实际的原始 EEG 数据。.pnt文件包含与记录相关的元数据,例如测量日期。.log文件包含记录的注释。.21e文件包含通道和电极信息。
目前不支持读取 .11d、.cmt、.cn2 和 .edf 文件。
请注意,由于 NK 有时会随版本更改规范,并非所有被试元数据都能正确读取。如果遇到问题,请告知我们。
XDF 数据(.xdf、.xdfz)#
MNE-Python 并不开箱即用地支持加载 XDF 文件,因为 XDF 格式固有的灵活性使其难以提供通用的一体化函数。例如,XDF 支持以不同采样率记录的各种模态信号。不过,使用 pyxdf 包仅导入特定数据流(例如 EEG 信号)相对简单。简单示例请参阅 Reading XDF EEG data。
更高级的版本在 MNELAB 中提供,它支持选择特定数据流,并能将标记流转换为注释。如果要在脚本中使用此功能,MNELAB 会记录其历史(View - History),其中包含通过图形用户界面成功加载 XDF 文件后所需的全部命令。
设置 EEG 参考#
在 MNE 中应用 EEG 参考的首选方法是 mne.set_eeg_reference(),或类似 raw.set_eeg_reference() 的实例方法。默认情况下,假定数据已经过适当参考。更多信息请参阅 设置 EEG 参考。
读取 EEG 记录的电极位置与头形#
某些 EEG 格式(例如 EGI、EDF/EDF+、BDF)既不包含电极位置,也不包含头形数字化信息。因此,这些信息必须单独提供。为此,所有 raw 实例都有一个 mne.io.Raw.set_montage() 方法用于设置电极位置。
使用基准点(fiducial point)位置时,数字化数据会被转换到 MNE 软件采用的 MEG 头部坐标系,参见 MEG/EEG and MRI coordinate systems。