Skip to main content

BraTS algorithms

Project description

BraTS

Python Versions Stable Version Documentation Status tests codecov License

Providing the top-performing algorithms from the Brain Tumor Segmentation (BraTS) challenges, through an easy-to-use Python API powered by Docker.

Features

  • Access to top-performing algorithms from recent BraTS challenges
  • Easy-to-use minimal API
  • Extensive documentation and examples

Installation

With a Python 3.8+ environment, you can install brats directly from PyPI:

pip install brats

[!IMPORTANT]
To run brats, you require a Docker installation.
Many algorithms also require GPU support (NVIDIA Docker).
In case you do not have access to a CUDA-capable GPU, the overview tables in the Available Algorithms and Usage section indicate which algorithms are CPU compatible.

Docker and NVIDIA Container Toolkit Setup

Available Algorithms and Usage

Segmentation Challenges

Adult Glioma Segmentation (Pre-Treatment)

Adult Glioma Segmentation on pre-treatment brain MRI exams.

Usage example (code) and top 3 participants
from brats import AdultGliomaPreTreatmentSegmenter
from brats.constants import AdultGliomaPreTreatmentAlgorithms

segmenter = AdultGliomaPreTreatmentSegmenter(algorithm=AdultGliomaPreTreatmentAlgorithms.BraTS23_1, cuda_devices="0")
# these parameters are optional, by default the winning algorithm of 2023 will be used on cuda:0
segmenter.infer_single(
    t1c="path/to/t1c.nii.gz",
    t1n="path/to/t1n.nii.gz",
    t2f="path/to/t2f.nii.gz",
    t2w="path/to/t2w.nii.gz",
    output_file="segmentation.nii.gz",
)

Note: If you're interested in Adult Glioma Segmentation, the BrainLes GlioMODA package may also be of interest.


Class: brats.AdultGliomaPreTreatmentSegmenter (Docs)
Challenge Paper 2023: Link

Year Rank Author Paper CPU Support Key Enum
2023 1st André Ferreira, et al. Link BraTS23_1
2023 2nd Andriy Myronenko, et al. N/A BraTS23_2
2023 3rd Fadillah Adamsyah Maani, et al. Link BraTS23_3

Adult Glioma Segmentation (Post-Treatment)

Adult Glioma Segmentation on post-Treatment brain MRI exams.

Usage example (code) and top 3 participants
from brats import AdultGliomaPostTreatmentSegmenter
from brats.constants import AdultGliomaPostTreatmentAlgorithms

segmenter = AdultGliomaPostTreatmentSegmenter(algorithm=AdultGliomaPostTreatmentAlgorithms.BraTS23_1, cuda_devices="0")
# these parameters are optional, by default the winning algorithm of 2024 will be used on cuda:0
segmenter.infer_single(
    t1c="path/to/t1c.nii.gz",
    t1n="path/to/t1n.nii.gz",
    t2f="path/to/t2f.nii.gz",
    t2w="path/to/t2w.nii.gz",
    output_file="segmentation.nii.gz",
)

Class: brats.AdultGliomaPostTreatmentSegmenter (Docs)
Challenge Paper 2024: Link

Year Rank Author Paper CPU Support Key Enum
2024 1st André Ferreira, et al. N/A BraTS24_1
2024 2nd Heejong Kim, et al. Link BraTS24_2
2024 3rd Adrian Celaya N/A BraTS24_3

BraTS-Africa Segmentation

Adult Glioma Segmentation on brain MRI exams in Sub-Sahara-Africa patient population.

Usage example (code) and top 3 participants
from brats import AfricaSegmenter
from brats.constants import AfricaAlgorithms

segmenter = AfricaSegmenter(algorithm=AfricaAlgorithms.BraTS23_1, cuda_devices="0")
# these parameters are optional, by default the winning algorithm will be used on cuda:0
segmenter.infer_single(
    t1c="path/to/t1c.nii.gz",
    t1n="path/to/t1n.nii.gz",
    t2f="path/to/t2f.nii.gz",
    t2w="path/to/t2w.nii.gz",
    output_file="segmentation.nii.gz",
)

Class: brats.AfricaSegmenter (Docs)
Challenge Paper 2023 Link
Challenge Paper 2024: N/A

