Skip to main content

A Candy for Medical Image Processing

Project description

MIP Candy: A Candy for Medical Image Processing

PyPI GitHub Release PyPI Downloads GitHub Stars

poster

MIP Candy is Project Neura's next-generation infrastructure framework for medical image processing. It defines a handful of common network architectures with their corresponding training, inference, and evaluation pipelines that are out-of-the-box ready to use. Additionally, it also provides integrations with popular frontend dashboards such as Notion, WandB, and TensorBoard.

We provide a flexible and extensible framework for medical image processing researchers to quickly prototype their ideas. MIP Candy takes care of all the rest, so you can focus on only the key experiment designs.

:link: Home

:link: Docs

Citation

Should you find our work helpful to you, please cite our publication.

@misc{fu2026mipcandymodularpytorch,
    title = {MIP Candy: A Modular PyTorch Framework for Medical Image Processing},
    author = {Tianhao Fu and Yucheng Chen},
    year = {2026},
    eprint = {2602.21033},
    archivePrefix = {arXiv},
    primaryClass = {cs.CV},
    url = {https://arxiv.org/abs/2602.21033},
}

Installation

Note that MIP Candy requires Python >= 3.12.

pip install "mipcandy[standard]"

Quick Start

Below is an example using the ACDC dataset. The example code replicates most of nnU-Net's features but without augmentations.

from typing import override
from os.path import exists

from monai.networks.nets import DynUNet
from torch import nn
from torch.utils.data import DataLoader

from mipcandy import SegmentationTrainer, AmbiguousShape, auto_device, download_dataset, NNUNetDataset, inspect, \
    load_inspection_annotations, RandomROIDataset


class UNetTrainer(SegmentationTrainer):
    @override
    def build_network(self, example_shape: AmbiguousShape) -> nn.Module:
        kernel_size = [[3, 3, 3]] * 5
        strides = [[1, 1, 1]] + [[2, 2, 2]] * 4
        return DynUNet(spatial_dims=3, in_channels=example_shape[0], out_channels=self.num_classes,
                       kernel_size=kernel_size, strides=strides, upsample_kernel_size=strides,
                       deep_supervision=self.deep_supervision, deep_supr_num=2, res_block=True)


if __name__ == "__main__":
    device = auto_device()
    download_dataset("nnunet_datasets/ACDC", "tutorial/datasets/ACDC")
    dataset = NNUNetDataset("tutorial/datasets/ACDC", align_spacing=True)
    if exists("tutorial/datasets/ACDC/annotations.json"):
        annotations = load_inspection_annotations("tutorial/datasets/ACDC/annotations.json", dataset)
    else:
        dataset.device(device=device)
        annotations = inspect(dataset)
        dataset.device(device="cpu")
        annotations.save("tutorial/datasets/ACDC/annotations.json")
    dataset = RandomROIDataset(annotations, 2)
    train, val = dataset.fold()
    train_loader = DataLoader(train, 2, True, num_workers=2, prefetch_factor=2, persistent_workers=True)
    val_loader = DataLoader(val, 1, False)
    trainer = UNetTrainer("tutorial", train_loader, val_loader, device=device)
    trainer.train(1000, note="example with the ACDC dataset")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mipcandy-1.1.2b0.tar.gz (41.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mipcandy-1.1.2b0-py3-none-any.whl (55.2 kB view details)

Uploaded Python 3

File details

Details for the file mipcandy-1.1.2b0.tar.gz.

File metadata

  • Download URL: mipcandy-1.1.2b0.tar.gz
  • Upload date:
  • Size: 41.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mipcandy-1.1.2b0.tar.gz
Algorithm Hash digest
SHA256 dbe64205542e79d231c2e2295619bf827c3beaaca83bfcbc755da1c535aef6cf
MD5 a25c861dfcc9fe08c54a9c30f963d40e
BLAKE2b-256 1158ca67a94d1a72d98898394c14852d4cdbee172ef1fee4c1bcdeb53a1de831

See more details on using hashes here.

Provenance

The following attestation bundles were made for mipcandy-1.1.2b0.tar.gz:

Publisher: python-publish.yml on ProjectNeura/MIPCandy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mipcandy-1.1.2b0-py3-none-any.whl.

File metadata

  • Download URL: mipcandy-1.1.2b0-py3-none-any.whl
  • Upload date:
  • Size: 55.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mipcandy-1.1.2b0-py3-none-any.whl
Algorithm Hash digest
SHA256 a053e7c017f787460ec4fc8cab907f543fe92ec4f79a412a28369ddb36c1a33e
MD5 b622c620a3a5da214b1c3fef03aed8a6
BLAKE2b-256 6d44dbdb95b9aebcbe60c9e8d6b9bd65ed58ba07e598168e47ec515fc505bf19

See more details on using hashes here.

Provenance

The following attestation bundles were made for mipcandy-1.1.2b0-py3-none-any.whl:

Publisher: python-publish.yml on ProjectNeura/MIPCandy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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