使用MNE数据集获取脑电图中的时频特征
发布时间:2024-01-08 07:20:57
MNE是一个功能强大的Python包,用于脑电图(EEG)和脑磁图(MEG)数据的分析。它为用户提供了处理和分析EEG/MEG数据的工具,包括数据预处理、事件提取、时频分析等。在本文中,我们将使用MNE数据集获取脑电图中的时频特征带,并提供一个简单的例子来帮助您了解如何使用MNE进行时频分析。
首先,我们需要导入必要的库和数据集。
import mne from mne.datasets import sample # 导入示例的数据集 data_path = sample.data_path() raw_fname = data_path + '/MEG/sample/sample_audvis_filt-0-40_raw.fif' raw = mne.io.read_raw_fif(raw_fname, preload=True)
接下来,我们可以使用MNE的函数将数据预处理为方便处理的格式。
# 设置参考电极
raw.set_eeg_reference()
# 选择感兴趣的通道
picks = mne.pick_types(raw.info, meg=False, eeg=True, eog=False, exclude='bads')
# 运行滤波器
fmin, fmax = 2, 30 # 设置感兴趣的频率范围
raw.filter(fmin, fmax, picks=picks)
# 使用MNE中的标准事件符号对数据进行分段
event_id = {'auditory/left': 1, 'auditory/right': 2}
events = mne.find_events(raw, stim_channel='STI 014', verbose=False)
# 创建Epochs对象
tmin, tmax = -0.2, 0.5 # 设置感兴趣的时间窗口
epochs = mne.Epochs(raw, events, event_id, tmin, tmax, proj=True, picks=picks,
baseline=(None, 0), preload=True)
# 平均每个事件的脑电图数据
evoked_left = epochs['auditory/left'].average()
evoked_right = epochs['auditory/right'].average()
现在,我们已经准备好对脑电图数据进行时频分析了。我们将使用MNE中的tfr_morlet函数进行时频分析,并绘制结果。
# 设置时频分析的参数
frequencies = [5, 10, 15, 20, 25] # 设置处理的频率范围
n_cycles = 5 # 对每个频率使用的周期数
# 对左侧音频事件进行时频分析
power_left = mne.time_frequency.tfr_morlet(evoked_left, freqs=frequencies, n_cycles=n_cycles,
use_fft=True, return_itc=False, decim=3,
average=True)
# 对右侧音频事件进行时频分析
power_right = mne.time_frequency.tfr_morlet(evoked_right, freqs=frequencies, n_cycles=n_cycles,
use_fft=True, return_itc=False, decim=3,
average=True)
# 绘制时频图
fig, axes = plt.subplots(2, 1)
power_left.plot(axes=axes[0], show=False)
axes[0].set_title('Left auditory response')
power_right.plot(axes=axes[1], show=False)
axes[1].set_title('Right auditory response')
plt.show()
这段代码将生成两个子图,分别显示左侧和右侧音频事件的时频图。图中的颜色表示不同频率的能量。根据图形,我们可以观察到不同频率特征带的活动模式。
这只是MNE的一小部分功能之一。MNE还提供了许多其他功能,包括频谱分析、相干性分析、事件相关势(ERPs)分析等。它还支持各种EEG/MEG数据文件格式,并提供了可视化工具来直观地展示分析结果。
总的来说,MNE是一个功能强大且易于使用的Python包,非常适合用于EEG和MEG数据的处理和分析。无论您是EEG/MEG领域的专业人士,还是对这些数据感兴趣的初学者,MNE都是一个值得尝试的工具。
