实时处理和绘制LSL上的数据流,重点是学生主导的BCI项目。
WizardHat的Python项目详细描述
向导
wizardhat是一个库,用于处理、转换和可视化通过实验室流层(lsl)协议从消费者级设备流式传输的eeg数据。wizardhat的目的是让用户能够使用高级api轻松灵活地构建脑机接口(bci),技术细节在后台管理。与ble2lsl搭配,wizardhat目前支持来自muse(2016)大脑感应头带和openbci神经节的流媒体。Wizardhat易于使用,只需要三行代码即可启动。
巫师帽由皇后大学的梅林神经科技公司制造。
注:积极开发
我们Merlin Neurotech的专业团队正在不断改进Wizardhat并添加新功能。 当前正在进行的项目:
- mne库兼容性
- 实现简单的过滤器
如果您正在寻找的功能正在开发中,请尽快返回!
开始
安装wizardhat的过程取决于您是否将为其开发做出贡献。在这两种情况下,首先创建并激活一个新的python虚拟环境。
安装仅限使用
只需运行
pip install wizardhat
这将自动安装WizardHat的最新版本以及所需的依赖项,包括ble2lsl。
安装用于开发
要设置wizardhat进行开发,首先在github上分叉存储库,然后克隆您的分叉:
git clone https://github.com/<your-github-username>/WizardHat.git
如果您也在为ble2lsl开发,那么也可以使用fork,然后克隆ble2lsl存储库,并安装其依赖项:
git clone https://github.com/<your-github-username>/ble2lsl.git
cd ble2lsl
pip install -e .
cd ..
无论是否克隆了ble2lsl,请安装wizardhat的其余依赖项:
cd WizardHat
pip install -e .
最后一个命令创建wizardhat的可编辑安装;即在安装到活动虚拟环境后,在任何python终端/脚本中运行import wizardhat
都将从fork的文件夹中导入模块的当前(即工作)版本。
最后
若要确保无bug体验,请在文本或代码编辑器中打开[虚拟环境名称]/lib/python3.6/site packages/pygatt/backends/bgapi/bgapi.py并添加:
time.sleep(0.25)
在第200行和第201行之间保存文件。这可确保蓝牙协议在超时前有足够的时间连接到MUSE。
现在你可以使用巫师帽了!
使用wizardhat
我们的库在生成、调试或测试BCI代码时提供两个选项:
- 从muse或其他eeg设备传输数据
- 为测试和调试随机生成的数据流
要开始流式处理,首先需要将ble2lsl
和wizardhat.acquire
导入python工作区。不同设备的ble设备参数存储在ble2lsl.devices
中的相应模块中。
import ble2lsl
from ble2lsl.devices import muse2016
from wizardhat import acquire
然后,您需要创建一个流媒体插座,该插座与EEG设备建立蓝牙连接:
streamer = ble2lsl.Streamer(muse2016)
通过模拟(频道数量、采样率和元数据)MUSE 2016的出口来传输虚拟数据:
dummy_streamer = ble2lsl.Dummy(muse2016)
接下来,要存储和记录数据,请添加以下行以捕获出口流:
receiver = acquire.Receiver()
请注意,不需要将出口拖缆作为参数传递给此函数。lsl可以在本地网络上传输,而且不需要在与wizardhat相同的进程中运行。相反,接收器
会自动查找并连接到LSL插座;如果有多个插座可用,它会提示您从列表中进行选择
现在您的拖缆正在接收数据,您可以在线可视化和操作它。数据被流式传输到结构化数组中,第一列有时间戳,其余列有通道数据。默认情况下,这些数组包含流式数据的最后10秒(最接近的样本),可通过streamer.buffers
字典访问。例如,muse 2016的eeg流(标记为"eeg")的最新时间戳和样本的结构化数组可通过以下方式访问:
pip install wizardhat
0
可用流取决于设备,并在ble2lsl.device s
中的设备模块中指定。例如,muse 2016头带提供以下流类型:"eeg"、"Accelerator"、"陀螺仪"、"遥测"和"状态"。在每个时间窗口之后,数据将保存到名为"data"的文件夹下目录中的csv文件中,并在流运行时不断更新。每个数据缓冲区都有一个相关的csv文件,附带一个提供元数据的同名json文件。
要更深入地了解我们的框架是如何运行的,请看一看下面的内容。
致谢
该项目的灵感来源于Alexander Barachant的"muse lsl" rel="nofollow">Muse lsl,其中一些模块最初基于该网站。openbci神经节的设备规范主要来自于openbci python。