Year Rank Author Paper CPU Support Key Enum
2024 1st Zhifan Jiang et al. N/A BraTS24_1
2024 2nd Long Bai, et al. N/A BraTS24_2
2024 3rd Sarim Hashmi, et al. Link BraTS24_3
2023 1st Andriy Myronenko, et al. TODO BraTS23_1
2023 2nd Alyssa R Amod, et al. Link BraTS23_2
2023 3rd Ziyan Huang, et al. Link BraTS23_3

Meningioma Segmentation

Segmentation of Meningioma on brain MRI exams.

Usage example (code) and top 3 participants

Unlike other segmentation challenges, the expected inputs for the Meningioma Segmentation Algorithms differ between years.

  • 2023: All 4 modalities are used (t1c, t1n, t2f, t2w)
  • 2024: Only t1c is used

Therefore, the usage differs slightly, depending on which algorithm is used. To understand why, please refer to the 2024 challenge manuscript.

from brats import MeningiomaSegmenter
from brats.constants import MeningiomaAlgorithms

### Example for 2023 algorithms
segmenter = MeningiomaSegmenter(algorithm=MeningiomaAlgorithms.BraTS23_1, cuda_devices="0")
# these parameters are optional, by default the winning algorithm will be used on cuda:0
segmenter.infer_single(
    t1c="path/to/t1c.nii.gz",
    t1n="path/to/t1n.nii.gz",
    t2f="path/to/t2f.nii.gz",
    t2w="path/to/t2w.nii.gz",
    output_file="segmentation_23.nii.gz",
)

### Example for 2024 algorithms
segmenter = MeningiomaSegmenter(algorithm=MeningiomaAlgorithms.BraTS24_1, cuda_devices="0")
segmenter.infer_single(
    t1c="path/to/t1c.nii.gz",
    output_file="segmentation_24.nii.gz",
)

Class: brats.MeningiomaSegmenter (Docs)
Challenge Paper 2024 Link
Challenge Paper 2023 Link

Year Rank Author Paper CPU Support Key Enum
2024 1st Valeria Abramova N/A BraTS24_1
2024 2nd Mehdi Astaraki N/A BraTS24_2
2024 3rd Andre Ferreira, et al. Link BraTS24_3
2023 1st Andriy Myronenko, et al. N/A BraTS23_1
2023 2nd Ziyan Huang, et al. Link BraTS23_2
2023 3rd Daniel Capell'an-Mart'in et al. Link BraTS23_3

Brain Metastases Segmentation

Segmentation on brain metastases on MRI exams for pre- and post-treatment cases.

Usage example (code) and top 3 participants
from brats import MetastasesSegmenter
from brats.constants import MetastasesAlgorithms

segmenter = MetastasesSegmenter(algorithm=MetastasesAlgorithms.BraTS23_1, cuda_devices="0")
# these parameters are optional, by default the winning algorithm will be used on cuda:0
segmenter.infer_single(
    t1c="path/to/t1c.nii.gz",
    t1n="path/to/t1n.nii.gz",
    t2f="path/to/t2f.nii.gz",
    t2w="path/to/t2w.nii.gz",
    output_file="segmentation.nii.gz",
)

Note: If you're interested in Brain Metastases Segmentation, the BrainLes AURORA package may also be of interest.


Class: brats.MetastasesSegmenter (Docs)
Challenge Paper 2023 Link

Year Rank Author Paper CPU Support Key Enum
2023 1st Andriy Myronenko, et al. N/A BraTS23_1
2023 2nd Siwei Yang, et al. Link BraTS23_2
2023 3rd Ziyan Huang, et al. Link BraTS23_3

Pediatric Segmentation

Segmentation of pediatric brain tumors on MRI exams.

Usage example (code) and top 3 participants
from brats import PediatricSegmenter
from brats.constants import PediatricAlgorithms

segmenter = PediatricSegmenter(algorithm=PediatricAlgorithms.BraTS23_1, cuda_devices="0")
# these parameters are optional, by default the winning algorithm will be used on cuda:0
segmenter.infer_single(
    t1c="path/to/t1c.nii.gz",
    t1n="path/to/t1n.nii.gz",
    t2f="path/to/t2f.nii.gz",
    t2w="path/to/t2w.nii.gz",
    output_file="segmentation.nii.gz",
)

Note: If you're interested in Pediatric Segmentation, the BrainLes PeTu package may also be of interest.


