从其他分析软件迁移#
这里提供一些从其他分析软件迁移过来的建议。
EEGLAB#
要读取从 EEGLAB 导出的数据,MNE-Python 提供了 .edf 读取器 mne.io.read_raw_edf() 以及 set 文件读取器。若要读取包含原始数据的 set 文件,请使用 mne.io.read_raw_eeglab();若要读取包含 epochs 数据的 set 文件,请使用 mne.read_epochs_eeglab()。
下表汇总了一些最常见分析任务中相互对应的 EEGLAB 与 MNE-Python 代码。为清晰起见,下表假设已存在以下变量:文件名 fname、epochs 的时间区间 tmin 和 tmax,以及实验条件 cond1 和 cond2。l_freq 和 h_freq 是频率(单位为 Hz),分别表示低于该频率和高于该频率的数据将被滤除。
| 处理步骤 | EEGLAB 函数 | MNE-Python |
|---|---|---|
| 开始使用 | addpath(...);eeglab; |
|
| 导入数据 | EEG = pop_fileio(fname); |
|
| 滤波 | EEG = pop_eegfiltnew(EEG, l_freq, h_freq); |
|
| 平均参考(Common Average referencing) | EEG= pop_averef; |
|
| 移除通道 | pop_select.m |
|
| 运行 ICA | EEG = pop_runica(EEG, 'pca', n);EEG = pop_binica(EEG, 'pca', n); |
|
| 绘制 ICA 属性 | pop_compprop( EEG, comp_num, winhandle); |
|
| 绘制 ICA 成分 | compheads() |
|
| 排除成分 | pop_selectcomps() |
ica.exclude = list_of_components_to_exclude |
| 对数据进行分段(Epoch) | event_id = {'cond1', 'cond2'};Epochs = pop_epochs(EEG, event_id, [tmin, tmax]); |
|
| 选择 Epoch | Epochs = pop_epochs(EEG_epochs, {cond2}); |
|
| ERP 蝶形图 | pop_timtopo(EEG_epochs, ...); |
|
| 对比 ERP | pop_compareerps(EEG_epochs1, EEG_epochs2); |
|
| 保存数据 | EEG = pop_saveset(EEG, fname); |
潜在陷阱#
MNE-Python 的许多对象都带有就地(in-place)操作的方法以节省内存(也就是说,调用
raw.filter(lfreq, hfreq)时,Raw对象中的数据会被改变)。如果你不希望如此,可以始终先调用该对象的copy()方法(例如filtered_raw = raw.copy().filter(lfreq, hfreq))。此外,一些 MNE-Python 函数还提供布尔型的copy参数,可实现相同的目的。通道类型(channel types)这一概念在 MNE 中至关重要,因为它支持多模态数据的分析(例如 EEG、MEG、EOG、Stim 通道等),而大多数 EEGLAB 函数则假定所有通道都属于同一类型(EEG)。若要将通道限定为单一类型,请参阅
mne.pick_types()、raw.pick()、epochs.pick()和evoked.pick()。