O₂
Sections
Quick Jump & Search
OxyDex — Technical Reference

Metrics, Formulas &
Normal Values

Reference for all metric definitions, formulas, and available normative ranges used by the parser — with expected normal ranges, clinical thresholds, and the evidence base behind each index. Companion to the parser output; not a substitute for clinical evaluation.

⚠️
Important: All values are derived from consumer-grade 1 Hz reflectance oximetry. They are not equivalent to clinical polysomnography and do not constitute a medical diagnosis. HR-derived metrics labelled “proxy” cannot be compared against published HRV clinical norms based on beat-to-beat RR intervals.
Evidence MeasuredValidatedEmergingExperimentalHeuristic fill = trust · hover for detail
🪴
SpO₂ Basics & ODI
Oxygen saturation fundamentals and desaturation event counting
SpO₂Peripheral Oxygen Saturation
Core

The percentage of hemoglobin molecules carrying oxygen, measured by reflectance pulse oximetry at 1 Hz from the finger. The O2Ring uses two wavelengths (red ~660 nm and infrared ~940 nm) and Beer–Lambert absorption to estimate the oxygenated-to-total hemoglobin ratio. Device accuracy: ±2% (manufacturer spec), reliable 70–100% range.

Principle
SpO₂ = (HbO₂ / (HbO₂ + Hb)) × 100%
HbO₂ = oxyhemoglobin; Hb = deoxyhemoglobin.
RangeClassificationClinical context
≥ 95%NormalHealthy adult at rest or sleep
93 – 94%Mild hypoxemiaWarrants monitoring; common in mild OSA
90 – 92%Moderate hypoxemiaPhysiologically significant; discuss with physician
< 90%Severe hypoxemiaClinically significant; urgent evaluation warranted
ODI-4 / ODI-3 / ODI-2 / ODI-1Oxygen Desaturation Index
Core

Events per hour where SpO₂ drops ≥ N% from a 5-minute rolling baseline and recovers. A rolling baseline (rather than a fixed threshold) compensates for individual differences in baseline SpO₂ and slow overnight drifts. The suffix (1, 2, 3, or 4) is the minimum drop depth in percentage points.

Formula
ODI-N = (events where SpO₂ drops ≥ N% from rolling baseline) / recording_hours
Baseline = mean SpO₂ over preceding 5 min (300-sample O(n) sliding window). Event ends when SpO₂ returns to within 1% of baseline or 120 s elapses. Min event: 10 s. Refractory: 10 s after recovery.
ODI-4 (events/hr)ClassificationAHI correlation
< 5NormalAHI likely < 5 (ODI-4 × 1.1 proxy)
5 – 14.9MildCorresponds to mild OSA range
15 – 29.9ModerateCorresponds to moderate OSA range
≥ 30SevereCorresponds to severe OSA range
⚠️
Severe-night caveat. ODI-4 still modestly under-counts AHI on clinically severe nights — dense back-to-back desaturations sag the 5-minute rolling baseline and hide later events. The v22.36 ceiling-baseline detector removed most of the bias (severe-night mean bias −30.6 → −15.7 ev/h), but a residual through-origin relation of truth-AHI ≈ 1.4× ODI-4 remains. Read a low ODI-4 on an otherwise clinically severe night with care.
ℹ️
Which ODI to use? ODI-4 (≥4% desaturations) is the most widely used AHI surrogate in oximetry studies. ODI-3 is more sensitive for mild hypoxemia. ODI-2 and ODI-1 are primarily useful for periodic breathing pattern detection via the ODRI ratio. Note: the precise ODI-4→AHI conversion is OxyDex internal calibration, not a single published constant.
📊
Thresholds & T-Index
Cumulative time below SpO₂ thresholds — the most clinically actionable saturation metrics
T95 – T80Time Below SpO₂ Threshold
Core

The percentage of total recording time where SpO₂ was below a given absolute threshold. Reported at 10 levels: T95, T94, T93, T92, T91, T90, T89, T88, T85, T80. Precise cumulative seconds are also shown as CT<90, CT<89, CT<88, CT<85.

Formula
T_x (%) = (seconds where SpO₂ < x) / total_seconds × 100
T95ClassificationCT<90 (min)CT<90 Grade
< 5%Normal< 1 minNormal
5 – 15%Elevated1 – 10 minMild concern
15 – 30%Significant10 – 30 minSignificant
> 30%Severe> 30 minSevere
AUC-90Hypoxic Burden — Area Under Curve below 90%
Advanced

The integral of SpO₂ deficit below 90% over the recording, normalized per hour. Captures both depth and duration — a brief dip to 85% contributes 5× more than a dip to 89%.

Formula
AUC-90 (%-min/hr) = ∑ max(0, 90 − SpO₂[t]) / 60 / recording_hours
AUC-90 (%-min/hr)Classification
< 0.5Normal
0.5 – 3Mild hypoxic burden
3 – 10Moderate
> 10Severe
🔬
Desaturation Profile
Per-event characterization and severity indices
CDICyclic Desaturation Index
Advanced

Downward SpO₂ crossings of the recording mean per hour. Sensitive to rhythmic desaturation (Cheyne–Stokes, PB) even when individual dips are shallow.

Citation pending independent verification. CDI is used in oximetry literature (cf. Netzer 2001, Chiner 1999) — full attribution being confirmed.
Formula
CDI = baseline_crossings_↓ / recording_hours
CDIGrade
< 5Normal
5 – 15Mildly elevated
> 15Significant PB/CS pattern
WtDSIWeighted Desaturation Severity Index
Advanced

Penalizes deeper and longer desaturation events quadratically, reflecting the non-linear physiological stress relationship.

Formula
WtDSI = ∑ (depth² × duration_s) / recording_hours
depth = SpO₂ nadir depth below baseline (% pts)
Normative ranges not yet established — values are relative; compare across recordings.
ODRIODI Ratio Index
Research

ODI-3 / ODI-1. Low ratio → shallow, frequent desaturations (CS/PB pattern). High ratio → deep events (obstructive pattern).

Formula
ODRI = ODI-3 / ODI-1
ODRIPattern
< 0.3CS / PB dominant (shallow events)
0.5 – 0.8Mixed / indeterminate
> 0.8Obstructive dominant (deep events)
Δ-IndexDelta SpO₂ Instability Index
Advanced

Mean absolute difference between SpO₂ samples 3 s apart. Quantifies moment-to-moment signal instability.

Formula
Δ = mean |SpO₂[t+3] − SpO₂[t]|
Δ-IndexGrade
< 0.5Stable baseline
0.5 – 1.5Mildly unstable
> 1.5Highly unstable
DesSevDesaturation Severity (Kulkas 2013)
Advanced

AHI surrogate validated in SHHS sub-cohort. Combines ODI-3 rate, mean depth, and mean duration. Correlates with PSG-AHI.

Formula
DesSev = ODI-3 × mean_depth_% × mean_duration_s / k
k = normalization constant (Kulkas 2013)
pRED-3p% Recording with Desaturation Events (Kulkas 2013)
Advanced

Fraction of recording spent inside ODI-3 events. Independent predictor of cardiovascular morbidity. Displayed with 5-quintile CVD risk grade.

Formula
pRED-3p (%) = ∑ event_duration_s / total_recording_s × 100
QuintilepRED-3pCVD morbidity risk
Q1< 2.78%Lowest
Q22.78 – 6.19%Below median
Q36.19 – 10.84%Median
Q410.84 – 19.04%Elevated
Q5> 19.04%Highest
Quintile cut-points (2.78 / 6.19 / 10.84 / 19.04%) are this app’s internal boundaries calibrated on its own recording set; they are not a published SHHS partition. Kulkas 2013 supplies the pRED-3p concept and CVD-morbidity association, not these exact cut-points — treat the grade bands as relative, not absolute clinical thresholds.
MODLMean Oxygen Desaturation Level
Advanced

Mean SpO₂ of all samples falling inside detected desaturation events — how low saturation sits during dips, distinct from the whole-night mean.

Formula
MODL = mean( SpO₂[t] for t inside any desaturation event )
Normative ranges not yet established — values are relative; compare across recordings.
Dip SlopeMean Desaturation Rate (%/s)
Advanced

Mean rate of fall from baseline to nadir (negative %/s). Steeper (more negative) dips suggest abrupt/obstructive events; gradual dips suggest central or hypoventilation patterns.

Formula
dipSlope = (nadir − baseline) / (nadir_time − event_start) — averaged over events
Normative ranges not yet established — values are relative; compare across recordings.
Recovery SlopeMean Resaturation Rate (%/s)
Advanced

Mean rate of recovery from nadir back toward baseline (positive %/s). Measures the observed resaturation from nadir to the point the event closes (recovery above baseline−2%), over the actual recovery time — so the rate is not overstated.

Formula
recSlope = (SpO₂[event_close] − nadir) / (event_close − nadir_time) — averaged over events
Event detection uses hysteresis: enter at baseline−4%, close at baseline−2%. Events open at end-of-recording are flushed, not dropped.
Normative ranges not yet established — values are relative; compare across recordings.
Clustering IndexFirst-half vs Last-half Nadir Concentration
Advanced

Fraction of desaturation nadirs occurring in the second half of the recording. > 0.6 suggests REM-concentrated or late-night clustering; < 0.4 suggests early/onset clustering.

Formula
ClusteringIdx = nadirs_last_half / (nadirs_first_half + nadirs_last_half)
Normative ranges not yet established — values are relative; compare across recordings.
Advanced SpO₂ Metrics
Signal dynamics, periodicity, and nonlinear analysis
DFA α1Detrended Fluctuation Analysis α1
Research

Self-similarity of SpO₂ fluctuations on short timescales (4 – 16 s). α1 near 0.5 = random; near 1.0 = long-range correlated (OSA/PB); >1.0 = non-stationary.

Method
1. Integrate mean-subtracted SpO₂ 2. Detrend windows of size n 3. F(n) = √(mean squared residual) 4. α1 = slope of log F(n) vs log n (n=4 – 16 s)
α1Interpretation
0.5 – 0.75Normal (mild correlations)
0.75 – 1.0PB/OSA pattern
> 1.0Non-stationary — severe cyclic hypoxemia
SpO₂ SampEnSample Entropy
Research

Low SampEn = highly predictable, repetitive pattern (PB/cyclic desaturation). High SampEn = irregular signal (normal breathing variability).

Formula
SampEn(m,r) = −ln(A/B) m=2, r=0.2×SD; B=m-length matches; A=(m+1)-length matches
SampEnInterpretation
> 0.8High variability — normal
0.4 – 0.8Moderate regularity
< 0.4Highly regular — cyclic pattern
SpO₂ FFTDominant Frequency (DFT)
Research

Strongest periodic component in SpO₂ signal. Used to estimate PB/CS cycle length. Dominant frequency 0.02 – 0.04 Hz corresponds to 25 – 50 s period (typical CS/PB range).

Method
DFT on mean-subtracted SpO₂ (≤3600 samples) Dominant f = argmax |X(f)|² in 0.003 – 0.1 Hz Period = 1/f (seconds)
Dominant periodPattern
None / >120 sNo significant periodic pattern
25 – 50 sCheyne-Stokes / PB range
60 – 90 sOSA cycling range
SpO₂ DriftBaseline Slope Across Night
Advanced

OLS slope of the 5-min rolling SpO₂ baseline from start to end of recording. Negative drift may indicate progressive hypoventilation or COPD overlap.

