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。请参阅下面的注释,以获取安装之前的其他特定特定依赖项,并参考我们的文档/常见问题解答以获取更多信息: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> 。我们还在.bcipy/downloads/ Directory中包含64位轮文件。
如果您使用的是Mac,则需要安装XCode并启用命令行工具。 xcode-select --install 。如果使用M1/2芯片,则需要在scripts/shell/m2chip_install.sh中使用安装脚本来安装先决条件。您可能还需要使用Rosetta终端来运行安装脚本,但是在我们使用M2芯片的测试中,这并不是必需的。
如果使用ZSH,而不是bash,则在运行BCIPY时可能会遇到分离故障。这是由于心理副本的依赖性问题,目前还没有已知的解决方案。请暂时使用Bash而不是ZSH。
为了在计算机上运行BCIPY,在遵循上述依赖项之后,您需要安装BCIPY软件包。
安装本地使用并使用GUI:
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或者,如果安装了制造,则可以运行以下命令进行安装:
# 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 ,或在模拟器模块中查看读数。
from bcipy . helpers import system_utils
system_utils . get_system_info ()在您的终端中运行以下命令以启动Bcipy GUI:
python bcipy/gui/BCInterface.py或者,如果安装了制造,则可以运行LOCER命令以从BCIPY root Directory启动GUI:
make bci-gui刺激:显示的单个字母,音调或图像(通常在查询中)。单数=刺激,复数=刺激。
试验:显示刺激后的数据集。一个 - -
查询:在拼写任务中固定十字架后的刺激集以收集用户意图。 a ---- b --- c ------
系列:每个系列至少包含一个查询。字母/图标的决定是在拼写任务中的系列后做出的。
会话:为任务收集的数据。由有关任务和系列列表组成的元数据。
协议:将在会话中执行的任务和操作集合。这定义为实验中,可以使用BCIPY GUI进行注册。
任务:用于BCI的刺激,试验,查询和系列的实验设计。例如,“ RSVP校准”是一项任务。
模式:任务类型之间的常见设计元素。例如,校准和免费拼写是模式。
范式:显示具有独特属性和模式的范式。前任。快速式视觉呈现(RSVP),矩阵拼写器,稳态视觉诱发电位(SSVEP)。
这是主要模块及其功能的列表。每个模块将包含其自己的读数,演示和测试。请查看他们以获取更多信息!
acquisition :获取数据,回馈所需的时间序列,在会话结束时保存以保存。display :屏幕上的刺激显示并传递刺激时间。signal :EEG信号模型,凝视信号模型,过滤器,处理,评估人员和观众。gui :最终用户接口到注册的BCI任务和参数编辑。请参阅bcinterface.py。helpers :模块,基本I/O和数据可视化之间相互作用所需的有用功能。language :在打字过程中给出下一个符号的概率。parameters :JSON参数的位置。这包括参数。JSON(主实验 /应用程序配置)和设备。static :图像和声音刺激,杂项手册以及GUI的可读文本。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
矩阵拼写器
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
该演示将加载参数并执行文件中定义的演示任务。大多数模块中都包含演示文件,除了GUI,信号和参数。将它们作为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 offset-recommend在编写测试时,将它们放入正确的模块中,将其放在测试文件夹中,并在文件前缀并用test_进行测试,以便Pytest发现它。查看其他模块测试以获取示例!
运行前必须安装开发要求: pip install -r dev_requirements.txt
在命令行中运行所有测试:
py . test在命令行中运行单个模块测试(Ex。Acquisition):
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或者,如果安装了制造,则可以运行以下命令以运行覆盖范围/pytest并生成html:
make coverage-html该项目使用Flake8执行了PEP风格的指南。
为了避免在格式上花费不必要的时间,我们建议使用autopep8 。您可以将文件或目录指定为自动格式。准备推出代码时,您可以运行以下命令以格式化您的代码:
# 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 。
或者,如果安装了制造,则可以运行以下命令以运行AUTOPEP8和FLAKE8:
make lint该项目强制执行mypy类型检查。打字项目配置在mypy.ini文件中找到。要运行类型检查,请运行以下命令:
mypy bcipy要生成报告,请运行以下命令:
mypy --html-report bcipy或者,如果安装了制造,则可以运行以下命令来运行mypy:
make type如果您想被添加到开发团队懈怠或有其他疑问中,请通过[email protected]与我们联系!
我们遵循并将强制执行贡献者的盟约,以促进此开源软件的安全和包容性环境,请参考此链接以获取更多信息:https://www.contributor-covenant.org/
其他准则:
请参阅此资源以获取示例:http://docs.python-guide.org/en/latest/writing/style/
所有贡献都非常感谢!