Skip to content

第7章:与 MNE-Python 的衔接

承接第6章 — 使用 ERPLAB 进行 ERP 分析。这是 EEGLAB & ERPLAB 线索的最后一章。

至此,你已经在本仓库中三次走过同样的大致流程——导入、预处理、分段、平均——一次以 MNE-Python 代码的形式,一次以 Brainstorm 点击操作的形式,现在又以 EEGLAB 和 ERPLAB 菜单的形式。这最后一章,将把 EEGLAB/ERPLAB 直接与 MNE-Python 联系起来。

通往同一分析的三条路径

在 MNE-Python 中读取 EEGLAB 文件

第2章中保存的 .set/.fdt 文件并不是一个死胡同——MNE-Python 可以原生读取它们:

raw = mne.io.read_raw_eeglab("recording.set")
epochs = mne.read_epochs_eeglab("epochs.set")

一套在 EEGLAB 图形界面中手动清理好的流程(滤波、坏通道插值、ICA),可以直接加载进 MNE-Python,用来完成图形界面不那么方便处理的任何工作——自定义统计分析、机器学习,或是跨多个被试的脚本化流程。

ERPLAB 的 .erp 文件:诚实的答案

ERPLAB 自身的平均 ERP 文件(.erp)没有原生的 MNE-Python 读取接口——这一点值得直说,而不是含糊带过。实际可行的做法是:从 EEGLAB 中把分段数据(而不是最终的 ERPset)导出为 .set 文件,用 mne.read_epochs_eeglab() 把它们读入 MNE-Python,再用 epochs.average() 在其中求平均,得到一个等价于 ERPLAB ERPset 的 Evoked 对象。这样做会失去 ERPLAB 的 Measurement Tool,但换来的是 MNE-Python 在后续分析中提供的一切能力。

针对具体任务选择工具

  • 适合使用 EEGLAB + ERPLAB 的情形 —— 研究围绕一个经典 ERP 成分展开,你希望用 Measurement Tool 在大量被试间快速、一致地提取振幅/潜伏期;你所在的实验室已经拥有 MATLAB 许可证和现成的 EEGLAB 脚本;或者你想使用 EEGLAB 尤为庞大的插件生态。
  • 适合使用 Brainstorm 的情形 —— 三维溯源分析是重点,或者合作者需要一个无需许可证、无需编程的选项。
  • 适合使用 MNE-Python 的情形 —— 需要一套能在大规模数据集上完全一致、可复现地运行的流程;需要将分析过程作为可审查的代码纳入版本控制;或者需要与 Python 数据科学生态的其他部分集成。

与 Brainstorm 一样,许多实际项目会同时用到不止一种工具:先在 ERPLAB 中快速测量 ERP、做初步查看,再把最终确定的流程在 MNE-Python 中重新实现,应用到完整数据集以及任何超出简单振幅与潜伏期的后续分析上。

接下来可以做什么

如果你想看看这些概念是如何写成可执行代码的,MNE-Python 线索的EEG 基础ERP 分析两章,以代码的形式覆盖了这一流程中传感器层面的部分;而应用到你自己的数据则是一个模板,可用于在你自己的记录上运行这一整套流程。

EEGLAB & ERPLAB 线索到此结束,感谢阅读。