Next: HRFFT(1) Up: WFDB Applications Guide Previous: GQFUSE(1)On This Page


gqrs, gqpost - QRS detector and post-processor


gqrs -r record [ options ... ]
gqpost -r record [ options ... ]


gqrs attempts to locate QRS complexes in an ECG signal in the specified record. The detector algorithm is new and as yet unpublished. The output of gqrs is an annotation file (with annotator name qrs) in which all detected beats are labelled normal ("N"). The subtyp, chan, and num fields of each annotation respectively indicate the detection pass (0 or 1) during which the QRS complex was detected, the signal number on which it was detected, and the peak amplitude of the detector’s matched filter during the QRS complex.

As a QRS detector for research, gqrs has been optimized for sensitivity. gqpost can post-process gqrs’s output annotation file to improve positive predictivity, generally at a cost of reduced sensitivity. It does this by copying its input annotation file, changing N annotations into artifact ("|") annotations if they are likely to be erroneous.

A configuration file shared by gqrs and gqpost can be used to describe some of the expected characteristics of the ECG signal. This is unnecessary when processing adult human ECGs, but an appropriately constructed configuration file allows gqrs to analyze fetal, pediatric, and animal ECGs. A sample configuration file is available (see SOURCES, below); it contains details about all configurable parameters.

Options include:

-a annotator
[gqpost only] Read annotations from the specified annotator (default: qrs).
-c file
Initialize parameters based on the specified (text) configuration file. See the example configuration file, gqrs.conf, for details.
-f time
Begin at the specified time in record (default: the beginning of record).
Print a usage summary.
Read the signal files in high-resolution mode (default: standard mode).
-m threshold
Specify the threshold (default: 1.0) for detection [qqrs] or acceptance [gqpost]. Use higher values to reduce false detections, or lower values to reduce the number of missed beats.
-n name
[gqrs only] Save the filtered signals in a new record with the specified record name.
-o name
[gqpost only] write annotations to an annotation file with the specified annotator name.
-s signal
[gqrs only] Specify the signal to be used for QRS detection (default: 0). Note that signals may be specified by number or name.
-t time
Process until the specified time in record (default: the end of the record).

Note that gqpost always copies its entire input annotation file. The -f and -t options, if present, only define the interval during which gqpost may change annotations. Since gqpost can reprocess its own output, this feature allows multiple passes using different threshold values and processing intervals, if necessary.


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


To mark QRS complexes in record 100 beginning 5 minutes from the start, ending 10 minutes and 35 seconds from the start, and using signal 1, use the command:
   gqrs -r 100 -f 5:0 -t 10:35 -s 1

The output annotations may be read using (for example):
   rdann -a qrs -r 100

To evaluate the performance of this program, run it on the entire record, by:
   gqrs -r 100

and then compare its output with the reference annotations by:
   bxb -r 100 -a atr qrs

See Also

bxb(1) , ecgpuwave(1) , rdann(1) , setwfdb(1) , sqrs(1) , wqrs(1) , xform(1)


George B. Moody (

Sources (sample configuration file)

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