(二)数据结构与容器(下)
一、Evoked数据结构
1、定义:Evoked数据结构主要用于存储多次试验(trials)得到的平均数据(averaged data)。在MNE中evoked对象通常由平均后的epochs数据创建(通过mne.Epochs.average()方法)。
2、数据读取
以下代码从含有现成evoked数据集的文件中读取并创建
data_path = mne.datasets.sample.data_path()
fname = op.join(data_path, 'MEG', 'sample', 'sample_audvis-ave.fif')
evokeds = mne.read_evokeds(fname, baseline=(None, 0), proj=True)
返回的evokeds是一个含有若干evoked实例的列表,因为源文件中存储了多种evoked数据实例。另外,可以通过condition参数来指定要读取的evoked实例种类:
evoked = mne.read_evokeds(fname, condition='Left Auditory')
evoked.apply_baseline((None, 0)).apply_proj()
注:baseline是用来指定取校准值的区间,类型是一个二元组,分别对应区间的左端和右端。若左端不指定,则默认为数据的起始点,若右端不指定,则默认为数据的结尾点。通过计算区间内数据的平均值作为校准值,再将原始数据减去这个值进行数据的校准。
3、数据相关Info参数
Evoked对象的Info属性主要包含以下参数:
print(evoked.info)
print(evoked.times) # Timepoints of sampling.
print(evoked.nave) # Number of averaged epochs.
print(evoked.first) # First time sample.
print(evoked.last) # Last time sample.
print(evoked.comment) # Comment on dataset. Usually the condition.
print(evoked.kind) # Type of data, either average or standard_error.
4、访问Evoked对象数据
可以通过evoked.data来获取Evoked对象所存储的数据,该数据类型为(n_channels, n_times)类型的数组,即每行是一个信道,每列是一个采样点,每个数据代表当前信道在该采样点处若干个epochs的平均值。下图为Evoked数据图像
可以看到,这幅图和上篇文章最后对Epochs对象进行average操作后得到的结果是一样的(本质都是Evoked类型)。
5、保存Evoked数据
(1)保存单一的Evoked实例到一个文件,使用mne.Evoked.save()方法;
(2)保存多种Evoked实例到同一个文件,使用mne.write_evokeds()方法。
未完待续