This release is a pre-release and may not be stable for production use.
VIPP — Visual Image Processing Platform
Visual workflows for reproducible bioimage analysis.
napari-vipp is the napari-native implementation of VIPP, the Visual Image
Processing Platform. Build typed node graphs, inspect intermediate images and
tables, tune parameters, save workflows, and repeat the same operations without
hiding axis or physical-scale metadata.
Alpha software: expect breaking workflow and parameter changes. Validate outputs on representative data before scientific interpretation or publication.
VIPP's implemented safeguards include stable source revisions, physical-grid checks, exact unsampled diagnostics, detached viewer layers, atomic artifacts, and batch publication only after source reverification. See the scientific integrity boundaries and the contributor scientific behavior requirements.
Install And Open
VIPP requires Python 3.12 or newer. If napari is not already installed, install it with a Qt backend at the same time:
python -m pip install "napari[pyqt6]"
python -m pip install --pre napari-vipp
vipp
The --pre flag is required while VIPP is published as an alpha release. It is
kept on the VIPP command so napari itself can continue to resolve to a stable
release.
In napari, open:
Plugins > VIPP Workflow (napari-vipp)
Use Open example... for a runnable workflow with synthetic data. A good first
choice is Red-Channel Label Cleanup; select nodes from left to right to review
their parameters, thumbnails, metadata, and outputs. To explore collection
processing, open Deterministic Batch & Provenance; VIPP prepares a small
self-contained working copy and opens it already configured and previewed.
What It Supports
| Area | Current alpha capabilities |
|---|---|
| Graph authoring | Searchable node palette, typed ports, dynamic outputs, cycle prevention, undo/redo, graph notes, named tunnels, auto-layout, and saved positions. |
| Images and metadata | Semantic T/C/Z/Y/X axes, scale/units/origin, channel and acquisition metadata, source identity, and operation history. |
| Image processing | Intensity transforms, filters, background correction, thresholding, watershed, binary/label morphology, channels, axes, masks, and composites. |
| Measurements | Object and intensity tables, calibrated morphology, 3D mesh morphology, skeleton/network analysis, colocalization, object association, and table composition. |
| Restoration | Born-Wolf PSF generation, measured-PSF preparation, and manual/cached 2D or 3D Richardson-Lucy and RL-TV deconvolution. |
| Reuse and automation | Workflow JSON, generated headless Python, explicit batch outputs, reviewed collection plans, representative navigation, retained batch results, and workflow/config/manifest artifacts. |
| I/O | OME-TIFF, ImageJ TIFF, TIFF, local OME-Zarr 0.4/0.5, NPY/NPZ, common 2D raster formats, and optional microscope readers. |
Most graph operations are still eager. Large z-stacks and OME-Zarr datasets therefore need deliberate cache, preview, and output choices; see the cache and memory guide.
Optional Microscope Readers
Install only the reader family you need, then restart napari:
| Format family | Install command |
|---|---|
| Nikon ND2 | python -m pip install --pre "napari-vipp[nd2]" |
| Zeiss CZI | python -m pip install --pre "napari-vipp[czi]" |
| Mixed microscope formats | python -m pip install --pre "napari-vipp[microscope]" |
| BioIO/Bio-Formats fallback | python -m pip install --pre "napari-vipp[bioformats]" |
These routes are an experimental foundation: axes and common metadata are normalized where the source reader exposes them, but format-specific coverage still needs validation against a broader corpus of real acquisition files.
Workflow Basics
- Add or select an
Image Sourcefor a napari layer, file, or bundled sample. - Add nodes from the palette and connect compatible output and input ports.
- Select a node to tune parameters and inspect its output metadata.
- Click
Calculatefor manual/cached nodes such as measurements and deconvolution. - Pin important image outputs into napari for full-resolution comparison.
- Save the graph with
Save workflow.... - Add
Batch Outputnodes beforeBatch workspace...when exact saved outputs matter. - Click
Preview batchto plan the complete collection. Use the persistent representative slider or a preview-table row to inspect any paired item through the graph without running or saving the full batch. - Run the collection from the retained workspace, where item-level progress,
final statuses, validation, and the
vipp_batch_manifest.jsonpath remain available for inspection. - To validate the complete batch path without your own files, choose
Open example...->Deterministic Batch & Provenance->Open batch demo.... Choose where to save its small working copy, review the populated graph, move through all three paired fields with the representative slider, review the three-item/nine-output batch preview, then clickRun demo batch. VIPP checks the finished outputs and provenance against exact ground truth automatically.
Workflow JSON stores the graph and optional VIPP UI state, not cached pixels or
tables. Export Python... embeds a validated immutable workflow and executes it
through the same headless pipeline engine as VIPP, including normalized
ImageState propagation. See the user guide for source
binding, runtime-version, and command-line details.
Documentation
- Published VIPP documentation
- Categorized 0.12 release notes
- Documentation index
- User guide
- Image import and export
- Example workflow index
- Measurement workflows
- Operator tips
- Developer notes
- Current planning and roadmap
Development
Create a local environment and install the development dependencies:
python -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install -e ".[dev]"
Run the required checks:
python -m npe2 validate src/napari_vipp/napari.yaml
python -m ruff check .
python -m pytest
Launch a development instance from the repository with ./vipp; it uses the
project's .venv-macos environment directly, so shell activation is not
required. The installed vipp command and python -m napari_vipp are also
supported. To open the synthetic sample with a pipeline run already completed, use
python scripts/launch_vipp_sample.py. The
architecture reference explains the graph, metadata,
execution, persistence, and UI boundaries.
Contributions are welcome. Read CONTRIBUTING.md before opening a pull request, use SUPPORT.md for help and issue-reporting guidance, and report suspected vulnerabilities privately through SECURITY.md. All project interactions follow the Code of Conduct.
0.12 Alpha Highlights
0.12.0a2 is the current alpha. It builds on the 0.12 architecture and
reproducibility baseline with:
- isolated node tuning that keeps downstream propagation paused until the latest local result is applied or the session is cancelled;
- bright actionable and dark waiting graph states, an attention-colored
Calculate all, and progressive node previews during longer runs; - exact-pixel napari layer reuse and display-resolution thumbnail rendering that reduce UI stalls without changing scientific arrays;
- configurable port labels and responsive graph layout; and
- clearer PSF preflight, Nyquist, support, centering, and boundary-tail feedback for deconvolution workflows.
The 0.12 foundation also provides:
- workflow schema version 3 records explicit axis, channel, grid, and operation choices instead of restoring ambiguous scientific defaults;
- verified file and live-layer revisions, physical-grid checks, detached viewer layers, and atomic artifacts reject stale or silently repaired inputs;
- generated Python and collection batching now use the same validated headless executor as the interactive graph;
- the retained batch workspace adds reviewed plans, representative navigation, explicit outputs, per-item provenance, collision policies, progress, final statuses, manifests, and deterministic validation;
- exact diagnostics, background workers, and platform-specific memory reporting improve responsiveness without changing the population being measured;
- Richardson-Lucy TV controls now explain parameter effects and provide practical linear or geometric slider windows without limiting exact spinner entry; and
- the former monolithic widget has been decomposed into focused Qt-free core and UI service modules with dependency-direction tests.
Breaking alpha changes are intentional where preserving an older implicit behavior would weaken scientific validity. See the categorized 0.12 release notes, the upgrade and workflow contract, and planning.md for later milestones. Semantic-axis collection iteration, HCS traversal, scalable OME-Zarr previews, and broader scientific validation remain future work.
Citation, Acknowledgement, And License
If VIPP contributes to your work, acknowledge napari-vipp and link to the
project repository. Citation
metadata is available in CITATION.cff; a DOI or manuscript
citation can be added when available.
napari-vipp is distributed under the BSD 3-Clause License. See LICENSE for the full terms.
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_vipp-0.12.0a2.tar.gz.
File metadata
- Download URL: napari_vipp-0.12.0a2.tar.gz
- Upload date:
- Size: 1.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ff954c9190a107c2f9e4aff3ddfa4005a146c12c0dec5ac95c82cb887df217c
|
|
| MD5 |
2a3d02106fa04a9ef99c6b12112a8fba
|
|
| BLAKE2b-256 |
262ab6e81ce58cba80caf31ba2dbce97b81d98e40cd7c1f4a1a05dde9f97db19
|
File details
Details for the file napari_vipp-0.12.0a2-py3-none-any.whl.
File metadata
- Download URL: napari_vipp-0.12.0a2-py3-none-any.whl
- Upload date:
- Size: 488.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
782e5078169fc97fd59e0bd978e2c0e74191613d6c094949543911f590794fa7
|
|
| MD5 |
0be4aaa744ed382add8db794f2ac87b0
|
|
| BLAKE2b-256 |
807a481b83c9c9bb68945138fe85613fc037ea5033f371950d8466d95e7c66fe
|