About
The ECGAN framework was initially developed as part of a research project between eMundo GmbH and the research group Data Mining in Medicine of LMU Munich.
ECGAN is generously supported and partially funded by the Bavarian Research Foundation. The focus of the research project was to investigate and improve the state of the art generation of ECG data using Generative Adversarial Networks. However, the framework has since expanded and supports various additional tasks.
Goal
ECGAN aims to provide several things:
- First and foremost, reproducibility and comparability is central to the ideaof ECGAN. Algorithms should either be deterministic or means to analyse theirperformance across several runs should be possible.
- Generalizable foundation. While the documentation, metrics and datasets focus onECG data, it should remain easy to evaluate any time series problem (see Datasets).
- Focus on ECG data. We aim to provide information to people in the intersection ofdata science and cardiology by providing information on available datasets andtheir use. Over time, we aim to provide real scenarios - given boundaries and data -and discuss how various preprocessing steps can influence the resulting data/models.This will require significant help from the community - especially to keep up withSOTA methods - which is why we appreciate any help or hints regarding novel/interestingresearch.
Contributing
Get started with the development
If you want to help develop the framework we recommend to install a variety of development
tools, especially mypy and pylint. The tools can be installed using make setup_dev
and the code can be checked for lint/type stub/formatting errors using make check
.
We strongly encourage discussions (either in the issues or via mail at emubot@e-mundo.de) regarding the possible errors (and even better: fixes) of the current pipeline and addition or improvements of datasets, preprocessing steps or training/anomaly detection modules.
Improving Baselines
Current baselines are sometimes rather simplistic. Improvements can be very simple (e.g.
exchanging the input normalization) and we aim to achieve high performances on given
datasets with given preprocessing and a specific task (e.g. single-beat classification,
multi-beat classification or beat generation).
If you are able to improve an existing baseline, please use either 5 or 10-fold
crossvalidation (i.e.set the trainer.CROSS_VAL_FOLDS
parameter to 5 or 10. Please report the
resulting task metrics (see Data Synthesis). We will
additionally run the code independently to verify the result before merging.