Formula
Drift = OLS slope(rolling_baseline vs. time) in %/hr
DriftInterpretation
−0.2 to +0.2%/hrStable — normal
−0.5 to −0.2%/hrMild downtrend
< −0.5%/hrProgressive hypoventilation screen
T-AUC WeightedWeighted Time-Area Hypoxic Load
Advanced

Severity-weighted sum of time below SpO₂ thresholds, integrating T95–T80 with quadratic depth penalties. Higher than AUC-90 for predominantly mild hypoxemia because it captures burden across the full desaturation range.

Formula
WtAUC = ∑ w(x) × CT(x) / recHrs w(x) = (100−x)² / 100
CT(x) = cumulative seconds below threshold x. Thresholds: 95, 94, 93, 92, 91, 90, 89, 88, 85, 80.
WtAUCGrade
< 5Normal
5 – 20Mild
20 – 60Moderate
> 60Severe
SpO₂ CoVCoefficient of Variation of SpO₂
Advanced

SD / mean × 100 for the whole-night SpO₂ signal. Captures intra-night fluctuation amplitude independent of absolute level. Elevated CoV with near-normal mean may indicate periodic breathing not yet severe enough to flag via ODI.

Formula
CoV = SD(SpO₂) / mean(SpO₂) × 100
CoV (%)Interpretation
< 1.0Stable signal
1.0 – 3.0Mild fluctuation
3.0 – 6.0Moderate cycling
> 6.0High variability — likely cyclic PB/OSA
SpO₂ Autocorrelation lag-1Lag-1 Serial Correlation
Research

Pearson correlation between consecutive SpO₂ values (SpO₂[t] vs SpO₂[t+1]). Values near 1.0 indicate a slow-moving, strongly correlated signal (normal). Values near 0.5 suggest rapid random fluctuation. Used internally as a signal quality screen and as a periodicity proxy for FFT validation.

Formula
AC1 = corr(SpO₂[t], SpO₂[t+1])
AC1Interpretation
> 0.90Normal slow-moving signal
0.70 – 0.90Moderate fluctuation
< 0.70Rapid noise or severe cycling
SpO₂ Kurtosis / SkewnessDistribution Shape Metrics
Research

Kurtosis measures the tail weight of the SpO₂ distribution (high = frequent extreme dips). Skewness measures asymmetry (negative skew = tail toward low values). Together they characterise whether desaturation is dominated by rare severe events or frequent mild dips.

Formula
Kurtosis = E[(X−μ)⁴] / σ⁴ Skewness = E[(X−μ)³] / σ³
MetricNormal rangeElevated pattern
Kurtosis2 – 4Kurtosis > 6 — Frequent deep dips — obstructive
Skewness−0.5 to 0Skewness < −1 — Heavy low-SpO₂ tail
Cond. Mean <94 / Cond. % <94Conditional SpO₂ Statistics
Advanced

Two metrics computed only on samples below 94%: (1) Cond. Mean <94 — the average SpO₂ during hypoxemic samples, indicating typical dip depth during exposure; (2) Cond. % <94 — fraction of total recording time spent below 94%, identical to T94 but emphasised as a CHA-94 companion.

Formula
CondMean = mean(SpO₂[t] | SpO₂[t] < 94) CondPct = count(SpO₂[t] < 94) / n × 100
Cond. Mean <94 (%)Interpretation
91 – 93Mild; marginal dips only
88 – 91Moderate hypoxemic depth
< 88Severe mean depth during exposure
Nadir Depth Bins5-Tier Nadir Depth Histogram
Advanced

Desaturation nadir events are bucketed into five depth tiers: above 91%, 90–91%, 88–89%, 85–87%, and below 85%. Provides a richer picture than simple ODI counts — an ODI-4 of 20/hr is clinically very different if all events land in the above-91 bin vs. the below-85 bin.

BinSpO₂ NadirClinical weight
above91> 91%Mild; common in CS/PB
b909190 – 91%Mild–moderate
b888988 – 89%Moderate
b858785 – 87%Significant
below85< 85%Severe — urgent
SpO₂ IQRInterquartile Range of SpO₂
Advanced

p75 − p25 of the whole-night SpO₂ distribution. Robust to extreme outliers unlike SD. A narrow IQR (1–2%) with a low median indicates consistently poor saturation; a wide IQR suggests cyclic oscillation.

Formula
IQR = p75(SpO₂) − p25(SpO₂)
IQR (%)Interpretation
1 – 3Normal spread
3 – 6Moderate oscillation
> 6High cyclic variability
IEIInter-Event Interval (mean / SD)
Research

Mean and standard deviation of the time between consecutive desaturation nadir timestamps (seconds). Regular IEI (low SD) with a period matching the clinical CS range (40–90 s) supports a periodic breathing pattern. Highly variable IEI favours obstructive fragmentation.

Formula
IEI_i = nadirTime_i − nadirTime_{i−1} mean/SD computed over all intervals
IEI SD (s)Pattern
< 15Regular spacing — PB/CS pattern
15 – 40Semi-regular
> 40Irregular — obstructive or mixed
Recovery CVCoefficient of Variation of Inter-Nadir Intervals
Research

SD / mean × 100 of the inter-nadir interval series. Identical source data as IEI but expressed as a percentage so short and long recordings are comparable. Low CV = metronomic respiratory cycling (strong CS/PB signal). High CV = irregular event spacing.

Formula
biCV = SD(IEI) / mean(IEI) × 100
biCV (%)Pattern
< 30Regular — cyclic PB/CS
30 – 60Variable
> 60Irregular — obstructive dominant
Desaturation AsymmetryDip–Recovery Slope Ratio
Advanced

Ratio of absolute mean dip slope to absolute mean recovery slope. Values >1.5 indicate the SpO₂ falls faster than it recovers — characteristic of abrupt obstructive apneas. Values <0.7 indicate slow descent with rapid recovery — more consistent with central/hypoventilation events.

Formula
DesatAsym = |meanDipSlope| / |meanRecSlope|
AsymmetryPattern
> 1.5Abrupt obstructive — fast drop, slow rise
0.7 – 1.5Symmetric — normal
< 0.7Gradual central — slow drop, fast rise
SpO₂ Nadir TimingFirst / Last Nadir Hour
Advanced

Timestamps (hours from recording start) of the first and last detected desaturation nadir. Events concentrated in the first third of the recording may reflect sleep-onset hypoxemia or positional effects. Events concentrated in the final third often reflect REM-related events or CPAP pressure inadequacy.

Timing patternTypical association
First hourSleep-onset / positional / early-night REM
DistributedEven distribution — non-positional
Last hourREM-concentrated / CPAP leak
SpO₂ CeilingFirmware Saturation Artifact
Research

Count of samples where SpO₂ is fixed at exactly 100% for ≥30 consecutive seconds. Consumer-grade devices clip the signal at 100; long runs of exactly 100% indicate sensor contact issues, firmware clamping, or device removal rather than true perfect saturation. Flagged as a signal quality warning.

Ceiling runsSignal quality
0Clean signal
1 – 3Minor artifact
> 3Significant data quality concern
O₂-HR EfficiencySpO₂ Recovery Cost per Heartbeat
Research

Ratio of SpO₂ recovery magnitude to mean HR during recovery windows. Higher values mean the cardiovascular system achieves more SpO₂ resaturation per unit cardiac work. Reduced efficiency may reflect impaired cardiac output or poor pulmonary reserve.

Formula
O₂HReff = ΔSpO₂_recovery / meanHR_recovery
O₂-HR EfficiencyInterpretation
> 0.10Efficient resaturation
0.05 – 0.10Moderate
< 0.05Impaired efficiency
Post-Dip HR ResponseMean HR Change 60 s After Nadir
Advanced

Mean HR delta (bpm) measured between the nadir moment and 60 seconds later, averaged across all detected desaturation events. A positive response (>3 bpm) indicates preserved arousal coupling. A flat or negative response suggests blunted autonomic arousal — associated with worse cardiovascular outcomes.

Formula
PostDipHR = mean[HR(nadirIdx + 60) − HR(nadirIdx)]
Post-Dip HR Δ (bpm)Arousal coupling
> 5Strong arousal response
2 – 5Moderate
< 2Blunted — impaired arousal
< 0Paradoxical — HR deceleration after dip
OxyCrash Count / RateAcute SpO₂ Drops ≥5% in 30 s
Advanced

Count and per-hour rate of rapid SpO₂ drops where the signal falls ≥5 percentage points within any 30-second window, with a 30-second refractory cooldown to prevent re-counting sustained drops. Captures acute, fast-onset desaturations that may not meet the 10-second ODI minimum-duration criterion.

Formula
Crash if SpO₂[t−30] − SpO₂[t] ≥ 5 Rate = count / recHrs
OxyCrash rate (/hr)Grade
< 2Normal
2 – 8Mildly elevated
8 – 20Significant rapid desaturation
> 20Severe — evaluate immediately
AHI EstimateProxy AHI from ODI-4
Advanced

Epidemiological AHI approximation derived from ODI-4 using the regression coefficient from Azarbarzin et al. 2021 (AHI ≈ ODI-4 × 1.1). This is a population-level proxy, not an individual measurement. A confirmed AHI requires attended or validated home polysomnography.

Formula
ahiEst = ODI-4 rate × 1.1
Uncertainty ±5 events/hr at the individual level. Overestimates AHI in CS/central-dominant patterns (ODI events without arousal). Use as a screening flag only.
AHI EstimateOSA Grade
< 5No OSA
5 – 15Mild
15 – 30Moderate
> 30Severe
Worst 10-min SpO₂Rolling Minimum 10-Minute Mean SpO₂
Advanced

The lowest mean SpO₂ found in any 10-minute sliding window across the recording. More clinically relevant than the absolute minimum, which may reflect a single-second artefact. A low worst-10-min value with a near-normal overall mean indicates severe but brief nocturnal dipping.

Worst 10-min SpO₂ (%)Concern level
> 93Normal
90 – 93Mild concern
85 – 90Significant hypoxemia window
< 85Severe — urgent evaluation
Worst 30-min T95Rolling Worst 30-Minute T95 Window
Advanced

The highest T95 (% time below 95%) found in any 30-minute rolling window. Identifies the worst sustained hypoxemic episode within the night. Useful when OSA is positional or REM-concentrated and the whole-night T95 is diluted by asymptomatic periods.

Worst 30-min T95 (%)Grade
< 10Normal
10 – 30Mild concern
30 – 60Significant
> 60Severe sustained hypoxemia
Stable SpO₂ WindowsCount of 5-min Stable SpO₂ Periods
Advanced

Number of consecutive 5-minute windows where SpO₂ SD <1% and mean >94%. Represents the fraction of the night with truly stable oxygenation. Complements LCSP — LCSP measures the longest single run while stable windows counts the total number of high-quality periods.

Stable windowsInterpretation
> 30Predominantly stable night
15 – 30Moderately stable
5 – 15Fragmented oxygenation
< 5Pervasive instability
🏥
Literature-Inspired Clinical Indices
Indices derived from published methods — verify exact citations before clinical use
⚠️
Indices in this section are research-grade. The metric concepts are grounded in the desaturation-severity literature, but several composites rely on internally-calibrated coefficients rather than externally-validated regression weights. Treat the numeric outputs as directional, not diagnostic.
SBIISleep Breathing Impairment Index (approx. of Hui 2024)
Advanced

