@
本教程为脑机学习者Rose原创(转载请联系作者授权)发表于公众号:脑机接口社区(微信号:Brain_Computer).QQ交流群:903290195
参考电极简介
安置在头皮上的电极为作用电极(active electrode)。放置在身体相对零电位点的电极即为参考电极(reference electrode),也称为参考电极或标准电极。
记录到的脑电信号即是作用电极与参考电极的差值(电位差)。
更多详细的参考电极简介,请查看MNE-Python参考电极
设置脑电图参考
本教程描述了如何在MNE-Python中设置或更改EEG参考。
set_eeg_reference(self,
ref_channels='average',
projection=False,
ch_type='auto',
verbose=None)
指定用于EEG信号的参考。
参数
ref_channels: list of str | str
用于构造参考的通道名称。如果要应用平均参考,就在此处指定"average"(默认情况就是使用average)。
如果指定了空列表,则表示您已假定该数据已经具有正确的引用,并且MNE将不会尝试对该数据进行任何重新参考。
默认为平均参考。
projection:bool
如果ref_channels ='average',则此参数指定是否应将平均参考计算为projection(True)或不作为projection(False;默认)。
如果projection = True,则将平均参考作为projection添加,并且不应用于数据(后面可以使用apply_proj方法应用)。
如果projection = False,则将平均参考直接应用于数据。
如果ref_channels不是'average',则projection必须设置为False。
默认情况为False.
ch_type:'auto' | 'eeg' | 'ecog' | 'seeg'
要应用参考的通道类型的名称。如果选择'auto',则会选择(按此顺序)找到的第一个eeg,egg或seeg的通道类型。
返回值
Raw对象实例 | Epochs对象实例| Evoked对象实例
注:
1.如果请求的参考不是平均参考,则此函数将移除任何预先存在的平均参考投影。
2.在源定位期间,EEG信号应具有平均参考值。
3.为了应用参考,必须预先加载数据。如果ref_channels ='average'且projection = True,则无需执行此操作。
4.对于一般参考,如果在info['bads']中设置了错误的EEG频道,则会自动排除这它们。
案例-参考电极
import os
import mne
import matplotlib.pyplot as plt
%matplotlib auto
"""
设置原始数据地址
"""
sample_data_folder = mne.datasets.sample.data_path()
sample_data_raw_file = os.path.join(sample_data_folder, 'MEG', 'sample',
'sample_audvis_raw.fif')
"""
读取数据生成raw对象实例
"""
raw = mne.io.read_raw_fif(sample_data_raw_file, verbose=False)
raw.crop(tmax=60).load_data()
raw.pick(['EEG 0{:02}'.format(n) for n in range(41, 60)])
设置或更改参考通道
如果想要重新计算数据(就是不使用原来已经记录或保存数据时使用的参考电极计算),则MNE-Python中为Raw对象提供了set_eeg_reference()方法以及mne.add_reference_channels()方法。
如果使用头皮电极作为参考,但未与原始数据一起保存(通常不使用参考通道),则您可能希望在重新参考之前将其重新添加到数据集中。
例如,如果您的EEG系统使用通道Fp1作为参考记录,但在数据文件中没有包含Fp1,则使用set_eeg_reference()进行设置。
例如,将Cz设置为新参考,然后将在Cz处的信号减去,而不恢复Fp1处的信号。在这种情况下,可以使用add_reference_channels()在重新引用之前将Fp1添加回平面通道。
(由于这里的示例数据没有使用10-20电极命名系统,因此以下示例将EEG 999添加为缺少的参考,然后将该参考设置为EEG 050)
这是数据在其原始状态下的显示方式:
raw.plot()
plt.show()
默认情况下,add_reference_channels()返回一个副本,因此稍后我们可以返回到原始对象。
如果想要更改现有的Raw对象,则可以指定copy = False。
# 添加一个新的参考通道(新添的参考通道中的所有值均为0)
raw_new_ref = mne.add_reference_channels(raw, ref_channels=['EEG 999'])
raw_new_ref.plot()
plt.show()
如上图,刚添加的EEG 999通道作为参考电极,是一个平坦的效果。
# 设置 `EEG 050` 作为参考电极
raw_new_ref.set_eeg_reference(ref_channels=['EEG 050'])
raw_new_ref.plot()
plt.show()
如上效果图,新的参考通道(EEG 050)现在是平坦的,而我们添加回数据中的原始参考通道(EEG 999)具有非零信号。
还要注意,EEG 053是一个坏的信号(在raw.info['bads']中标记为"bad")不受重新参考的影响。
设定平均参考
想要设置一个"虚拟参考",即所有通道平均值,可以使用set_eeg_reference()与ref_channels ='average'。
如上面所讲的,这不会影响任何标记为"bad"的频道,也不会在计算平均值时包含不良频道。
但是,它确实就地修改Raw对象,因此我们将首先创建一个副本,以便稍后仍可以返回未修改的Raw对象:
# 使用所有通道的平均值作为参考
raw_avg_ref = raw.copy().set_eeg_reference(ref_channels='average')
raw_avg_ref.plot()
plt.show()
创建平均参考作为projector(投影)具有以下优点:
在绘图时可以打开或关闭projector(投影),因此很容易可视化平均参考对数据的影响。
如果将附加通道标记为"bad",或者以后选择了通道的子集,则将重新计算projector(投影)以考虑这些变化(从而确保信号为零均值)。
如果还有其他未使用的projector(投影)影响EEG通道(例如用于消除心跳或眨眼伪像的SSP projector(投影)),则在应用或移除这些projector(投影)之前,无法执行EEG重新参考;将EEG参考添加为projector(投影)不受此限制。
for title, proj in zip(['Original', 'Average'], [False, True]):
fig = raw.plot(proj=proj, n_channels=len(raw))
# make room for title
fig.subplots_adjust(top=0.9)
fig.suptitle('{} reference'.format(title), size='xx-large', weight='bold')
脑机学习者Rose笔记分享,QQ交流群:903290195
更多分享,请关注公众号