Skip to content

A study in multi-center imaging diagnostics, emphasizing on the modality of cardiovascular magnetic resonance and the prediction of hypertrophic cardiomyopathy.

Notifications You must be signed in to change notification settings

Linardos/federated-HCM-diagnosis

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 

Repository files navigation

Federated HCM diagnosis

A study in multi-center imaging diagnostics, emphasizing on the modality of cardiovascular magnetic resonance and the prediction of hypertrophic cardiomyopathy.

Publication

Find the published version of our work here: arXiv. Also, if this project has been helpful to your work, please consider citing us:


@article{linardos2021federated,
  title={Federated Learning for Multi-Center Imaging Diagnostics: A Study in Cardiovascular Disease},
  author={Linardos, Akis and Kushibar, Kaisar and Walsh, Sean and Gkontra, Polyxeni and Lekadir, Karim},
  journal={arXiv preprint arXiv:2107.03901},
  year={2021}
}

Pipeline

Code Outline

Linardos/federated-HCM-diagnosis
├── README.md   <-- You are here 📌
└── src
    ├── ...    
    └── classification    
        ├── ...   
        ├── train.py               <-- Brings everything together, includes functions that run federated simulation. Some of the data curation occurs here.
        ├── config.yaml            <-- Here you may set parameters, paths to your data, and paths to miscellaneous files that are used by the data loader
        ├── data_loader.py         <-- Loads from ACDC and MnM datasets depending on which centers are asked in the config.yaml
        ├── generate_experiment.py <-- Generates a new experiment in the experiments folder, automatically named according to the set of parameters passed.
        ├── Dockerfile             <-- List of instructions from which to build a docker image.*
        ├── environment.yaml       <-- List of pip and conda installations, used by Dockerfile to instantiate an environment
        └── models    
            └── nets.py    <-- Want to try new models? Add them here, but don't forget to specify them in the config.yaml as well.

*Why Docker? A docker image is a microcosm of the dependencies and software used to run this study. By generating disposable environments on runtime you are less likely to run into dependency problems or CUDA version incompatibilities among other things.

Usage

Make changes in config.yaml to set your own parameters or model. Use the generate_experiment.py script and note that beside src there will be a new folder named experiments. Each experiment will receive a tag that is a 4 digit number attached to a name you defined. All files from classification will be copied to that folder, so that you have an instance of your experiment which you can then run using the Dockerfile. In code this would be:

python generate_experiment.py
cd </path/to/your/experiment>
docker build -t experiment .
docker run -v </path/to/datasets>:/root/Datasets -v </path/to/your/experiment>:/experiment experiment

Improving upon the Federated CMR diagnostics

If your goal is to study other models or multi-label classification in a federated set-up, add your model in the nets.py and/or configure config.yaml accordingly

Adapting to another problem

You may adapt this set-up to another diagnostics (or possibly segmentation) problem by tampering with the following files included in the src/classification: config.yaml, models/nets.py, data_loader.py

About

A study in multi-center imaging diagnostics, emphasizing on the modality of cardiovascular magnetic resonance and the prediction of hypertrophic cardiomyopathy.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published