StanfordMIMI / Comp2Comp

Computed tomography to body composition (Comp2Comp).
Apache License 2.0
61 stars 11 forks source link
abdomen-ct abdominal body-composition computed-tomography segmentation

Comp2Comp

License: Apache 2.0 GitHub Workflow Status Documentation Status

Paper | Installation | Basic Usage | Inference Pipelines | Contribute | Citation

Comp2Comp is a library for extracting clinical insights from computed tomography scans.

Installation

git clone https://github.com/StanfordMIMI/Comp2Comp/

# Install script requires Anaconda/Miniconda.
cd Comp2Comp && bin/install.sh

Alternatively, Comp2Comp can be installed with pip:

git clone https://github.com/StanfordMIMI/Comp2Comp/
cd Comp2Comp
conda create -n c2c_env python=3.9
conda activate c2c_env
pip install -e .

For installing on the Apple M1 chip, see these instructions.

Basic Usage

bin/C2C <pipeline_name> -i <path/to/input/folder>

For running on slurm, modify the above commands as follow:

bin/C2C-slurm <pipeline_name> -i <path/to/input/folder>

Inference Pipelines

We have designed Comp2Comp to be highly extensible and to enable the development of complex clinically-relevant applications. We observed that many clinical applications require chaining several machine learning or other computational modules together to generate complex insights. The inference pipeline system is designed to make this easy. Furthermore, we seek to make the code readable and modular, so that the community can easily contribute to the project.

The InferencePipeline class is used to create inference pipelines, which are made up of a sequence of InferenceClass objects. When the InferencePipeline object is called, it sequentially calls the InferenceClasses that were provided to the constructor.

The first argument of the __call__ function of InferenceClass must be the InferencePipeline object. This allows each InferenceClass object to access or set attributes of the InferencePipeline object that can be accessed by the subsequent InferenceClass objects in the pipeline. Each InferenceClass object should return a dictionary where the keys of the dictionary should match the keyword arguments of the subsequent InferenceClass's __call__ function. If an InferenceClass object only sets attributes of the InferencePipeline object but does not return any value, an empty dictionary can be returned.

Below are the inference pipelines currently supported by Comp2Comp.

End-to-End Spine, Muscle, and Adipose Tissue Analysis at T12-L5

Usage

bin/C2C spine_muscle_adipose_tissue -i <path/to/input/folder>

Example Output Image

Spine Bone Mineral Density from 3D Trabecular Bone Regions at T12-L5

Usage

bin/C2C spine -i <path/to/input/folder>

Example Output Image

Abdominal Aortic Calcification Segmentation

Usage

bin/C2C aortic_calcium -i <path/to/input/folder> -o <path/to/input/folder> --threshold

Example Output

Statistics on aortic calcifications:
Abdominal:
Total number:            10
Total volume (cm³):      0.161
Mean HU:                 383.3+/-66.4
Median HU:               366.5+/-62.9
Max HU:                  571.9+/-190.6
Mean volume (cm³):       0.016+/-0.020
Median volume (cm³):     0.011
Max volume (cm³):        0.074
Min volume (cm³):        0.002
Threshold (HU):          266.000

Thoracic:
Total number:            1
Total volume (cm³):      0.030
Mean HU:                 378.1+/-0.0
Median HU:               376.0+/-0.0
Max HU:                  538.0+/-0.0
Mean volume (cm³):       0.030+/-0.000
Median volume (cm³):     0.030
Max volume (cm³):        0.030
Min volume (cm³):        0.030
Threshold (HU):          266.000

AAA Segmentation and Maximum Diameter Measurement

Usage

bin/C2C aaa -i <path/to/input/folder>

Example Output Image (slice with largest diameter)

| Example Output Video | Example Output Graph | |-----------------------------|----------------------------| |

|

|

Contrast Phase Detection

Usage

bin/C2C contrast_phase -i <path/to/input/folder>

3D Analysis of Liver, Spleen, and Pancreas

Usage

bin/C2C liver_spleen_pancreas -i <path/to/input/folder>

Example Output Image

Contribute

We welcome all pull requests. If you have any issues, suggestions, or feedback, please open a new issue.

Citation

@article{blankemeier2023comp2comp,
  title={Comp2Comp: Open-Source Body Composition Assessment on Computed Tomography},
  author={Blankemeier, Louis and Desai, Arjun and Chaves, Juan Manuel Zambrano and Wentland, Andrew and Yao, Sally and Reis, Eduardo and Jensen, Malte and Bahl, Bhanushree and Arora, Khushboo and Patel, Bhavik N and others},
  journal={arXiv preprint arXiv:2302.06568},
  year={2023}
}

In addition to Comp2Comp, please consider citing TotalSegmentator:

@article{wasserthal2022totalsegmentator,
  title={TotalSegmentator: robust segmentation of 104 anatomical structures in CT images},
  author={Wasserthal, Jakob and Meyer, Manfred and Breit, Hanns-Christian and Cyriac, Joshy and Yang, Shan and Segeroth, Martin},
  journal={arXiv preprint arXiv:2208.05868},
  year={2022}
}