Skip to main content

performs image segmentation by leveraging the colocalization of multiple fluorescence channels

Project description

napari-segmencolo

License BSD-3 PyPI Python Version tests codecov napari hub npe2 Copier

A napari plugin for AI-based image segmentation, with multichannel colocalization filtering, classification, and export (TIFF / Excel).

Developed during an internship in fluorescence imaging, with the help of AI, for image segmentation and analysis.


This napari plugin was generated with copier using the napari-plugin-template.

Features

Tab What it does
① Segmentation StarDist · Cellpose · Ilastik-style pixel classification — 2D & 3D
② Colocalization KEEP/EXCLUDE filtering by fluorescence channel
③ Classification KMeans (unsupervised) or RandomForest (semi-supervised), with nameable classes
④ Export TIFF + object counts (Excel)
⑤ Batch Process a whole folder of CZI files automatically → Excel summary

Works in 2D and on z-stacks (via MIP projection or slice-by-slice merging).

Installation

You can install napari-segmencolo via pip:

pip install napari-segmencolo

To install together with napari and a Qt backend:

pip install "napari-segmencolo[all]"

For development (from a local clone):

pip install -e ".[all]"

Quick start

1. Segmentation

  1. Open your image in napari (File > Open, or drag and drop).
  2. In the plugin, ① Segmentation tab:
    • Select the layer to segment (e.g. DAPI for nuclei).
    • Choose StarDist (recommended for round nuclei).
    • Pick a Z handling mode — 2D projection (MIP) is recommended for counting (every nucleus counted once).
    • Optional: draw a rectangle with the Shapes tool, then tick ROI.
    • Click ▶ Run segmentation.

2. Colocalization filtering

Example: keep only the green nuclei that do NOT colocalize with the red channel.

  1. ② Colocalization tab → Add a rule.
  2. Select the red channel, mode EXCLUDE, threshold = 500, overlap = 0.3.
  3. Click ✔ Apply filtering.

A new Filtered_labels layer appears in napari.

3. Classification (e.g. healthy vs apoptotic nuclei)

  1. ③ Classification tab: pick the labels layer and a reference channel.
  2. Set the number of classes and name them (e.g. "Positive", "Negative").
  3. KMeans: classes are formed automatically from intensity + morphology. RandomForest: annotate a few labels by hand (label 3 → class 1, …), then classify.

The class names are reused as column headers in the Excel export.

4. Export / counts

  1. ④ Export tab, select the labels layer to export.
  2. Enter the voxel size (µm) matching your acquisition.
  3. Click 💾 Export as TIFF (then in Imaris: File > Open > select the .tif).
  4. Click 📊 Export counts (Excel) to save object counts (total + per class).

To convert to Surfaces in Imaris: Edit > Surfaces > Add New Surfaces > Detect from Channel.

5. Batch processing

  1. ⑤ Batch tab → Browse… to pick a folder of .czi files.
  2. Channel names are read from the first file → choose the nuclei and marker channels by name.
  3. Set the segmentation parameters and (optionally) KMeans classification.
  4. Click ▶ Run batch → Excel to produce a summary table (one row per image). Tick Show each image + segmentation in napari to verify results visually.

File architecture

src/napari_segmencolo/
├── __init__.py          # Package entry point (OpenMP workaround, exposes the widget)
├── napari.yaml          # napari manifest (declares the widget)
├── _widget.py           # Main GUI (the 5 tabs) and orchestration
├── segmentation.py      # StarDist, Cellpose, Ilastik-style + Z-plane merging
├── colocalization.py    # Multichannel colocalization filtering
├── classification.py    # Feature extraction + KMeans / RandomForest
├── stats.py             # Object counting + Excel export
├── czi_io.py            # Direct CZI reading (channel names + MIP)
└── export_imaris.py     # TIFF export

tests/
└── test_colocalization.py

Main dependencies

  • napari, qtpy — viewer and GUI
  • stardist, cellpose — deep-learning segmentation
  • scikit-image, scikit-learn — image processing and classification
  • pandas, numpy — data and arrays
  • tifffile — TIFF export
  • openpyxl — Excel export
  • pylibCZIrw — CZI reading (batch mode)

The Ilastik-style mode is implemented in-house (scikit-image + scikit-learn); it does not require an Ilastik installation. It is inspired by ilastik (Berg et al., 2019, GPL-2.0), but contains no ilastik code and does not depend on it — so ilastik's GPL license does not apply, and this plugin stays BSD-3.

Author

Lena PROUX — Imaging internship. Plugin developed during the internship, with the help of AI, for image segmentation and analysis.

Credits and citations

This plugin builds on several open-source libraries. It does not redistribute their source code — they are used as standard Python dependencies, installed via pip, which every license below permits.

Software used

Library Role in the plugin License
napari Image viewer & plugin framework BSD-3-Clause
StarDist Nucleus segmentation BSD-3-Clause
Cellpose Cell / nucleus segmentation BSD-3-Clause
scikit-image Image processing & object features BSD-3-Clause
scikit-learn KMeans, RandomForest BSD-3-Clause
pandas / NumPy Tables & arrays BSD-3-Clause
tifffile TIFF export BSD-3-Clause
openpyxl Excel export MIT
qtpy Qt binding abstraction MIT
pylibCZIrw CZI file reading (batch) LGPL-3.0

Note on pylibCZIrw (LGPL-3.0): it is used as an unmodified, separately installed dependency (no source code is copied into this plugin). The LGPL permits this use within a BSD-licensed project; users remain free to replace or upgrade the library independently.

Please cite (for scientific use)

If you use the segmentation models in published work, please cite the original papers — this is requested by their authors and is independent of the software license:

Pretrained models

The StarDist and Cellpose pretrained models (2D_versatile_fluo, cyto3, …) may carry their own usage terms. They are suitable for academic research; verify their conditions before any commercial use.

Contributing

Contributions are very welcome. Tests can be run with tox; please ensure the coverage at least stays the same before you submit a pull request.

License

Distributed under the terms of the BSD-3 license, "napari-segmencolo" is free and open source software.

Issues

If you encounter any problems, please file an issue along with a detailed description.

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

napari_segmencolo-0.1.1.tar.gz (63.4 kB view details)

Uploaded Source

Built Distribution

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

napari_segmencolo-0.1.1-py3-none-any.whl (55.2 kB view details)

Uploaded Python 3

File details

Details for the file napari_segmencolo-0.1.1.tar.gz.

File metadata

  • Download URL: napari_segmencolo-0.1.1.tar.gz
  • Upload date:
  • Size: 63.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for napari_segmencolo-0.1.1.tar.gz
Algorithm Hash digest
SHA256 5ab4ca40d84844475c4a38529243d8152092c04780addd4b77ad5d3e07796629
MD5 8df6bc2300ba0264f36de1a5196bc84d
BLAKE2b-256 15e2b5afcfe85942ea70feb338dd623f0a9251251d1f68af14b4b570ea3ca8ab

See more details on using hashes here.

File details

Details for the file napari_segmencolo-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for napari_segmencolo-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8bbf4e787d5e395739811e47141b6138eb33d246ca6c96fcbee02f09996d5c94
MD5 25a5244899f5a083c01f9674e85dbc24
BLAKE2b-256 9d00eaf3ce8192dbe9589b20616b4f60a14c9685b155a1f8e1256b21915b8e82

See more details on using hashes here.

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