Python MNE - 从数组中读取EEG数据

时间:2015-08-12 00:39:59

标签: python numpy signal-processing mne-python

我的EEG数据以3D numpy数组(epoch * channel * timepoint)的形式出现。 timepoint是一个256元素的数组,包含每个采样时间点(总共1个,256Hz)。时代是一项实验性试验。

我试图将numpy数组导入Python-MNE(http://martinos.org/mne/stable/mne-python.html)理解的形式,但我遇到了麻烦

首先,我不确定是否应将此原始数据导入为RawArray或EpochsArray。我用这个尝试了后者:

ch_names = list containing my 64 eeg channel names
allData = 3d numpy array as described above

info = mne.create_info(ch_names, 256, ch_types='eeg')

event_id = 1

#I got this from a tutorial but really unsure what it does and I think this may be the problem
events = np.array([200, event_id])  #I got this from a tutorial but really unsure what it does and I think this may be the problem

raw = mne.EpochsArray(allData, info, events=events)

picks = mne.pick_types(info, meg=False, eeg=True, misc=False)

raw.plot(picks=picks, show=True, block=True)

当我运行这个时,我得到一个索引错误:"数组的索引太多"

最终我想对数据做一些STFT和CSP分析,但是现在我需要一些初步重组和导入MNE的帮助。

哪种方法可以导入这些最简单的数据,以便最简单地完成预期的分析?

2 个答案:

答案 0 :(得分:0)

有什么方法可以将您从EEG设置中获取的数据转换为.fif格式吗? MNE页面在其教程中讨论的“原始”数据格式是.fif格式文件。如果您可以将您的eeg数据转换为.fif格式,您几乎可以一步一步地按照教程...

将各种其他EEG文件格式转换为.fif:http://martinos.org/mne/stable/manual/convert.html

的函数

如果这不是一个选项,这里有一些想法:

  • EpochsArray()看起来是正确的函数,因为它期望具有(n_epochs,n_channels,n_times)形状的数据数组。为确保这一点,请检查allData数组的形状是否与np.shape(allData)匹配。

  • 在相关说明中,EpochsArray()提到mne.read_events()的帮助页面是一个重要问题,但您的事件数据可能会存储在哪里,以便您能够阅读...

  • 根据您链接的教程,如果您从.fif文件开始,获取“事件”似乎是: events = mne.find_events(raw, stim_channel='STI 014')。这让我想知道你的numpy阵列中是否有超过64个通道,而你的一个通道实际上是一个刺激通道...如果是这种情况你可以尝试将该刺激通道输入mne.read_events()功能。或者,您的刺激或事件通道可能是一个单独的阵列,也可能是未加工的?

希望这至少有点帮助,祝你好运!

答案 1 :(得分:0)

以防其他人想知道,他们在他们的文档中添加了一个教程:Creating MNE-Python data structures from scratch。您应该能够找到所需的 2 个步骤: