Next: EDF2MIT(1) Up: WFDB Applications Guide Previous: ECGEVAL(1)On This Page


ecgpuwave - QRS detector and waveform limit locator


ecgpuwave -r record -a annotator [ options ... ]


ecgpuwave analyses an ECG signal from the specified record, detecting the QRS complexes and locating the beginning, peak, and end of the P, QRS, and ST-T waveforms. The output of ecgpuwave is written as a standard WFDB-format annotation file associated with the specified annotator. This file can be converted into text format using rdann(1) or viewed using wave(1) .

The QRS detector is based on the algorithm of Pan and Tompkins (reference 1) with some improvements that make use of slope information (reference 2). Optionally, QRS annotations can be provided as input (see option -i), permitting the use of external QRS detectors such as sqrs(1) or manually-edited annotations (which can be created using wave(1) ). The waveform limit locator is based on the algorithm described in reference 3 and evaluated in references 3 and 4.

The output annotation file contains PWAVE ("p") and TWAVE ("t") annotations that indicate the P- and T-wave peaks, as well as QRS annotations (NORMAL ("N") if generated by the built-in QRS detector, or copies of the input QRS annotations if these were supplied). ecgpuwave classifies each T wave as type 0 (normal), 1 (inverted), 2 (positive monophasic), 3 (negative monophasic), 4 (biphasic negative-positive), or 5 (biphasic positive-negative); this numeric classification is written into the num field of each TWAVE annotation. The P, QRS, and T waveform onsets and ends are marked in the output annotation file using WFON ("(") and WFOFF (")") annotations. The num field of each WFON and WFOFF annotation designates the type of waveform with which it is associated: 0 for a P wave, 1 for a QRS complex, or 2 for a T wave.

Options include:

-f time
Begin at the specified time (default: the beginning of the record).
-i input-annotator
Read QRS locations from the specified input-annotator (and copy them to the output annotation file). Default: run the built-in QRS detector.
-n beat-type
Specify which beats to process (must be used together with -i): beat_type may be 0 (default: process all beats) or 1 (process only beats labelled as NORMAL ("N") by the input annotator).
-s n
Analyze signal n (default: signal 0).
-t time
Stop at the specified time (default: the end of the record).


It may be necessary to set and export the shell variable WFDB (see setwfdb(1) ).

See Also

rdann(1) , sqrs(1) , wave(1) , wqrs(1)


1. Pan J and Tompkins WJ. A Real-Time QRS Detection Algorithm. IEEE Transactions on Biomedical Engineering 32(3):230-236, 1985.
2. Laguna P. New Electrocardiographic Signal Processing Techniques: Application to Long-term Records. Ph. D. dissertation, Science Faculty, University of Zaragoza, 1990.
3. Laguna P, Jan[’e] R, Caminal P. Automatic Detection of Wave Boundaries in Multilead ECG Signals: Validation with the CSE Database. Computers and Biomedical Research 27(1):45-60, 1994.
4. Jan[’e] R, Blasi A, Garc[’i]a J, and Laguna P. Evaluation of an automatic threshold based detector of waveform limits in Holter ECG with the QT database. Computers in Cardiology 24:295-298 (1997; available at )


ecgpuwave is available as part of PhysioToolkit under the GPL (see SOURCE below).


Pablo Laguna (, Raimon Jan[’e], Eudald Bogatell, and David Vigo Anglada


Table of Contents

Up: WFDB Applications Guide

Please e-mail your comments and suggestions to, or post them to:

MIT Room E25-505A
77 Massachusetts Avenue
Cambridge, MA 02139 USA

Updated 8 March 2019