**Class:** `brats.PediatricSegmenter` ([Docs](https://brats.readthedocs.io/en/latest/core/segmentation_algorithms.html#brats.core.segmentation_algorithms.PediatricSegmenter))
**Challenge Paper 2024** [Link](https://doi.org/10.48550/arXiv.2404.15009)
**Challenge Paper 2023** [Link](https://doi.org/10.48550/arXiv.2305.17033)
Year Rank Author Paper CPU Support Key Enum
2024 1st Tim Mulvany, et al. Link BraTS24_1
2024 2nd Mehdi Astaraki N/A BraTS24_2
2024 3rd Sarim Hashmi, et al. Link BraTS24_3
2023 1st Zhifan Jiang et al. Link BraTS23_1
2023 2nd Andriy Myronenko, et al. N/A BraTS23_2
2023 3rd Yubo Zhou Link BraTS23_3

Generalizability Across Tumors (BraTS-GoAT) Segmentation

Segmentation algorithm, adapting and generalizing to different brain tumors with segmentation labels of different tumor sub-regions.

Usage example (code) and top 3 participants
from brats import GoATSegmenter
from brats.constants import GoATAlgorithms

segmenter = GoATSegmenter(algorithm=GoATAlgorithms.BraTS24_1, cuda_devices="0")
# these parameters are optional, by default the winning algorithm will be used on cuda:0
segmenter.infer_single(
    t1c="path/to/t1c.nii.gz",
    t1n="path/to/t1n.nii.gz",
    t2f="path/to/t2f.nii.gz",
    t2w="path/to/t2w.nii.gz",
    output_file="segmentation.nii.gz",
)

Class: brats.PediatricSegmenter (Docs)
Challenge Paper 2024: N/A

Year Rank Author Paper CPU Support Key Enum
2024 1st Frank Miao, Shengjie Niu N/A BraTS24_1

Inpainting Challenge

Algorithm to realistically synthesize and fill 3D healthy brain tissue in a region affected by glioma in brain MRI exams.

Usage example (code) and top 3 participants
from brats import Inpainter
from brats.constants import InpaintingAlgorithms

inpainter = Inpainter(algorithm=InpaintingAlgorithms.BraTS24_1, cuda_devices="0")
inpainter.infer_single(
    t1n="path/to/voided_t1n.nii.gz",
    mask="path/to/mask.nii.gz",
    output_file="inpainting.nii.gz",
)

Class: brats.Inpainter (Docs)
Challenge Paper 2023 and 2024 Link

Year Rank Author Paper CPU Support Key Enum
2024 1st Ke Chen, Juexin Zhang, Ying Weng N/A BraTS24_1
2024 2nd André Ferreira, et al. N/A BraTS24_2
2024 3rd Alicia Durrer, et al. N/A BraTS24_3
2023 1st Juexin Zhang, et al. Link BraTS23_1
2023 2nd Alicia Durrer, et al. Link BraTS23_2
2023 3rd Jiayu Huo, et al. Link BraTS23_3

Missing MRI Challenge

Algorithm to realistically synthesize missing MRI modalities from available sequences to enhance brain tumor segmentation.

Usage example (code) and top 3 participants
from brats import MissingMRI
from brats.constants import MissingMRIAlgorithms

missing_mri = MissingMRI(algorithm=MissingMRIAlgorithms.BraTS24_1, cuda_devices="0")
# Example to synthesize t2f modality (whichever modality is missing will be inferred)
missing_mri.infer_single(
    t1c="path/to/t1c.nii.gz",
    t1n="path/to/t1n.nii.gz",
    # t2f="path/to/t2f.nii.gz",
    t2w="path/to/t2w.nii.gz",
    output_file="inferred_t2f.nii.gz",
)

Class: brats.MissingMRI (Docs)
Challenge Paper 2024: N/A

Year Rank Author Paper CPU Support Key Enum
2024 1st Jihoon Cho, Seunghyuck Park, Jinah Park N/A BraTS24_1
2024 2nd Haowen Pang N/A BraTS24_2
2024 3rd Minjoo Lim, Bogyeong Kang N/A BraTS24_3

[!TIP] For a full notebook example with more details, please check here:
nbviewer

Citation

If you use BraTS in your research, please cite it to support the development!

TODO: citation will be added asap

Contributing

We welcome all kinds of contributions from the community!

Reporting Bugs, Feature Requests, and Questions

Please open a new issue here.

Code contributions

Nice to have you on board! Please have a look at our CONTRIBUTING.md file.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page