Python MNE - чтение данных ЭЭГ из массива
У меня есть данные ЭЭГ, которые поступают в виде трехмерного массива (эпоха * канал * время). timepoint - это массив из 256 элементов, содержащий каждый выбранный момент времени (всего 1 с, при 256 Гц). эпоха - экспериментальное испытание.
Я пытаюсь импортировать массив 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 ответа
Можно ли каким-либо образом преобразовать данные, полученные при настройке ЭЭГ, в формат.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')
, Это заставляет меня задаться вопросом, есть ли у вас более 64 каналов в вашем массиве, и один из ваших каналов на самом деле является каналом стимуляции... если это так, вы можете попробовать подать этот канал стимула наmne.read_events()
функция. В качестве альтернативы, возможно, ваш канал стим или событий может быть отдельным массивом или, возможно, необработанным?
Надеюсь, что это по крайней мере несколько полезно и удачи!
Если кому-то еще интересно, они добавили в свой документ учебник: Создание структур данных MNE-Python с нуля . Вы должны найти 2 необходимых шага: