воскресенье, 23 октября 2011 г.

Руника (или решаем задачу о шумной вечеринке)

Сразу предупреждаю, к скандинавским или каким либо другим рунам пост никакого отношения не имеет. :)
RunICA - это название анализа выполняемого пакетом EEGLAB, разработанного в SCCN (San Diego.California)
Ранее Я пробовал разобраться с EEGLAB. Но в виду его недружелюбия и наличия гораздо более понятных и интуитивных программ (BioExplorer и OpenVibe) отложил разбирательства до лучших времен.
Поводом вернутся послужил замечательный пост о применении ICA для анализа ЭЭГ.

Суть метода заключается в решении так называемой "COCKTAIL PARTY PROBLEM" - Задачи о шумной вечеринки. Описать ее можно так:
"Представьте что Вы находитесь на шумной вечеринке. Вам не сложно следить за разговором ваших соседей, даже если в комнате множество источников звуков: других разговоров, музыки и телевизора. Вы при этом можете слышать шум проезжающих мимо дома машин. Каким способом можно различить эти источники с помощью компьютера?"
Эту задачу можно решить с помощью ICA (Independent component analysis) если в разных местах комнаты поместить столько микрофонов, сколько независимых источников звука нам нужно выделить.

Если смотреть на ЭЭГ то можно увидеть похожую ситуацию, в сигнале измеряемом в точке F7, присутствует определенный вклад нейронов находящихся в точке AF3.


Попробуем применить этот анализ на данных полученных от шлема Emotiv EPOC.

1) Установка EEGLAB
Есть два варианта использования EEGLAB, первый - скачать дистрибутив не требующий установки MATLAB , но при этом Вы будете использовать достаточно старую версию 7.1.3.13b.
второй - скачать последнюю версию (Я качал eeglab10_2_5_6a.zip) . Разницы в анализе Я не заметил. Вроде как список поддерживаемых файлов для Import-а побольше. Что касается скорости то такое ощущение что 7.1 - работает по-шустрее.

2) Запись данных
Т.к. EEGLAB принимает EDF файлы, файл будем готовить в TestBench (SDK Research Edition) Я думаю на этом этапе никаких затруднений не возникло.

UPD: Важно! При записи EDF файлов в TestBench, обнаружилась ошибка (не только у меня) сохранения данных (данные искажаются , эпизодически добавляется смещение примерно на 600 мКв). Всем кто официально пользуется Emotiv Research SDK 1.0.0.4 (Testbench версия 1.5.0.3) рекомендую зайти в эту ветку и отписать о некорректной работе, Вам пришлют обновленную версию Testbench-a. Обращаю внимание, что речь идет о некорректной работе программы TestBench. Данные со шлема поступают верно (проверено лично). Пока не выпущено официальное обновление SDK, данные для EEGLAB советую писать OpenVibe-ом в GDF файл. EEGLAB их прекрасно понимает.

3) Запуск EEGLAB
Если Вы скачали версию 7.1 (то перед запуском EEGLAB вам надо все распаковать и запустить Setup.bat - который настроит необходимые компоненты)
Если Вы работаете из MATLAB-а (с версией 10.2) , то просто перейдите в MATLAB в директорию куда распаковали файлы и наберите команду eeglab)

4) Импорт данных
В открывшемся окне выбираем в меню (File > Import Data > From EDF File ... )
Находим записанный на 2-ом этапе файл. У меня это был trance2.edf - записывал сессию с погружением в транс. (быстренько так 5 минут по-трансил :)
На выдачу каком-то непонятного окна просто жму - ОК. (Это кстати мне больше всего нравится в EEGLAB - там даже где-то прямо так и написано , "ЕСЛИ ВЫ НИЧЕГО НЕ ПОНЯЛИ, ПРОСТО НАЖМИТЕ - ОК")
Далее нас спросят как обозвать набор данных - обзову его Trance

