Gradient Biotech
U

Menu

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

The backend uses the Python wfdb package to decode signals. Optional .atr annotation files are not required for preprocessing.

CSV

Single text file, one row per sample:

ColumnContent
1Time in seconds (strictly increasing)
2ECG 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

ColumnRequiredPurpose
external_idYesSubject identifier (P001, …)
age, sex, diagnosis, medications, treatment_groupNoStandard cohort fields
Any other columnsNoStored as outcomes metadata

Artifact outputs

Pipeline results are JSON files under data/artifacts/{run_id}/:

ArtifactContents
peaks.jsonR-peak indices and timestamps
rr_intervals.jsonRR series in ms
quality.jsonSignal quality scores
preview.jsonDownsampled waveform for frontend
hrv_metrics.jsonHRV time/frequency/nonlinear metrics
interpretation.jsonAI interpret output
cohort_summary.jsonGroup comparison results

Size guidance

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