我有3D numpy数组形式的EEG数据(历元* channel *时间点)。时间点是一个256个元素的数组,包含每个采样的时间点(总计1s,256Hz)。 epoch是一项实验性试验。
我正在尝试将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的帮助。
导入此numpy数据的正确方法是什么,这将最容易完成我的预期分析?
最佳答案
有什么方法可以将您从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()
,但最大的问题是,事件数据可能存储在哪里,以便您可以阅读... events = mne.find_events(raw, stim_channel='STI 014')
。这让我想知道您的numpy数组中是否有64个以上的 channel ,而您的其中一个 channel 实际上是一个刺激 channel ...如果是这种情况,您可以尝试将该刺激 channel 馈送到mne.read_events()
函数。或者,您的刺激或事件 channel 可能是一个单独的数组,还是未处理? 希望这至少对您有所帮助,并祝您好运!