CardIO
is designed to build end-to-end machine learning models for deep research of electrocardiograms.
Main features:
For more details see the documentation and tutorials.
CardIO is based on BatchFlow. You might benefit from reading its documentation. However, it is not required, especially at the beginning.
CardIO has three modules: core
,
models
and
pipelines
.
core
module contains EcgBatch
and EcgDataset
classes.
EcgBatch
defines how ECGs are stored and includes actions for ECG processing. These actions might be used to build multi-staged workflows that can also involve machine learning models. EcgDataset
is a class that stores indices of ECGs and generates batches of type EcgBatch
.
models
module provides several ready to use models for important problems in ECG analysis:
pipelines
module contains predefined workflows to
Here is an example of a pipeline that loads ECG signals, makes preprocessing and trains a model for 50 epochs:
train_pipeline = (
ds.Pipeline()
.init_model("dynamic", DirichletModel, name="dirichlet", config=model_config)
.init_variable("loss_history", init_on_each_run=list)
.load(components=["signal", "meta"], fmt="wfdb")
.load(components="target", fmt="csv", src=LABELS_PATH)
.drop_labels(["~"])
.rename_labels({"N": "NO", "O": "NO"})
.flip_signals()
.random_resample_signals("normal", loc=300, scale=10)
.random_split_signals(2048, {"A": 9, "NO": 3})
.binarize_labels()
.train_model("dirichlet", make_data=concatenate_ecg_batch, fetches="loss", save_to=V("loss_history"), mode="a")
.run(batch_size=100, shuffle=True, drop_last=True, n_epochs=50)
)
CardIO
module is in the beta stage. Your suggestions and improvements are very welcome.
CardIO
supports python 3.5 or higher.
With pipenv:
pipenv install git+https://github.com/analysiscenter/cardio.git#egg=cardio
With pip:
pip3 install git+https://github.com/analysiscenter/cardio.git
After that just import cardio
:
import cardio
When cloning repo from GitHub use flag --recursive
to make sure that batchflow
submodule is also cloned.
git clone --recursive https://github.com/analysiscenter/cardio.git
Please cite CardIO in your publications if it helps your research.
Khudorozhkov R., Illarionov E., Kuvaev A., Podvyaznikov D. CardIO library for deep research of heart signals. 2017.
@misc{cardio_2017_1156085,
author = {R. Khudorozhkov and E. Illarionov and A. Kuvaev and D. Podvyaznikov},
title = {CardIO library for deep research of heart signals},
year = 2017,
doi = {10.5281/zenodo.1156085},
url = {https://doi.org/10.5281/zenodo.1156085}
}