An internally-calibrated approximation of the published Sleep Breathing Impairment Index (Hui et al., Respirology 2024), which was validated in 4,485 SHHS participants — there its top quintile carried roughly double the CVD-mortality risk of the lowest. This card is an internal depth²×duration estimate, not the validated algorithm — directional, not diagnostic.

Formula
SBII = ∑ (Dᵢ² × Tᵢ_min) / TRT_hr Dᵢ = event nadir depth below baseline (% pts) Tᵢ_min = event duration in minutes TRT_hr = total recording time in hours
Depth is squared to reflect the super-linear dose–response to CVD mortality seen in the SHHS cohort (n = 4,485). Units: %²·min/hr.
QuintileCVD Mortality RiskPublished SBII range (Hui 2024)
Q1Lowest (reference)SBII < 2.58
Q2LowSBII 2.58 – 6.49
Q3MedianSBII 6.49 – 12.8
Q4ElevatedSBII 12.8 – 25.54
Q5Highest (~2.5× vs Q1)SBII > 25.54
MOSMcGill-style Oximetry Grade (custom, 1 – 4)
Advanced

A custom adult oximetry severity grade based on ODI-4 rate and CT<90. Not the published McGill Oximetry Score, which is a pediatric tool (Brouillette/Nixon) scored by visual clusters of desaturations plus nadir depth (≥3 clusters with ≥3 drops <90 / <85 / <80%). This proxy is inspired by it but uses different inputs and is not validated. Grade ≥ 2 = abnormal nocturnal oximetry.

Scoring logic (ODI-4 events/hr & CT<90)
Grade 1 (Normal): ODI-4 < 5 AND CT<90 < 1 min Grade 2 (Borderline): ODI-4 5 – 14 OR CT<90 1 – 4 min (either) Grade 3 (Abnormal): ODI-4 ≥ 15 OR CT<90 ≥ 5 min (either) Grade 4 (Severe): ODI-4 ≥ 15 AND CT<90 ≥ 5 min (both)
ScoreGradeClinical action
1NormalNo action
2BorderlineRepeat or monitor
3AbnormalClinical evaluation recommended
4Severely AbnormalUrgent sleep specialist referral
💧
Hypoxic Burden Metrics
Azarbarzin-group indices linking hypoxic exposure to cardiovascular outcomes
ℹ️
Background: Research from Azarbarzin et al. (SHHS, MrOS cohorts) demonstrated that the depth and duration of desaturation events — beyond simply counting them — independently predicts daytime blood pressure, cardiovascular disease, and mortality.
⚠️
Naming caution: The card below is a fixed-threshold whole-night integral (area below a flat 94% line). The validated Azarbarzin 2019 “hypoxic burden” is different: it is the area under each respiratory event’s own pre-event baseline (max SpO₂ in the 100 s before event end), summed across events and divided by sleep time (%·min/hr). The Hypoxic Load card further down is this app’s closest approximation to that event-based metric.
CHA-94Cumulative Hypoxemia Area below 94% (fixed threshold)
Advanced

Total area under the SpO₂ curve below a fixed 94% line, per recording hour. A simple whole-night exposure proxy — not the validated event-based hypoxic burden (see caution above). Captures mild hypoxemia even when CT<90 is near zero.

Formula
CHA-94 (%-min/hr) = ∑ max(0, 94 − SpO₂[t]) / 60 / rec_hrs
%-min/hrClassification
< 2Normal
2 – 10Mild burden
10 – 25Moderate
> 25High — daytime SBP correlation
HD94 / HD90 / HD88Hypoxic Dose (Azarbarzin 2019/2020)
Advanced

Per-hour depth–duration product of desaturation events relative to a threshold. Higher hypoxic dose tracks higher daytime systolic BP in cohort studies (Kim/MESA 2020).

Formula
HD_x = ∑ event (thresh_x − nadir_SpO₂) × duration_s / 60 / rec_hrs
Hypoxic LoadEvent-based approximation of Azarbarzin 2019 HB
Advanced

This app’s closest approximation to the validated sleep-apnea-specific hypoxic burden (Azarbarzin et al., Eur Heart J 2019), which predicts CV mortality. Uses the depth×duration of desaturation events (the triangular-area estimate) rather than ODI counts alone. Combines ODI-3 rate, mean nadir depth, and mean event duration.

Formula
HL = ODI-3_rate × mean_depth_% × mean_duration_min / k
Approximation, not a literal reimplementation of the per-event baseline method. Grade labels: minimal / low / moderate / high / very high
❤️
Heart Rate Basics
Nocturnal HR statistics from 1 Hz oximeter photoplethysmography
⚠️
1 Hz proxy limitation: The O2Ring HR is derived from PPG sampled at 1 Hz. True HRV requires beat-to-beat resolution (~0.25 s). All HR-derived metrics are directional proxies only. Do not compare against published clinical HRV norms.
HR Floor5th-Percentile Still Heart Rate
Core

5th-percentile HR from all motion-free samples (motion=0). The closest 1 Hz proxy to true resting heart rate. Used in VO₂max estimation and Karvonen zone calculations.

Formula
HR_floor = p5(HR values where motion = 0)
HR Floor (bpm)Classification
40 – 60Athletic / well-trained
60 – 70Normal
70 – 80Mildly elevated — monitor
> 80Elevated resting HR
HR SlopeLinear HR Trend Across Night (bpm/hr)
Advanced

OLS regression slope of 5-min epoch HR means across the recording. Negative slope (HR declining overnight) = normal. Flat or rising slope suggests fragmented autonomic state.

Formula
Slope = OLS(all motion-free 1 Hz HR samples vs. elapsed time) bpm/hr
Regression runs on individual samples, not binned epochs, for maximum sensitivity to gradual overnight trends.
Slope (bpm/hr)Interpretation
−2 to −0.5Normal nocturnal HR dip
−0.5 to +0.5Flat — possible fragmentation
> +0.5Rising HR — arousal/stress pattern
💓
HRV Proxy Metrics
Variability estimates from 1 Hz HR — directional autonomic indicators only
SDNN proxySD of HR (1 Hz)
Advanced

Standard deviation of all motion-free HR values. Analogous to clinical SDNN but numerically different (1 Hz integer data vs. beat-to-beat ms). Higher = greater autonomic variability = healthier cardiac regulation.

Formula
SDNN_proxy = SD(HR[motion=0]) bpm
SDNN proxy (bpm)Relative tone
> 6Good variability
3 – 6Moderate
< 3Low — possible autonomic suppression
RMSSD proxyRoot Mean Square Successive HR Differences
Advanced

Square root of the mean squared difference between consecutive 1 Hz HR values (motion=0). Sensitive to parasympathetic (vagal) tone. Higher = stronger nocturnal vagal activity.

Formula
RMSSD_proxy = √( mean( (HR[t+1] − HR[t])² ) ) for motion=0
RMSSD proxy (bpm)Vagal tone
> 4Good vagal activity
2 – 4Moderate
< 2Reduced vagal tone
pNN3-equiv% HR pairs with ΔHR ≥ 3 bpm
Advanced

Percentage of consecutive motion-free HR pairs differing by ≥ 3 bpm. Analogous to clinical pNN50 but scaled for 1 Hz integer HR data. Reflects short-term vagal autonomic drive.

Formula
pNN3 = (pairs where |HR[t+1]−HR[t]| ≥ 3) / total_pairs × 100%
RMSSD ArcRMSSD Trajectory Across Night
Research

OLS slope of 30-min windowed RMSSD values across the night (bpm/hr). Rising arc = increasing vagal tone (good recovery). Flat or declining = impaired autonomic recovery.

Formula
RMSSD[w] = proxy over 30-min window w Arc = OLS slope of RMSSD[w] vs. w
🔊
Spectral & Nonlinear HR Metrics
Frequency-domain and complexity analysis
LF / HF PowerLow/High Frequency HR Band Power
Research

DFT-based power for 0.04 – 0.15 Hz (LF, mixed sympatho-vagal) and 0.15 – 0.40 Hz (HF, parasympathetic/RSA) bands. LF/HF ratio = sympathovagal balance proxy.

Method (DFT on capped subsample ≤1800 s)
LF: 0.04 – 0.15 Hz (5 bins); HF: 0.15 – 0.40 Hz (6 bins)
⚠ DFT band estimates only — not suitable for clinical autonomic diagnosis.
LF/HF ratioSympathovagal balance
0.5 – 2.0Vagal dominant (normal sleep)
2.0 – 4.0Mild sympathetic activation
> 4.0Sympathetic dominant
ApEnApproximate Entropy (Pincus 1991)
Research

Nonlinear HR regularity measure. Low ApEn = repetitive, predictable (autonomic suppression, severe OSA). High ApEn = complex, irregular (healthy variability). Computed on subsampled HR (≤300 points). Formula corrected in v22.15 — prior versions used log(mean) instead of mean(log), biasing values low.

Formula
ApEn(m,r,N) = ϕ(m) − ϕ(m+1) ϕ(m) = (1/N) × ∑ᵢ log(Cᵢᵐ / N) m=2, r=0.2×SD(HR_subsample)
ApEnHR complexity
> 0.8High complexity — healthy autonomic regulation
0.4 – 0.8Moderate
< 0.4Low complexity — suppressed autonomic variability
SD1 / SD2Poincaré Short/Long-Term HRV
Research

Geometric HRV measures from the Poincaré plot (HR[t] vs HR[t+1]). SD1 = beat-to-beat variability (vagal proxy). SD2 = long-term variability (total autonomic proxy). SD1/SD2 = short vs. long-term autonomic balance.

Formula
d₁[t] = (HR[t+1]−HR[t])/√2; d₂[t] = (HR[t+1]+HR[t])/√2 SD1 = SD(d₁), SD2 = SD(d₂)
RSA ProxyRespiratory Sinus Arrhythmia Proxy
Research

SD of SpO₂ within non-overlapping 30-second motion-free windows, averaged across the night. Because respiration modulates both SpO₂ and HR, this captures the respiratory coupling amplitude as a low-resolution RSA surrogate. Higher values suggest stronger respiratory–cardiac coupling.

Formula
RSA_proxy = mean[ SD(SpO₂, 30s window) ] for motion=0 windows
RSA proxyInterpretation
> 0.8Good respiratory coupling
0.3 – 0.8Moderate
< 0.3Weak coupling — autonomic suppression screen
HR IQRInterquartile Range of HR
Advanced

p75 − p25 of all motion-free HR values. A robust spread metric less sensitive to artifact spikes than SDNN. Wide HR IQR reflects strong HR variability across the night; narrow IQR with elevated mean may indicate sustained sympathetic activation.

Formula
HR_IQR = p75(HR | motion=0) − p25(HR | motion=0)
HR IQR (bpm)Interpretation
> 10High variability — good autonomic range
5 – 10Moderate
< 5Low variability — suppressed autonomic range
PB HR ContrastMean HR During vs. Outside PB Windows
Research

Difference between mean HR inside detected periodic breathing oscillation windows and mean HR outside those windows. A positive contrast (HR higher during PB) reflects the sympathetic activation associated with cyclic apneas. A near-zero contrast suggests the autonomic arousal pathway is blunted.

Formula
PB_contrast = meanHR(PB windows) − meanHR(non-PB windows)
PB HR Contrast (bpm)Interpretation
< 3Low contrast — minimal PB arousal
3 – 8Moderate arousal coupling
> 8Strong sympathetic surge during PB
Respiratory Rate (proxy)FFT-Estimated Breathing Rate
Research

