Understanding the Pleth Waveform Before You Run Any Analysis

The pulse oximeter gives you two numbers you tend to fixate on — oxygen saturation and heart rate — but the raw waveform is where most errors hide. The plethysmographic trace, often labeled PLETH or SPO2 on the monitor, is a photoplethysmogram. It reflects volumetric changes in peripheral blood flow with each cardiac cycle. Red light passes through the tissue and infrared light gets absorbed differently depending on how much oxygenated hemoglobin is present. The oscillating pattern you see is not just a decorative graphic. It tells you whether the signal quality is reliable, whether there is significant vascular tone variation, or whether motion is corrupting the reading. To perform real analysis you need the raw waveform data, not the processed SpO2 number. Most modern patient monitors output this as either a proprietary binary stream or standard formats like IEEE 11073, HL7, or sometimes CSV if you can access the device log. If you are working with consumer-grade finger probes, you may need to reverse-engineer the serial output or use a data acquisition board that captures the analog voltage from the photodiode side before the signal reaches the device's internal processor. The sampling rate matters a great deal here. Clinical monitors typically sample between 50 Hz and 200 Hz, which gives you enough resolution to see the dicrotic notch clearly. Consumer wearables often sit closer to 25 Hz to 50 Hz, which makes certain morphological features much harder to extract reliably. Once you have the waveform in a usable format, the first step is usually simple: remove the baseline wander and high-frequency noise. A bandpass filter from roughly 0.5 Hz to 8 Hz will isolate the pulsatile component for most adult patients. After filtering, detect the systolic peaks and calculate the time interval between them for heart rate variability analysis. The ratio of AC to DC components in the original unfiltered signal is what the device uses internally to compute SpO2, so if you want to reproduce the calculation yourself, you will need to preserve both the pulsatile and non-pulsatile portions of the signal before you start filtering. Here is where beginners lose track of what they are doing. They filter too aggressively and accidentally strip out the information they needed.

Signals That Look Normal But Are Wrong

I spent about three weeks dealing with a dataset where the SpO2 readings looked clinically acceptable across a wide range of saturations, but the waveform morphology was inconsistent in ways the monitor never flagged. The issue was perfusion index drift caused by ambient infrared interference from overhead surgical lights in an OR environment. Some LED surgical lamps emit significant infrared output, and that external IR source gets picked up by the photodiode alongside the probe's own infrared LED. The device's internal algorithm compensates by adjusting its baseline, but the compensation is not perfect. The resulting waveform had the right shape and the right heart rate, yet the calculated SpO2 was consistently 2 to 4 percent higher than the arterial blood gas reference. I caught it only because I plotted the PI value alongside the waveform and noticed it oscillating in phase with the operating room lights cycling on and off. Moving the probe to the earlobe instead of the finger eliminated the problem entirely since the surgical light didn't reach that site directly. One thing that rarely comes up in introductory material is how strongly the waveform shape changes with vasoconstriction independent of oxygen saturation. When peripheral perfusion drops, the systolic upstroke becomes slower, the peak amplitude decreases, and the dicrotic notch can become nearly invisible. Many analysis pipelines assume a consistent waveform template and use that template for motion artifact rejection through cross-correlation. When vasoconstriction alters the template dynamically, the algorithm starts misclassifying genuine physiological changes as motion artifacts and discards valid data points. You end up with long gaps in your analysis rather than corrupted points, which is worse because you might not notice the gaps unless you are explicitly checking for missing segments. Another counter-intuitive point is that a cleaner-looking waveform does not always mean a more accurate SpO2 value. A high-perfusion finger on a warm patient will produce a very crisp pleth with a sharp dicrotic notch, and the device will report saturation with high confidence. But if the patient has carboxyhemoglobinemia from smoke inhalation or severe anemia, the waveform will look excellent and the SpO2 reading will be completely wrong. Pulse oximetry cannot distinguish carboxyhemoglobin from oxyhemoglobin, and it cannot account for the absence of hemoglobin altogether. The waveform is doing exactly what it should, which is the problem. You need complementary data, like a co-oximetry arterial blood gas, whenever the clinical picture does not match the pulse oximeter reading, regardless of how beautiful the waveform looks.

Practical Extraction Workflow

If you are building a pipeline from scratch, start by acquiring the waveform at the highest sampling rate your hardware allows. Store the raw voltage values before any onboard processing. Downsample later if needed, but never upsample from a low-rate source and expect morphological details to appear. Apply a zero-phase low-pass filter at around 10 Hz to remove electromagnetic interference, then a high-pass filter at 0.5 Hz to eliminate baseline drift from respiration and temperature fluctuations. Peak detection works well with a simple threshold-based algorithm once the signal is cleaned, but set the minimum inter-peak interval to 300 milliseconds to avoid double-counting noise spikes as heartbeats. That corresponds to a maximum heart rate of 200 beats per minute, which covers even the most extreme pediatric tachycardia scenarios. For the SpO2 calculation itself, compute the AC component as the peak-to-trough amplitude of each pulse cycle and the DC component as the mean signal level over a sliding window of about 10 seconds. The ratio R equals AC_red/DC_red divided by AC_infrared/DC_infrared. The manufacturer-specific calibration curve then maps R toSpO2, and because that curve varies between device brands, you cannot derive an absolute saturation value from first principles without access to the internal calibration table. What you can derive from the waveform alone is relative trend information, perfusion index trends, and respiratory modulation of the pulse amplitude, which is useful for assessing fluid responsiveness in certain clinical contexts.

Get the Full Details

Photoplethysmography: Analysis of the Pulse Oximeter Waveform | SpringerLink
Photoplethysmography: Analysis of the Pulse Oximeter Waveform | SpringerLink

Limitations You Should Plan Around

Pulse Oximeter Waveform Analysis will fail in several common scenarios and you should know about them before you commit to a system design. Nail polish, especially dark blue and black formulations, absorbs both red and infrared light unevenly and can introduce errors of 5 percent or more. Heavy hand tremor or seizure activity produces frequency content that overlaps with the cardiac signal, making it nearly impossible to separate motion from true perfusion without additional sensors like an accelerometer. Low perfusion states such as shock, hypothermia, or vasopressor administration reduce the pulsatile signal amplitude until it falls below the noise floor of the photodiode. In those conditions the waveform becomes unusable and the device should ideally display a signal quality index, but many budget monitors do not. The only reliable workaround is to switch to a central measurement site like the ear or the forehead with a reflectance-mode probe, though even those have their own constraints in severe shock. If your use case requires accurate saturation measurement in any of these failure modes, pulse oximetry alone is not sufficient. Transcutaneous CO2 monitoring, arterial blood gas sampling, or near-infrared spectroscopy for tissue-level saturation may be more appropriate depending on whether you need blood gas values or regional tissue oxygenation data. The waveform analysis is powerful for trend monitoring and signal quality assessment, but it is not a replacement for direct measurement when clinical decisions depend on absolute accuracy.