.
├── bci_core // bci核心代码
│ ├── __init__.py
│ ├── feature_extractors.py // 特征提取:主要为连续数据带通滤波及取包络
│ ├── frequencybandselection_helpers.py // 频率选择:用于评估不同频带的可分性差异
│ ├── model.py // Riemann和Wiener两种模型的embedder构建
│ ├── online.py // HMM模型
│ ├── pipeline.py // 模型载入及调用流程接口
│ ├── utils.py // 评价函数、数据切分、重参考等功能
│ ├── viz.py // 可视化
│ └── setup.py // 安装bci_core, pip install -e .
├── data // 数据文件夹
│ └── suject_name
│ ├── train_info.yml // 训练数据及参数
│ ├── val_info.yml // 测试数据及参数
│ └── model_config.yml // 受试模型配置
├── dataloaders // 数据读取接口
│ ├── __init__.py
│ ├── neo.py
│ └── utils.py
├── device // 外设控制接口
│ ├── __init__.py
│ ├── data_client.py // NEO软件转发
│ ├── fubo_pneumatic_finger.py // fubo气动手
│ └── trigger_box.py // NEO triggerbox接口
├── settings // 全局设置
│ └── config.py
├── static
│ ├── audios
│ ├── images
│ └── models
├── band_selection.py // 频带选择脚本
├── daily_routine.psyexp // 日常范式
├── daily_routine.py
├── free_grasp.psyexp // 自由抓握范式
├── free_grasp.py
├── general_grasp_training.psyexp // 抓握训练范式
├── general_grasp_training.py
├── online_sim.py // 在线模拟脚本
├── train_hmm.py // HMM参数拟合
├── training.py // 模型训练范式
├── validation.py // 模型验证范式
└── tests // 单元测试
--subj
: 受试名--model-type
: 模型类型(riemann或baseline),默认为baseline,建议设为riemann./static/models/{subject_name}/{model_type}_{events}_{datetime}.pkl
--subj
: 受试名--model-filename
: 分类模型的文件名,不需要前置路径./static/models/{subject_name}/{model_name}_transmat.txt
参数配置文件
模型频带配置,参见如下示例:
baseline:
freqs: [20, 150, 15]
riemann:
lf_bands:
- [25, 35]
hg_bands:
- [55, 95]
--subj
: 受试名--model-filename
: 分类模型的文件名,不需要前置路径--subj
: 受试名--state-change-threshold
: 状态切换阈值,只有HMM似然概率大于该阈值才会切换状态--state-trans-prob
: 状态切换概率,如果没有运行过HMM拟合,则使用该处输入定义HMM中的状态转移概率--momentum
: 概率平滑系数,数值越大概率约平滑--model-filename
: 分类模型的文件名,不需要前置路径