Skip to content

fish0976/NeuroFlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NeuroFlow

全栈实时脑电分析平台 · Full-stack EEG Analytics & Streaming BCI Prototype

NeuroFlow 将公开 EEG 数据、信号质量控制、分类模型、实时推理服务和浏览器可视化整合为一套可复现的脑机接口研究原型。

版本:v3.0。 本项目用于研究、教学和工程验证,不用于医疗诊断、治疗决策或高风险设备控制。

功能概览

模块 实现内容
数据 PhysioNet EEG Motor Movement/Imagery,5 位被试、64 通道、160 Hz
质量控制 平坦/异常通道、振幅阈值、工频噪声、标签平衡、C3/Cz/C4 功率谱
模型 手工 CSP、手工 LDA、scikit-learn 基线、PyTorch EEGNet
评估 Runs 4+8 训练、Run 12 测试,按运行划分数据
实时服务 FastAPI、REST、WebSocket、100 ms 数据包、4 秒推理窗口
前端与存储 Canvas 波形、质量报告、模型对比、系统指标、SQLite 实验记录
数据源扩展 PhysioNet 回放、模拟设备协议、LSL/厂商 SDK 适配接口
工程支持 Docker、OpenAPI、P50/P95/P99 延迟、25 项测试、GitHub Actions

系统架构

flowchart LR
    A["PhysioNet EDF<br/>或 EEG 硬件"] --> B["可插拔 EEGSource"]
    B --> C["质量控制<br/>PSD / 振幅 / 噪声"]
    B --> D["MNE 预处理<br/>8–30 Hz / 4 s Epoch"]
    D --> E1["CSP + LDA"]
    D --> E2["EEGNet"]
    E1 --> F["FastAPI 推理服务"]
    E2 --> F
    F --> G["WebSocket 实时波形"]
    F --> H["REST / OpenAPI"]
    F --> I["SQLite 实验记录"]
    G --> J["浏览器仪表盘"]
    H --> J
    I --> J
Loading

组件职责和数据流见 系统架构

实验结果

实验协议:每位被试使用 Runs 4+8 训练,Run 12 独立测试,信号采用 8–30 Hz 带通滤波。

模型 Mean Accuracy Mean Macro-F1
CSP + LDA 60.00% 55.29%
EEGNet 50.67% 37.31%

在当前小样本跨运行设置下,CSP + LDA 的结果高于 EEGNet。该结果仅适用于当前数据和实验协议;跨被试泛化仍需通过更多被试、重复实验和置信区间验证。

页面说明

服务启动后可访问以下页面:

页面 地址 主要内容
实时推理 http://127.0.0.1:8020/ 数据源切换、设备状态、实时波形和预测
数据质量 http://127.0.0.1:8020/quality 被试质量报告、PSD 和 SQLite 实验记录
模型对比 http://127.0.0.1:8020/static/real.html CSP+LDA 与 EEGNet 结果
系统信息 http://127.0.0.1:8020/system 组件架构、运行环境和延迟指标
API 文档 http://127.0.0.1:8020/docs Swagger/OpenAPI 接口

页面操作步骤见 使用手册

快速开始

Windows

git clone <repository-url>
cd NeuroFlow
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\run_fullstack.ps1

首次请求真实数据时,MNE 会将公开 EDF 下载到本地 data/。该目录不会提交到 Git。

Docker

docker build -t neuroflow .
docker run --rm -p 8020:8020 neuroflow

测试

$env:PYTHONPATH="backend"
$env:_MNE_FAKE_HOME_DIR="$PWD\data\mne-config"
$env:MPLCONFIGDIR="$PWD\data\matplotlib-config"
.\.venv\Scripts\python.exe -m unittest discover -s tests -v

当前测试数量:25。

API

协议 路径 说明
GET /api/health 服务状态和版本
GET /api/sources EEG 数据源目录
GET /api/benchmark 5 被试模型结果
GET /api/quality/{subject} 单被试质量报告与 PSD
GET /api/experiments SQLite 实验记录
GET /api/system/metrics 推理延迟与运行环境
WS /ws/stream?source=... EEG 数据包、设备状态和预测结果

目录结构

NeuroFlow/
├── backend/app/          # 信号处理、模型、API、WebSocket、SQLite
├── frontend/             # Canvas 仪表盘
├── scripts/              # 数据下载、训练和基准测试
├── tests/                # 单元测试与接口测试
├── docs/                 # 使用、架构、算法和硬件说明
├── outputs/              # 可复现实验摘要
├── models/               # JSON 训练摘要(不提交模型权重)
├── Dockerfile
└── run_fullstack.ps1

数据源状态

  • physionet_replay:公开 EEG 的伪实时回放。
  • mock_hardware:使用公开 EEG 模拟设备数据包、时间戳和状态。
  • lsl_hardware:接口已规划,尚未连接真实设备。

模拟设备只用于验证传输协议。现有模型基于 64 通道 PhysioNet 数据训练,接入不同通道或采样率的设备后需要重新校准和训练。参见 硬件接入

文档

路线图

  • 真实 EEG、质量控制和模型对照
  • REST、WebSocket、SQLite 和浏览器仪表盘
  • 多被试基准与推理延迟
  • 可插拔数据源与模拟设备协议
  • 跨被试验证、bootstrap 置信区间和统计检验
  • LSL/厂商 SDK 设备适配器
  • 校准流程、模型注册与版本管理
  • 页面截图和运行视频

使用边界

  • 本项目是研究原型,不是医疗器械。
  • “实时”指离线数据分块回放;未连接硬件时不代表真实采集。
  • 质量规则是启发式检查,不构成临床判断。
  • 当前结果来自 5 位被试,不能代表普遍人群性能。
  • 不应使用自制、未隔离的电路直接连接人体。

贡献

提交问题或改动前请阅读 CONTRIBUTING.md

License

MIT License

About

Full-stack real-time EEG analytics and device-ready BCI research platform

Topics

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages