Skip to content

Plethysmogram (SNUADC)

The pulse oximeter's plethysmogram, sampled by SNUADC at 500 Hz. It reaches SNUADC through the oximeter's own 30 Hz frame clock and a hardware delay of about 0.4 s.

Stub

Imported from the time-source table; the full page is still to be written.

Name in the dataset SNUADC/PLETH
Type waveform
Device SNUADC
Stamped by Recorder PC clock
Spaced by SNUADC sample clock
Rate 500 Hz

Measurement space

Time side (stamp-model time): the true time lies between -0.433 s and -0.37 s from the stamp: the delay range plus the interval one value describes.

Time

From UTC to the stored time stamp

The clock path first (UTC to the clock that stamps or spaces the samples), then the signal's own path to its stored time. Each bar: the time shift or error the step introduces (pale) and what is left after the atlas's correction (solid), on a log scale; dashed when estimated or assumed.
The reference every chain starts from.
sync assumed 3 ms – 900 ms · clock link, parameter
Windows time synchronisation to the hospital's time server every 8–24 h (assumed), drifting a few ppm in between. Not observable in the release: dates are shifted to 2100. No step of 0.5 s or more was found.
clock measured 10 ms – 480 ms → 0.3 ms – 3 ms after correction · clock link, The stamp sawtooth model for SNUADC and BIS
SNUADC samples on its own crystal; the recorder stamps each 0.2 s record from its model of that clock. In step mode the stamps drift (−63 ppm median) and are pulled back about 0.48 s whenever the drift reaches half a second; in frequent-correction mode they stay within about 10 ms. The atlas's stamp model refits the line. Drift: −63 ppm median in step mode, pulled back about every 2.08 h.
Signal lost at resets
correction measured 17.2 ms – 18.2 ms → 0 ms – 20 ms after correction · parameter, Paced ECG as an independent clock
At each step-mode reset about 18–20 ms of signal is never sampled, while every record still holds 100 samples. The stamp model adds the loss back at the end of the last record before the new grid; samples inside that record can still be up to about 20 ms late.
The oximeter filters the plethysmogram and plays it out about 0.4 s late (one delay for the release: 0.385 s, with the adopted 0.27 s finger PAT; 0.365–0.405 s over its plausible range), in 33.3 ms frames on its own clock. Its content runs 18–52 ppm against those frames, so one frame repeats every 11–31 min: a sawtooth in the delay. Drift: 18–52 ppm against its frames; one 33.3 ms slip every 11–31 min.
Frame slips corrected
correction measured 0 ms – 33.3 ms → 1.9 ms – 5 ms after correction · The PPG sawtooth and its correction, Arterial pressure as a check on the PPG correction
physiosync detects the slips and removes the sawtooth; mid-tooth drift of 2–5 ms remains in trusted stretches.
Monitor analogue output
transport assumed
The plethysmogram leaves the monitor as an analogue output; any delay there is not measured.
Stored sample time
stamping measured 2 ms
Sample j of a record sits at its stamp + j/500 s. Stamps run −0.95 ppm against the sample count (stamp arithmetic), and the five records after each reset are written out of order; the TimeNet import puts them back in sampling order.

Timing

Against the working reference. Delay: from the end of the interval a value describes to its stamp. Interval: how wide that interval is.

