注意
转到末尾下载完整示例代码。
从 MEG 设备导入数据#
本节介绍如何读取各 MEG 厂商的数据。
MEGIN/Elekta Neuromag VectorView 与 TRIUX(.fif)#
Neuromag 原始 FIF 文件可使用 mne.io.read_raw_fif() 加载。
如果数据是在开启 MaxShield 的情况下采集的,且未经过 MaxFilter 处理,则可能需要在加载时使用 mne.io.read_raw_fif(..., allow_maxshield=True)。
FIL OPM(.bin)#
UCL 的 FIL 所使用的 OPM 系统采集的 MEG 数据可通过 mne.io.read_raw_fil() 读取。相关的 OPM 处理方法参见 光泵磁力仪(OPM)MEG 数据预处理。
Artemis123(.bin)#
Artemis123 系统的 MEG 数据可通过 mne.io.read_raw_artemis123() 读取。
4-D Neuroimaging / BTI 数据(目录)#
MNE-Python 提供 mne.io.read_raw_bti() 以读取并转换 4D / BTI 数据。该读取函数默认会将原始通道名称(通常由字母 A 与通道编号组成)替换为 Neuromag 风格的名称。导入数据时,以下输入文件是必需的:
包含所记录 MEG 时间序列的数据文件(通常为
c,rfDC)。包含数字化仪数据的
hs_file文件。包含采集信息与元数据的配置(config)文件。
默认情况下,mne.io.read_raw_bti() 假定这三个文件位于同一文件夹中。
注意
读取参考通道或补偿通道时,当前不会处理补偿权重。因此,mne.io.Raw 对象及相应的 fif 文件不包含有关补偿通道以及用于实现软件梯度补偿的权重的信息。如果保存在 Magnes 系统中的数据已经过补偿,则前向计算中会出现小误差,其显著性目前尚未经过仔细评估。
CTF 数据(目录)#
mne.io.read_raw_ctf() 函数可用于读取 CTF 数据。
CTF Polhemus 数据#
mne.channels.read_dig_polhemus_isotrak() 函数可用于读取 Polhemus 数据。
应用软件梯度补偿#
由于 CTF 系统采用的软件梯度补偿是一种可逆操作,因此可以根据需要在数据文件中更改 CTF 数据的补偿状态。本节介绍补偿流程的技术细节以及 mne.io.Raw.apply_gradient_compensation() 的说明。
mne.io.read_raw_ctf() 返回的 raw 实例包含多个补偿矩阵,用于借助参考通道数据抑制外部干扰。参考传感器比头盔传感器离大脑更远,因此主要测量外部干扰,而非源自大脑的磁场。最常使用的是对应“三阶梯度补偿”(Third-order gradient compensation)方案的补偿矩阵。
假设数据包含 \(n_1\) 个 MEG 传感器通道、\(n_2\) 个参考传感器通道和 \(n_3\) 个其他通道。所有通道的数据可拼接为单个向量:
其中 \(x_1\)、\(x_2\) 和 \(x_3\) 分别是对应 MEG 传感器通道、参考传感器通道和其他通道的数据向量。补偿前后的数据(此处分别记为 \(x_{(0)}\) 和 \(x_{(k)}\))满足:
其中复合补偿矩阵为:
上式中,\(C_{(k)}\) 是对应补偿“等级” \(k\) 的 \(n_1\) × \(n_2\) 补偿数据矩阵。容易看出:
要从补偿等级 \(k\) 转换为 \(p\),只需将一个补偿矩阵的逆乘以另一个补偿矩阵,并将乘积应用于数据:
Ricoh/KIT MEG 系统数据(.con/.sqd)#
MNE-Python 包含 mne.io.read_raw_kit() 和 mne.read_epochs_kit(),用于读取并转换 Ricoh/KIT MEG 数据。
导入连续数据时,仅需输入 .sqd 或 .con 文件。对于分段(epochs)数据,需要一个 Nx3 矩阵,其第三列包含事件编号/对应的触发值。
以下输入文件是可选的:
KIT 标记文件(mrk 文件)或包含 HPI 线圈在 MEG 设备坐标系中位置的类数组对象。这些数据与 elp 文件一起用于建立头部坐标系与设备坐标系之间的坐标变换。
Polhemus 点文件(elp 文件)或包含基准点和头位置指示(HPI)线圈位置的类数组对象。这些数据通常以 Polhemus 头部坐标系给出。
Polhemus 头形数据文件(hsp 文件)或包含头部表面附加点位置的类数组对象。这些点必须使用与 elp 文件相同的坐标系。
现代 Ricoh 系统可能会将这些信息编码在文件本身中,此时 mrk、elp 和 hsp 均可为 None,数据将从文件本身读取。
注意
输出的 fif 文件将采用 Neuromag 头部坐标系约定,参见 MEG/EEG and MRI coordinate systems。其中包含 Polhemus 头部坐标与 Neuromag 头部坐标之间的坐标变换。
默认情况下,KIT-157 系统假定前 157 个通道为 MEG 通道,接下来的 3 个通道为参考补偿通道,从第 160 个通道起指定为其他输入通道(MISC 001、MISC 002 等)。默认情况下,KIT-208 系统假定前 208 个通道为 MEG 通道,接下来的 16 个通道为参考补偿通道,从第 224 个通道起指定为其他输入通道(MISC 001、MISC 002 等)。
此外,可通过指定以下参数,从可用的模拟触发通道数据合成数字触发通道(STI 014):
触发通道列表(
stim)或默认触发设置,顺序为“<”|“>”:将 KIT 触发通道转换为 Neuromag 风格 stim 通道时的通道-数值对应关系。默认假定前八个其他通道为触发通道。对于“<”,最大值分配给第一个通道(小端;默认)。对于“>”,最大值分配给最后一个通道(大端)。也可指定为触发通道索引列表。触发通道斜率(
slope):“+”|“-”:合成 Neuromag 风格 stim 通道时如何解释 KIT 触发通道上的数值。使用“+”时,正斜率(低到高)被解释为事件;使用“-”时,负斜率(高到低)被解释为事件。刺激阈值(
stimthresh):浮点数。将 KIT 触发通道中的电压变化视为触发事件的阈值水平。
在第 \(k\) 个采样点合成的触发通道数据值为:
其中 \(t_p(k)\) 是对输入通道数据 d_p(k) 进行阈值处理后的结果:
阈值 \(t\) 可通过 stimthresh 参数调整。
FieldTrip MEG/EEG 数据(.mat)#
MNE-Python 包含 mne.io.read_raw_fieldtrip()、mne.read_epochs_fieldtrip() 和 mne.read_evoked_fieldtrip(),用于读取来自 FieldTrip 的数据。
数据直接从 .mat 文件导入。
info 参数可显式设置为 None。导入函数仍可工作,但是:
所有通道位置都将位于头部坐标系中。
无法保证通道方向的准确性。
所有通道类型都将设为通用类型。
对于不需要这些信息的情形,这大概没问题;但如果你打算进行缺失通道插值、源分析或查看平面梯度计的 RMS 配对等操作,很可能会遇到问题。
强烈建议同时提供 info 参数。可先使用相应的 MNE-Python 函数加载原始 raw 数据文件,以提取 info 字典:
original_data = mne.io.read_raw_fiff('original_data.fif', preload=False)
original_info = original_data.info
data_from_ft = mne.read_evoked_fieldtrip('evoked_data.mat', original_info)
导入的数据通道数可能少于原始数据。仅从 info 字典中提取当前存在通道的信息。
自 0.17 版起,已在多种系统上测试了 FieldTrip 数据导入,结果如下:
| 系统 | 读取原始数据 | 读取分段数据 | 读取诱发数据 |
|---|---|---|---|
BTI |
可用 | 未测试 | 未测试 |
CNT |
数据以微伏导入,其他方面正常。 | 数据以微伏导入,其他方面正常。 | 数据以微伏导入,其他方面正常。 |
CTF |
可用 | 可用 | 可用 |
EGI |
基本可用。数据以微伏导入,FieldTrip 不会应用校准。 | 基本可用。数据以微伏导入,FieldTrip 不会应用校准。 | 基本可用。数据以微伏导入,FieldTrip 不会应用校准。 |
KIT |
不可用。MNE-Python 与 FieldTrip 中的通道名称不同。 | 不可用。MNE-Python 与 FieldTrip 中的通道名称不同。 | 不可用。MNE-Python 与 FieldTrip 中的通道名称不同。 |
Neuromag |
可用 | 可用 | 可用 |
eximia |
可用 | 未测试 | 未测试 |
从任意数据(内存中)创建 MNE 数据结构#
通过将 mne.io.RawArray、mne.EpochsArray 或 mne.EvokedArray 与 mne.create_info() 结合使用,可从内存构造任意 raw 数据(例如模拟或手动读入的数据)。
此功能在 从零创建 MNE-Python 数据结构 中进行了演示。结合使用 NEO 等第三方库与这些函数,可以轻松将大量电生理文件格式加载到 MNE 中。