Figure 1: This plot is made by using ecg plot [1] and the ECG data is from the PTB Diagnostic DB [2].
This project is based on the work we did in the PhysioNet/Computing in Cardiology Challenge 2020. This paper [3] describes the Challenge and this paper discribes our contribution in this challenge.
The data set in this project contains 43.101 ECGs and comes from six different sources. Table 1 show the six sources.
Table 1: The table lists the six different sources used in the data set in this project
Data set number | Name |
1 | China Physiological Signal Challenge 2018 |
2 | China Physiological Signal Challenge 2018 Extra |
3 | St.Petersburg Institute of Cardiological Technics |
4 | PTB Diagnostics |
5 | PTB-XL |
6 | Georgia 12-Lead ECG Challenge Database |
The data used in two different ways by the models in this project. The first method, used by the Convolutional Neural Networks, is to use the as they are from the original dataset. The second method, used by the two ensemble models, is to extract features from the ECGs and and create a table with n rows and m columns were n = numbers of ECG recordings and m = number of features. The ECG-features are extracted by using an ECG-featurizer [4]. The featurized data can be found here and the script for making the dataset is here:
To get access to the data used in this study you can either download it from https://physionetchallenges.github.io/2020/#data or download the same data set from Kaggle. To use the codes in this repository you should sign up for a Kaggle account and get a Kaggle API token and use this to get access to the Kaggle data set from Google Colab. Google Colab Pro was used to get sufficient GPU power and enough runtime.
- Log in to your Kaggle account or sign up here
- On the left side of the "edit profile"-button you click on the "Account"-option.
- Scroll down to the API-section and click "Create New API Token"-button.
- You will now have a file named kaggle.json. This is your API-token
- You can upload the kaggle.json-file to the Google Colab notebook and then you are able to download datasets from Kaggle
Model number | Model | Link to Google Colab Notebook | Link to Notebook on github |
1 | FCN | Notebook | |
2 | Encoder | Notebook | |
3 | FCN + MLP | Notebook | |
4 | Encoder + MLP | Notebook | |
5 & 6 | Encoder + FCN (and Encoder + FCN + rule-based model) | Notebook | |
7 & 8 | Encoder + FCN + MLP + (and Endcoder + FCN + MLP + Rule-based model) | Notebook | |
9 | Ensemble model - 12 leads | Notebook | |
10 | Ensemble model - 2 leads | Notebook |
** Please use these two URLs for the two ensemble models:
12-lead:
https://www.kaggle.com/bjoernjostein/fys-stk-oblig3-physionet-challenge-2021-starter
2-lead:
https://www.kaggle.com/bjoernjostein/fys-stk-oblig3-physionet-challenge-2021-will-2-do
or se the the same models here on Github
12-lead:
2-lead:
The results from the cross-validated models can be plotted with this notebook . The figures can be found here.
https://colab.research.google.com/drive/13lR2Rx7mHLBlhbDzyViMPIukT2wV5jsj?usp=sharing
https://www.kaggle.com/bjoernjostein/fys-stk-oblig3-physionet-challenge-2021-explain
The paper describing the work in this project can be found here:
Licensed under the Apache 2.0 License
[1] | ECG plot: https://github.com/dy1901/ecg_plot |
[2] | PTB Diagnostic DB: Bousseljot R, Kreiseler D, Schnabel, A. Nutzung der EKG-Signaldatenbank CARDIODAT der PTB über das Internet. Biomedizinische Technik, Band 40, Ergänzungsband 1 (1995) S 317 (https://physionet.org/content/ptbdb/1.0.0/) |
[3] | Perez Alday, Erick A, Annie Gu, Amit J Shah, Chad Robichaux, An-Kwok Ian Wong, Chengyu Liu, Feifei Liu, mfl. «Classification of 12-lead ECGs: the PhysioNet/Computing in Cardiology Challenge 2020». Physiological Measurement, 11. november 2020. https://doi.org/10.1088/1361-6579/abc960. |
[4] | ECG-Featurizer: https://github.com/ECG-featurizer/ECG-featurizer |