napari plugin — full microplate image pipeline (align plate → detect wells → classify wells)
Project description
napari-microplate
A napari plugin for end-to-end analysis of microbiology microplate images: align the plate, detect every well, and classify each well as Growth / NoGrowth / NoAgar.
The plugin runs a three-stage pipeline directly in the napari viewer and renders the result as overlay layers you can inspect interactively.
raw microplate image
│
├──► Stage 1 — Align plate (EfficientNet-B3 corner regression, grayscale)
│ 4-corner detection → perspective warp → canonical plate
├──► Stage 2 — Detect wells (YOLOv8n, single-channel grayscale, ch=1)
│ bounding box per well
└──► Stage 3 — Classify wells (Random Forest)
Growth / NoGrowth / NoAgar
Installation
pip install napari-microplate
This installs the plugin and all its pure-Python dependencies, including
PyTorch (CPU build). On first run the model weights (~700 MB total) are
downloaded automatically from the HuggingFace Hub and cached under
~/.cache/napari_microplate/.
GPU acceleration (optional, recommended)
The CPU PyTorch build works but Stage 1 + Stage 2 are noticeably faster on GPU. To use a CUDA GPU, install a CUDA-enabled PyTorch before or after the plugin:
pip install torch torchvision --index-url https://download.pytorch.org/whl/cu126
The plugin auto-detects CUDA via torch.cuda.is_available().
Usage
-
Launch napari:
napari
-
Open a raw microplate image (
File → Open file(s)or drag-and-drop). -
Start the plugin:
Plugins → Microplate Pipeline. -
In the dock widget:
- pick the Image layer holding your microplate image,
- (optional) tick Save PNG and choose a Save dir,
- click Run Pipeline.
Two new layers are added to the viewer:
| Layer | Type | Content |
|---|---|---|
aligned_plate |
Image (gray) | Plate after Stage 1 perspective warp |
wells |
Shapes (rectangles) | One box per well, colored by predicted class |
Well counts (Growth / NoGrowth / NoAgar) are shown in the napari status bar.
Configuration
| Environment variable | Purpose | Default |
|---|---|---|
MICROPLATE_HF_REPO |
HuggingFace repo id for the weights | tiendoan274/napari-microplate-weights |
MICROPLATE_WEIGHTS_DIR |
Local folder of pre-downloaded weights (skip download) | unset |
To run fully offline, download the three weight files into a folder and set
MICROPLATE_WEIGHTS_DIR to that folder:
$MICROPLATE_WEIGHTS_DIR/
stage1_efficientnet_b3.pt
stage2_yolov8n_well.pt
stage3_random_forest.joblib
Programmatic use (without the GUI)
from napari_microplate._pipeline import MicroplatePipeline
pipe = MicroplatePipeline() # loads weights lazily on first run
result = pipe.run("plate.png") # path to a raw microplate image
print(result["boxes"]) # [(x1,y1,x2,y2,conf), ...]
print(result["classes"]) # [0, 1, 2, ...] (0=Growth,1=NoGrowth,2=NoAgar)
License
Copyright (C) 2026 Tien Doan. Distributed under the GNU Affero General Public License v3.0 or later (AGPL-3.0+) — see LICENSE.
This package vendors a modified copy of Ultralytics 8.3.2
(AGPL-3.0) under napari_microplate/_vendor/ to support single-channel
grayscale well detection. See NOTICE for details.
Citation
If you use this plugin in published research, please cite the accompanying paper
(see paper/ in the source repository).
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
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 napari_microplate-0.1.5.tar.gz.
File metadata
- Download URL: napari_microplate-0.1.5.tar.gz
- Upload date:
- Size: 546.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52bccd6e8507ee7b34c845b13678d12e0dd52d02600c570a585881d1cbb3c4f3
|
|
| MD5 |
1955c1dd49157c4f324103b9744c3ba1
|
|
| BLAKE2b-256 |
78337680c78a965497600caf7f3da2e8515aec56f509c37cab64efeedc71183f
|
Provenance
The following attestation bundles were made for napari_microplate-0.1.5.tar.gz:
Publisher:
publish.yml on TienDoan274/napari-microplate
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
napari_microplate-0.1.5.tar.gz -
Subject digest:
52bccd6e8507ee7b34c845b13678d12e0dd52d02600c570a585881d1cbb3c4f3 - Sigstore transparency entry: 2209838807
- Sigstore integration time:
-
Permalink:
TienDoan274/napari-microplate@416c3fa7f017208c330efda9153cdb7c25920984 -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/TienDoan274
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@416c3fa7f017208c330efda9153cdb7c25920984 -
Trigger Event:
push
-
Statement type:
File details
Details for the file napari_microplate-0.1.5-py3-none-any.whl.
File metadata
- Download URL: napari_microplate-0.1.5-py3-none-any.whl
- Upload date:
- Size: 690.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1bca5578f2d1009c531eb3312534622f41f4b6ddf38a009a70fb196bf98a4606
|
|
| MD5 |
eed2808fe1dbaa403d6865c68b6b9e36
|
|
| BLAKE2b-256 |
d1b78ed5fdc87c8e60d20a3664bde61ac74d638bd1bfeedf6b70650546c3a878
|
Provenance
The following attestation bundles were made for napari_microplate-0.1.5-py3-none-any.whl:
Publisher:
publish.yml on TienDoan274/napari-microplate
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
napari_microplate-0.1.5-py3-none-any.whl -
Subject digest:
1bca5578f2d1009c531eb3312534622f41f4b6ddf38a009a70fb196bf98a4606 - Sigstore transparency entry: 2209838836
- Sigstore integration time:
-
Permalink:
TienDoan274/napari-microplate@416c3fa7f017208c330efda9153cdb7c25920984 -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/TienDoan274
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@416c3fa7f017208c330efda9153cdb7c25920984 -
Trigger Event:
push
-
Statement type: