Filters ========= Applied filters for the fiducial point detection and benchmarking: ------------------------------------------------------------------ During the benchmarking, for all toolboxes, the PPG signals were filtered between *0.5–12 Hz*. In the case of *pyPPG* and *PPGFeat*, this was performed using the built-in filtering capabilities of these toolboxes. However, for *PulseAnalyse*, we provided pre-filtered data as input to the toolbox as the toolbox's high-pass filtering functionality requires a longer signal duration than that used in this study. The following zero-phase filters were implemented in the *pyPPG*: - **Bandpass filtering between 0.5-12 Hz**: A fourth-order Chebyshev Type II filter was used for the original signal. The 12 Hz low-pass cut-off was used to avoid time-shifting of fiducial points (particularly pulse onset, and dicrotic notch) and to eliminate unwanted high-frequency content from the PPG derivatives. The 0.5 Hz high-pass cut-off was used to minimize baseline wandering whilst retaining content at low heart rates. - **50 ms moving average filtering (MAF)**: In the case of very noisy signals, some high-frequency content can remain in the band-pass filter signal. For this purpose, a 50 ms standard flat (boxcar or top-hat) MAF with a 9 Hz cut-off frequency was applied after the band-pass filtering. - **10 ms MAF for the PPG derivatives**: To eliminate the high-frequency content in the PPG derivatives, a 10 ms standard flat (boxcar or top-hat) MAF with 45 Hz cut-off frequency was applied.