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.2.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.2-py3-none-any.whl (55.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mipcandy-1.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 1f3d7c3f327938b52ad0be6b34812d55fce47f9e16d73fe5b80eb22ebf5c2077
MD5 0703feca9556266689ff2aaf983a6c30
BLAKE2b-256 6e06cb9614feb351b2339f6f345f39c3b91fff30125023d6f7a5b29144581a25

See more details on using hashes here.

Provenance

The following attestation bundles were made for mipcandy-1.1.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: mipcandy-1.1.2-py3-none-any.whl
  • Upload date:
  • Size: 55.1 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 72f1c3dd316b3a702bc2fcde6847e28084ff791c58fcf50700469fe2272eb636
MD5 cac4171f314f9370b8fd03fb66941c71
BLAKE2b-256 451c346b9d69985328dec0a5d3aae994b45cf0a026185eafcf5c216d27155a5c

See more details on using hashes here.

Provenance

The following attestation bundles were made for mipcandy-1.1.2-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