Dominant frequency of the motion-free HR signal in the 0.15–0.40 Hz band, converted to breaths per minute. At 1 Hz, this is a coarse estimate sensitive to noise; treat as directional only. Elevated proxy rates may reflect tachypnea or signal artifact.

Formula
RR_proxy = argmax |X(f)|² in [0.15, 0.40] Hz × 60
RR proxy (brpm)Interpretation
12 – 20Normal
20 – 25Mildly elevated
> 25 or < 10Artefact or abnormal pattern
HR AsymmetryHR Rise vs. Fall Imbalance
Research

Difference between mean HR acceleration rate (rise/s) and mean HR deceleration rate (fall/s) over the whole night, computed on 10-sample rolling windows. Positive asymmetry = HR rises faster than it falls (sympathetic dominance). Negative = HR falls faster (parasympathetic dominant, normal sleep).

Formula
hrAsym = mean(HR rise rate) − mean(HR fall rate) [bpm/s]
HR AsymmetryInterpretation
< 0Normal parasympathetic dominance
0 – 0.3Neutral
> 0.3Sympathetic-dominant pattern
HR Quartile TrendQ4−Q1 HR Arc Across Night
Research

Difference between mean HR in the last quartile (Q4) and first quartile (Q1) of the recording. Negative value (Q4 < Q1) = HR declining across the night, which is normal. Positive or flat trend may indicate progressive autonomic stress or REM-rich later sleep.

Formula
hrQuart = mean(HR, Q4 window) − mean(HR, Q1 window)
Q4−Q1 (bpm)Interpretation
−5 to −1Normal decline
−1 to +2Flat — possible fragmentation
> +2Rising pattern — late-night arousal burden
HR CVCoefficient of Variation of HR
Advanced

SD / mean × 100 of motion-free HR. Normalises SDNN proxy by mean HR, making it more comparable across individuals with different resting rates. A high CV with high HR floor may indicate sustained nocturnal sympathetic tone.

Formula
HR_CV = SD(HR | motion=0) / mean(HR | motion=0) × 100
HR CV (%)Interpretation
> 8Good relative variability
4 – 8Moderate
< 4Low relative variability
Circadian HR Amplitude / Nadir HourCosine-Fit Circadian HR Parameters
Research

Least-squares cosine fit (y = A·cos(2πt/T) + C) to the nightly HR vector. Amplitude = A (bpm), magnitude of the circadian HR oscillation. Nadir Hour = time of minimum HR as fraction of recording (hours from start). Larger amplitude indicates stronger cardiac circadian drive; nadir before 4 AM is normal.

Formula
y = A·cos(2πt/T) + C A = amplitude; nadir at t = T/(2π) × atan2(B, A)
Amplitude (bpm)Interpretation
> 5Strong circadian HR swing
2 – 5Moderate
< 2Flat — suppressed circadian rhythm
HR Nadir TimingHour of Lowest HR
Advanced

Hour from recording start at which the lowest 5-minute smoothed HR is observed. Normally occurs in the first half of sleep during deep NREM. Late nadir (after 60% of recording) may indicate REM-heavy sleep architecture or delayed parasympathetic activation.

HR Nadir TimingInterpretation
First 40% of recordingNormal NREM-associated dip
40 – 60%Mid-night — indeterminate
Last 40%Late nadir — check for REM bias or fragmentation
Nocturnal HR DipIntra-Night HR Dip % (hrnDip)
Advanced

Percentage by which HR descends from the night mean to its floor: (mean − floor) / mean × 100. Note: this is an intra-night dip, not the standard clinical nocturnal dip (which requires daytime HR). It measures autonomic flexibility within the sleep period only.

Formula
hrnDip = (meanHR − hrFloor) / meanHR × 100
hrFloor = 5th-percentile motion-free HR. Not equivalent to daytime resting HR.
hrnDip (%)Interpretation
> 10Good intra-night dip — strong vagal tone
5 – 10Moderate dip
< 5Low dip — possible autonomic suppression
Vagal IndexComposite Vagal Tone Proxy
Advanced

Weighted composite of three parasympathetic markers: pNN3 (short-term vagal drive), HR floor (low floor = strong vagal tone), and longest clean run (data quality / sustained calm period). Formula intentionally non-linear to reflect the multiplicative nature of autonomic recovery.

Formula
VI = pNN3 / max(hrFloor, 1) × ln(1 + longestCleanRun)
longestCleanRun in seconds. No published normal values — use for intra-individual trending.
Vagal IndexRelative tone
> 0.05High vagal tone
0.01 – 0.05Moderate
< 0.01Low vagal tone
Sympathetic Surge Index (SSI)Composite Arousal–Sympathetic Load
Advanced

Weighted sum of three arousal markers, each normalised to a 0–1 scale: HR spike rate (weight 0.4), post-dip HR response (weight 0.4), and AAI load (weight 0.2). Captures the overall sympathetic burden per night. High SSI with low ODI-4 points to UARS or non-apneic arousal; high SSI with high ODI-4 indicates OSA-driven arousal.

Formula
SSI = spikeRate×0.4 + postDipNorm×0.4 + aaiLoad×0.2
spikeRate normalised to 0–1 on 0–10 spikes/hr scale. postDipNorm = post-dip HR change / 10 bpm (capped). aaiLoad = AAI / 5.
SSIInterpretation
< 0.5Low sympathetic burden
0.5 – 1.5Moderate arousal load
> 1.5High sympathetic surge — significant fragmentation
HR Deceleration RunsCount of Sustained HR Decreases ≥3 bpm over ≥30 s
Research

Number of runs where HR decreases by at least 3 bpm from its local peak and sustains that decrease for ≥30 consecutive seconds. Reflects prolonged parasympathetic activation episodes. Elevated count may suggest strong vagal rebound after arousal clusters (post-arousal bradycardia).

Formula
Run detected when HR_start − HR_current ≥ 3 bpm for ≥30 s
Decel. RunsInterpretation
2 – 8/hrNormal parasympathetic cycling
< 2/hrReduced vagal rebound
> 12/hrExcessive — severe fragmentation rebound
SpO₂–HR Decoupling %Fraction of 30-s Windows with Concordant SpO₂–HR Direction
Advanced

Percentage of 30-second windows in which SpO₂ and HR change in the same direction (both rise or both fall). Normal physiology expects an inverse relationship (SpO₂ falls → HR rises). High decoupling % suggests impaired autonomic reflex arc or central event pattern.

Formula
Decoupled if sign(ΔSpO₂) = sign(ΔHR) over 30-s window Pct = decoupled_count / total_windows × 100
Decoupling %Interpretation
< 30Normal inverse coupling
30 – 50Partial decoupling
> 50Majority decoupled — central or blunted arousal
HR Spike / Autonomic Arousal Analysis
Detection and characterization of transient HR accelerations — proxies for sleep arousals
HR SpikesAutonomic Arousal Events
Core

Transient HR accelerations against a 3-minute rolling baseline. Each spike is a candidate autonomic arousal. Motion-contaminated spikes (motion>0 in a 12-sample lookahead window) are automatically excluded and counted separately as positional arousals.

Detection criteria
HR[t] ≥ baseline + threshold_bpm (dynamic, typically 8 – 12 bpm) Prior still run ≥ 5 s required 30-s refractory period after each event 12-sample motion lookahead exclusion
Rise (bpm/s)
HR rise rate from baseline to peak. Steeper = more abrupt arousal.
Decay (s)
Time for HR to return to within 3 bpm of baseline. Reflects sympathetic load.
Undershoot (bpm)
Min HR in 60-s post-spike window minus baseline. Deep undershoot = strong vagal rebound — marker of intact cardiac reflexes.
50% Recovery (s)
Time to return halfway from peak to baseline. Cardiac autonomic recovery speed.
SpO₂ at spike (%)
SpO₂ at spike onset. Low value suggests the spike was triggered by a preceding desaturation event.
Periodicity
If 3+ spikes show inter-event intervals within ±20% CV, pattern is flagged. ~90 – 120 min intervals may suggest REM cycling; ~20 – 40 s may suggest PLM candidate.
Spikes/hrClassification
< 5Normal (infrequent arousals)
5 – 15Mildly elevated — UARS, positional, environmental
15 – 30Moderate — significant fragmentation
> 30Severe — evaluate for UARS/OSA
AAIAutonomic Arousal Index (events/hr)
Advanced

Combined rate of HR spikes and ODI-4 events per hour. High AAI with low ODI-4 → non-apneic arousal causes (UARS, PLMS, environmental). High AAI tracking closely with ODI-4 → arousal driven by obstructive events.

Formula
AAI = (spike_count + ODI-4_count) / recording_hours
🌙
Sleep Timing Metrics
SOL, WASO, and ultradian architecture from HR and motion signals
SOLSleep Onset Latency (minutes)
Advanced

Time to the first 60-second window where HR standard deviation drops below 5 bpm — proxy for stable cardiac activity co-occurring with light NREM onset. Returns null (—) when no stable window is found.

Method
SOL = first i/60 min where SD(HR[i..i+60]) < 5 bpm
SOL (min)Classification
< 20Normal
20 – 30Mildly extended
30 – 45Extended
> 45Significantly extended
WASOWake After Sleep Onset (minutes)
Advanced

Total time with motion>0 after sleep onset. Proxy for nocturnal wakefulness. Returns null when SOL is undetectable (so it is not inflated by pre-onset recording time).

Formula
WASO = ∑(motion>0 samples after onsetIdx) / 60 min Returns null if SOL = null
WASO (min)Classification
< 20Normal
20 – 40Mildly elevated
40 – 60Significant disruption
> 60Severe fragmentation
Ultradian CyclesHR Valley Count (90-min cycle proxy)
Advanced

Valleys in the 5-min centered-smoothed HR signal, separated by ≥ 60 min. Normal adult sleep has 4 – 6 cycles of ~90 min. HR dips at NREM→REM transitions create detectable valleys. Centered window corrected in v22.15 (prior trailing window displaced valleys ~2.5 min forward).

Method (centered)
hrSmooth[i] = mean(HR[i−150..i+150]) (centered 300-s) Valley: hrSmooth[i] < hrSmooth[i±150] Min gap: 3600 s; Cycles = valleys − 1
CyclesInterpretation
4 – 6Normal adult sleep structure
2 – 3Reduced cycling — truncation or fragmentation
0 – 1Flat — severely disrupted architecture
💤
Sleep Stage Proxies
Heuristic REM and NREM estimation from HR patterns — not EEG
⚠️
Not validated sleep staging. HR-based heuristics only. EEG-grade staging requires polysomnography or a validated multi-sensor wearable. Use for directional tracking only.
REM ProxyREM-candidate minutes
Research

2-min motion-free windows where HR SD < 3 bpm and mean HR is within ±5 bpm of the whole-night mean. REM sleep tends to produce HR near the night average with moderately low variance.

Criteria
motion=0; SD(HR_win) < 3; mean(HR_win) ∈ (HR_mean−5, HR_mean+5)
NREM-Deep ProxySlow-wave candidate minutes
Research

2-min motion-free windows where HR SD < 4 bpm and mean HR > 6 bpm below the night average. Slow-wave sleep is characterized by strong vagal dominance, pulling HR significantly below the night mean.

Criteria
motion=0; SD(HR_win) < 4; mean(HR_win) < HR_mean − 6
Sleep Stability Score0 – 100 composite
Core

Six equally weighted sub-scores (SpO₂ SD, HR floor, motion %, oscillation count, hypoxic burden rate, T95), each normalized 0 – 100. Mean of all six gives the final score.

Components
s1=f(SpO₂ SD); s2=f(HR floor); s3=f(motion %); s4=f(oscillation count); s5=f(hypoxic burden); s6=f(T95) Score = mean(s1..s6)
ScoreClassification
80 – 100Excellent
65 – 79Good
50 – 64Fair
35 – 49Poor
< 35Very poor
WASO %Wake After Sleep Onset as % of Recording
Advanced

WASO expressed as a percentage of total recording time after the detected sleep-onset window. Complements absolute WASO minutes — 40 min WASO is very different in a 5-hour vs. a 9-hour recording. Derived from the motSleep sub-object.

Formula
wasoPct = wasoMin / (recDurationMin − solMin) × 100
WASO %Grade
< 5Normal
5 – 15Mild
15 – 30Significant
> 30Severe fragmentation
WASO WindowsCount of 5-min Post-Onset Motion Windows
Advanced

Number of 5-minute windows after sleep onset that contain any motion sample (motion > 0). Provides a discrete count of interrupted sleep periods rather than a continuous time measure. Each window represents a distinct awake episode.

WASO WindowsInterpretation
< 4Minimal waking
4 – 10Mild fragmentation
10 – 20Significant fragmentation
> 20Severely disrupted sleep continuity
Positional ShiftsCount of Body-Position Change Proxies
Advanced

Number of abrupt motion bursts (≥3 seconds of motion signal after a ≥5-minute quiet period) detected across the night. Proxy for major position changes. Very high counts may indicate restless legs syndrome or periodic limb movements. Very low counts (<2) in a long recording suggest complete immobility.

Positional ShiftsInterpretation
3 – 12Normal sleep repositioning
> 20Restless — screen for PLMS/RLS
< 2Immobility — possible deep sedation or artifact
Sleep Pressure Index (SPI)Composite Residual Sleep Drive
Advanced

Weighted composite of three sleep-continuity disruptors: WASO duration (weight 0.4), motion burst count (weight 0.15), and sleep-onset latency (weight 0.25). Higher SPI = greater residual sleep pressure accumulation, suggesting the sleep period did not provide adequate restoration.

Formula
SPI = WASO_min×0.4 + bursts×0.15 + SOL_min×0.25
SPISleep pressure
< 5Low — restorative night
5 – 15Moderate
15 – 30High — poor sleep quality
> 30Very high — significant sleep debt
Breathing Irregularity CV (biCV)CV of Inter-Nadir Intervals
Research

Coefficient of variation of the inter-nadir interval series (see IEI above), expressed as a percentage. Identical source data as Recovery CV — presented here in the sleep section as a sleep-breathing regularity summary. Low biCV with IEI in the CS range is the strongest pattern indicator for Cheyne–Stokes.

Formula
biCV = SD(IEI) / mean(IEI) × 100
biCV (%)Pattern
< 30Regular — cyclic PB/CS
30 – 60Variable
> 60Irregular — obstructive dominant
Motion %Fraction of Recording with Motion > 0
Advanced

Percentage of all samples where the motion channel is non-zero. Used as a global sleep restlessness indicator. High motion% reduces the reliability of all HR and SpO₂ metrics because artifact rejection removes those intervals from calculations.

Formula
motPct = count(motion > 0) / n × 100
Motion %Interpretation
< 10Calm night
10 – 25Mildly restless
25 – 50Restless — reduced metric confidence
> 50Highly restless — unreliable HRV metrics
Motion BurstsCount of Discrete Motion Episodes
Advanced

Number of separate runs of consecutive motion > 0 samples, each separated by ≥30 seconds of quiet. Distinct from motion% — a single 10-minute movement period counts as 1 burst, whereas 30 brief startle movements count as 30 bursts. Higher burst counts at stable motion% suggest fragmented microarousals.

Motion Bursts / hrInterpretation
< 5Low arousal burden
5 – 15Mild
> 15Frequent microarousals
Longest Clean RunMaximum Consecutive Artifact-Free Seconds
Advanced

Longest uninterrupted run of samples where motion = 0, SpO₂ is in the 70–100% range, and no HR artifact flags are set. Indicates the best-quality data window in the recording. Short clean runs (<10 min) indicate poor recording quality throughout and reduce confidence in all derived metrics.

Longest Clean Run (s)Data quality
> 3600Excellent — >60 min clean window
1800 – 3600Good
600 – 1800Fair — interpret with caution
< 600Poor — metrics unreliable
Recovery IndexResaturation Rate / Desaturation Rate Ratio
Advanced

Ratio of mean absolute recovery slope to mean absolute dip slope. Values near 1.0 indicate symmetric events. Values >1.5 mean the SpO₂ recovers faster than it drops (fast recovery — typically obstructive events with intact arousal). Values <0.8 indicate slow recovery (possible impaired cardiac output or central pattern).

Formula
RI = |meanRecSlope| / |meanDipSlope|
Recovery IndexPattern
> 1.5Fast recovery — brisk arousal
0.8 – 1.5Symmetric — normal
< 0.8Slow recovery — impaired resaturation
🎯
Composite & Derived Scores
Multi-factor scores synthesizing SpO₂, HR, and motion signals
NSINocturnal Stress Index (0 – 100)
Advanced

Weighted composite of ODI-4 rate, AUC-90, T95, and AAI components, each normalized to worst plausible values, clipped 0 – 100.

NSIInterpretation
0 – 20Low stress night
20 – 45Moderate
45 – 70High
> 70Severe stress burden
CS ScoreCheyne-Stokes Probability (0 – 3)
Advanced

Constructed, non-validated heuristic for periodic/CSR-like breathing — a directional flag, not a diagnosis. High scores warrant discussion with a physician regarding central sleep apnea or heart failure.

Scoring (1 point each, capped at 3)
+1: PB cycle length 40–130 s (clinical CSR window) +1: BLUNTED_AROUSAL flag present +1: cardiorespiratory coupling (CRC) index < 0.2 +1: ODI-4 < 3/hr AND ≥ 5 oscillation episodes (central pattern: many cycles, little desaturation)
⚠ Constructed index, not a validated clinical score.
UARS ScoreUARS Pattern Probability (0 – 3)
Advanced

UARS produces frequent arousals (HR spikes) without significant desaturation — a pattern that standard ODI-based screening entirely misses. Constructed, non-validated; score ≥ 2 warrants upper-airway evaluation.

Scoring (1 point each, capped at 3)
+1: PB cycle length < 40 s (short, high-frequency) +1: autonomic arousal index ≥ 3/hr +1: ODI-4 < 5/hr AND ≥ 3 oscillation episodes +1: Sleep Fragmentation Index ≥ 2
⚠ Constructed index, not a validated clinical score.
SFISleep Fragmentation Index (/hr)
Advanced

Rate of sleep fragmentation events per hour. Combines motion-based arousals, HR spikes, and desaturation-associated arousals into a single burden metric.

Formula
SFI = (motion_bursts + spikes + ODI-4_events) / recording_hours
🔗
Cross-Signal Metrics
Relationships between SpO₂, HR, and motion signals
CRC IndexCardiorespiratory Coupling Index
Research

Pearson correlation between 5-min rolling SpO₂ and HR means across the night. Strong negative correlation = expected coupling (desaturations trigger HR arousals). Weak or positive = decoupled autonomic responses.

Formula
CRC = Pearson r(5-min SpO₂ means, 5-min HR means) Typical range: −0.6 to −0.2
Coupling Score% Nadirs Followed by HR Spike
Research

Fraction of ODI-4 nadir events where an HR spike occurs within 60 s. Low coupling with high ODI-4 suggests blunted arousal response — potentially more dangerous, as arousals are protective.

Formula
CouplingScore = (ODI-4 nadirs with spike ≤60 s) / total_ODI-4 × 100%
SpO₂–HR LagCross-Correlation Peak Lag (seconds)
Research

Time lag at which SpO₂–HR cross-correlation peaks. 10 – 30 s lag (HR rising after SpO₂ drops) = typical obstructive apnea. Very short or negative lag may suggest central mechanism.

Method
lag* = argmax CrossCorr(SpO₂[t], HR[t+lag]) for lag ∈ [0..90 s]
PB Diverge Count / %Oscillation Episodes Without HR Arousal
Research

Count and percentage of detected periodic breathing (PB) oscillation windows that occur without a corresponding HR spike within 60 seconds. High diverge % means PB is present but arousals are absent — the BLUNTED AROUSAL pattern associated with central sleep apnea and heart failure.

Formula
DivergePct = divergeWindows / totalOscWindows × 100
Diverge %Interpretation
< 25Most PB windows have arousal coupling
25 – 50Partial blunting
50 – 75Majority uncoupled
> 75Severe blunting — CS pattern screen
BLUNTED AROUSAL FlagHeuristic Absent-Arousal Flag
Research

Binary flag set when both conditions are met: (1) PB Diverge % ≥ 75%, and (2) oscillation episode count ≥ 6. The dual threshold was tuned on a small internal set (n = 18 nights) to eliminate false positives on CPAP nights where arousal suppression is expected by design.

⚠️
Low-n calibration. An 18-night tuning set is far too small to fix a binary clinical threshold with confidence — the 75% / ≥6 cut-points are provisional and may shift materially as more data accrues. Use this flag as a soft prompt to review the raw oscillation trace, never as a standalone determination.
Formula
Flag if divergePct ≥ 75 AND osc.episodeCount ≥ 6
ℹ️
This is a heuristic flag, not a diagnostic criterion. Central sleep apnea requires PSG confirmation.
🏃
VO₂max Estimate
Cardiorespiratory fitness estimate from nocturnal HR data (Uth-Sørensen 2004)
VO₂maxMaximum Oxygen Uptake — Uth-Sørensen Estimate
Advanced

Aerobic capacity estimate (ml/kg/min) from the HRmax/HRrest ratio. HR floor = HRrest proxy. Age-predicted HRmax via Tanaka formula. Overridable with measured HRmax from the profile panel.

Formula (Uth-Sørensen 2004)
VO₂max ≈ 15.3 × (HR_max / HR_rest) HR_max = 208 − 0.7 × age (Tanaka formula) ±SEE = ±10.8 ml/kg/min (r=0.82)
RMSSD adjustment: ±1.5 ml/kg/min based on vagal tone proxy. Wide SEE means individual estimates may be off — use for trend tracking only.
VO₂max (ml/kg/min)ACSM Grade (men 40 – 49)Women 40 – 49
< 31Poor< 24
31 – 36Fair24 – 28
36 – 42Good29 – 35
42 – 48Excellent35 – 42
> 48Superior / Elite> 42
⚠️
Limitations: Beta-blockers, uncontrolled sleep disorders, and elevated resting HR independently affect the ratio. The estimate improves with directly measured HRmax and stable nocturnal HR.
🏋️
Karvonen Training Zones & Readiness
Heart Rate Reserve-based training zones with next-day readiness scoring
Karvonen Z1 – Z5Heart Rate Reserve Zones
Advanced

Five training intensity zones from HRR (= HRmax − HRrest), where HRrest = nocturnal HR floor. Each zone is a percentage range of HRR added to HRrest. HRR-based zones are more individualized than age-predicted fixed-percent zones.

