实时处理和绘制LSL上的数据流,重点是学生主导的BCI项目。

WizardHat的Python项目详细描述


向导

logo

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代码时提供两个选项:

  1. 从muse或其他eeg设备传输数据
  2. 为测试和调试随机生成的数据流

要开始流式处理,首先需要将ble2lslwizardhat.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。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java下载并将位图设置为列表视图   java有用于MyBatis XML sqlmaps的Javadoc样式的文档工具吗?   放置属性文件的位置,以便java命令在类路径中看到它   使用jschexception验证false的java SSH有时会失败   java如何在Android中使用MPAndroidChart定制饼图?   java如何使用R.String初始化字符串。文本   BeanValidation的java上下文相关验证   java反射:通过反射加载的类中的常量变量   安卓 Java使用相同的规则压缩多个字符串   公告命令中的java换行符不工作   带有整数、字符串和项目符号列表的java txt文件(1.)   arraylist Connect四代码(Java)列放置不工作   用于多个报告的java jasper页面编号   java如何消除Nimbus LAF中按钮周围的空间?   安卓 setImageResource内置自定义ArrayAdapter。lang.NullPointerException   java Android将Json转换为ArrayList多级可扩展列表视图   java Eclipse,Web工具平台,导致JSP中找不到元素错误,但一切正常