Алилуя :) данные импортированы.
Но что это за 35 каналов которые были загружены ?
Если Вы читали мой пост "EEG>>CSV" то знаете что Emotiv Testbench пихает в EDF файл по мимо самих данных от каналов еще кучу служебной информации. Это маркеры, номера пакетов, данные о контактировании. Это все нам будет мешать при проведении ICA поэтому , все это надо безжалостно удалить.

5) Удаляем ненужные каналы
Заходим в меню Edit > Select Data и на против поля Channel Range жмем кнопочку [...]
Нам будет выведен список каналов , выбираем нужные 14 с (3)AF3 по (16) AF4
В появившемся окне ставим галочку напротив "Overwrite it in memory ..." и жмем ОК.

6) Задаем расположение электродов
Чтобы ICA работал правильно он должен знать геометрическое расположение электродов. К счастью вбивать руками ничего не надо EEGLAB по названию каналов сам введет нужные координаты. Для этого достаточно просто войти в нужное меню.
Итак заходим Edit > Channel Locations и далее просто два раза жмем OK :)

7) Запускаем Run ICA
В принципе все готово заходим в Tools и выбираем пункт Run ICA. и ждем какое-то время (Я ждал меньше минуты).

8) Смотрим что получилось
Полученные в результате анализа компоненты доступны к обычному просмотру в виде ЭЭГ (Plot > Component Activations)
Также можно посмотреть распределение по частоте (Plot>Component Spectra and maps)
Например из этого графика видно, что основным источником альфа-ритмов у меня является точка F4 правого полушария. (Почему-то думал, что это должны были быть O1 или O2)
UPD: После изучения очень хорошей книги "Количественная ЭЭГ, когнитивные вызванные потенциалы мозга человека и нейротерапия" понял почему что альфа-ритм проявился в точке C4, это проявление роландических Мю-ритмов (Rolandic Mu-rithms). А вот то что они у меня оказались не шибко симметричными - требует дополнительного расследования.

Что еще можно сделать?
В принципе для улучшения результатов можно попробовать предварительно почистить ЭЭГ вручную от всяческих артефактов. Сделать это можно через Plot > Channel Data (Scroll).
Можно пройтись по данным фильтрами Tools > Filter the Data > Basic FIR или Short IIR
Убрать постоянное смещение каналов (Tools > Remove Baseline).

ИтогИ:
Достаточно интересная программа, для которой найдется свое место в сундучке с инструментами мозгонавта. Несмотря на первое - отталкивающее впечатление, к среде быстро привыкаешь.
"Первый раз всегда больно, а потом ничего.. привыкнешь...даже понравится."
UPD : Нашел видео (на английском) где за процессом можно понаблюдать.
Part 1 Brain Mapping With EEGLAB and Emotiv Epoc headset & TestBench V1.5
Part 2 Brain Mapping With EEGLAB and Emotiv Epoc headset & TestBench V1.5

4 комментария:

  1. На самом деле, достаточно популярная программа среди тех кто занимается ЭЭГ

    ОтветитьУдалить
  2. но жутко неудобная для своих целей - иногда проще написать функцию заново, чем разбираться как там в ээглаб все работает, а интерфейс с первого раза вообще отбивает все желание работать. Страшнее только у LORETA (там вообще просто пестня)

    ОтветитьУдалить
  3. Ну что выросло то выросло. Один то раз можно себя заставить :) Я вроде как даже и привык. Но когда разберусь как делать ICA в OpenVibe, в EEGLAB только для конвертации данных в GDF формат буду лазить. Уж больно там много чего поддерживается :)
    Кого заинтересовало могут посмотреть у Яна Ренарда (Yann Renard) есть пост на эту тему http://stickyvibe.tuxfamily.org/blog/?p=594

    ОтветитьУдалить
  4. Поставил LORETA - интерфейс явно разработан для вундеркиндов :) Удобство работы пользователя последнее о чем думали создатели :) Может это такая хитрая сегментация рынка? Либо программа удобная и платная. Либо дико не удобная - но бесплатная.

    ОтветитьУдалить