Karvonen formula
Z_lo = HR_rest + HRR × lo_frac; Z_hi = HR_rest + HRR × hi_frac Z1 Recovery: 50 – 60% HRR Z2 Aerobic Base: 60 – 70% HRR ← Zone 2 target Z3 Tempo: 70 – 80% HRR Z4 Threshold: 80 – 90% HRR Z5 VO₂max: 90 – 100% HRR MAF HR = 180 − age (Maffetone aerobic ceiling) LTHR ≈ HR_rest + HRR × 0.87
Readiness Score (0 – 100)
Composite of RMSSD proxy, SpO₂ mean, Sleep Stability Score, HR floor vs. 7-night mean, WASO, nocturnal HR slope. > 75: High — train at planned intensity 60 – 75: Good — moderate intensity appropriate 45 – 60: Fair — consider reduced volume < 45: Low — recovery day recommended
📈
Multi-Night Longitudinal Metrics
Trend tracking across multiple uploaded nights — requires ≥3 nights
ℹ️
Longitudinal metrics only appear when 3 or more nights are loaded. Values are derived from the ordered set of nightly summaries and are sensitive to recording-duration differences across nights.
Intra-Night NSIThree 90-min Epoch NSI Values (Early / Mid / Late)
Advanced

The Nocturnal Stress Index (NSI) computed separately for three consecutive 90-minute epochs (early, mid, late night). Each mini-NSI combines epoch-level T95, HR standard deviation, and motion fraction. Rising intra-night NSI suggests progressive hypoxemia or REM-related worsening; falling trend suggests positional improvement.

Formula
miniNSI = (T95_norm + hrSD_norm + mot_norm) / 3 × 100 Each component normalised to 0–1 on worst-plausible scale.
TrendPattern
Flat or decliningStable or improving across night
Rising lateREM-concentrated burden or progressive hypoventilation
Rising earlySleep-onset stress or positional hypoxemia
NSI Mean ± SDAverage Nightly Stress Score ± Variability
Advanced

Mean and standard deviation of the Nocturnal Stress Index across all loaded nights. The mean captures the typical autonomic burden; the SD captures night-to-night consistency. High SD relative to the mean suggests unstable nights — possibly positional, alcohol-related, or CPAP-pressure-dependent.

NSI MeanSD interpretation
< 25 meanLow average burden
25 – 45 meanModerate
> 45 meanHigh chronic burden
SD > mean/2High night-to-night variability
SpO₂ Night CVNight-to-Night SpO₂ Coefficient of Variation
Advanced

CV of nightly mean SpO₂ values across the loaded dataset (SD across nights / grand mean × 100). Low CV = stable oxygenation across nights. High CV may indicate variable positional behaviour, inconsistent device wear, alcohol effects, or intermittent CPAP use.

Formula
SpO₂_NightCV = SD(meanSpO₂_i) / mean(meanSpO₂_i) × 100
Night CV (%)Interpretation
< 1.0Stable across nights
1.0 – 2.5Mild night-to-night variation
> 2.5High variability — investigate cause
PB Episode TrendOLS Slope of PB Episode Count Across Nights
Advanced

Ordinary least-squares slope of the periodic breathing oscillation episode count plotted against recording date. Negative slope = fewer PB episodes over time (treatment response). Positive slope = worsening trend. Shown with 95% confidence bound when ≥5 nights are available.

Formula
PB_trend = OLS slope (episodes/hr vs. date)
Slope (episodes/night)Interpretation
< −0.5Improving PB burden
−0.5 to +0.5Stable
> +0.5Worsening PB trend
Poor Nights %Fraction of Nights with Sleep Stability Score < 50
Advanced

Percentage of loaded nights where the Sleep Stability Score falls below 50 (�ir” threshold). A high poor-nights percentage despite acceptable average metrics reveals that bad nights are being averaged away by good nights — clinically important for CPAP titration monitoring.

Formula
PoorNightsPct = count(stabilityScore < 50) / totalNights × 100
Poor Nights %Interpretation
< 20Most nights adequate
20 – 40Frequent poor nights
> 40Majority poor — treatment inadequate
ODI-4 First→Last ΔCPAP Efficacy Delta Across Uploaded Nights
Advanced

Difference in ODI-4 rate between the most recent and oldest uploaded nights (positive = worsening, negative = improvement). Used as a simple treatment-effect marker for CPAP users. Interpret alongside PB trend and NSI mean for a complete efficacy picture.

Formula
ΔODI-4 = ODI-4_last − ODI-4_first
ΔODI-4 (events/hr)Interpretation
< −5Significant improvement
−5 to 0Mild improvement or stable
0 – +5Stable to mildly worse
> +5Worsening — review CPAP settings
SOL TrendOLS Slope of Sleep Onset Latency Across Nights
Advanced

Ordinary least-squares slope of nightly sleep onset latency (minutes) vs. date. A negative slope indicates improving sleep initiation over time (sleep hygiene, CPAP adaptation). A positive slope suggests accumulating sleep-onset difficulty (anxiety, medication change, poor sleep pressure).

Formula
SOL_trend = OLS slope (SOL_min vs. date) [min/day]
SOL Trend (min/night)Interpretation
< −0.5Improving sleep onset
−0.5 to +0.5Stable
> +0.5Worsening sleep onset — investigate
📡
Signal Quality & Artifact Flags
How the parser detects and handles data quality issues
HR Artifact Cleaning
Core

Before any HR metric is computed, the raw 1 Hz stream is cleaned of: (1) Single-sample spikes where HR jumps >25 bpm from its 5-sample rolling context; (2) Clock artifacts — 30+ consecutive identical values (known O2Ring firmware dropout). Cleaned samples replaced with rolling mean.

HR FlatlinesFirmware Dropout Detection
Advanced

Runs of ≥ 30 consecutive identical integer HR values differing from surrounding context. Indicates sensor contact loss rather than true cardiac events.

Criterion
≥ 30 consecutive identical HR values AND |value − context_mean| < 3 bpm
Data GapsRecording Interruptions > 2 s
Advanced

Timestamp jumps > 2 s in the raw CSV. Common causes: device removal, charging interruption, firmware buffer overflow. High gap counts reduce confidence in duration-based metrics.

LCSPLongest Continuous SpO₂ Period >95%
Advanced

Longest uninterrupted run (min) of SpO₂ continuously above 95%. Very short LCSP means the patient rarely achieves sustained normal saturation — a strong hypoxic burden indicator even when mean SpO₂ appears acceptable.

Formula
LCSP = max run length (s) where SpO₂ > 95%, converted to minutes
LCSP (min)Interpretation
> 60Sustained normal saturation
20 – 60Interrupted — moderate hypoxic burden
5 – 20Rarely achieves sustained normoxia
< 5Persistent hypoxemia — urgent evaluation
📋
Full Abbreviation Index
Every abbreviation used in the parser — click any highlighted term to jump to its section

🔗 = links to metric definition   |   highlighted abbreviations are clickable

OxyDex Reference Guide
For use with OxyDex v1.0.0 (v22.35+). Clinical indices sourced from published literature; see README for full citations.
Not a medical device. Not FDA or CE cleared. Personal and research use only.
Apache-2.0 License
📚
Academic References
Peer-reviewed sources underpinning every metric, formula, and threshold in OxyDex
ℹ️
Coverage note This section covers all seven source categories required by the OxyDex provenance framework: Sleep Medicine & AASM scoring manuals; Hypoxic Burden literature; ODI & oximetry indices; Cardiovascular outcome studies; HRV / signal-processing methods; ATS/ERS respiratory standards; and formula citations (BMI, BSA, MAP, BMR, VO₂max, Karvonen). Every formula in OxyDex maps to at least one citation here.
64
Total References
4 Sleep Medicine / AASM4 Hypoxic Burden5 ODI & Oximetry7 HRV / Signal Processing4 Device & Norms24 Cardiovascular Outcomes5 ATS / ERS Standards11 Formula Citations
Literature review: June 2026
📄
Sleep Medicine & AASM Scoring Manuals
Rules governing hypopnea, arousal, and event-scoring definitions
AASM 2017 Berry et al.
Core

Berry RB, Brooks R, Gamaldo C, et al. The AASM Manual for the Scoring of Sleep and Associated Events: Rules, Terminology and Technical Specifications, Version 2.4. Darien, IL: American Academy of Sleep Medicine; 2017. Official: aasm.org/clinical-resources/scoring-manual

Metrics covered
Hypopnea scoring (≥3% or ≥4% ODI threshold), arousal rules, sleep-stage scoring. Basis for ODI-3 vs ODI-4 dual-threshold approach.
AASM 2012 Berry et al.
Core

Berry RB, Budhiraja R, Gottlieb DJ, et al. Rules for scoring respiratory events in sleep: Update of the 2007 AASM Manual for the Scoring of Sleep and Associated Events. J Clin Sleep Med. 2012;8(5):597–619. doi: 10.5664/jcsm.2172

Metrics covered
Recommended 4% desaturation criterion; updated hypopnea definition underpinning ODI-4 as primary AHI surrogate. Also informs SOL, WASO, and arousal-index definitions.
AASM 2007 Iber et al.
Core

Iber C, Ancoli-Israel S, Chesson AL, Quan SF. The AASM Manual for the Scoring of Sleep and Associated Events: Rules, Terminology and Technical Specifications, Version 1.0. Westchester, IL: American Academy of Sleep Medicine; 2007. ISBN 978-0-9800747-0-1. Official: aasm.org/clinical-resources/scoring-manual

Metrics covered
Foundational sleep-stage, arousal, and respiratory event scoring rules. First formal standardisation of Tx (CTlt90, CTlt89…) threshold measurement.
ICSD-3 AASM 2014
Core

American Academy of Sleep Medicine. International Classification of Sleep Disorders, 3rd ed. Darien, IL: AASM; 2014. Official: aasm.org/clinical-resources/icsd

Metrics covered
OSA severity classification thresholds (AHI / ODI <5 normal, 5–14 mild, 15–29 moderate, ≥30 severe) used throughout OxyDex grading tables.
💧
Hypoxic Burden & Cardiovascular Outcomes
Event-based desaturation area metrics linked to CV mortality and morbidity
Azarbarzin 2019 Hypoxic Burden — EHJ
Core

Azarbarzin A, Sands SA, Stone KL, et al. The hypoxic burden of sleep apnoea predicts cardiovascular disease-related mortality: the Osteoporotic Fractures in Men Study and the Sleep Heart Health Study. Eur Heart J. 2019;40(14):1149–1157. doi: 10.1093/eurheartj/ehy624

Metrics covered
Hypoxic Load (HL), AUC-90, event-based pre-event baseline method. MrOS n=2,743 / SHHS n=5,111 validation. HR(Q5 vs Q1)=2.73 for CVD mortality. Foundational for all “event-based hypoxic burden” warnings in OxyDex.
CohortnHR Q5 vs Q1 (CVD mort.)
MrOS2,7432.73 (95% CI 1.71–4.36)
SHHS5,1111.96 (95% CI 1.11–3.43)
Azarbarzin 2020 Hypoxic burden → HF
Core

Azarbarzin A, Sands SA, Taranto-Montemurro L, Vena D, Sofer T, Kim SW, et al. The sleep apnea–specific hypoxic burden predicts incident heart failure. Chest. 2020;158(2):739–750. doi: 10.1016/j.chest.2020.03.053

Metrics covered
Establishes sleep-apnea-specific hypoxic burden (SASHB) as a validated outcome predictor (incident HF, MrOS & SHHS). Note: the ODI-4→AHI surrogate (AHI ≈ ODI-4 × 1.1) and the pRED-3p quintile cut-points are OxyDex internal calibration, not from this paper — treat as directional.
Azarbarzin 2022 CPAP response (RICCADSA)
Core

