A Candy for Medical Image Processing
Project description
MIP Candy: A Candy for Medical Image Processing
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mipcandy-1.1.2a0.tar.gz.
File metadata
- Download URL: mipcandy-1.1.2a0.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e7e3e40185cf896fadc15d971c97830c832c401b10fadb6f8f1bd28b340b12da
|
|
| MD5 |
5e055460fed47ccee4ff086db9f114bc
|
|
| BLAKE2b-256 |
567ec830c6eb0a2b538ecbd9ce0ba6d60d2c304948cb3d298cf853d7e33aa72d
|
Provenance
The following attestation bundles were made for mipcandy-1.1.2a0.tar.gz:
Publisher:
python-publish.yml on ProjectNeura/MIPCandy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mipcandy-1.1.2a0.tar.gz -
Subject digest:
e7e3e40185cf896fadc15d971c97830c832c401b10fadb6f8f1bd28b340b12da - Sigstore transparency entry: 1274045107
- Sigstore integration time:
-
Permalink:
ProjectNeura/MIPCandy@593420e1690e62e8b49f0f9661d7210e7ad06ddd -
Branch / Tag:
refs/tags/1.1.2-alpha.0 - Owner: https://github.com/ProjectNeura
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@593420e1690e62e8b49f0f9661d7210e7ad06ddd -
Trigger Event:
release
-
Statement type:
File details
Details for the file mipcandy-1.1.2a0-py3-none-any.whl.
File metadata
- Download URL: mipcandy-1.1.2a0-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
76070ac6190b8fb50ea0220dad03723e5af74c4382a35361f0d4a28a4640242e
|
|
| MD5 |
754c630760dc09527fdfe705126d65a4
|
|
| BLAKE2b-256 |
0538c3c1e00a288abb4eb2ef9d2337573a416e3f82020e4618ff46f0bc94c463
|
Provenance
The following attestation bundles were made for mipcandy-1.1.2a0-py3-none-any.whl:
Publisher:
python-publish.yml on ProjectNeura/MIPCandy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mipcandy-1.1.2a0-py3-none-any.whl -
Subject digest:
76070ac6190b8fb50ea0220dad03723e5af74c4382a35361f0d4a28a4640242e - Sigstore transparency entry: 1274045171
- Sigstore integration time:
-
Permalink:
ProjectNeura/MIPCandy@593420e1690e62e8b49f0f9661d7210e7ad06ddd -
Branch / Tag:
refs/tags/1.1.2-alpha.0 - Owner: https://github.com/ProjectNeura
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@593420e1690e62e8b49f0f9661d7210e7ad06ddd -
Trigger Event:
release
-
Statement type: