Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion ALGORITHMS.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ Grouped by family (subdirectory under `lib/src/onehz/`). File paths are relative
| `relativeIntensityBands` | `motion/enmo.dart` | ENMO/MAD activity intensity bands | — |
| `staticTilt` | `motion/orientation.dart` | orientation/posture from gravity vector | — |
| `branchedEnergyFusion` | `motion/energy_fusion.dart` | HR-anchored-when-possible energy expenditure fusion | Brage et al. 2004 |
| `dailyActiveMinutes` | `motion/steps.dart` | minutes of sustained wrist movement from the 1 Hz substrate, no step count — true per-step counting is impossible below gait Nyquist | internal ESTIMATE (personal dynamic-floor movement threshold, no published method; unrelated to AN-2554 — see `livePedometer` for the real AN-2554-derived 100 Hz method) |
| `dailyActiveMinutes` | `motion/steps.dart` | minutes of sustained wrist movement from the 1 Hz substrate, no step count — true per-step counting is impossible below gait Nyquist | internal ESTIMATE (personal dynamic-floor movement threshold, no published method; unrelated to the 100 Hz step counter — see `livePedometer` for that) |

### `workout/`
| Function | File | Method | Citation |
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,8 @@ foundation layers:
(IS/IV/RA/L5/M10).
- **`respiration/`** — RSA-derived respiratory rate fused with motion-modulated RIIV,
CVHR-based apnea screening, a relative (never absolute) oxygen-desaturation ratio.
- **`motion/`** — ENMO/MAD activity metrics, a 100 Hz AN-2554-derived live pedometer
- **`motion/`** — ENMO/MAD activity metrics, a 100 Hz live pedometer that finds gait
by stride periodicity (autocorrelation) and counts steps from the measured cadence,
plus a separate 1 Hz movement-minutes estimate (no step count — true per-step
counting is impossible below gait Nyquist) for whatever the live stream missed,
energy-expenditure fusion.
Expand Down
2 changes: 1 addition & 1 deletion docs/ALGORITHM_CATALOG_1HZ.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ Checked against the WHOOP 4 decoder (`protocol/lib/src/records.dart`, `live.dart
## LAYER 2 — Foreground-only (live spot-check tier, ~100 Hz accel/gyro + live RR)
- **Karlen Smart-Fusion RR** (RIIV+RIAV+RIFV) — needs a high-rate PPG waveform. `UNSUPPORTED on WHOOP 4` (no decoded foreground PPG).
- **Autocorrelation cadence + step/stride regularity & symmetry** (Moe-Nilssen 2004) — robust gait.
- **AN-2554 / windowed peak-detection step counter** (100 Hz accel) — gate to ambulation; wrist over/under-count caveats (Tudor-Locke).
- **Stride-periodicity step counter** (100 Hz accel, `pedometer`/`livePedometer`) — per 1 s segment, autocorrelation over a 4 s window; gait gated on amplitude plus autocorrelation at the stride lag with hysteresis, kept only as runs of ≥ 8 s; steps = gait seconds / measured step period. Known limits: rhythmic arm work at a gait-like rhythm still counts, a sprint above 240 spm reads half, a step-only signal slower than ~67 spm counts double. Measured accuracy is in the `StepParams` doc comment. Replaced an AN-2554-style peak counter.
- **Madgwick / Mahony quaternion orientation** — limb tracking during workouts.
- **Frequency-domain activity typing** (dominant freq + spectral entropy, Wang 2009) — walk/run/cycle.
- **DFA-α1 aerobic threshold** (Rogers 2020) — needs RR at <3% artifact; best on clean foreground/rest reads.
Expand Down
2 changes: 1 addition & 1 deletion lib/src/onehz/motion/motion.dart
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
/// physically impossible on the 1 Hz substrate (Nyquist 0.5 Hz < gait
/// 1.4–2.5 Hz), so:
/// * [livePedometer] counts REAL steps on the ~100 Hz foreground accel
/// (R10 / 0x2B) — adaptive-threshold peak detection (AN-2554 family).
/// (R10 / 0x2B) — stride-periodicity gait detection + measured cadence.
/// * [dailyActiveMinutes] reports MINUTES OF SUSTAINED WRIST MOVEMENT from
/// the 1 Hz substrate — the only quantity resolvable there — and emits NO
/// step count: at the wrist, arm work out-accelerates walking, so movement
Expand Down
Loading
Loading