6

我有以 3D numpy 数组(epoch * channel * timepoint)形式出现的 EEG 数据。timepoint 是一个 256 个元素的数组,包含每个采样的时间点(总共 1 秒,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 数据的正确方法是什么,可以最容易地完成我的预期分析?

4

2 回答 2

0

如果其他人想知道,他们在他们的文档中添加了一个教程:从头开始创建 MNE-Python 数据结构。您应该能够找到所需的 2 个步骤:

于 2021-07-27T15:01:38.227 回答
0

有什么方法可以将您从 EEG 设置中获取的数据转换为 .fif 格式?MNE 页面在其教程中谈到的“原始”数据格式是 .fif 格式文件。如果您可以将您的脑电图数据转换为 .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()函数。或者,也许您的刺激或事件通道可能是一个单独的数组或可能未处理?

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

于 2015-08-12T01:59:22.470 回答