emotiv eeg cortex 2 api的全面线程异步python客户端
cortex2的Python项目详细描述
emotiv cortex2 python客户端
作者:甲基龙
图片来源: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
支持我的努力!
要求
- 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检查、异步消息处理和一些基本数据清理
- 线程用于尝试允许订阅多个会话和多个耳机
- 线程有一个助手函数,该函数可以自动拆分数据流,因此您可以独立地处理这些流,而不是将所有数据流集中为一个对象
- 当调用相关方法时,用于检测现有会话和耳机的自动同步帮助程序方法将关闭。(例如,当尝试更新、连接或断开耳机时,客户端将自动查询和更新所看到耳机的字典。)
显著的类属性
<表>><广告>类方法
类助手
发送已验证的请求(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)
<李>查询会话(sync=true)
助手
同步会话(响应=无,查询=真)
关闭会话(会话id=0,会话id=none)
数据订阅
订阅(流,会话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客户端