BCIPY-это библиотека для проведения экспериментов по интерфейсу мозга-компьютера в Python. Он функционирует как автономное приложение для экспериментального сбора данных, или вы можете взять необходимые вам инструменты и начать кодировать свою собственную систему. Смотрите нашу официальную документацию BCIPY, включая принадлежность и дополнительную контекстную информацию здесь.
Он будет работать на последних Windows (7, 10, 11), Linux (Ubuntu 22.04) и MacOS (Big SUR). Другие версии также могут работать, но не гарантируются. Чтобы увидеть поддерживаемые версии и операционные системы при этом выпуске, см. Здесь: BCIPY сборка.
Пожалуйста, цитируйте нас при использовании!
Memmott, T., Koçanaoğulları, A., Lawhead, M., Klee, D., Dudy, S., Fried-Oken, M., & Oken, B. (2021). BciPy: brain–computer interface software in Python. Brain-Computer Interfaces, 1-18.
Этот проект требует Python 3.8 или 3.9. Пожалуйста, см. Примечания ниже для дополнительных ОС-зависимостей, прежде чем установка может быть завершена и ссылается на нашу документацию/FAQS для получения дополнительной информации: https://bcipy.github.io/hardware-os-config/
Вам нужно будет установить предпосылки, определенные в scriptsshelllinux_requirements.sh а также pip install attrdict3 .
Если вы используете машину Windows, вам нужно будет установить инструменты Microsoft Visual C ++.
Только Python 3.9! Вам нужно будет установить Pywinhook вручную. См. Здесь для соответствующего колеса колеса ( pyWinhook‑1.6.2‑cp39‑cp39‑win_amd64.whl ). Затем запустите pip install <path_to_wheel_file> . Мы также включаем 64-битный колесный файл в .bcipy/downloads/ Directory.
Если вы используете Mac, вам нужно будет установить XCode и включить инструменты командной строки. xcode-select --install . При использовании чипа M1/2 вам нужно будет использовать сценарий установки в scripts/shell/m2chip_install.sh для установки предпосылок. Вам также может потребоваться использовать терминал Rosetta для запуска сценария установки, но это не было необходимо в нашем тестировании с использованием чипов M2.
Если вы используете ZSH, вместо BASH вы можете столкнуться с ошибкой сегментирования при запуске BCIPY. Это связано с проблемой в зависимости от психопии без известного исправления. Пожалуйста, используйте Bash вместо ZSH на данный момент.
Чтобы запустить BCIPY на вашем компьютере, после того, как вы следите за зависимостями выше, вам нужно будет установить пакет BCIPY.
Для установки для использования локально и использования графического интерфейса:
pip install kenlm==0.1 --global-option="--max_order=12" .pip install psychopy==2023.2.1 --no-deps .pip install -e .Если желать последней версии от PYPI и создать с помощью модулей:
pip install bcipyВ качестве альтернативы, если установлен Make, вы можете запустить команду Folly для установки:
# install in development mode
make dev-install Вызовите протокол эксперимента или задачу непосредственно с помощью утилиты командной строки bcipy .
bcipy --helpbcipy --user "bci_user" --task "RSVP Calibration"bcipy --user "bci_user" --experiment "default"bcipy --fakebcipy --novizbcipy --alertbcipy --parameters "path/to/valid/parameters.json" Чтобы обучить сигнальную модель (в настоящее время PCARDAKDE ), запустите следующую команду после установки BCIPY:
bcipy-train
bcipy-train --helpbcipy-train -d path/to/databcipy-train -vbcipy-train -sbcipy-train --balanced-accbcipy-train --alertbcipy-train -p "path/to/valid/parameters.json" Чтобы сгенерировать графики, которые можно показать или сохранить после сбора данных, запустите следующую команду после установки BCIPY:
bcipy-erp-viz
bcipy-erp-viz --helpbcipy-erp-viz -s path/to/databcipy-erp-viz --showbcipy-erp-viz --savebcipy-erp-viz -p "path/to/valid/parameters.json" Симулятор можно запустить с помощью утилиты командной строки bcipy-sim .
Бывший. bcipy-sim -d my_data_folder/ -p my_parameters.json -m my_models/ -n 5
Запустите bcipy-sim --help для документации или просмотрите readme в модуле симулятора.
from bcipy . helpers import system_utils
system_utils . get_system_info ()Запустите следующую команду в вашем терминале, чтобы запустить графический интерфейс BCIPY:
python bcipy/gui/BCInterface.pyВ качестве альтернативы, если установлен Make, вы можете запустить команду Follow, чтобы запустить графический интерфейс из корневого каталога BCIPY:
make bci-guiСтимулы : одна буква, тон или изображение показано (обычно в расследовании). Единственное число = стимул, множественное число = стимулы.
Испытание : сбор данных после стимулов. А ------
Запрос : набор стимулов после перехода фиксации в задании правописания, чтобы собрать намерения пользователя. A ---- b --- c ------
Серия : Каждая серия содержит хотя бы один запрос. Письмо/значок принято после серии в задании по орфографии.
Сеанс : данные, собранные для задачи. Состоит из метаданных о задаче и списке серий.
Протокол : коллекция задач и действий, которые будут выполнены в сеансе. Это определяется как в рамках экспериментов и может быть зарегистрировано с использованием графического интерфейса BCIPY.
Задача : экспериментальный дизайн со стимулами, испытаниями, запросами и сериями для использования в BCI. Например, «калибровка RSVP» является задачей.
Режим : общие элементы дизайна между типами задач. Например, калибровка и бесплатное правописание являются режимами.
Парадигма : отображение парадигмы с уникальными свойствами и режимами. Бывший. Быстрое визуальное представление (RSVP), матрица Speller, устойчивый визуальный потенциал (SSVEP).
Это список основных модулей и их функциональность. Каждый модуль будет содержать свои собственные Readme, демонстрацию и тесты. Пожалуйста, проверьте их для получения дополнительной информации!
acquisition : получает данные, возвращает желаемые временные ряды, сохраняет файл в конце сеанса.display : Обрабатывает отображение стимулов на экране и передает время стимула.signal : модели сигналов ЭЭГ, модели сигнала взгляда, фильтры, обработка, оценщики и зрители.gui : интерфейс конечного пользователя в зарегистрированные задачи BCI и редактирование параметров. См. Bcinterface.py.helpers : полезные функции, необходимые для взаимодействия между модулями, базовым вводом -выводом и визуализацией данных.language : дает вероятности следующих символов во время печати.parameters : расположение параметров JSON. Это включает в себя параметры.json (основной эксперимент / конфигурация приложения) и device.json (реестр устройств и конфигурация).static : Изображение и звуковые стимулы, руководства по разнообразию и читаемые тексты для графического интерфейса.task : BCIPY реализовали пользовательские задачи. Основная коллекция модулей BCI для использования во время различных экспериментов. Бывший. Калибровка RSVP.feedback : механизмы обратной связи для звука и визуальных стимулов.main : исполнитель экспериментов. Основная точка входа в приложениеconfig : параметры конфигурации для приложения, включая пути и имена файлов данных.simulator : обеспечивает поддержку для выполнения симуляций, основанных на ранее собранных данных. См. bcipy/task/README.md для получения дополнительной информации обо всех поддерживаемых парадигмах, задачах, действиях и режимах. Ниже приведены поддерживаемые и проверенные парадигмы:
Rsvpkeyboard
*RSVP KeyboardTM* is an EEG (electroencephalography) based BCI (brain computer interface) typing system. It utilizes a visual presentation technique called rapid serial visual presentation (RSVP). In RSVP, the options are presented rapidly at a single location with a temporal separation. Similarly in RSVP KeyboardTM, the symbols (the letters and additional symbols) are shown at the center of screen. When the subject wants to select a symbol, they await the intended symbol during the presentation and elicit a p300 response to a target symbol.
Цитата:
Orhan, U., Hild, K. E., 2nd, Erdogmus, D., Roark, B., Oken, B., & Fried-Oken, M. (2012). RSVP Keyboard: An EEG Based Typing Interface. Proceedings of the ... IEEE International Conference on Acoustics, Speech, and Signal Processing. ICASSP (Conference), 10.1109/ICASSP.2012.6287966. https://doi.org/10.1109/ICASSP.2012.6287966
Матрица Speller
Matrix Speller is an EEG (electroencephalography) based BCI (brain computer interface) typing system. It utilizes a visual presentation technique called Single Character Presentation (SCP). In matrix speller, the symbols are arranged in a matrix with fixed number of rows and columns. Using SCP, subsets of these symbols are intensified (i.e. highlighted) usually in pseudorandom order to produce an odd ball paradigm to induce p300 responses.
Цитата:
Farwell, L. A., & Donchin, E. (1988). Talking off the top of your head: toward a mental prosthesis utilizing event-related brain potentials. Electroencephalography and clinical Neurophysiology, 70(6), 510-523.
Ahani A, Moghadamfalahi M, Erdogmus D. Language-Model Assisted And Icon-based Communication Through a Brain Computer Interface With Different Presentation Paradigms. IEEE Trans Neural Syst Rehabil Eng. 2018 Jul 25. doi: 10.1109/TNSRE.2018.2859432.
Все основные функции и модули имеют демонстрационные и тестовые файлы, связанные с ними, которые могут выполняться локально. Это должно помочь вам ориентироваться на функциональность, а также служить документацией. Если вы добавите в репо, вы должны добавить тесты и исправлять любой тест, который сбой при изменении кода.
Например, вы можете запустить главную демонстрацию BCIPY по:
python demo/bci_main_demo.py
Эта демонстрация будет загружаться в параметрах и выполнить демонстрационную задачу, определенную в файле. В большинстве модулей содержатся демонстрационные файлы, за исключением графического интерфейса, сигнала и параметров. Запустите их как сценарий Python!
Статическое определение смещения и коррекция являются критическими шагами перед началом эксперимента. BCIPY использует LSL для получения данных ЭЭГ и психопии для представления стимулов.
Документация по синхронизации LSL Психопия документация
Статическое смещение - это обычная разница во времени между нашими сигналами и стимулами. Это смещение определяется путем тестирования с помощью фотодиода или другого механизма запуска. Коррекция смещения осуществляется путем смещения сигнала ЭЭГ с помощью определенного смещения с использованием параметра static_offset .
После запуска задачи проверки времени (например, RSVptimingVerification) с фотодиодом, прикрепленным к дисплее и подключенным к устройству, смещение можно определить путем анализа данных. Используйте модуль offset , чтобы рекомендовать значение коррекции смещения и отобразите результаты.
Чтобы запустить определение смещения и распечатать результаты, используйте следующую команду:
python bcipy/helpers/offset.py -rПосле запуска вышеуказанной команды рекомендуемое значение коррекции смещения будет отображаться в терминале и может быть передано для определения стабильности системы и отображения результатов.
# Let's say the recommneded offset value is 0.1
python bcipy/helpers/offset.py --offset " 0.1 " -pАльтернативно, если установлен Make, вы можете запустить команду Folly, чтобы запустить определение смещения и отобразить результаты:
make offset-recommend При написании тестов поместите их в правильный модуль, в папку Tests, префикс файл и тестируйте себя с помощью test_ , чтобы Pytest обнаружил его. Смотрите другие модульные тесты для примеров!
Требования к разработке должны быть установлены перед запуском: pip install -r dev_requirements.txt
Чтобы запустить все тесты, в командной строке:
py . testЧтобы запустить однократные тесты модулей (приобретение Ex.), В командной строке:
py . test acquisitionДля создания метрик охвата тестирования в командной строке:
coverage run --branch --source=bcipy -m pytest --mpl -k " not slow "
# Generate a command line report
coverage report
# Generate html doc in the bci folder. Navigate to index.html and click.
coverage htmlВ качестве альтернативы, если установлен Make, вы можете запустить команду Follow, чтобы запустить покрытие/Pytest и генерировать HTML:
make coverage-html Этот проект обеспечивает соблюдение руководящих принципов стиля PEP с использованием Flake8.
Чтобы не тратить ненужное время на форматирование, мы рекомендуем использовать autopep8 . Вы можете указать файл или каталог в формате Auto. Когда вы будете готовы натолкнуть код, вы можете запустить следующие команды для форматирования вашего кода:
# autoformat all files in bcipy
autopep8 --in-place --aggressive -r bcipy
# autoformat only the processor file
autopep8 --in-place --aggressive bcipy/acquisition/processor.py Наконец, запустите пробег ворса: flake8 bcipy .
С другой стороны, если Make установлена, вы можете запустить команду Follow, чтобы запустить Autopep8 и Flake8:
make lint Этот проект обеспечивает проверку типа mypy . Конфигурация проекта Typing находится в файле mypy.ini. Чтобы запустить проверку типа, запустите следующую команду:
mypy bcipyЧтобы сгенерировать отчет, запустите следующую команду:
mypy --html-report bcipyС другой стороны, если Make установлена, вы можете запустить команду Follow для запуска Mypy:
make typeЕсли вы хотите быть добавленным в команду разработчиков Slack или у вас есть дополнительные вопросы, пожалуйста, обратитесь к нам по адресу [email protected]!
Мы следуем и будем обеспечивать соблюдение завета участника, чтобы способствовать безопасной и инклюзивной среде для этого программного обеспечения с открытым исходным кодом, обратитесь к этой ссылке для получения дополнительной информации: https://www.contributor-covenant.org/
Другие рекомендации:
Смотрите этот ресурс для примеров: http://docs.python-guide.org/en/latest/writing/style/
Все вклады высоко ценятся!