File formats
ECG waveforms
WFDB (.hea + .dat)
PhysioNet-style recordings. Upload both files together.
.hea— plain-text header (sample rate, signal names, format codes).dat— binary waveform samples
Optional .atr annotation files are not required for preprocessing.
CSV
Single text file, one row per sample:
| Column | Content |
|---|---|
| 1 | Time in seconds (strictly increasing) |
| 2 | ECG amplitude (mV or arbitrary units) |
Header row is optional; the backend uses column order. Sample rate is inferred from median time step.
EDF
European Data Format for multi-channel recordings. On upload review, pick:
- Primary signal channel (ECG or PPG)
- Optional respiration channel (must differ from primary)
RR intervals (rr_csv)
CSV with an rr_ms column containing inter-beat intervals in milliseconds. Skips waveform preprocessing — HRV runs directly.
Typical source: wearable HRV exports, precomputed beat series.
Blood pressure (bp_csv)
CSV with systolic/diastolic columns and timestamps. Used by analyze_bp for variability and dipping metrics.
PPG
Same upload paths as ECG (CSV, WFDB, EDF). Detected as PPG signal type; use preprocess_ppg and compute_prv.
Subject metadata CSV
| Column | Required | Purpose |
|---|---|---|
external_id | Yes | Subject identifier (P001, …) |
age, sex, diagnosis, medications, treatment_group | No | Standard cohort fields |
| Any other columns | No | Stored as outcomes metadata |
Artifact outputs
Pipeline results are downloadable from a run's Artifacts tab:
| Artifact | Contents |
|---|---|
peaks.json | R-peak indices and timestamps |
rr_intervals.json | RR series in ms |
quality.json | Signal quality scores |
preview.json | Downsampled waveform for frontend |
hrv_metrics.json | HRV time/frequency/nonlinear metrics |
interpretation.json | AI interpret output |
cohort_summary.json | Group comparison results |
Size guidance
| Recording | Approx. size |
|---|---|
| 3 min ECG @ 360 Hz CSV | ~1–2 MB |
| 30 min WFDB (MIT-BIH 100) | ~1 MB binary + tiny header |
| RR series (24 h wearable) | Depends on beat count; CSV often smaller than waveform |
Long Holter recordings are processed on the server; the frontend renders downsampled previews only.