Form Delay Interval Clock domain Status Evidence
stamp-model time (default) 370 ms – 400 ms 2 ms – 33 ms SNUADC stamp-model time (the working reference) measured one global hardware delay (pat-offset-census), 0.385 s (0.365-0.405 s with the adopted PAT's 250-290 ms range); 30 Hz frames

Combine it with other signals in the synchronisation planner.

Value

Its value side is still to be described.

Parameters

Parameter Value Status From
Adopted mean pulse arrival time 270 ms (plausible range 250–290 ms) assumed The PPG hardware delay and the adopted pulse arrival time
PPG hardware delay 385 ms, one global value (stored R-to-foot delay 655 ms minus an adopted 270 ms); setups differ by under ±15 ms measured One device delay for the PLETH across the release
PPG sawtooth rate 18–52 ppm by setup measured The PPG sawtooth and its correction

Observations

Observation Status Summary
About 20 ms of signal lost at every SNUADC reset established At each step-mode reset the acquisition pauses for about 20 ms inside the last record before the new timing, and that time is never sampled: 17.7 ms on the sample count (Signal lost at a SNUADC step-mode correction), once the filler sample is counted. Every record still holds 100 samples, so nothing in the file shows it.
All SNUADC channels share one clock established Every SNUADC waveform track of a case (ECG leads, ART, PLETH, CVP) has the same first stamp, the same record timing and the same corrections. They are stamped together.
An extra zero sample after most resets established Most SNUADC resets (335 of 392) contain one sample that reads 0 in every channel at once, a little after the reset. It carries no time of its own: the signal either side runs on as if it were not there.
Eight recordings store whole messages twice established In 8 recordings 15–48% of the waveform records are byte-for-byte copies of the record before them, with the same timestamp: case 15, case 364, case 1946, case 3865, case 4857, case 5414, case 5595 and case 5619. SNUADC, Primus and BIS are affected equally, so the recorder, not a device, wrote them twice.
Every time is quantised, and fiducials inherit it established A time on a grid of step Δ carries an error of Δ/√12 (1 SD). In VitalDB that is 0.58 ms for a 500 Hz sample, 2.3 ms for BIS EEG, 0.8 ms for the arrhythmia annotations' 1/360 s grid, and up to ±17 ms for PPG fiducials taken on raw samples, which lock to the 33.3 ms frame.
Five records out of order at every SNUADC reset established At each step-mode reset the five records after it are written in the wrong order: two continue the old timing and three start the new, interleaved. Read in file order, or sorted by stamp, one second of signal is scrambled.
SNUADC sends no time; the recorder stamps by count established The SNUADC board streams samples with no time stamps. Every SNUADC time in VitalDB is the recorder's model of the board's clock: the sample count at the nominal rate, pulled back when it drifts too far.
The ECG→PPG delay is a sawtooth established Inside the oximeter the PPG content creeps 18–52 ppm against its 30 Hz frames; every 11–31 minutes a frame repeats and the delay jumps up by 33 ms. The rate is fixed per recording setup.
The PLETH arrives about 0.4 s late established Raw R-to-PPG-foot pulse arrival time in VitalDB has a median of 0.64–0.71 s, about 0.4 s more than physiology: the monitor's buffering and filtering. One delay fits the whole release: no clusters by setup, SNUADC port or case order (One device delay for the PLETH across the release).
The oximeter's frame clock is a fingerprint of the setup established The rate of the oximeter's 30 Hz frame clock against the SNUADC sample clock is fixed per recording setup (+7 to +92 ppm across setups) and repeats within about 2 ppm inside a recording, so it identifies the hardware a recording was made on.
The plethysmogram is built in 30 Hz frames established The SNUADC PLETH waveform comes from the oximeter in 33.3 ms frames, smoothed to 500 Hz. Its content changes once per frame, on the oximeter's own clock, about 0.4 s after the finger.
Three ART tracks carry the PLETH conversion factors established In case 818, case 5175 and case 5693 the SNUADC/ART track holds arterial pressure, but its header gives the PLETH conversion (0.394983 per code, offset −198.2504) instead of the ART one (0.987457 mmHg per code, offset −495.626). Converted as stored, the pressure reads about 2.5 times too low.
Twelve recordings sample the SNUADC waveforms at 100 Hz established In 12 of 6,388 recordings every SNUADC waveform (ECG II, ECG V5, PLETH, and ART or CVP where present) is stored at 100 Hz instead of 500 Hz: case 299, case 803, case 1150, case 1693, case 2362, case 2920, case 4458, case 4582, case 5066, case 6119, case 6133 and case 6375.
SNUADC channels are read one after another likely The SNUADC firmware reads its 8 channels in turn, about 0.1 ms each, so within one sample the last channel is read up to about 0.8 ms after the first. The channel order is not known.
SNUADC values are truncated to the count below likely The SNUADC firmware truncates each calibrated value instead of rounding it, so every value sits half a count low on average (about 0.5 mmHg for arterial pressure). Values clamp at counts 0 and 1023.
Stamp-based loaders lose samples at overlaps likely Loaders that place samples by their stamps onto a grid overwrite samples where stamps overlap: about 0.48 s at every SNUADC reset, and one sample about every 35 minutes from the stamp arithmetic.
In some recordings two unrelated streams are interleaved in one track open In 7 recordings 64–95% of the records alternate between two streams: each record continues the one two before it, not the one before, and the two streams do not match each other. SNUADC and BIS in case 2219, case 2379, case 2640, case 4836, case 5327 and case 5617; SNUADC in case 1939. In case 94, case 945, case 1132, case 3195 and case 5700 4–7% of SNUADC records interleave.
SNUADC values are 10-bit codes, though the device is documented as 12-bit open Every SNUADC channel in the release stores codes 0–1023 and nothing above: 10 bits, a step of 0.0098746 V. The VitalRecorder device list describes the SNUADC as a 12-bit converter.
The PPG sawtooth sometimes stops open In some stretches, and some whole recordings, no frame slip comes although several were due. The delay there is flat and the frame clock keeps running; what stops the content's drift is not known.

Studies

Study Date Status Summary
Gaps and unbroken segments in every waveform 2026-10-19 draft Every gap and every unbroken segment in the 6,388 recordings, per waveform. The curves are not smooth: a cliff at about 18 s in every device marks the recorder's pauses, SNUADC segments stop at 5 hours, Primus segments at about 2.0 hours and BIS segments at about 2.3 hours (each device's correction cycle), and BIS's short gaps grow with the time since the last one (clock resynchronisations, not lost data).
Message sizes and the steps between records 2026-10-19 draft Every record in every waveform: SNUADC writes messages of 100 samples (0.2 s), Primus 30 (0.48 s), BIS 16 (0.125 s), CardioQ no fixed size. Backward steps outnumber gaps by about a hundred to one and come from a few recordings with duplicated or interleaved records. Primus gaps are whole lost messages; most SNUADC and BIS gaps are not.
What each break in the stamps is 2026-10-19 draft Every step between waveform records in the release, sorted by mechanism: written twice, a SNUADC clock reset, interleaved streams, a pause shared by every device, whole messages, less than a message, or a fraction of a message beyond whole ones. A continuity test with controls shows which classes lose data: shared pauses and most longer SNUADC gaps do; steps under one message, and SNUADC's lone one-message steps, mostly do not.
Value resolution of every signal 2026-10-19 draft How finely every waveform and numeric track in the release records its values. The SNUADC waveforms are 10-bit codes, though VitalRecorder's documentation describes the SNUADC as 12-bit; Primus waveforms use about 10 bits of 12; BIS EEG is a 16-bit grid of 0.05 µV. Numerics are 32-bit floats on decimal grids of 1, 0.1, 0.01 or 0.001, one per track; settings sit on coarser grids of 10 or 100.
One device delay for the PLETH across the release 2026-10-18 current The stored ECG-to-PLETH delay was measured in 5,536 recordings, to the foot and to the steepest upstroke of each pulse. It has one peak (655 ms to the foot, 715 ms to the upstroke, in the median recording), no clusters by recording setup or SNUADC port, and no shift along the case order: one global device delay, 385 ms with an adopted R-to-foot finger PAT of 270 ms, fits the whole release, as Ruffolo et al. found in their own data.
Monitor clocks in the waveforms' spectral lines 2026-10-17 open Differences of the raw converter counts show lines from the monitor's analogue outputs: 240 Hz in arterial pressure and plethysmogram, and a 30 Hz family in the plethysmogram alone. Each measures a monitor clock against SNUADC.
Records out of order at SNUADC resets, and where the lost time goes 2026-10-17 current At every SNUADC reset the five records after it are written out of order: two continue the old timing and three start the new. Put back in order, the waveform runs on with no samples missing; the 18–20 ms lost at each reset goes missing inside the last old-timing record, and an extra zero sample follows.
The vitaldb package's loading conventions 2026-10-17 current The vitaldb Python package sets time zero from the tracks loaded, places waveform blocks by rounding their stamps up to a sample, and lets overlapping blocks overwrite each other. Each choice moves or loses samples.
The SNUADC firmware 2026-10-13 current The public SNUADC firmware explains the board's timing: it sends no time stamps, samples on its 16 MHz crystal, loses time rather than bunching samples after a stall, reads its channels one after another, and truncates its values. A predicted fault at the microsecond counter's wrap was not found in the data.
The PPG hardware delay and the adopted pulse arrival time 2026-10-12 current VitalDB's raw ECG→PPG pulse arrival time is about 0.4 s longer than physiology. Splitting it into a hardware delay (one value for the release; One device delay for the PLETH across the release) and a physiological part needs an adopted value from studies that sampled ECG and PPG on one clock: about 270 ms for anaesthetised adults.
SpO₂ and pulse rate latency from step events 2026-10-12 current SpO₂ cannot be recomputed from one plethysmogram, so its timing comes from events that change the PLETH abruptly. SpO₂ lags the recorded PLETH by about 4 s and then smooths over roughly 10–20 s.
Arterial line accesses in the pressure waveform 2026-10-11 current Flushes, zeroing and blood draws leave clear signatures in the arterial pressure. A detector finds them in the waveform alone (about one access per hour) and matches 77% of lab draws to an access within 15 minutes, against 26% for random times.
Clock corrections in every file 2026-10-11 current A scan of all 6,388 files for the jumps where the recorder re-synchronises a device's stamps. Each device type has its own correction signature; only SNUADC and BIS correct clearly enough to measure their drift.
Arterial pressure as a check on the PPG correction 2026-10-11 current Arterial pressure is sampled by the same converter but has no frame and no sawtooth, so every PPG slip leaves ECG→ABP unchanged. Against it, detected slips are 97–100% real and tier A leaves about 2 ms of drift mid-tooth.
Where the PPG sawtooth stops 2026-10-11 current In some stretches no slip comes although several were due. The PPG delay there is flat, not hidden: the monitor keeps framing, and only the content's drift against the frames has stopped.
The PPG's 30 Hz frame clock 2026-10-10 current ECG and PPG fiducials resolve to one 2 ms sample, but PPG fiducials taken on raw samples lock to a hidden 33.3 ms frame grid. Scanning for it finds the oximeter's frame clock to about 1 ppm, a fixed fingerprint of each recording setup.
The PPG sawtooth and its correction 2026-10-10 current The ECG→PPG delay creeps at 18–52 ppm and jumps up by one 33.3 ms frame at each slip, every 11–31 minutes. A tooth-by-tooth model removes it; where the correction is confident it is essentially exact on injected test data.

Worked examples

Example Side Status Summary
Pulse arrival time against blood pressure, before and after synchronisation time draft In 3,270 recordings, PAT tracks systolic pressure only once each pulse is paired with its own beat: the hourly correlation moves from a mean of −0.04 to −0.21 (88% of recordings negative), reproducing Ruffolo et al. 2025 in a second dataset; paired naively, PAT is a heart-rate signal.
Pulse arrival time in two correction steps time draft The time from the ECG R wave to the pulse at the finger, as stored, after the PLETH's sawtooth is removed, and after its device offset is removed, smoothed by maximum likelihood, with the arterial line as the reference.

Tags: stub