A hands-on machine-learning course built around one real problem: reading the autonomic nervous system from a heartbeat, and screening for POTS. It's built for Charlie — incoming biophysics at Brandeis, with a personal stake in the physiology — but the code and the data are the genuine article.
You train a working model on day one. Every week after that makes the same model better, until the capstone is a POTS screener grounded in the real diagnostic rules.
- Week 1. Load a real ECG from PhysioNet, pull two crude features, and train a model that predicts younger-vs-older on a person it has never seen. The whole game, start to finish.
- Week 2. Replace the toy features with real heart-rate variability (SDNN, RMSSD, pNN50) and watch the model improve.
- Week 3. See a heartbeat as a spectrum, add frequency-domain features, and race four models against each other.
- Week 4. Stop chasing accuracy and start understanding the mistakes.
- Weeks 5–6. The capstone: a POTS screener that runs signal → features → prediction → decision.
- Bonus. Model how a drug reshapes the rhythm, then re-classify it. A fall-semester stretch with Jeff.
This follows the "whole game first" approach: build something that works before you understand every piece, then deepen. Week 1's model is honestly not very good, and that's the point. You improve it with real physiology as you go, instead of building disconnected exercises that never add up to anything.
- Click Use this template → Create a new repository to get your own copy.
- Open any notebook in Colab using the badge at the top of it.
- Read GETTING_STARTED.md for the full round-trip: claiming your copy, opening notebooks in Colab, and saving your work back.
Then open obsidian-vault/00-Overview/Start-Here.md and begin.
notebooks/ the six weekly notebooks (open these in Colab)
src/ importable helpers — data loading, HRV features, POTS simulator
obsidian-vault/ the physiology primers and your week-by-week workbook
GETTING_STARTED.md account setup, Colab round-trip, local install
CLAUDE.md how the built-in tutor behaves
pyproject.toml dependencies, managed with uv
The data is never committed. Notebooks pull it from PhysioNet at runtime.
This is self-paced, with no scheduled check-ins. Jeff (Dad) is available whenever you want him. Every primer ends with an "explain it to Dad" prompt, because teaching a concept back is the real test of whether it stuck. Getting stuck and asking is the process working, not failing.
This is a learning project. Nothing here diagnoses, screens, or treats any real
person. The clinical content is accurate and sourced, but it exists to learn
from. See obsidian-vault/99-Resources/ for citations and
Simulated-Data-Honesty-Note.md for the honest limits of the simulated capstone.
Schumann A, Bär KJ. Autonomic Aging: A dataset to quantify changes of cardiovascular autonomic function during healthy aging. PhysioNet, 2021. DOI 10.13026/2hsy-t491.