emotiv eeg cortex 2 api的全面线程异步python客户端

cortex2的Python项目详细描述


emotiv cortex2 python客户端

pypi version

作者:甲基龙


emotiv epoc的图像结果

emotiv徽标的图像结果

图片来源:emotiv

简介

用于emotiv eeg cortex 2 api的非官方python客户端。

具有通过异步WebSockets进行通信的整个JSON-RPCAPI以提高速度。

Cortex 2应用程序用于承载WebSocket Web服务器网关接口,该接口接受JSON请求并返回JSON数据。

这个python客户机被设计成上述api的包装客户机。它使用一个单独的异步线程流多会话传感器数据!

API参考:https://emotiv.gitbook.io/cortex-api/

PYPI链接:https://pypi.org/manage/project/cortex2 rel="nofollow">https://pypi.org/manage/project/cortex2

支持我的努力!

是的!给龙买杯咖啡!

或留下提示!_(°11;°*)

要求

  • Python 3.6或更高版本

安装

pip install cortex2

示例用法

记住通过注册来设置您的客户ID和密码

还要确保您已经启动了emotivapp,因为它托管了websocket服务器!(您可能需要使用Windows或Mac。)

如果客户端无法连接,则可能需要使用客户端重新启动脚本。

fromcortex2importEmotivCortex2Clienturl="wss://localhost:6868"# Remember to start the Emotiv App before you start!# Start client with authenticationclient=EmotivCortex2Client(url,client_id='CLIENT_ID',client_secret="CLIENT_SECRET",check_response=True,authenticate=True,debug=False)# Test API connection by using the request access methodclient.request_access()# Explicit call to Authenticate (approve and get Cortex Token)client.authenticate()# Connect to headset, connect to the first one found, and start a session for itclient.query_headsets()client.connect_headset(0)client.create_session(0)# Subscribe to the motion and mental command streams# Spins up a separate subscription threadclient.subscribe(streams=["mot","com"])# Test message handling speeda=client.subscriber_messages_handledtime.sleep(5)b=client.subscriber_messages_handledprint((b-a)/5)# Grab a single instance of dataprint(client.receive_data())# Continously grab data, while making requests periodicallywhileTrue:counter+=1# time.sleep(0.1)ifcounter%5000==0:print(client.request_access())# Try stopping the subscriber threadifcounter==50000:client.stop_subscriber()breaktry:# Check the latest data point from the motion stream, from the first sessionprint(list(client.data_streams.values())[0]['mot'][0])except:pass

您还可以通过显式声明id来连接!

client.connect_headset(headset_id="EPOCPLUS-3B9AXXXX")client.create_session(headset_id="EPOCPLUS-3B9AXXXX")

你可以做得更多!整个api都被覆盖了,所有的工作方式都是一样的。

其他值得注意的功能

  • websockets api使用helper函数包装,以执行请求id检查、异步消息处理和一些基本数据清理
  • 线程用于尝试允许订阅多个会话和多个耳机
    • 线程有一个助手函数,该函数可以自动拆分数据流,因此您可以独立地处理这些流,而不是将所有数据流集中为一个对象
  • 当调用相关方法时,用于检测现有会话和耳机的自动同步帮助程序方法将关闭。(例如,当尝试更新、连接或断开耳机时,客户端将自动查询和更新所看到耳机的字典。)

显著的类属性

<表>><广告>名称键入说明 示例 < /广告><正文>调试布尔调试标志。如果已设置,则会降低数据订阅率。客户ID STR 客户ID客户机密 STR 客户机密皮质令牌 STR 皮质代币批准布尔如果允许访问,则为true授权布尔如果发出Cortex令牌,则为true耳机orderedict()已查看耳机对象指令的订单信息连接的耳机orderedict()已连接耳机对象dicts的ordereddict 会话orderedict()seen session object dicts的ordereddict数据大小 INT/TDT>每个订户数据缓冲区的最大大小数据流dict通过会话键入的传感器数据流{会话id:{数据流设备类型:[data]},…}订阅的流dict订阅的、由会话键入的数据流名称和说明{会话id:{流名称:info},…}用户旋转布尔跟踪订户线程是否正在运行已处理订户信息 INT/TDT>统计已处理的订户消息数用户读取threading.event()暂停订户而不终止订户的事件标志

类方法

类助手

  • 发送已验证的请求(method=none,params={},request=none)
  • 发送请求(method=none,params={},request=none)
  • 设置客户ID(客户ID)
  • 设置客户机密(客户机密)
  • _verify_key(key,response,field=none
  • \u退出处理程序(signo,堆栈帧)

连接到Cortex API

  • 获取皮质信息

身份验证

  • 获取用户登录名()

  • 请求访问()

  • 具有访问权限()

  • 授权()

  • 生成新的令牌()

  • 获取用户信息()

  • 获取许可证@info()

  • 助手

    • authenticate()

耳机

  • 查询耳机(id=none,sync=true)

  • 控制设备(命令、耳机ID=无、映射=无)

  • 刷新耳机()

  • 连接耳机(耳机id=0,耳机id=none,映射=none)

  • 断开耳机(耳机ID)

  • 更新耳机(设置,耳机id=0,耳机id=none)

  • 最大化耳机(耳机ID=0,耳机ID=none)

  • Maximise_Headset_no_motion(耳机id_idx=0,耳机id=none)

  • 助手

    • 同步耳机(响应=无,查询=真)
    • 获取耳机类型(耳机ID)

会话

  • 创建会话(耳机ID=0,耳机ID=none)

  • 创建激活的会话(耳机ID=0,耳机ID=none)

  • 更新会话(状态,会话id=0,会话id=none)

  • 激活会话(会话id=0,会话id=none)

  • <李>

    关闭会话(会话id=0,会话id=none)

  • 查询会话(sync=true)

  • 助手

    • 同步会话(响应=无,查询=真)

数据订阅

  • 订阅(流,会话id=0,会话id=none)

  • 取消订阅(流,会话id=0,会话id=none)

  • 帮助程序
    • 接收数据()
    • spin_subscriber()
    • 停止订阅服务器()
    • 暂停订阅服务器()
    • 恢复订阅服务器()
    • _subscriber_thread()
    • \u创建数据流(会话id)
    • \u删除数据流(会话id)
    • \u分割和更新数据流(数据样本)

记录

  • 创建记录(标题,会话id=0,会话id=none,描述=none,主题名称=none,标记=none)
  • 停止记录(标题,会话id=0,会话id=none)
  • 更新记录(记录id,说明=无,标记=无)
  • 删除记录(记录ID)
  • 导出记录(记录ID、文件夹、格式、流类型,版本=无)
  • 导出EDF(记录ID、文件夹、流类型)
  • 导出csv v1(记录id、文件夹、流类型)
  • 导出csv v2(记录id、文件夹、流类型)
  • 查询记录(query,order by={'startdatetime':"desc"},limit=0,offset=0,include=false)
  • 获取记录信息(记录ID)

标记

  • 注入标记(时间、值、标签、会话id=0、会话id=none、端口=none、附加项=none)
  • 更新标记(标记id,时间,会话id=0,会话id=none,附加项=none)

BCI

  • 查询配置文件()
  • 获取当前配置文件(耳机ID=0,耳机ID=none)
  • 设置配置文件(状态、配置文件、耳机ID=0、耳机ID=none、新配置文件名称=none)
  • 创建配置文件(配置文件)
  • 加载配置文件(配置文件,耳机ID=0,耳机ID=none)
  • 卸载配置文件(配置文件,耳机ID=0,耳机ID=none)
  • 保存配置文件(配置文件)
  • 重命名配置文件(配置文件,耳机ID=0,耳机ID=none,新配置文件名称=none)
  • 删除配置文件(配置文件)
  • 加载来宾模式(耳机ID=0,耳机ID=none)
  • 获取检测信息(检测)
  • get_mental_command_info()
  • 获取面部表情信息()
  • 培训(检测、状态、操作、会话id=0、会话id=none)
  • 开始训练(检测、动作、会话id=0、会话id=none)
  • 接受培训(检测、操作、会话id=0、会话id=none)
  • 拒绝培训(检测、操作、会话id=0、会话id=none)
  • 重置训练(检测、操作、会话id=0、会话id=none)
  • 擦除训练(检测、操作、会话id=0、会话id=none)

高级BCI

  • 获取经过培训的签名操作(检测,配置文件=无,会话=无)
  • 获取训练时间(检测,会话id=0,会话id=none)
  • 面部表情/u签名类型(status,profile=none,session=none,signature=none)
  • 获取面部表情签名类型(profile=none,session=none)
  • 设置面部表情签名类型(profile=none,session=none,signature=none)
  • 面部表情重新保存(状态,操作,配置文件=无,会话=无,值=无)
  • 获取面部表情阈值(action,profile=none,session=none)
  • 设置面部表情阈值(action,profile=none,session=none,value=none)
  • 精神指令活动(状态,配置文件=无,会话=无,操作=[])
  • 获取"精神"命令"活动"操作(profile=none,session=none)
  • 设置智能命令活动操作(配置文件=无,会话=无,操作=[])
  • 精神指令大脑地图(profile=none,session=none)
  • 精神命令获得技能等级(profile=none,session=none,action=none)
  • 心理指令训练阈值(profile=none,session=none)
  • 精神命令操作级别(状态,配置文件=无,会话=无,级别=无)
  • 获取"精神"命令操作级别(配置文件=无,会话=无)
  • 设置精神命令操作级别(profile=none,session=none,level=none)
  • Mental_command_action_sensitivity(状态,配置文件=无,会话=无,值=[])
  • 获取精神命令操作灵敏度(状态,配置文件=无,会话=无)
  • 设置精神命令操作灵敏度(状态,配置文件=无,会话=无,值=[])

emotivcortex2客户端更改日志

v1.0.1-2019年7月9日

更改

  • 修复了子模块导入错误

v1.0.0-2019年7月9日

添加

  • 初始版本:
    • 具有测试异步性的WebSocketClient
    • 带完整API的EmotivCortex2客户端

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

推荐PyPI第三方库


热门话题
java如何在Spring Boot 2.2.0中添加弹性搜索?   jakarta ee如何在没有java认证的情况下停止直接访问网页(自定义标记)   java Hibernate:使用executeUpdate()的批删除未清除一级缓存   java如何在Hibernate中插入外键定义为Long的实体?   带参数的java Mockito单元测试计算器方法   java如何从Rally Rest API读取集合属性   java如何对基于消息的处理执行集成测试?   带插入排序的java排序字符串数组标记,双链表   java为什么在基于注释的Spring app@Value默认值中解析为null?   java Apache Commons Http客户端注册特定于客户端的协议   如何使用java反转字符串中n个部分的n个字符   java Tomcat在本地主机上运行良好,但在部署时出现内部服务器错误   使用信号量的变量的java结果   Java编译/运行时类路径问题   java哪个提供商负责AES/CTR/NOP添加?   伪错误解码器中的java响应未获取Zalando问题自定义属性