Skip to content

About

4-signal sepsis early-warning wrist wearable + on-device TinyML app (BMES 2026)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

Repository files navigation

SepsisWatch — sepsis early-warning on a wrist wearable

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.

Run the app (3 ways)

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.exe

SepsisWatch.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.)

What's here

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).

Reproduce the model

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

Method notes

  • 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.md for the full evaluation and docs/PNEUMONIA.md for the pneumonia roadmap.

Research prototype — not a medical device.

About

4-signal sepsis early-warning wrist wearable + on-device TinyML app (BMES 2026)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages