Heartprints - A Dynamical Portrait of Cardiac Arrhythmia 1.0.0

File: <base>/src/README (5,984 bytes)

   Heartprints: A Dynamical Portrait of Cardiac Arrhythmia
---------------------------------------------------------

As part of an effort to better visualize and understand 
the dynamics of cardiac arrhythmias with frequent ventricular ectopy,
we have developed a new representational technique termed "heartprints."
These heartprints are a combination of seven histograms
generated from an annotated record of heartbeat time intervals.

Figure: Example of a heartprint, taken from Fig.2 in Ref. [PRE] 
(e.g. fig2c.eps)

The three top histograms are computed over the entire Holter recording.
On the top left is the histogram of the time intervals between consecutive 
premature ventricular (V)-beats [V-V intervals]. 
In the middle is the histogram of the number of intervening normal (N) 
beats between consecutive V-beats [NIB].
On the top right is the histogram of the coupling intervals, defined as
the interval between a V-beat and the preceding normal beat. 

Immediately below, we show three panels which contain the 
dependence of the V-V intervals, the NIBs, and the coupling intervals, 
respectively, on the underlying normal sinus rhythm.
The panels are arranged such that the x-axes of the top figures
match those of the bottom figures. 
The underlying sinus rhythm cannot be read off the record if many 
ventricular beats are present. In that case the normal rhythm is 
reconstructed by replacing the V-beats by normal beats.
(More details on this process are given at the beginning file scatter.c.
 Note that the quality of this reconstruction determines the reliability 
of the resulting figures.) 
Using the reconstructed normal rhythm, we collect all stretches of data 
where the underlying normal RR-intervals are within the same range. 
Then we compute the histograms of the V-V intervals, the NIBs, 
and the coupling intervals for normal RR-interval
and plot them against the normal sinus beat time intervals.
The peaks in the histograms are now represented in a gray scale
where a darker shading represents more events.
On the bottom left we show a histogram of the reconstructed RR-intervals 
of the underlying sinus rhythm.

The patterns apparent in these heartprints may reveal the dynamics 
of the underlying mechanism. Details are found in [PRE].


 Generation of Heartprints
----------------------------

There are two steps. 
1. Generate a file, for example using scatter.c, which contains 
   the V-V intervals, the NIBs, the coupling intervals, 
   and the corresponding time intervals between reconstructed 
   normal beats (N-N intervals).
   This file also contains a histogram of the reconstructed N-N intervals.
   The generation of this file is NOT fully automatic. If done with 
   hp_scatter.c it may require the adjustment of threshold values when
   replacement non-normal beats, especially if other types of heartbeats 
   occur.
  
2. Generate heartprint using hp_rrlist, this step is automatic.
   Uses hp_hist to generate the histograms, and uses plt for the graphics.
    

1.) Generate file which contains V-V time intervals, NIBs, coupling intervals
and the interpolated N-N intervals. This file is to be read from hp_hist

The  file has the following structure:
First, in two columns, the histogram of the reconstructed normal RR-intervals:
  in the first column is the RR-interval, 
  in the second column is count.

Then a 5-column part. For each V-beat there is one row that gives 
  in the first column the coupling interval,
  in the second  column the time interval between this V-beat 
                                       and the following one,  
  in the third column the NIB between this V-beat and the following one.
  In the fourth  column is the reconstructed RR-interval of the underlying 
              normal beats, averaged over some beats if desired.
  In the fifth column is the number of the beats (this column is not necessary).


The file may be generated using scatter.c. Compile with 
'cc -lm -O -o scatter scatter.c' and use the following command:

'scatter file_name NN_min NN_max binsize max  > file_name.scatter'

where
NN_min  is the minimum of the range of the reconstructed sinus N-N intervals
NN_max  is the maximum of the range of the reconstructed sinus N-N intervals
binsize is 1/sampling frequency, and (NN_max-NN_min)/binsize should be integer
max     is the number of beats you wish to annalyze, and file_name is a file with
        1. column: annotation (N=normal, V=PVC, or others)
        2. column: RR interval
These values are determined by the data at hand and can be found by 
looking at or plotting the data.


The reconstruction of the normal beats is crucial, and may be difficult 
in the presence of many V-beats, especially many consecutive V-beats (v-tach).
scatter.c considers several cases, which are described in the program
and which may have to be modified for the data at hand. In any case the 
replacement of the V-beats has to be checked. Therefore the replaced 
sinus beat intervals are printed to a file called 'NN_intervals'.
next to the original intervals.

           Record_1   Record_2   Record_3   Record_4
NN_min     0.390625   0.625      0.468      0.390625
NN_max     1          1.3203     0.648      1
binsize    0.0087125  0.0087125  0.0087125  0.0087125 
        

typical sample frequencies are 125, 128, 250, 500.


2.) Generates postscript file containing the heartprint

Note, that the following file uses 'plt' and 'imageplt' (included with
plt version 2.3 and later) to generate a postscript file.

command:

'hp_rrlist INPUT -m NN_min -M NN_max -F frequency'

calls hp_hist which looks for a file named 'INPUT', 
'NN_min' and 'NN_max" are the minimum and maximum of the NN-interval histogram
at the beginning of the input file, and 'frequency' is the sampling frequency.
The following seven files will be generated, containing the histograms:
INPUT.hist_Tv, INPUT.hist_nib, INPUT.hist_coup,
INPUT.rrTv, INPUT.rrnib, INPUT.rrcoup, and INPUT.hist_rr.