Skip to content

SNUADC

The analogue-to-digital converter board that samples the monitor's analogue outputs at 500 Hz.

Type acquisition
Clocks SNUADC sample clock

Description

SNUADC records the monitor's analogue waveform outputs (ECG leads, arterial pressure, plethysmogram, CVP) and sends them to Vital Recorder in 0.2 s records of 100 samples. Its records are stamped by the recorder, which models the board's timing (see SNUADC sample clock).

Device documentation

Variables

Variable Type Stamped by Spaced by
Arterial pressure (SNUADC) waveform Recorder PC clock SNUADC sample clock
ECG lead II (SNUADC) waveform Recorder PC clock SNUADC sample clock
Plethysmogram (SNUADC) waveform Recorder PC clock SNUADC sample clock

Scale factors and resolution

Waveform scale factors. Physical value = offset + stored code × gain, one row per stored configuration. A factor shown wrong has its correction in Corrected to.

Track Unit Stored as Rate Gain / offset Recordings Corrected to
ART mmHg uint16 500 Hz 0.987457 / -495.626 3,504 —
ART mmHg uint16 500 Hz 0.394983 / -198.25 3 0.987457 / -495.626: PLETH factors (evidence)
CVP cmH2O uint16 500 Hz 0.987457 / -495.626 1,363 —
ECG_II mV uint16 500 Hz 0.00987457 / -4.95626 6,349 —
ECG_II mV uint16 500 Hz 0.009875 / -4.95626 1 —
ECG_V5 mV uint16 500 Hz 0.00987457 / -4.95626 3,380 —
FEM mmHg uint16 500 Hz 0.987457 / -495.626 100 —
PLETH — uint16 500 Hz 0.394983 / -198.25 6,153 —

Waveform resolution. Observed span is what the data reach, and the whole bits needed to store it; converter is our estimate of the device's resolution (never less than the span), with its evidence. The step is in the physical unit, with the corrected gain where the stored one is wrong.

Track Step Observed span (codes used) Bits to store span Converter (estimate) Evidence
ART 0.987457 codes 0–983 (848 used) 10 10 bits the SNUADC converter (see ECG)
CVP 0.987457 codes 0–944 (874 used) 10 10 bits the SNUADC converter (see ECG)
ECG_II 0.00987457 codes 0–1023 (1,024 used) 10 10 bits every code of 0–1023 used by ECG, none above; documented as 12-bit (SNUADC values are 10-bit codes, though the device is documented as 12-bit)
ECG_V5 0.00987457 codes 0–1023 (1,024 used) 10 10 bits every code of 0–1023 used by ECG, none above; documented as 12-bit (SNUADC values are 10-bit codes, though the device is documented as 12-bit)
FEM 0.987457 codes 0–925 (842 used) 10 10 bits the SNUADC converter (see ECG)
PLETH 0.394983 codes 0–1023 (852 used) 10 10 bits the SNUADC converter (see ECG)

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.
Device clock drift depends on the setup established The drift of the SNUADC's and the BIS's timestamps against the recorder PC is largely set by the setup: knowing a recording's PC key (the serial ports of its four core devices) puts the SNUADC's drift within 3 ppm of its setup's median in 97% of cases and the BIS's in 83%, against 34% and 17% for the release's median. On the whole release's correction intervals the same test gives 71% and 60% (Identifying the recording setup of every case).
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.
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.
SNUADC stamps run −0.95 ppm against the sample count established Between corrections each 0.2 s record stamp increment is about 0.19 µs short: stamps run −0.95 ppm from the sample count in 88% of files (both SNUADC modes). It is arithmetic, not clock drift. The other 12% sit between −0.90 and −0.55 ppm.
Small positive SNUADC gaps are real data loss established Forward jumps of under a second in SNUADC stamps are missing data, not clock corrections: the beat interval across them fits the gap better than the samples butted together.
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 EEG–ECG offset is fixed by the SNUADC correction mode established After the stamp model, BIS EEG still lags the SNUADC ECG by a constant: −804 ms in step mode and −660 ms in frequent-correction mode over the whole release, tight within a port or unit. The mode, a property of the setup, sets the constant.
The SNUADC correction mode belongs to setups, not dates established The frequent-correction mode is confined to a few setups, can switch either way within a case, and marks a period in at most one setup. It is not a global software change.
The blood pressure cuff often sits on the arterial line's arm established Many "lost pulse" events in the arterial pressure are an NIBP cuff inflating on the same arm: the pulse fades and pressure decays to 35–50 mmHg, then returns as the cuff cycle ends.
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.
The BIS EEG carries an averaged cardiac artefact likely Averaged on the ECG's R peaks, the BIS EEG shows the heartbeat (median 4.3 µV), near-simultaneous with the R wave. Single beats are too weak to match one by one.
In 34 files the SNUADC records overlap throughout open In 34 files the SNUADC records step back over their neighbours far more often than resets explain: in 20 of them 4–95% of all record junctions overlap, by up to about 100 ms. The reset-order rule matches there by coincidence.
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.
Long SNUADC recordings with no correction at all open 1,066 cases of 2.5 h or longer show no SNUADC correction, although at the step-mode median of −63 ppm a 0.49 s step falls due within about 2.2 h. Slower units, a third recorder mode, or both; shared bursts point to slower units (about −36 ppm where the BIS rate is known, The stamp sawtooth model for SNUADC and BIS, due only after about 3.8 h). The Solar8000 route cannot settle it: its rates shrink toward zero in recordings under about 4 h (The SNUADC clock through the Solar8000 numerics, whole release).
SNUADC has two event inputs open The firmware sends two event-jack flags with every sample. If any case used them, they would be markers on the SNUADC's own clock.
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.

