Skip to main content

StainX

StainX Logo

CI Python

Torch-first stain normalization for histopathology images with batch processing, training transforms, and optional CUDA kernels.

0.1.0 migration: CuPy backends are removed. Pin stainx<0.1 to stay on the CuPy stack, or switch to Torch tensors with backend="torch" / "torch_cuda".

Features

  • Multiple algorithms: Histogram Matching, Reinhard, and Macenko normalization
  • Torch backends: torch (CPU / CUDA / MPS) and optional torch_cuda compiled kernels
  • Training-ready: StainNormalizerTransform for DataLoader / torchvision pipelines

Installation

Requirements

  • Python >= 3.11
  • PyTorch >= 2.0.0
  • CUDA Toolkit + nvcc (optional; builds stainx_cuda_torch when available)

Supported platforms

Platform Support
Linux + CUDA Primary (Torch + optional CUDA extension)
Linux CPU Primary (Torch backend)
macOS (MPS / CPU) Best-effort Torch path (no CUDA extension)
Windows Best-effort Torch path (CUDA extension not guaranteed)

Install from PyPI

pip install stainx

Install from source (recommended: Makefile)

git clone https://github.com/rendeirolab/stainx.git
cd stainx
make install          # editable + best-effort CUDA build
# or
make install-dev      # + test/docs tooling

Plain pip also works:

pip install .
# CUDA extension builds automatically when CUDA/nvcc are present; otherwise Torch-only.

Quick Start

import torch
from stainx import Reinhard, Macenko, HistogramMatching, StainNormalizerTransform

reference_image = torch.randn(1, 3, 512, 512)
source_images = torch.randn(10, 3, 512, 512)

normalizer = Reinhard(device="cuda")  # or "cpu" / "mps"
normalizer.fit(reference_image)
normalized = normalizer.transform(source_images)

# Training transform (fit once on a reference — preferred for supervised training)
transform = StainNormalizerTransform(
    method="macenko",
    mode="reference",
    reference=reference_image,
    device="cuda",
    # normalize_to_0_1 defaults to True for Macenko (float [0,1] pipelines)
)
batch_out = transform(source_images)

Modes

Mode Behavior When to use
reference Fit once on a fixed reference, then transform Default for training
batch Fit on the current batch every forward Exploratory / domain-shift checks; usually unsafe for reproducible supervised training

API

  • fit(reference_images) / transform(images) / fit_transform(images)
  • StainNormalizerTransformnn.Module for pipelines
  • Backends: "torch" (default) or "torch_cuda" when the extension is built

Documentation

See the documentation site for installation details, training usage, and examples.

License

GPL-3.0-or-later

Release files for stainx 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for stainx 0.1.1
File Size Uploaded
stainx-0.1.1.tar.gz 41.0 kB Details

Release files / stainx-0.1.1.tar.gz

Download URL stainx-0.1.1.tar.gz
Size 41.0 kB
Tags Source
SHA-256 checksum
How to use checksums
5b0321978c2ff322a1bed8daeedeebb40a1a17134f29fa57607485cc2e8450b5
BLAKE2b-256 checksum
How to use checksums
85a868cb87cb2973235ac6fcc9ceb141699bad04dbb173c60c32e6b6a2a61784
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 30, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.6

1 release file

0.1.4

1 release file

0.1.3

1 release file

0.1.2

1 release file

This release

0.1.1 This release

1 release file

0.1.0

1 release file

0.0.21

1 release file

0.0.20

1 release file

0.0.19

1 release file

0.0.18

1 release file

0.0.17

1 release file

0.0.16

1 release file

0.0.15

1 release file

0.0.14

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page