Skip to main content

High precision ECG Database with annotated R peaks

This is a mirror of the ECG GUDB http://researchdata.gla.ac.uk/716/ and provides transparent online access via a python API.

DOI: https://doi.org/10.5281/zenodo.10925419

It contains ECGs from 25 subjects. Each subject was recorded performing 5 different tasks for two minutes:
  • sitting

  • a maths test on a tablet

  • walking on a treadmill

  • running on a treadmill

  • using a hand bike

The following channels were recorded with two Attys (https://www.attys.tech/) running synchronously:
  • Einthoven II and III with standard cables and the amplifier worn around the waist

  • Exercise cheststrap ECG which resembles approximtely V2-V1 with the ECG amplifier directly mounted on the strap

  • Acceleration in X/Y/Z whith the sensor mounted directly on the chest strap

The cheststrap ECG allowed R peak detection even while jogging at a very high precision (+/- one sample). The sampling rate was 250Hz at a resolution of 24 bits. The database contains the unfiltered, DC-coupled signals as originally recorded. In order to be able to link the ECG artefacts to the behaviour of the subject all but one subject gave permission to be filmed and the videos are also part of the database.

Installation

Simply install via pip or pip3:

pip install ecg_gudb_database
pip3 install ecg_gudb_database

Usage

Check out usage_example.py on github which plots the ECG and the heartrate of one subject.

Module

The module is called ecg_gudb_database:

from ecg_gudb_database import GUDb

The constructor loads the ECG data of one subject/experiment from github:

ecg_class = GUDb(subject_number, experiment)

where subject_number is from 0..24 and experiment is ‘sitting’, ‘maths’, ‘walking’, ‘hand_bike’ or ‘jogging’. The array ecg_class.experiments is an array of all experiments so that one can loop through the different experiments.

Optionally, in case you decide later to download the whole dataset from http://researchdata.gla.ac.uk/716/ then specify the absolute path to the dataset with the optional parameter url without the “file:” specifier:

ecg_class = GUDb(subject_number, experiment, url = "/home/bp1/dataset_dataset_716/experiment_data/")

Retrieve the ECG data

The data is available as numpy arrays. The sampling rate is 250Hz for all experiments (ecg_class.fs). We have recorded Einthoven and from a chest strap.

Einthoven:

ecg_class.einthoven_I, ecg_class.einthoven_I_filt
ecg_class.einthoven_II, ecg_class.einthoven_II_filt
ecg_class.einthoven_III, ecg_class.einthoven_III_filt

Chest strap:

ecg_class.cs_V2_V1, ecg_class.cs_V2_V1_filt

where the filtered versions have 50Hz mains and DC removed.

R peak annotations

The two boolean variables ecg_class.anno_cs_exists and ecg_class.anno_cables_exists tell the user if annotations exist. If yes they can be obtained:

if ecg_class.anno_cs_exists:
    chest_strap_anno = ecg_class.anno_cs
else:
    print('No chest strap annotations')
if ecg_class.anno_cables_exists:
    cables_anno = ecg_class.anno_cables
else:
    print("No cables annotations")

Accelerometer data

The accelerometer was worn on a standard belt around the subject’s waist:

ecg_class.acc_x
ecg_class.acc_y
ecg_class.acc_z

Videos and full dataset for offline use

Where the participant has consented, there is a video for each of the tasks. Here is an example: https://berndporr.github.io/ECG-GUDB/ The video and ECG data have been synchronised so they start and end at the same time. The full dataset with the videos can be requested here:

http://researchdata.gla.ac.uk/716/

Metadata

Release files for ecg-gudb-database 1.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ecg-gudb-database 1.1.1
File Size Uploaded Provenance
ecg_gudb_database-1.1.1.tar.gz 10.8 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for ecg-gudb-database 1.1.1
File Interpreter ABI Platform
ecg_gudb_database-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 22.0 kB

Release files / ecg_gudb_database-1.1.1.tar.gz

Download URL ecg_gudb_database-1.1.1.tar.gz
Size 10.8 kB
Tags Source
SHA-256 checksum
How to use checksums
7785a6cf6ce23b712575322702fa529042b776ad24262e343ae62c96b92ec161
BLAKE2b-256 checksum
How to use checksums
297a9770c759e4c9a842074b33be13a5561c815753c06944f8e29d40044a21c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release files / ecg_gudb_database-1.1.1-py3-none-any.whl

Download URL ecg_gudb_database-1.1.1-py3-none-any.whl
Size 11.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9ca8eea397dae560b0e13bb34cc34e75a81f8257b359a34b84732d14e1d91069
BLAKE2b-256 checksum
How to use checksums
fe7a116cebc46d3e0a18d65d749afc9352078da6be02f87e55fb2f0c04f3713a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Security for ecg-gudb-database 1.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page