Most PhysioBank databases include one or more sets of annotations for each recording. Annotations are labels that point to specific locations within a recording and describe events at those locations. For example, many of the recordings that contain ECG signals have annotations that indicate the times of occurrence and types of each individual heart beat ("beat-by-beat annotations").
A dictionary of signals is also available.
Annotations can be examined using many different programs available on this web site. Among these are the PhysioBank ATM and LightWAVE, which can be used from your web browser; and many components of PhysioToolkit that can be freely downloaded and run on your own computer, including rdann, WAVE, pschart, and psfd. All of these programs display annotation types using a common set of codes (mnemonics); many of these programs, and others in PhysioToolkit, accept these codes as user input (for example, to select specific annotation types for analysis).
The standard set of annotation codes was originally defined for ECGs, and includes both beat annotations and non-beat annotations. Most PhysioBank databases use these codes as described below. Refer to the documentation for each database to confirm if the annotation codes have their standard meanings.
|N||Normal beat (displayed as "·" by the PhysioBank ATM, LightWAVE, pschart, and psfd)|
|L||Left bundle branch block beat|
|R||Right bundle branch block beat|
|B||Bundle branch block beat (unspecified)|
|A||Atrial premature beat|
|a||Aberrated atrial premature beat|
|J||Nodal (junctional) premature beat|
|S||Supraventricular premature or ectopic beat (atrial or nodal)|
|V||Premature ventricular contraction|
|r||R-on-T premature ventricular contraction|
|F||Fusion of ventricular and normal beat|
|e||Atrial escape beat|
|j||Nodal (junctional) escape beat|
|n||Supraventricular escape beat (atrial or nodal)|
|E||Ventricular escape beat|
|f||Fusion of paced and normal beat|
|?||Beat not classified during learning|
|[||Start of ventricular flutter/fibrillation|
|!||Ventricular flutter wave|
|]||End of ventricular flutter/fibrillation|
|x||Non-conducted P-wave (blocked APC)|
|p||Peak of P-wave|
|t||Peak of T-wave|
|u||Peak of U-wave|
|^||(Non-captured) pacemaker artifact|
||||Isolated QRS-like artifact |
|~||Change in signal quality |
|+||Rhythm change |
|s||ST segment change |
|T||T-wave change |
|=||Measurement annotation |
|"||Comment annotation |
|@||Link to external data |
Each instance of an annotation may have up to six attributes:
- time: the time within the recording (recorded in the annotation file as the sample number of the sample to which the annotation "points")
- anntyp [sic]: a numeric annotation code (see ecgcodes.h for definitions)
- subtyp [sic], chan, num: three small integers (between -128 to 127) that specify context-dependent attributes (see the documentation for each database for details)
- aux: a free text string
Annotations are viewed and selected using mnemonic codes rather than the numeric anntyp codes used within the annotation files. Annotations can be read by C, C++, and Fortran applications using getann, and they can be written using putann, functions defined within the WFDB library. Matlab and Octave programs can read and write annotations using these m-files. Alternatively, annotations can be read by scripting language applications using rdann, and they can be written using wrann, programs belonging to the WFDB Software Package. Details on the format of annotation files are available here.
- In artifact and signal quality change annotations, each non-zero bit from the four least significant bits in the subtyp field of the annotation indicates that the corresponding signal contains noise (the least significant bit corresponds to signal 0). The four high bits, if non-zero, indicate that the corresponding signals are unreadable (because of very high noise amplitude, very low signal amplitude, loss of signal, or some combination of these). These annotations, where they exist, reflect the expert annotator's subjective judgements only. rdann and the PhysioBank ATM present the subtyp field in the fourth column of output, to the right of the annotation code. When displaying signal quality change annotations, the ATM, pschart, psfd, and WAVE do not show the annotation code (~) itself; rather, they display a string with one character (c for clean, n for noisy, or u for unreadable) for each signal (beginning with signal 0).
In rhythm, ST segment, and T-wave change annotations, and in measurement and
comment annotations, the aux field contains an ASCII string (with
prefixed byte count) describing the rhythm, ST segment, T-wave change,
measurement, or the nature of the comment. By convention, the character that
follows the byte count in the aux field of a + annotation is
"(". The most commonly used rhythm annotation strings are:
String Description (AB Atrial bigeminy (AFIB Atrial fibrillation (AFL Atrial flutter (B Ventricular bigeminy (BII 2° heart block (IVR Idioventricular rhythm (N Normal sinus rhythm (NOD Nodal (A-V junctional) rhythm (P Paced rhythm (PREX Pre-excitation (WPW) (SBR Sinus bradycardia (SVTA Supraventricular tachyarrhythmia (T Ventricular trigeminy (VFL Ventricular flutter (VT Ventricular tachycardia
- The aux field of a link annotation contains a URL (a uniform resource locator, in the form http://machine.name/some/data) suitable for passing to a web browser. Link annotations may be used to associate extended text, images, or other data with an annotation file. If the aux field contains any whitespace, text following the first whitespace is taken as descriptive text to be displayed by a WFDB browser such as WAVE. If possible, link text is shown underlined and in blue.
If you would like help understanding, using, or downloading content, please see our Frequently Asked Questions.
If you have any comments, feedback, or particular questions regarding this page, please send them to the webmaster.
Comments and issues can also be raised on PhysioNet's GitHub page.
Updated Wednesday, 6 July 2016 at 13:41 EDT