ECG Gadget User Guide
From CVRG Wiki
Welcome to the user guide for the ECG Gadget, an online tool for analyzing and visualizing ElectroCardiogram data.
Contents
|
ECG Gadget Description
The ECG Gadget is an online tool that stores, visualizes, annotates, analyzes, and displays analysis results for ElectroCardiogram data.
Users upload the data as a file, visualize and annotate it in a graph, and analyze it with either the Berger or Chesnokov algorithms (more on these algorithms below).
System Requirements
The ECG Gadget works best with the following software:
| Software Type | Vendor/Name | Recommended Version |
| Operating System | Windows | XP |
| Web Browser | Firefox | 3.6.2 |
| Runtime Environment | Java | 6.0 |
Visit the Java download page to download and install a version of Java 6.0.
Gadget Demonstration
To access a demonstration of the ECG Gadget tool, click here.
Note: The video is for a earlier version of the Gadget than the one described below, but the core functionality it describes is the same in the current version.
ECG Gadget Workflow
Step One: Login
The first thing you will see when accessing the ECG Gadget is the login page.
To Log In, enter your User Name and Password and click the Connect to Grid button.
If you don't have a user name, you may login with both the user name and password set to "demo"
Please contact us for information on obtaining a user name and password.
If the connection is successful, a google map should appear with the location in the CardioVascular Research Grid that you have connected to.
Step Two: Storage
File Storage
Currently, files uploaded to the ECG Gadget are sent via FTP to a password-protected server at Johns Hopkins University's Institute for Computational Medicine lab.
The conversion output and analysis results files are stored on the JHU server by default, but the source code of the Gadget can be reconfigured to send the output files to another destination. Please contact us for support changing the destination of the output files.
The ECG Gadget does not currently support direct retrieval of the files you upload, or the conversion or analysis files it generates. However, you can download the analysis results in .CSV format in the View Analysis Results tab. For details, see the section on viewing files below.
Storing Individual Files
Supported File Types
The ECG Gadget accepts several file types for storage:
| File Type | Extension | Description |
| Physionet (or WFDB) | .dat | Files containing ECG time series data in the WFDB format developed by Physionet. You can access sample Physionet files here. |
| Header | .hea | These files are required companions to the Physionet WFDB files. If uploading an RDT file, the Gadget will automatically generate this along with the WFDB file. |
| Norav | .rdt | Raw data files produced by the Norav PC ECG 1200 software. |
| INI | .ini | File with a .ini extension that is a companion to an RDT file, and usually generated through software that requires a matlab license. These files are only necessary for those who want to analyze ECG data with the Berger algorithm. See below for more information on the Berger Algorithm. |
| HL7aECG | .xml | File with a .xml extension conforms to the HL7aECG schema. |
| GE MUSE rhythm strip | .txt | File with a .txt extension was exported by the GE MUSE system. |
| ZIP Archive | .zip | A zip file that is a collection of any of the other supported file types. For more information, go to the Storing Multiple Files section of this wiki page. |
Note
Unless affiliated with the Prose ICD project, most users will not have access to Norav RDT files.
If you have an interest in using the Norav files, please contact us.
Uploading a Single File
Include a subject ID for each file that you upload in the subject ID box.
The Gadget will automatically convert RDT files to the WFDB format (and vice versa) right after you upload it.
If a subject has an associated ini file, the Gadget will be able to analyze it via the Berger algorithm.
If you are uploading an ini and an rdt file on their own, please be sure to specify the same subject id for both. For more information on the Berger Algorithm, see below.
Note
Do not attempt to upload two different files with the same extension for the same subject ID. The Gadget will only recognize one of these files and you will not be able to visualize or analyze the other.
If you have multiple, distinct ECGs for the same entity, assign them distinct subject IDs.
Storing Multiple Files via Zip Technology
Through the use of a single zip archive file, you have the ability to upload multiple ECG files at the same time.
Uploading a Zip File
The Gadget supports batch uploading via zip archive file. Zip files should contain the following:
- Files you want to upload. Include any file that is supported by the ECG Gadget (see above for supported file types) EXCEPT other zip files.
- A .CSV file that contains a subject ID/filename pair for each file (column A is the subject ID associated with the file, column B is the file name including the extension).
The .CSV file must have the same name as the zip file. You may use the same subject ID more than once, but not on the same file type more than once (for example, two RDT files cannot have the same subject ID, but an RDT and an INI file can).
Without a CSV file, the Gadget will assume that the subject ID is the same as the filename minus extension.
Once the Gadget accepts a zip file, it will extract and convert the contents automatically.
Also, do not place a subject id in the Subject ID text box if you are uploading a zip file.
Zip Creation Utility
You are free to create your own ECG Gadget .zip files with any archive tool you wish. However, if you desire assistance, we've included a Java-based utility that will do this for you. To use it, follow these steps:
1) Place all the files you want the ECG Gadget to store in a specific directory on your hard drive.
2) Click the Zip Creation Utility link in the Store tab.
3) You may be prompted to Open or Save a file. If so, select open.
4) You may then be prompted to Allow or Deny access. If so, select Allow.
5) A dialog box containing your file system will appear. You will not see any files, just folders. Click on the directory where your files are stored and click Open (Choose if using a Macintosh).
6) You will see a confirmation message with the name of the zip file the tool generated. This zip file should now be in the directory you specified containing all the ECG gadget compliant files plus the .CSV summary file.
Important Note
By default, the zip tool assumes that the name of each file minus its extension is its associated subject's ID.
If you want to change Subject IDs, open the .CSV summary file and change subject IDs in the first column. Then, save the .CSV file and add it to the zip file the using a zip utility (if prompted, choose to overwrite the old .CSV file within the zip).
Step Three: Visualize/Annotate
Subject List
The Visualize/Annotate Tab allows you to view and annotate the waveform of the ECG files you've uploaded in graphical format.
In the Visualize/Annotate tab, you will see all subjects you have uploaded in the main window, along with radio buttons in the side panel to choose which lead to see. You will see the length, number of leads, frequency, and number of points that the graph contains for each subject, along with the subject's ID (in blue font).
Visualizing ECG Data
Simply click on the subject you want to see and the Gadget will render a graph of the ECG output.
Note: At the present time, the ECG Gadget's visualization tool is only able to display the first three leads of an ECG file.
Click the close link when you are done viewing the graph and you will return to the subject list.
Annotate ECG Data
To annotate the graph of the ECG waveform, follow these steps:
1) Select a specific lead in the radio button on the left hand side.
2) Use the mini-graph below the main one to zoom in on a particular part of the graph if you wish. You can do this by narrowing the left and right sides of the graph.
3) Click the Annotation Button:
4) Enter the time and millivolts point that you wish to annotate.
5) Click the lookup button to see if there are any existing annotations for that point. If there are none, the fields below should be blank.
6) Enter an ontology from the Minnesota code database in the Ontology box. The tool should autocomplete for you.
7) The description of the annotation should autopopulate in the Annotation box
8) Click Save to save the annotation.
9) The annotation should be assigned a letter and it should appear in a list to the right of the visualization graph.
Step Four: Analyze
Available Analysis Algorithms
In the Analyze tab, you will have the opportunity to analyze the ECG data with one of two algorithms.
- The "Berger Algorithm," an algorithm for ECG Analysis developed by Dr. Ron Berger of Johns Hopkins University.
For more information about Dr. Berger's algorithm, see Berger, R.D., Kasper, E.K., Baughman K.L., Marban E., Calkins H., Tomaselli G.F. (1997) Beat-to-beat QT interval variability: novel evidence for repolarization lability in ischemic and nonischemic dilated cardiomyopathy. Circulation. 96(5):1557-1565 and Berger, R.D. (2003). QT Variability. J. Electrocardiol. 36: 83-87.
- The "Chesnokov Algorithm," developed by Dr. Yuriy Chesnokov for Physionet's Computers in Cardiology Challenge.
You can find more information about this algorithm in a paper by Chesnokov et al at the Physionet website.
Analyzing ECG Data
In the Analyze tab, you will see a list of all the subjects that you have uploaded, along with the algorithms you can use to analyze them. B stands for Berger and C stands for Chesnokov. All subjects should qualify for Chesnokov algorithm analysis, but only those subjects with a properly formatted INI file will qualify for Berger analysis.
To analyze a subject, click the checkbox corresponding to the algorithm(s) you want to use in the left-side panel. Then click the checkboxes for each subject to analyze in the main panel and click the Analyze button (The checkbox next to the Analyze button will select/deselect all subjects).
This will start the analysis process for each of the subjects you selected. You should see a confirmation box informing you that the Gadget is analyzing the data.
Analyzing the same subject more than once
You do have the ability to analyze the same subject more than once. If a subject has already been analyzed, the Gadget will re-execute the analysis algorithm and overwrite the previous results.
The overwriting should not be a concern since both algorithms produce the same results every time as long as the data they're analyzing is the same. Unless you've uploaded a different ECG file for the same subject, you should receive the same results every time you analyze a subject.
Step Five: View Analysis Results
Contents of View Analysis Results Tab
Every subject/algorithm combination with analysis data will appear on the View Analysis Results tab.
Viewing Files
Click the checkbox next to the each subject/algorithm pair you wish to see and click the View button.
You will be prompted to open or download an Excel file. The file has a separate sheet for the Berger and the Chesnokov algorithm results, and contains data for every subject you chose.
Chesnokov Results File Example
Berger Results File Example
Analysis Results Field Descriptions
Chesnokov Results Fields
| Field | Description |
| File Analyzed | Path and name of the file the algorithm analyzed |
| Length | Time of the entire data set |
| Lead | The lead analyzed in this row |
| Total Beat Count | Number of heartbeats found by the algorithm |
| QT Corrected | Corrected QT Interval; computed by dividing QTMean by the square root of the RRMean; QTmean/sqrt(RRmean) |
| QTVI_log | Log of the QTVI; computed by the log of the QTVariance divided by the QTmean squared over the RRVariance divided by the RRmean squared. |
| QTIntervalCount | Number of intervals found by the algorithm |
| QTMean | Mean QT Interval |
| QTVariance | Statistical variance in the QT Interval |
| QTStandardDeviation | Standard Deviation in QT Interval |
Berger Results Fields
| Field | Description |
| FileName | Name of file it analyzed |
| StageName | Legacy term, probably equals "stst" |
| meanHRbpm | Mean Heart Rate per minute |
| perckept | Percentage kept in the period |
| percPVC | Percentage ectopic in the epoch |
| QTVI_log | The QT Variability Index; log ratio between the QT interval and heart rate variabilities. Same formula that Chesnokov uses. |
| QTVInumer*1000 | The QT Variability Index’s numerator multiplied by 1000 |
| QTVIdenom*1000 | The QT Variability Index’s denominator multiplied by 1000 |
| QTV_msecsqu | The QT Variability in milliseconds squared |
| HRV_bpmsqu | The Heart Rate Variability in beats per minute squared |
| QTintmean_sec | Mean qt interval in seconds |
| HRmean_bpm | Mean heart rate in beats per minute |
| QTRRslope | Slope of the QT versus RR plot |
| QTRRintercept | Y intercept of the QT versus RR plot |
| QTRR_r2 | R2 of the QT versus RR plot |
| meancoh | Mean spectral coherence of QT and HR; the coherence provides a measure between zero and unity of the degree of linear interaction between heart rate and QT interval fluctuations as a function of the frequency of those fluctuations |
| VLFPow | Very Low Frequency Power |
| LFPow | Low Frequency Power |
| HFPow | High Frequency Power |
| TotPow_clinical_use | Total Power for Clinical Use; the sum of Very Low Frequency Power, Low Frequency Power and High Frequency Power |
| TotPow_mathematical | legacy field, please ignore |
| LFdivHFPow | Low Frequency Power divided by High Frequency Power |
| LFdivHFplLF | HRV Low Frequency Power divided by ( High Frequency Power + Low Frequency Power ) |
| RMSSD_msec | Root Mean Square Successive Difference in milliseconds |
| pNN50 | A time domain measure of heart rate variability; pNN50 = (NN50 count) / (total NN count) |
| meanNN_msec | Mean NN in milliseconds |
| SDNN_msec | Standard deviation NN in milliseconds |
| total_RRvariance_msec | Total RR variance in milliseconds |
| SDNN_RST_msec | Standard Deviation of the RST wave in milliseconds* |
| template1H | constant QT template used in detection |
| nowtemplatemsec | duration of the QT template |
| Qbeginmsec | Starting Q of the wave |
| tempinitmsec | Starting T of the wave |
| tempendmsec | Ending T of the wave |
| sdRLTESQTintmsec | St. Dev. of QT intervals |
| avgNssvthoseelim | average noise (normalized-epsilon) value of the bad QT beats |
| avgNssthosekept | average noise (normalized-epsilon) value of the good QT beats |
| maxgap_sec | the longest time gap, in seconds, between good QT beats |
| epochsizsecs | Entire length of the epoch in seconds |
| length(rwave) | the number of detected Rwaves in the epoch |
| ORIGbegindatapt | Starting point of the analysis in the epoch, in data point units |
| DataFileType | The type of data file |
IT Staff: Obtaining ECG Gadget Source Code and Hosting the ECG Gadget on Your Own
IT staff and administrators: Click here for instructions on how to obtain the ECG Gadget source code and/or deploy and host the ECG Gadget on your organization's web server.
