Skip to main content

napari-feature-classifier

License PyPI Python Version tests codecov napari hub

An interactive classifier plugin for napari that lets you annotate objects in a label image and train a random forest classifier to generalize those annotations across all objects — without leaving the viewer.

napari-feature-classifier

When to use this

This plugin is designed for tasks where visual inspection defines the ground truth:

  • Classifying cell types (e.g. mitotic vs. interphase cells)
  • Quality control (flagging mis-segmented objects)
  • Any labeling task where you can recognize the classes by eye but want to scale it to thousands of objects automatically

You need: a label image and a feature table — measurements per object (area, intensity, shape descriptors, etc.) stored in layer.features. The classifier learns from your manual annotations and applies those patterns to every object.

Usage

1. Prepare your label layer

Load your label image into napari and attach feature measurements to layer.features of that layer. You can have multiple label layers open at once — the classifier handles them all.

Your feature table must have:

  • A label column matching the integer labels in the image
  • A roi_id column identifying which image each row belongs to (used when training on multiple images)

Ways to load features:

  • From an OME-Zarr file: use napari-ome-zarr-navigator, which handles correct loading of both the label image and the feature table and populates the roi_id column automatically.
  • From a CSV file: Plugins → napari-feature-classifier → CSV Feature Loader, then select the label layer and point to the CSV.
  • Programmatically: label_layer.features = your_dataframe

2. Initialize a classifier

Go to Plugins → napari-feature-classifier → Initialize a Classifier.

classifier_init
  • Select the features to use for training. Hold Cmd/Ctrl to select multiple. The feature list reflects the currently selected label layer.
  • Name your classes (e.g. "Mitotic", "Interphase"). Classes without a name won't be created.
  • Click Initialize.

Feature selection is fixed after initialization. If you want different features, start a new classifier.

3. Annotate and train

classifier_annotation
  • Select your label layer in the napari layer list.
  • Pick a class using the panel buttons or keyboard shortcuts (keys 1–9 for classes, 0 to deselect).
  • Click on label objects in the viewer to annotate them.
  • The live count display shows how many objects you've annotated per class across all open images.
  • Once you have at least a handful of examples per class (aim for 10+), click Run Classifier.

The classifier splits your annotations 80/20 into training and test sets, trains a random forest, and applies it to all objects. Predictions appear as a color-coded Predictions layer.

classifier-predict

Correct mistakes the classifier made and click Run Classifier again to improve it. Iterative annotation is the intended workflow.

4. Save and reload

After each run, the classifier auto-saves to a .clf file named after the label layer (in the current working directory). To save to a different location: expand ▶ Saving & Export and click Save Classifier As….

To resume work or apply a trained classifier to new images: Plugins → napari-feature-classifier → Load Classifier

Select the .clf file, make sure your label layers with features are already open, and click Load Classifier.

5. Export results

Expand ▶ Saving & Export and click Export Results As… to save predictions for the currently selected layer as a CSV file.

The exported CSV contains:

  • label — integer object ID
  • prediction — classifier prediction (1–N for each class; NaN for objects with missing features)
  • annotations — your manual annotations (NaN = not annotated, −1 = explicitly deselected, 1–N = class)
  • One column per annotation class name
classifier-save

6. Standalone annotator

You can use the annotation tool independently from the classifier: Plugins → napari-feature-classifier → Annotator

Name up to 9 classes, click Initialize, then annotate as above. Annotations are stored in layer.features["annotations"] and can be saved to CSV via ▶ Save Annotations.

annotator

Batch / scripted use

Classifiers can be applied programmatically without the napari UI. See examples/simple_classifier_example.ipynb for a worked example.

Installation

Requires Python ≥ 3.10 and napari ≥ 0.6.0.

We recommend installing into a dedicated environment to avoid dependency conflicts:

# With conda
conda create -n napari-feature-classifier -c conda-forge napari python=3.12 -y
conda activate napari-feature-classifier
pip install napari-feature-classifier

Or with pixi:

pixi init my-project
pixi add napari napari-feature-classifier
pixi run napari

Or into an existing environment:

pip install napari-feature-classifier

Similar napari plugins

Release process

  1. Tag a release on GitHub with the new version number (e.g. v0.3.2). The version is set automatically from the git tag via hatch-vcs.
  2. Once CI tests pass, the package is automatically deployed to PyPI.
  3. A conda-forge PR will be opened automatically within 1–2 days — review and merge it at napari-feature-classifier-feedstock.

Contributing

Contributions are very welcome. Please open an issue to discuss significant changes before starting work.

License

Distributed under the terms of the BSD-3-Clause license.

Issues

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

Contributors

Joel Lüthi & Max Hess

Metadata

Release files for napari-feature-classifier 0.4.3

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

Source distribution (sdist)

Source distribution for napari-feature-classifier 0.4.3
File Size Uploaded
napari_feature_classifier-0.4.3.tar.gz 237.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for napari-feature-classifier 0.4.3
File Interpreter ABI Platform
napari_feature_classifier-0.4.3-py3-none-any.whl Python 3 none any Details

Total release size: 286.7 kB

Release files / napari_feature_classifier-0.4.3.tar.gz

Download URL napari_feature_classifier-0.4.3.tar.gz
Size 237.1 kB
Tags Source
SHA-256 checksum
How to use checksums
10c9a40ed19c00d081d67cdd61aea3071eec62da40c88463827ce1cf8aaf097e
BLAKE2b-256 checksum
How to use checksums
0bb9cb376725185e1aa9bd4b0669a22435c3ef0160ff03cda004a6c0d53dfb44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.5

Release files / napari_feature_classifier-0.4.3-py3-none-any.whl

Download URL napari_feature_classifier-0.4.3-py3-none-any.whl
Size 49.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fa6c347ef7a4fb319e0c52824d48e3b2f59f41f0da7dc41c56022331b692b080
BLAKE2b-256 checksum
How to use checksums
b503c5acb9c61ebb0e3d2bf73d6a6f64956c3c16488bac0a33f31f299eedd971
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.5

Release history Release notifications | RSS feed

This release

0.4.3 This release

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

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