четверг, 13 октября 2011 г.

EEG >> CSV

Вот такая прозаическая тема.
Маленький обзор методов преобразования данных полученных от Emotiv в вид удобоваримый для пост-обработки.

Опробованные способы:
Tesbench от Emotiv Systems
Bioexplorer от CyberEvolution
OpenVibe от INRIA (IMHO: наилучший)


Testbench(Emotiv Systems):
1) Запускаем TestBench.
2) Жмем кнопочку SaveData.
3) Выбираем куда будет писаться файл.
4) Пишем сессию.
5) Лезем в пункт меню "Tools -> Launch EDF to CSV converter ..."
6) Затаскиваем CSV в программу обработки данных, например в LabView или горячо любимый некоторыми знакомыми Excel ;)

Я пытался просмотреть EDF-файл сторонней программой (EDFBrowser) - безрезультатно. Видимо ребята отошли от стандарта (как нехорошо с их стороны)
По утверждению gmac-а (админа форума Emotiv) файл читается программой EEGLab и в MatLab (Надо кстати проверить, что-то до EEGLab-а руки пока не дошли)

Пока в качестве бонуса кладу проект для Labview, который переваривает CSV от Emotiv.


Плюсы:
Не надо ничего ставить из стороннего софта, кроме SDK и самой программы анализа.

Минусы:
Нельзя из CSV файла выкинуть ненужную инфу. В файле по мимо данных от всех каналов, еще каналы с уровнем контактирования и отладочные маркеры . В итоге получаются файлы очень большого размера.
Пример на 1 минуту данных сформирован EDF файл размера 550Кб, а при конверсии в CSV получился файл размером 6Мб !!!. Т.е. час данных будет весить 180 Мб.
Причем в файле данные пишутся с точностью 20 знаков после запятой :) (228.06315789473683000000)
Во-первых мне что то слабо вериться, что Emotiv с ТАКОЙ точностью меряет данные.
Во-вторых, нули то зачем выводить с такой точностью. (3959.00000000000000000000)
Не Я конечно понимаю сейчас винты не маленькие особенно у ученых :) Но блин оно же потом медленно и в LabView обрабатываться будет.
Нельзя менять шаг записи данных (SampleRate).

Вобщем ребятам из Emotiv есть еще над чем поработать в TestBench-е :)

BioExplorer (www.cyberevolution.com):
1) Запускаем BioExplorer
2) Добавляем в список экспортируемых данных нужные переменные и каналы( Design -> Export Settings -> Record).Выбранные каналы в блок-схеме будут отмечены светло-зеленой точкой.
3) Пишем сессию.
4) Получаем два текстовых файла с расширениями epoch.txt и summary.txt . При этом минимальную разрешающая способность файла которую мне удалось получить 0,1 секунды
3) Затаскиваем дальше в программу обработчик.

Плюсы: Можно указать, что из каналов и переменных будет писаться в файл. Можно писать данные которые уже прошли предварительную обработку. Можно варьировать шаг данных (Epoches) от 0.1 секунды и выше.

Минусы: Низкая дискретность записи данных максимум 0.1 сек. Запись данных осуществляется только в процессе записи(Record) , чтобы перегнать уже существующие записи потребуется писать какую-то свою программу.

OpenVibe (INRIA)

1) Добавляем компонент чтения (GDF File Reader) или сбора данных (Acquision Client).
2) Добавляем компонент выборки канала для записи.
3) Добавляем компонент прореживания измерений.
4) Добавляем компонент вывода в CSV файл.
5) Жмем Play и наслаждаемся результатом. :)

Плюсы: Можно выбрать какой из каналов писать файл. Можно сделать предварительную обработку. Можно соответствующим блоком произвести изменения шага дискретизации данных. Можно делать экспорт сохраненных раннее в GDF формат данных.

Минусы: Редко но падает по непонятным причинам. Есть еще какая-то галочка при записи CSV - Use Compression (но судя по тому что в логе пишется "Compressed File not used yet" она не работает :))

Выводы: OpenVibe - rulezzz :)

Комментариев нет:

Отправить комментарий