Azarbarzin A, Zinchuk A, Wellman A, Labarca G, Vena D, Gell L, et al. Cardiovascular benefit of continuous positive airway pressure in adults with coronary artery disease and obstructive sleep apnea without excessive sleepiness. Am J Respir Crit Care Med. 2022;206(6):767–774. doi: 10.1164/rccm.202111-2608OC

Metrics covered
Supports the principle that hypoxic-dose–defined OSA severity identifies CPAP responders. Note: this is a RICCADSA reanalysis in coronary-artery-disease patients — it does not supply the HD94→SBP coefficient; that coefficient is OxyDex internal calibration. Treat as directional.
Hui 2024 / SBII Respirology n=4,485
Core

Hui C, Azarbarzin A, Marques M, et al. Hypoxic indices for obstructive sleep apnoea severity and cardiovascular disease risk prediction: a comparison and application in a community population. Respirology. 2024;29(7):599–609. doi: 10.1111/resp.14754

Metrics covered
SBII = ∑(Dᵢ² × Tᵢ min) / TRThr formula and quintile thresholds (Q1 <2.58, Q5 >25.54). SBII optimal for CVD mortality; pRED-3p optimal for CVD morbidity. Validates both indices in SHHS sub-cohort.
QuintileSBII rangeCVD mortality risk
Q1<2.58Lowest (reference)
Q22.58–6.49Low
Q36.49–12.8Median
Q412.8–25.54Elevated
Q5>25.54Highest (2.5× vs Q1)
📊
ODI & Oximetry Index Literature
Validation studies for desaturation counting, T-threshold metrics, and oximetry scoring
Nieto 2000 SDB→hypertension SHHS
Advanced

Nieto FJ, Young TB, Lind BK, et al. Association of sleep-disordered breathing, sleep apnea, and hypertension in a large community-based study (Sleep Heart Health Study). JAMA. 2000;283(14):1829–1836. doi: 10.1001/jama.283.14.1829

Metrics covered
Establishes the SDB→hypertension association underpinning BP Projection. Note: the specific linear coefficients (ODI-4 → +0.37 mmHg SBP / +0.17 mmHg DBP per event·hr) are this app’s internal calibration, not a published table from this paper — treat as directional.
Kulkas 2013 DesSev & pRED-3p
Advanced

Kulkas A, Tiihonen P, Julkunen P, Mervaala E, Töyräs J. Novel parameters indicate significant differences in severity of obstructive sleep apnea with patients having similar apnea–hypopnea index. Med Biol Eng Comput. 2013;51(6):697–708. doi: 10.1007/s11517-013-1039-4 (PMID 23417543 — the original DesSev / desaturation-severity paper.)

Metrics covered
DesSev = ODI-3 × mean depth × mean duration / k normalisation. pRED-3p quintile CVD morbidity cut-points (Q1 <2.78%, Q5 >19.04%). MODL as companion mean-during-event metric.
Brouillette 2000 McGill Oximetry Score
Core

Brouillette RT, Morielli A, Leimanis A, et al. Nocturnal pulse oximetry as an abbreviated testing modality for pediatric obstructive sleep apnea. Pediatrics. 2000;105(2):405–412. doi: 10.1542/peds.105.2.405

Metrics covered
Original pediatric McGill Oximetry Score (visual cluster method). OxyDex MOS is an adult-adapted proxy inspired by this work but uses ODI-4 + CTlt90 inputs — not a direct reimplementation. Distinction explicitly flagged in the MOS card.
Garg 2014 T95 / CTlt90 clinical use
Advanced

Garg N, Rolle AJ, Lee TA, Prasad B. Home-based diagnosis of obstructive sleep apnea in an urban population. J Clin Sleep Med. 2014;10(8):879–885. doi: 10.5664/jcsm.3966

Metrics covered
T95, T90, CTlt90 thresholds and grading ranges (normal <1 min, mild 1–10 min, significant 10–30 min, severe >30 min) used in OxyDex Thresholds & T-Index section.
Magalang 2003 Δ-Index SpO₂ instability
Research

Magalang UJ, Dmochowski J, Veeramachaneni S, et al. Prediction of the apnea-hypopnea index from overnight pulse oximetry. Chest. 2003;124(5):1694–1701. doi: 10.1378/chest.124.5.1694 (Δ-Index originally described by Lévy et al., Chest 1996.)

Metrics covered
Δ-Index = mean|SpO₂(t+3) − SpO₂(t)|; grading (<0.5 stable, 0.5–1.5 mildly unstable, >1.5 highly unstable) used in OxyDex Desaturation Profile section.
❤️
HRV, Nonlinear Dynamics & Signal Processing
Foundations for HR proxy metrics, DFA, SampEn, Poincaré, and cross-signal indices
Task Force 1996 HRV Standards
Core

Task Force of the European Society of Cardiology and the North American Society of Pacing and Electrophysiology. Heart rate variability: standards of measurement, physiological interpretation, and clinical use. Circulation. 1996;93(5):1043–1065. doi: 10.1161/01.CIR.93.5.1043

Metrics covered
SDNN, RMSSD, pNN50 definitions and clinical norms. Basis for OxyDex “HRV proxy” labelling — all metrics are explicitly flagged as 1-Hz PPG proxies not equivalent to beat-to-beat RR standards.
Peng 1995 DFA α1
Research

Peng CK, Havlin S, Stanley HE, Goldberger AL. Quantification of scaling exponents and crossover phenomena in nonstationary heartbeat time series. Chaos. 1995;5(1):82–87. doi: 10.1063/1.166141

Metrics covered
DFA α1 method (integrate, detrend, compute F(n) slope in log-log) applied in OxyDex to SpO₂ signal on 4–16 s windows. α≈0.5 random; ≈1.0 long-range correlated; >1.0 non-stationary/cyclic hypoxemia.
Richman 2000 Sample Entropy
Research

Richman JS, Moorman JR. Physiological time-series analysis using approximate entropy and sample entropy. Am J Physiol Heart Circ Physiol. 2000;278(6):H2039–H2049. doi: 10.1152/ajpheart.2000.278.6.H2039

Metrics covered
SampEn(m,r) formula (m=2, r=0.2×SD) applied to SpO₂ signal. Low SampEn (<0.4) flags cyclic/PB pattern; high SampEn (>0.8) indicates normal irregular breathing variability.
Brennan 2001 SD1 / SD2 Poincaré
Advanced

Brennan M, Palaniswami M, Kamen P. Do existing measures of Poincaré plot geometry reflect nonlinear features of heart rate variability? IEEE Trans Biomed Eng. 2001;48(11):1342–1347. doi: 10.1109/10.959330

Metrics covered
SD1 (short-axis) and SD2 (long-axis) Poincaré decomposition used in OxyDex HR Spectral & Nonlinear section to estimate parasympathetic (SD1) and total (SD2) variability.
Tanaka 2001 HRmax formula
Advanced

Tanaka H, Monahan KD, Seals DR. Age-predicted maximal heart rate revisited. J Am Coll Cardiol. 2001;37(1):153–156. doi: 10.1016/S0735-1097(00)01054-8

Metrics covered
HRmax = 208 − 0.7 × age. Used in VO₂max estimate (Uth-Sørensen) and Karvonen Training Zones. ±SEE reported in all derived cards.
Uth-Sørensen 2004 VO₂max HR ratio
Advanced

Uth N, Sørensen H, Overgaard K, Pedersen PK. Estimation of VO₂max from the ratio between HRmax and HRrest — the Heart Rate Ratio Method. Eur J Appl Physiol. 2004;91(1):111–115. doi: 10.1007/s00421-003-0988-y

Metrics covered
VO₂max ≈ 15.3 × (HRmax / HRrest). r=0.82, SEE 널.8 ml·kg¹·min¹. RMSSD adjustment ଑.5 ml·kg¹·min¹ based on vagal-tone proxy applied in OxyDex VO₂max card.
Karvonen 1957 Training Zones
Core

Karvonen MJ, Kentala E, Mustala O. The effects of training on heart rate; a longitudinal study. Ann Med Exp Biol Fenn. 1957;35(3):307–315. PMID: 13470504

Metrics covered
HRR = HRmax − HRrest; Zone N = HRrest + %HRR × (HRmax − HRrest). Z1–Z5 % ranges and readiness scoring used in Karvonen Training Zones section.
📱
Consumer Oximetry & Device Validation
Accuracy limits, Beer-Lambert PPG physics, and wearable oximetry comparisons
Jubran 1999 Pulse Ox accuracy review
Core

Jubran A. Pulse oximetry. Crit Care. 1999;3(2):R11–R17. doi: 10.1186/cc341

Metrics covered
Beer–Lambert dual-wavelength (660 nm red / 940 nm IR) absorption principle; ଒% accuracy spec and reliability range 70–100%. Basis for SpO₂ device disclaimer in OxyDex.
Allen 2007 PPG measurement review
Advanced

Allen J. Photoplethysmography and its application in clinical physiological measurement. Physiol Meas. 2007;28(3):R1–R39. doi: 10.1088/0967-3334/28/3/R01

Metrics covered
1-Hz PPG temporal resolution limitations; rationale for all HR-derived metrics being labelled “proxy only” and not comparable to clinical beat-to-beat HRV norms.
Pépin 2020 Wearable OSA screening
Advanced

Pépin J-L, Bailly S, Tamisier R. Big data in sleep apnea: opportunities and challenges. Sleep Med Rev. 2020;54:101358. doi: 10.1016/j.smrv.2020.101358

Metrics covered
Consumer wearable screening performance and uncertainty; informs OxyDex uncertainty language (“directional proxy,” “not validated home PSG,” “କ events/hr individual uncertainty” on AHI Estimate card).
ACSM 2022 VO₂max normative tables
Core

American College of Sports Medicine. ACSM’s Guidelines for Exercise Testing and Prescription, 11th ed. Philadelphia: Wolters Kluwer; 2022. ISBN 978-1-9751-5018-1. Official: wolterskluwer.com

