# Albatross [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit)](https://github.com/pre-commit/pre-commit) A BCI-driven system for neuro-rehabilitation ## Function module + MI-BCI online + Patient and Train database + Online visual feedback + Video-based posture detection + EEG analysis offline and report + Physical feedback 如图:
## Technology stack + FastAPI + Uvicorn as server + Sqlite + JS HTML CSS as frontend + flaskwebgui for desktop app + pyinstaller 如图:
前后端实现细节请查看 [frontend.md](./docs/frontend.md) 和 [backend.md](./docs/backend.md) ## Use case 如图:
## File structure ``` ├─.git ├─.vscode ├─backend │ ├─apis //底层路由 │ │ ├─general_pages │ │ └─version1 │ ├─core //算法代码 │ ├─db //数据库相关 │ │ ├─data //视频及脑电数据存放路径 │ │ ├─models │ │ └─repository │ ├─logs │ ├─schemas │ ├─service //api调用到的复杂功能 │ ├─settings //配置文件 │ ├─static │ │ ├─config //配置文件资源包括前后端所需 │ │ ├─css │ │ ├─images │ │ ├─js │ │ └─video │ ├─templates //页面 │ │ ├─components │ │ ├─eeg │ │ ├─general_pages │ │ ├─shared │ │ ├─subjects │ │ └─trains │ ├─tests //测试api代码 │ │ └─test_routes │ ├─tools //软件配套工具代码(离线验证工具) │ └─webapps //页面路由 │ ├─eeg │ ├─subjects │ └─trains └─docs ``` ## Start the project 运行项目前,请先到微盘下载训练视频文件,并放到`backend/static/video` 下 ```bash # pip install pipenv # create a python 3.8.5 virtual environment # acvivate virtual env cd pipenv install --ignore-pipfile # run web app uvicorn main:app --reload # visit 127.0.0.1:8000/ # run desktop app python gui.py ``` 除主体软件, 本项目还包含两个开发辅助工具的代码: - faker server 工具: 没有脑电硬件设备时,可使用此工具模拟信号调试 - 离线验证工具: 用于验证在线算法的准确性 ### faker server的使用: 通过以下命令 ```bash cd backend python -m core.sig_chain.device.fake_sig.sig_fake_server ``` 启动 faker server (或运行[提前打包](#faker-server-工具)好的软件使用), 然后在配置文件中修改设备为 faker,最后启动albatross。 ### 离线验证工具的使用 参考tools下的[README.md](./backend/tools/README.md) ## 打包 使用 [pyinstaller](https://pyinstaller.org/en/stable/index.html) 打包 ### 主体软件 ``` python build_pyd.py build_ext --inplace pyinstaller -y albatross.spec ``` 打包完在 `backend/dist` 下会发现 albatross 文件夹,即为打包好的应用。 ### faker server 工具 [](#faker_server) 执行 `backend/core/sig_chain/device/fake_sig` 下的脚本 ``` faker-server-setup.ps1 ``` 生成的exe文件在同级目录下的 `dist` 文件夹中 ### 离线验证工具 参考backend下的[process_offline.md](./backend/process_offline.md)