Colocalization

Colocalization analysis of multi-channel images

  • Jesko Wagner

napari-colocalization logo

napari-colocalization

License MIT PyPI Python Version tests codecov napari hub npe2

⚠️ Under construction — pre-alpha. APIs, UI, and outputs may change without notice. Not recommended for production analysis yet; use at your own risk and please report rough edges via the issue tracker.

Interactive intensity-colocalization analysis for napari. Pick two channels (or one multi-channel image), optionally restrict the analysis to a region drawn as shapes or labels, choose your metric, and get a results table plus an intensity-vs-intensity density plot.

napari-colocalization widget

Features

  • Four correlation metrics: Pearson (PCC), Spearman rank (SRCC), Li Intensity Correlation Quotient (ICQ), and Manders' coefficients M1/M2 (MCC).
  • Pairwise or all-to-all mode: analyse two grayscale layers, or every channel pair within a single multi-channel layer.
  • 2D and 3D support natively (no time-series for now).
  • Region-restricted analysis via a Shapes or Labels layer — each non-zero region is reported on its own row.
  • Manders thresholds: choose Costes auto (iterative regression-based) or Manual.
  • Interactive results: in-widget table, density plot of the selected row, multi-row selection that highlights all matching shapes/labels in the viewer.
  • CSV export of the current table, plus figure export of the density plot (PNG / PDF / SVG / TIFF, configurable size and DPI).

Installation

pip install napari-colocalization

If napari isn't already installed, install both at once:

pip install "napari-colocalization[all]"

For the latest development version:

pip install git+https://github.com/DBI-INFRA/napari-colocalization.git

Quick start

  1. Launch napari.

  2. Load sample data: File → Open Sample → napari-colocalization → Colocalization sample (2D). A 3D synthetic sample and CBS006RBM — a two-channel benchmark image from the Colocalization Benchmark Source — are also provided.

    Open Sample menu

  3. Open the widget: Plugins → Colocalization Analysis. Two image layers channel_a and channel_b are auto-selected for pairwise mode.

  4. Click Run. The results table populates with a single row (the whole image), and the density plot below shows the intensity pairs with the metric values overlaid.

napari-colocalization widget

  1. (Optional) Add a Shapes layer, draw a few rectangles or polygons, set Region to Shapes and pick the layer. Re-run — the table now has one row per shape, and clicking a row highlights the matching shape in the viewer.

napari-colocalization widget

See docs/usage.md for the full walkthrough.

Documentation

  • Usage guide — every control in the widget, in order.
  • Metrics — what PCC, SRCC, ICQ and MCC mean, when to use which, and how the Costes auto-threshold works.
  • Python API — calling the pure-compute layer (pearson, spearman, li_icq, manders, costes_threshold, analyse_pairwise, analyse_all_to_all) from scripts or notebooks.

Related projects

Contributing

Contributions are welcome. Run the test suite with:

pip install -e . --group dev
python -m pytest tests/ -v

Pre-commit hooks (ruff lint + format, napari-plugin-checks) ship with the repo:

pre-commit install
pre-commit run --all-files

Please keep test coverage at or above the current level when submitting a PR.

License

Distributed under the terms of the MIT licence; napari-colocalization is free and open-source software.

Issues

Found a bug or have a feature request? Please open an issue.

Version:

  • 0.1.6

Last updated:

  • 2026-06-17

First released:

  • 2026-04-30

License:

  • MIT

Supported data:

  • Information not submitted

Plugin type:

Open extension:

Save extension:

Python versions supported:

Operating system:

  • Information not submitted

Requirements:

  • numpy
  • magicgui
  • qtpy
  • scikit-image
  • scipy
  • matplotlib
  • napari[all]; extra == "all"
Website by the napari team, original design by CZI. Go to napari main website.