Metrics covered
VO₂max age/sex normative table (Poor – Fair – Good – Excellent – Superior) used in OxyDex VO₂max projection card grading for men and women 40–49.
🗺️
Formula → Citation Map
Every computed metric mapped to its primary source
Metric / Formula Primary Citation Category
SpO₂, Beer–LambertJubran 1999Device
ODI-4 / ODI-3 / ODI-2 / ODI-1Berry AASM 2012 (scoring rules)AASM / ODI
T95–T80, CTlt90, AUC-90Berry AASM 2007; Garg 2014AASM / ODI
CHA-94Azarbarzin 2019/2020 (hypoxic burden framework)Hypoxic Burden
HD94 / HD90 / HD88Azarbarzin 2019/2020Hypoxic Burden
Hypoxic Load (HL)Azarbarzin 2019 (event-based approximation)Hypoxic Burden
SBIIHui 2024Hypoxic Burden
pRED-3p quintilesKulkas 2013 (concept; cut-points internal)ODI
DesSevKulkas 2013ODI
MOS (proxy)Brouillette 2000 (adapted)ODI
T-AUC Weighted (WtAUC)Azarbarzin 2019 (quadratic burden concept)Hypoxic Burden
Δ-IndexMagalang 2003ODI
DFA α1 (SpO₂)Peng 1995Signal Processing
SampEn (SpO₂)Richman 2000Signal Processing
SDNN proxy, RMSSD proxyTask Force 1996HRV
SD1 / SD2 PoincaréBrennan 2001HRV
BP Projection (ODI contribution)Nieto 2000CV Outcomes
BP Projection (HD94 contribution)Kim/Azarbarzin 2020 (MESA)CV Outcomes
VO₂max (Uth-Sørensen)Uth-Sørensen 2004Projection
HRmax (Tanaka)Tanaka 2001Projection
Karvonen Training Zones Z1–Z5Karvonen 1957Projection
OSA severity grades (AHI ≥30 severe)ICSD-3 (AASM 2014)AASM
VO₂max normative gradesACSM 2022Device / Norms
🔬
ATS / ERS Respiratory & Oximetry Standards
American Thoracic Society and European Respiratory Society guidelines underpinning SpO₂ interpretation thresholds
Metric / RuleCitationCategory
SpO₂ <88% threshold (hypoxaemia)Jacobs SS et al. Home Oxygen Therapy for Adults with Chronic Lung Disease: An Official ATS Clinical Practice Guideline. Am J Respir Crit Care Med. 2020;202(10):e121–e141. doi: 10.1164/rccm.202009-3608STATS / SpO₂
SpO₂ <90% sustained alarm criterionBerry RB et al. AASM Manual for the Scoring of Sleep and Associated Events v2.0. AASM; 2012. (ATS/ERS basis.) aasm.orgERS / Scoring
Nocturnal oximetry interpretation criteriaLévy P et al. Obstructive sleep apnoea syndrome. Nat Rev Dis Primers. 2015;1:15015. doi: 10.1038/nrdp.2015.15 (ERS Task Force.)ERS / OSA
CT90, T90, cumulative hypoxia indicesRanderath WJ, Verbraecken J, Andreas S, et al. Non-CPAP therapies in obstructive sleep apnoea. Eur Respir J. 2011;37(5):1000–28. doi: 10.1183/09031936.00099710ERS / Thresholds
SpO₂ ≥94% as normal lower boundWorld Health Organization. Pulse Oximetry Training Manual. WHO; 2011. (ATS-endorsed threshold.) who.int (PDF)ATS / WHO
📐
Formula Citations — BMI · BSA · MAP · BMR · VO₂max · Karvonen
Primary sources for every physiological formula computed by OxyDex
Formula / MetricPrimary CitationCategory
BMI = kg/m²Keys A et al. Indices of relative weight and obesity. J Chronic Dis. 1972;25(6):329–43. doi: 10.1016/0021-9681(72)90027-6 (Quetelet index formalised; WHO adopted 1995.)BMI
BSA (DuBois formula)DuBois D, DuBois EF. A formula to estimate the approximate surface area if height and weight be known. Arch Intern Med. 1916;17(6):863–71. doi: 10.1001/archinte.1916.00080130010002BSA
BSA (Mosteller formula)Mosteller RD. Simplified calculation of body-surface area. N Engl J Med. 1987;317(17):1098. doi: 10.1056/NEJM198710223171717BSA
MAP = DBP + ⅓(SBP − DBP)Meaney E, Alva F, Moguel R, et al. Formula and nomogram for the sphygmomanometric calculation of the mean arterial pressure. Heart. 2000;84(1):64. doi: 10.1136/heart.84.1.64MAP
BMR — Mifflin–St Jeor equationMifflin MD et al. A new predictive equation for resting energy expenditure in healthy individuals. Am J Clin Nutr. 1990;51(2):241–7. doi: 10.1093/ajcn/51.2.241BMR
BMR — Harris–Benedict (historical)Harris JA, Benedict FG. A biometric study of human basal metabolism. Proc Natl Acad Sci. 1918;4(12):370–3. doi: 10.1073/pnas.4.12.370BMR
VO₂max — nocturnal HR ratio methodJurca R, Jackson AS, LaMonte MJ, et al. Assessing cardiorespiratory fitness without performing exercise testing. Am J Prev Med. 2005;29(3):185–193. doi: 10.1016/j.amepre.2005.06.004 (non-exercise model using resting HR + anthropometrics; OxyDex adaptation. The pure HR-ratio form is Uth–Sørensen 2004, cited above.)VO₂max
VO₂max — Wasserman equationWasserman K, Hansen JE, Sue DY, et al. Principles of Exercise Testing and Interpretation. 5th ed. Philadelphia: Lippincott Williams & Wilkins; 2012. ISBN 978-1-60913-899-8. wolterskluwer.comVO₂max
Karvonen HR zones (HRR method)Karvonen MJ, Kentala E, Mustala O. The effects of training on heart rate; a longitudinal study. Ann Med Exp Biol Fenn. 1957;35(3):307–15. PMID: 13470504Karvonen
HRmax = 208 − 0.7 × ageTanaka H, Monahan KD, Seals DR. Age-predicted maximal heart rate revisited. J Am Coll Cardiol. 2001;37(1):153–6. doi: 10.1016/S0735-1097(00)01054-8 (Tanaka 2001; supersedes the obsolete Haskell & Fox 220−age.)Karvonen / HRmax
BP projection from nocturnal HRPalatini P, Julius S. The role of cardiac autonomic function in hypertension and cardiovascular disease. Curr Hypertens Rep. 2009;11(3):199–205. doi: 10.1007/s11906-009-0035-4BP Projection
↑ back to index
✔️
Validation Status Matrix
What is literature-validated versus experimentally derived — the single most important provenance table for research use

Validation refers to underlying metric validation in published literature and does not imply validation of the OxyDex implementation against a gold-standard laboratory dataset.

Metric CategoryStatusBasis
ODI‑3 / ODI‑4● Literature-basedPublished OSA scoring manuals; AASM 2012+
T90 / CT90 / T95● Literature-basedERS/ATS guidelines; Lévy 2015; Punjabi 2009
Hypoxic Burden (AUC‑90)● Literature-basedAzarbarzin 2019; Labarca 2020
Mean / Minimum SpO₂● Literature-basedWHO 2011; AASM scoring criteria
Mean / Resting HR● Literature-basedStandard clinical norms; Palatini 2009
HR Zones / Karvonen● Literature-basedKarvonen 1957; Tanaka 2001
BMI / BSA / MAP / BMR● Literature-basedKeys 1972; DuBois 1916; Mosteller 1987; Mifflin 1990
HRV Proxies (SDNN, RMSSD, pNN3)◐ Experimental1 Hz pulse-derived; not equivalent to ECG RR-interval HRV
Sleep Architecture Proxies (SOL, WASO, SE)◐ ExperimentalHR/SpO₂ heuristics; no EEG confirmation
VO₂max Estimate◐ Population-derivedHR-ratio method; Uth–Sørensen 2004; not cardiopulmonary exercise test
BP Projection — REMOVED 2026-06-23 (HRV/oximetry→BP, indefensible)— removedCuffless BP from signals removed; cuff SBP/DBP is a user input only
Autonomic Balance / Readiness Score○ Proprietary CompositeOxyDex internal algorithm; no independent external validation
Metric Tier Definitions
TierMeaningExamples
CoreClinically established, guideline-supported — universally interpretableSpO₂, ODI‑4, Mean HR, T90
AdvancedPublished literature support, less commonly used in routine practiceHypoxic Burden, SDNN proxy, VO₂max estimate
ResearchExploratory or emerging metrics — interpret with cautionAutonomic Balance, Sleep Architecture proxies
↑ back to index
𝑓
Formula Provenance Index
Compact audit index — every formula mapped to its primary source
FormulaSource / AuthorYearReference
BMI = kg/m²Quetelet (formalised Keys)1972Keys A et al. J Chronic Dis. 25(6):329–43
BSA (Mosteller)Mosteller RD1987N Engl J Med. 317(17):1098
BSA (DuBois)DuBois & DuBois1916Arch Intern Med. 17(6):863–71
MAP = DBP + ⅓(SBP−DBP)Meaney E, Alva F, et al.2000Heart. 84(1):64; doi:10.1136/heart.84.1.64
BMR (Mifflin–St Jeor)Mifflin MD et al.1990Am J Clin Nutr. 51(2):241–7
BMR (Harris–Benedict, historical)Harris & Benedict1918Proc Natl Acad Sci. 4(12):370–3
HRmax = 208 − 0.7 × ageTanaka, Monahan & Seals2001Tanaka H et al. JACC. 37(1):153–6 (supersedes the obsolete Haskell–Fox 220−age)
Karvonen HR zones (HRR)Karvonen, Kentala & Mustala1957Ann Med Exp Biol Fenn. 35(3):307–15
VO₂max (HR-ratio method)Uth N, Sørensen H, et al.2004Eur J Appl Physiol. 91(1):111–5
VO₂max (Wasserman equation)Wasserman K et al.2012Principles of Exercise Testing. 5th ed.
ODI threshold (3% / 4%)AASM Task Force2012Berry RB et al. AASM Manual v2.0
AUC‑90 (Hypoxic Burden)Azarbarzin A et al.2019Eur Heart J. 40(14):1149–57
↑ back to index
⚠️
Known Limitations
Formal limitations statement — required for scientific credibility and responsible deployment
ℹ️
These limitations are inherent to consumer-grade reflectance pulse oximetry. They do not invalidate OxyDex outputs but define the appropriate interpretation context.
📳 Device & Sampling
  • Consumer-grade reflectance oximetry (Wellue O2Ring)
  • 1 Hz sampling rate — insufficient for true beat-to-beat HRV
  • Susceptible to motion artefact and perfusion variations
  • SpO₂ accuracy ±2% per ISO 80601‑2‑61
  • No ECG channel — HR derived from photoplethysmography
🧠 Clinical Equivalence
  • Not equivalent to polysomnography (PSG)
  • No EEG — sleep stage estimates are HR/SpO₂ proxies
  • HRV metrics cannot be compared to ECG RR-interval clinical norms
  • BP projection is epidemiological, not a cuff measurement
  • VO₂max is an estimation model, not a CPET result
📊 Algorithmic
  • Readiness / Autonomic scores are proprietary composites
  • Sleep architecture proxies lack independent external validation
  • Normative ranges derived from population studies, not device-specific calibration
  • Age/sex adjustments use published reference equations, not local cohort data
⚖️ Regulatory
  • Not FDA cleared or CE marked as a medical device
  • Not intended for clinical diagnosis or treatment decisions
  • Personal, research, and wellness use only
  • Users with medical concerns should consult a qualified clinician
↑ back to index
📋
Project Credits
Authorship, contributions, and open-source provenance
Author
Michal Planicka
Concept · Architecture · Algorithms
Implementation · Validation · UI/UX
Assisted Development
AI-Assisted
Code review · Documentation
Literature synthesis · Reference formatting
Licence & Suggested Citation
Apache-2.0 Open-source
Planicka M. OxyDex: Nocturnal Oximetry Analysis Platform. Version 1.0.0. 2026.
↑ back to index
Reference Guide Version: 1.0.0  ·  Compatible OxyDex Versions: v22.35+  ·  Last Literature Review: June 2026  ·  Apache-2.0 Licence
Intended use & safety

Tepna computes biometric patterns from your wearable and sensor data to support personal self-quantification. It is not a medical device, does not diagnose, treat, cure, screen for, or prevent any disease or condition, and is not a substitute for professional clinical evaluation. It has not been reviewed or cleared by the FDA, CE, or any regulatory body. Always consult a qualified healthcare provider about your health. Use at your own risk. For research and personal use only. 100% local — no data leaves your device.

T Tepna physiological-signal suite
© 2026 Michal Planicka — Concept · Architecture · Algorithms Not a medical device · does not diagnose or treat · not FDA/CE cleared · research & personal use only · ◈ Made in Asheville, NC
licenceApache-2.0