Studies

Study Date Status Summary
The heartbeat in the Primus airway signals 2026-10-19 current A pilot in 30 recordings for a heartbeat-locked route from the Primus to the SNUADC. Airway pressure shows the heartbeat in 9% of windows only. CO₂ shows a heartbeat-locked trace in 60% of windows, tight to 20 ms, but its lag does not follow the Primus drift, so it cannot time the Primus. Closed as a clock route.
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).
When each device's clock is corrected, in every recording 2026-10-19 draft From the steps between records in all 6,388 recordings: the BIS is corrected every 8,192 s and the Primus every 7,230 s, on their own timers (the first correction comes at any time after the device starts); the SNUADC is reset when 0.49 s of drift has built up. With the full rerun of the correction fit, it gives each device's drift against the recorder PC in 4,728 BIS and 2,728 SNUADC recordings, and shows that the Primus's 20–23 s AWP pauses belong to its correction cycle. Every rate here is relative to the recorder PC, whose own clock drifts and is corrected.
The Primus stamp step at each airway-pressure pause 2026-10-19 current Measured directly at 2,491 pauses in 1,021 recordings: where CO₂ carries on through the AWP pause (74%), the Primus stamps barely step (median −1 ms, p10–p90 −164 to +187 ms, close to the no-pause controls); where CO₂ stops too (26%), they step by up to seconds. No step undoes the drift built up since the last pause.
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.
The SNUADC clock through the Solar8000 numerics, whole release 2026-10-19 current On the SNUADC's own sample count, the delay from the waveform to the PC-stamped Solar8000 heart rate and mean arterial pressure ramps at the SNUADC's drift against the PC, measured without its stamps or resets. In recordings with whole reset intervals it agrees with them (−63 ppm; median difference +1.5 ppm, 581 recordings). It is too noisy per recording, and in recordings under about 4 h its rate is biased toward zero, so it cannot yet speak for recordings without resets.
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.
Identifying the recording setup of every case 2026-10-18 open Recognising which equipment made each recording, from its serial ports and, where those fall short, from clock fingerprints, so that per-setup values can be used for every case.
How often each device is corrected 2026-10-17 current The devices re-synchronise in different ways: SNUADC when its drift reaches about half a second, BIS on a fixed 8,192 s timer, and the Primus by small steps about every two hours that do not keep up with its drift (+104 ppm, measured later by breath matching).
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.
SNUADC against the PC-stamped heart rate 2026-10-17 current The Solar8000 heart rate is stamped by the recorder on arrival, so the delay from the ECG to it, on the ECG's raw sample count, ramps at the SNUADC clock's rate: −65.3 ppm, against −66.7 ppm from the stamp model. Two independent routes agree.
Paced ECG as an independent clock 2026-10-17 current Fixed-rate pacing gives a clock the recording chain cannot touch. Timing paced beats on three timelines shows that each SNUADC step-mode correction loses about 18 ms of signal, and that nothing else breaks the sample stream.
Recorder PC clock steps and recording pauses 2026-10-17 current A step of the recorder PC clock would move every device's stamps at once. Searching all 6,388 files for such simultaneous jumps found none of 0.5 s or more; what moves everything together is recording pauses.
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.
SNUADC stamp arithmetic 2026-10-17 current Between corrections the SNUADC block stamps run −0.95 ppm against the sample count: each 0.2 s increment is about 0.19 µs short. This, not clock drift, is the "about −1 ppm" seen in frequent-correction mode.
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.
Time zeros and loaded subsets 2026-10-16 current A VitalDB time "from the start" depends on which tracks were loaded: loading a subset moves the zero to that subset's first record, seconds or hours later. The arrhythmia database's annotations count from the full file's zero.
Drug effects as a clock check 2026-10-13 current Infusion pumps, the rapid infuser and the cerebral oximeter share no waveform with the reference. Drug effects that follow infusions at plausible delays (propofol to BIS in about 2 minutes, fluid to CVP in about 30 s) bound their clocks to well within a minute of the recorder.
What the lab timestamp marks 2026-10-13 current VitalDB's lab time is a per-specimen timestamp: not the draw, and not the result. Blood gases are stamped 3–12 minutes after the draw, central-lab panels about 8–24 minutes after it, and the result follows a turnaround the release does not record.
Closing loops in the timing graph 2026-10-13 current Where two independent routes reach the same clock, the offsets around the loop must sum to zero. Three measured loops close within their noise; the BIS loop closes up to a constant latency; the proposed EMR loop is not a loop at all.
Rare devices against SNUADC 2026-10-13 current CardioQ, EV1000, Vigileo and Vigilance each get a link to the SNUADC timeline: beat matching for the CardioQ, mean arterial pressure alignment for the EV1000 and Vigileo, and a long-window fit for Vigilance's averaged heart rate.
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 cardiac artefact in the BIS EEG 2026-10-12 current The BIS EEG carries a weak electrical trace of every heartbeat. Too weak for beat-by-beat matching, it shows clearly when averaged on the ECG's R peaks, and gives a second SNUADC–BIS timing reference that agrees with the bursts to about 16 ms.
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.
Shared bursts between the ECG and the EEG 2026-10-12 current Electrocautery and muscle bursts appear in both the SNUADC ECG and the BIS EEG. Cross-correlating their envelopes gives the offset between the two devices' stamps every 10 minutes: about −0.8 s, in a sawtooth that follows both clocks' corrections.
The stamp sawtooth model for SNUADC and BIS 2026-10-12 current Fitting each track's record stamps against its sample count as a drift with corrections (a sawtooth) puts SNUADC and BIS on one timeline without any artefact. Checked against shared bursts, the EEG–ECG timing error falls from about 790 ms on the recorded stamps to 33 ms with one constant per SNUADC mode in the pilot, and 42 ms over the whole release.
The Primus ventilator against SNUADC, by breaths 2026-10-12 open Each breath shows in the Primus airway pressure and, through the chest, in SNUADC's central venous pressure. Tracking that lag puts the Primus on the SNUADC timeline to about 55 ms over the whole release, with a line per stretch between its AWP pauses (49 ms in the pilot). At scale it measures the Primus drifting a median +104 ppm against the recorder PC between its AWP pauses, with steps at the pauses that do not reset it.
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.
Physical units, shared drift and time order 2026-10-11 current Device drift rates cluster into units: about 8 SNUADC boards and 8–18 BIS monitors. Part of the drift is shared by both devices of a case and changes between cases: the recorder PC's own rate. Case order carries no time information.
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.

References

  • Lee H-C, Park Y, Yoon SB, Yang SM, Park D, Jung C-W. VitalDB, a high-fidelity multi-parameter vital signs database in surgical patients. Sci Data. 2022;9:279. ↗