pnnlist, pNNx - derive pNNx statistics from an annotation interval list or an annotation file


pnnlist [ options ... ] pNNx -r record -a input-annotator [ options ... ]


These programs derive pNNx, time domain measures of heart rate variability defined for any time interval x as the fraction of consecutive normal sinus (NN) intervals that differ by more than x. Conventionally, such measures have been applied to assess parasympathetic activity using x = 50 milliseconds (yielding the widely-cited pNN50 statistic).


This program takes as standard input an annotation interval list, containing intervals in seconds and the (beat and non-beat) annotations that terminate each interval; and outputs on standard output each unique NN increment (x) in milliseconds, and the percentage of NN interval increments (pNNx) greater than x.

Options for pnnlist may include:

Print this usage summary.
-i inc
Compute and output pNNx for x = 0, inc, 2*inc, ... milliseconds.
Compute and output increments as percentage of initial intervals.
Compute and output separate distributions of positive and negative intervals.


This shell script invokes ann2rr(1) and pnnlist to obtain pNNx statistics using a beat annotation file as input. The input file must be specified using the -r record and -a annotator arguments.

Options for pNNx may include any of those usable with pnnlist, as well as:

-f time
Begin at the specified time. By default, pNNx starts at the beginning of the record.
-t time
Stop at the specified time.


These commands are functionally identical:
ann2rr -r nsrdb/16265 -a atr -A -i s8 -w | pnnlist

pNNx -r nsrdb/16265 -a atr

Each of these commands reads the atr (reference) annotations for MIT-BIH Normal Sinus Rhythm Database (nsrdb) record 16265 (downloading them directly from PhysioNet if the annotation file has not previously been downloaded into a local (nsrdb). These commands will then print each unique NN interval increment in milliseconds along with the percentage of intervals greater than that value. Both of the examples above produce the same output; the first few lines are shown below:
0 89.2738

7.8125 69.4564

15.625 53.3662

23.4375 40.8539

31.25 31.4265

39.0625 24.1817

46.875 18.4763

54.6875 14.1261

62.5 10.7312

70.3125 8.06025

78.125 6.09401

85.9375 4.56975

93.75 3.47841

101.562 2.66896





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

See Also

ann2rr(1) , setwfdb(1)


Joe E. Mietus (joe at physionet dot org)


Table of Contents

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

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

Updated 17 February 2003