https://github.com/cardiokit/cardioflow
Science Score: 13.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
○.zenodo.json file
-
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.0%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: CardioKit
- License: apache-2.0
- Language: HTML
- Default Branch: main
- Size: 6.24 MB
Statistics
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
cardioflow
The aim of cardioflow is to advance research in the field of federated unsupervsied learning for the detection of anomalies in electrocardiogram signals recorded in mobile environments. The prototype application is implemented for iOS.
Structure
The repository contains several elements and is structured as follows:
The src folder contains three subfolders with code for creating and running the overall pipeline.
cardioflow
- src/application:
- This folder holds the source code for the iOS application that can record and preprocess ECG signals.
- It includes functionalities for on-device machine learning, participation in a federated learning pipeline as a client node, predicting outliers, evaluating results, and visualizing outcomes.
- src/federated:
- The federated folder contains code to set up a Flower server, which acts as the orchestrating server for federated learning experiments.
src/model:
- The model folder includes the unsupervised autoencoder model (autoencoder.py), which can be adapted for different model designs.
- The swift-ae.ipynb notebook loads the PyTorch implementation of the autoencoder and converts it into a CoreML model.
- The resulting model is automatically stored in src/application/Resources/.
- Note: If you rename the model, ensure it is correctly referenced in your Xcode project to be copied and transferred to mobile devices as required.
data:
- The data folder contains code to download parts of the Icentia11k dataset and transform them into the required format for on-device experiments.
- Using a seed ensures the choice of subjects is reproducible.
analysis:
- The analysis folder is used to process the data exported or transmitted to an analysis computer after the experiment concludes.
- It contains code to further analyze the experimental outcomes and render results visually for publication purposes.
How to Use
- Optional: Execute the script in the data folder to download and prepare the respective data (only required in case of reproducing the experiment)
- Optional: Customize the coreml model to your needs by following the instructions in src/model
- Set up the application following the instructions in src/application
- Set up the federated learning server following the instructions in src/federated
- Optional: Analyze the results of the on-device processing by transfering the data into the analysis folder.
Remark
The application is for scientific purposes solely and is not allowed for medical diagnosis.
How to cite?
If you are using parts of this work or build your experiments up on this repository please cite the following article:
TBD
Owner
- Name: CardioKit
- Login: CardioKit
- Kind: organization
- Email: max.kapsecker@tum.de
- Location: Germany
- Website: www.cardiokit.org
- Repositories: 1
- Profile: https://github.com/CardioKit
A system composed of tools for the analysis of electrocardiogram signals.
GitHub Events
Total
- Watch event: 1
Last Year
- Watch event: 1
Dependencies
- ipywidgets ==8.1.3
- jupyterlab ==4.2.1
- matplotlib ==3.9.0
- numpy ==1.26.4
- pandas ==2.2.2
- scikit-learn ==1.5.1
- seaborn ==0.13.2
- torch ==2.3.1
- numpy ==1.26.4
- pandas ==2.2.2
- tqdm ==4.66.4
- wfdb ==4.1.2
- flwr ==1.9.0
- numpy ==1.26.4
- coremltools ==7.2
- numpy ==1.26.4
- torch ==2.3.1
- github.com/CardioKit/PeakSwift
- github.com/JohnSundell/CollectionConcurrencyKit 0.2.0
- github.com/Jounce/Surge 2.3.2
- github.com/ReactiveX/RxSwift 6.5.0
- github.com/adap/flower-swift
- github.com/apple/swift-argument-parser 1.4.0
- github.com/apple/swift-atomics 1.2.0
- github.com/apple/swift-collections 1.1.0
- github.com/apple/swift-http-types 1.1.0
- github.com/apple/swift-log 1.5.4
- github.com/apple/swift-nio 2.65.0
- github.com/apple/swift-nio-extras 1.22.0
- github.com/apple/swift-nio-http2 1.31.0
- github.com/apple/swift-nio-ssl 2.26.0
- github.com/apple/swift-nio-transport-services 1.21.0
- github.com/apple/swift-protobuf 1.26.0
- github.com/apple/swift-syntax 510.0.2
- github.com/apple/swift-system 1.3.0
- github.com/drmohundro/SWXMLHash 7.0.2
- github.com/grpc/grpc-swift 1.23.0
- github.com/jpsim/SourceKitten 0.35.0
- github.com/jpsim/Yams 5.1.2
- github.com/kewlbear/NumPy-iOS
- github.com/kewlbear/Python-iOS 0.1.1-b20230423-090254
- github.com/krzyzanowskim/CryptoSwift 1.8.2
- github.com/polarofficial/polar-ble-sdk 5.5.0
- github.com/pvieito/PythonKit
- github.com/realm/SwiftLint 0.55.1
- github.com/scottrhoyt/SwiftyTextTable 0.9.0
- github.com/swiftcsv/SwiftCSV 0.10.0