我的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的帮助。
哪种方法可以导入这些最简单的数据,以便最简单地完成预期的分析?
答案 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 个步骤: