A waterproof, 30-day wrist wearable that watches four vital signs (HR, SpO₂, respiration, skin temperature) and an on-device neural network that flags sepsis hours before onset — with a polished companion phone app that runs the real quantized model in your browser.
Built for the 2026 Medtronic BMES Student Design Competition.
1. Double-click — open Launch SepsisWatch.bat. The app is fully self-contained (data is
embedded as JS), so it opens in your browser with no server and no internet.
2. Desktop phone emulator (a real .exe you can push to GitHub)
.venv/Scripts/python desktop/phone_app.py # run from source (pip install pywebview first)
desktop/build_exe.bat # build a standalone desktop\dist\SepsisWatch.exeSepsisWatch.exe opens the app in a phone-sized native window (Windows WebView2). Push the repo to
GitHub and the included workflow (.github/workflows/build-windows.yml) builds the .exe on every
push (download it from the Actions run's artifacts); push a v* tag to publish it as a Release.
3. VS Code, side-by-side — install the Live Preview extension (ms-vscode.live-server),
open app/index.html, and click Show Preview (or right-click → Open with Live Preview). It
renders the app in an editor column next to your code — great while restyling. (The Live Server
extension by Ritwick Dey → Go Live works too.)
sepai-watch/
├─ Launch SepsisWatch.bat ← one-click launch (browser)
├─ app/ ← the self-contained phone app (HTML/CSS/JS)
│ ├─ index.html · css/ · data/ (embedded model + data)
│ └─ js/tcn.js ← the SepAI TCN, re-implemented for the browser
├─ desktop/ ← phone_app.py (pywebview) + build_exe.bat → the .exe
├─ .github/workflows/ ← GitHub Actions: builds the .exe on push
├─ src/ ← the ML pipeline (PyTorch)
│ ├─ physionet_dataset.py · run_pipeline.py · make_app_assets.py · validate_export.py
├─ artifacts/ ← trained models, metrics.json, figures
└─ docs/ ← BMES_Application.md · RESULTS.md · PNEUMONIA.md
The model is the original SepAI MultiTCN (one dilated-causal-conv TCN head per vital sign →
concat → dense → sigmoid), imported unchanged from the upstream repo and fed an hourly PhysioNet
pipeline. The browser/desktop app runs the identical quantized model (validated to 1e-7 vs PyTorch).
python -m venv .venv && .venv/Scripts/python -m pip install torch numpy pandas scikit-learn matplotlib pyyaml tqdm
bash data/download_physionet.sh # PhysioNet-2019, ~40k ICU stays
.venv/Scripts/python src/run_pipeline.py --rebuild # train + evaluate
.venv/Scripts/python src/validate_export.py # browser math == PyTorch
.venv/Scripts/python src/make_app_assets.py # build the app's embedded data + figures- Input: 8 hourly vital vectors (PhysioNet is hourly; SepAI's HiRID was 2-min/120-sample, so the window length is adapted while keeping the 4-layer dilated TCN).
- Early-warning labels: a window is positive if Sepsis-3 onset is within the next 12 h; septic
windows earlier than that are "not-yet" negatives. (Onset = first
SepsisLabel==1+ 6 h.) - Alarm: K consecutive elevated windows (consensus) → alert; lead time = onset − alarm.
- Split: by patient, 80/20, stratified on sepsis; majority class undersampled in training only.
- See
docs/RESULTS.mdfor the full evaluation anddocs/PNEUMONIA.mdfor the pneumonia roadmap.
Research prototype — not a medical device.