我有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() ,但最大的问题是,事件数据可能存储在哪里,以便您可以阅读...
  • 根据您链接的教程,如果您从.fif文件开始,则似乎是获取“事件”的方式是:events = mne.find_events(raw, stim_channel='STI 014')。这让我想知道您的numpy数组中是否有64个以上的 channel ,而您的其中一个 channel 实际上是一个刺激 channel ...如果是这种情况,您可以尝试将该刺激 channel 馈送到mne.read_events()函数。或者,您的刺激或事件 channel 可能是一个单独的数组,还是未处理?

  • 希望这至少对您有所帮助,并祝您好运!

    10-06 00:49