{"name":"napari-vipp","display_name":"napari-vipp","visibility":"public","icon":null,"categories":[],"schema_version":"0.2.1","on_activate":null,"on_deactivate":null,"contributions":{"commands":[{"id":"napari-vipp.make_widget","title":"VIPP Workflow","python_name":"napari_vipp._widget:VippWidget","short_title":null,"category":null,"icon":null,"enablement":null},{"id":"napari-vipp.sample_data","title":"VIPP synthetic microscopy samples","python_name":"napari_vipp._sample_data:make_sample_data","short_title":null,"category":null,"icon":null,"enablement":null}],"readers":null,"writers":null,"widgets":[{"command":"napari-vipp.make_widget","display_name":"VIPP Workflow","autogenerate":false}],"sample_data":[{"command":"napari-vipp.sample_data","key":"vipp_synthetic_volume","display_name":"VIPP synthetic microscopy samples"}],"themes":null,"menus":{},"submenus":null,"keybindings":null,"configuration":[]},"package_metadata":{"metadata_version":"2.4","name":"napari-vipp","version":"0.12.0a3","dynamic":["license-file"],"platform":null,"supported_platform":null,"summary":"Visual workflows for reproducible bioimage analysis","description":"<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/assets/branding/vipp-logo-dark.svg\">\n    <img src=\"docs/assets/branding/vipp-logo.svg\" alt=\"VIPP\" width=\"420\">\n  </picture>\n</p>\n\n# VIPP — Visual Image Processing Platform\n\n**Visual workflows for reproducible bioimage analysis.**\n\n[![CI](https://github.com/rensutheart/napari-vipp/actions/workflows/ci.yml/badge.svg)](https://github.com/rensutheart/napari-vipp/actions/workflows/ci.yml)\n[![PyPI](https://img.shields.io/pypi/v/napari-vipp.svg)](https://pypi.org/project/napari-vipp/)\n[![Python](https://img.shields.io/pypi/pyversions/napari-vipp.svg)](https://pypi.org/project/napari-vipp/)\n[![License](https://img.shields.io/pypi/l/napari-vipp.svg)](LICENSE)\n\n`napari-vipp` is the napari-native implementation of **VIPP, the Visual Image\nProcessing Platform**. Build typed node graphs, inspect intermediate images and\ntables, tune parameters, save workflows, and repeat the same operations without\nhiding axis or physical-scale metadata.\n\n> **Alpha software:** expect breaking workflow and parameter changes. Validate\n> outputs on representative data before scientific interpretation or\n> publication.\n\nVIPP's implemented safeguards include stable source revisions, physical-grid\nchecks, exact unsampled diagnostics, detached viewer layers, atomic artifacts,\nand batch publication only after source reverification. See the\n[scientific integrity boundaries](docs/architecture.md#scientific-integrity-boundaries)\nand the contributor [scientific behavior requirements](CONTRIBUTING.md#scientific-behavior-requirements).\n\n## Install And Open\n\nVIPP requires Python 3.12 or newer. If napari is not already installed, install\nit with a Qt backend at the same time:\n\n```bash\npython -m pip install \"napari[pyqt6]\"\npython -m pip install --pre napari-vipp\nvipp\n```\n\nThe `--pre` flag is required while VIPP is published as an alpha release. It is\nkept on the VIPP command so napari itself can continue to resolve to a stable\nrelease.\n\nIn napari, open:\n\n```text\nPlugins > VIPP Workflow (napari-vipp)\n```\n\nUse `Open example...` for a runnable workflow with synthetic data. A good first\nchoice is `Red-Channel Label Cleanup`; select nodes from left to right to review\ntheir parameters, thumbnails, metadata, and outputs. To explore collection\nprocessing, open `Deterministic Batch & Provenance`; VIPP prepares a small\nself-contained working copy and opens it already configured and previewed.\n\n![VIPP example workflow chooser](docs/assets/user-guide/vipp-example-chooser.png)\n\n## What It Supports\n\n| Area | Current alpha capabilities |\n| --- | --- |\n| Graph authoring | Searchable node palette, typed ports, dynamic outputs, cycle prevention, undo/redo, graph notes, named tunnels, auto-layout, and saved positions. |\n| Images and metadata | Semantic T/C/Z/Y/X axes, scale/units/origin, channel and acquisition metadata, source identity, and operation history. |\n| Image processing | Intensity transforms, filters, background correction, thresholding, watershed, binary/label morphology, channels, axes, masks, and composites. |\n| Measurements | Object and intensity tables, calibrated morphology, 3D mesh morphology, skeleton/network analysis, colocalization, object association, and table composition. |\n| Restoration | Born-Wolf PSF generation, measured-PSF preparation, and manual/cached 2D or 3D Richardson-Lucy and RL-TV deconvolution. |\n| Reuse and automation | Workflow JSON, generated headless Python, explicit batch outputs, reviewed collection plans, representative navigation, retained batch results, and workflow/config/manifest artifacts. |\n| I/O | OME-TIFF, ImageJ TIFF, TIFF, local OME-Zarr 0.4/0.5, NPY/NPZ, common 2D raster formats, and optional microscope readers. |\n\nMost graph operations are still eager. Large z-stacks and OME-Zarr datasets\ntherefore need deliberate cache, preview, and output choices; see the\n[cache and memory guide](docs/cache-and-memory.md).\n\n## Optional Microscope Readers\n\nInstall only the reader family you need, then restart napari:\n\n| Format family | Install command |\n| --- | --- |\n| Nikon ND2 | `python -m pip install --pre \"napari-vipp[nd2]\"` |\n| Zeiss CZI | `python -m pip install --pre \"napari-vipp[czi]\"` |\n| Mixed microscope formats | `python -m pip install --pre \"napari-vipp[microscope]\"` |\n| BioIO/Bio-Formats fallback | `python -m pip install --pre \"napari-vipp[bioformats]\"` |\n\nThese routes are an experimental foundation: axes and common metadata are\nnormalized where the source reader exposes them, but format-specific coverage\nstill needs validation against a broader corpus of real acquisition files.\n\n## Workflow Basics\n\n1. Add or select an `Image Source` for a napari layer, file, or bundled sample.\n2. Add nodes from the palette and connect compatible output and input ports.\n3. Select a node to tune parameters and inspect its output metadata.\n4. Click `Calculate` for manual/cached nodes such as measurements and\n   deconvolution.\n5. Pin important image outputs into napari for full-resolution comparison.\n6. Save the graph with `Save workflow...`.\n7. Add `Batch Output` nodes before `Batch workspace...` when exact saved outputs\n   matter.\n8. Optionally click `Preview batch` to inspect the complete plan and use the\n   representative slider or a preview-table row without running or saving the\n   full batch. Preview is not required: `Run batch` performs its own preflight.\n9. Run the collection from the retained workspace with one click, where\n   item-level progress, final statuses, validation, and the\n   `vipp_batch_manifest.json` path remain available for inspection.\n10. To validate the complete batch path without your own files, choose\n   `Open example...` -> `Deterministic Batch & Provenance` -> `Open batch\n   demo...`. Choose where to save its small working copy, review the populated\n   graph, move through all three paired fields with the representative slider,\n   review the three-item/nine-output batch preview, then click `Run demo batch`. VIPP\n   checks the finished outputs and provenance against exact ground truth\n   automatically.\n\nWorkflow JSON stores the graph and optional VIPP UI state, not cached pixels or\ntables. When Batch workspace is active, Save workflow can optionally attach its\nversioned config so the same workspace reopens from that one JSON file; local\npaths are included, but source pixels are not. `Export Python...` embeds a\nvalidated immutable workflow and executes it\nthrough the same headless pipeline engine as VIPP, including normalized\n`ImageState` propagation. See the [user guide](docs/user-guide.md) for source\nbinding, runtime-version, and command-line details.\n\n## Documentation\n\n- [Published VIPP documentation](https://rensutheart.github.io/vipp-mkdocs/)\n- [Categorized 0.12 release notes](CHANGELOG.md#0120a3---2026-07-20)\n- [Documentation index](docs/README.md)\n- [User guide](docs/user-guide.md)\n- [Image import and export](docs/io-user-guide.md)\n- [Example workflow index](examples/README.md)\n- [Measurement workflows](docs/measurement-workflows.md)\n- [Operator tips](docs/operator-tips.md)\n- [Developer notes](docs/developer-notes.md)\n- [Current planning and roadmap](docs/planning.md)\n\n## Development\n\nCreate a local environment and install the development dependencies:\n\n```powershell\npython -m venv .venv\n.venv\\Scripts\\Activate.ps1\npython -m pip install -e \".[dev]\"\n```\n\nRun the required checks:\n\n```bash\npython -m npe2 validate src/napari_vipp/napari.yaml\npython -m ruff check .\npython -m pytest\n```\n\nLaunch a development instance from the repository with `./vipp`; it uses the\nproject's `.venv-macos` environment directly, so shell activation is not\nrequired. The installed `vipp` command and `python -m napari_vipp` are also\nsupported. To open the synthetic sample with a pipeline run already completed, use\n`python scripts/launch_vipp_sample.py`. The\n[architecture reference](docs/architecture.md) explains the graph, metadata,\nexecution, persistence, and UI boundaries.\n\nContributions are welcome. Read [CONTRIBUTING.md](CONTRIBUTING.md) before\nopening a pull request, use [SUPPORT.md](SUPPORT.md) for help and issue-reporting\nguidance, and report suspected vulnerabilities privately through\n[SECURITY.md](SECURITY.md). All project interactions follow the\n[Code of Conduct](CODE_OF_CONDUCT.md).\n\n## 0.12 Alpha Highlights\n\n`0.12.0a3` is the current alpha. It builds on the 0.12 architecture and\nreproducibility baseline with:\n\n- direct batch execution with a fresh plan-only preflight while representative\n  preview remains optional;\n- an amber, user-confirmed `output` destination suggestion for new collection\n  bindings;\n- fast no-read/no-calculation handling when every resolved `Skip` output exists,\n  plus more resilient atomic artifact handling on Windows and synced folders;\n- optional workflow JSON attachment of the validated Batch workspace settings,\n  restored without scanning or calculating a representative; and\n- one clearly separated main-toolbar Batch workspace entry, with Load before\n  Save consistently across workflow and batch controls.\n\nThe 0.12 foundation also provides:\n\n- workflow schema version 3 records explicit axis, channel, grid, and operation\n  choices instead of restoring ambiguous scientific defaults;\n- verified file and live-layer revisions, physical-grid checks, detached viewer\n  layers, and atomic artifacts reject stale or silently repaired inputs;\n- generated Python and collection batching now use the same validated headless\n  executor as the interactive graph;\n- the retained batch workspace adds reviewed plans, representative navigation,\n  explicit outputs, per-item provenance, collision policies, progress, final\n  statuses, manifests, and deterministic validation;\n- exact diagnostics, background workers, and platform-specific memory reporting\n  improve responsiveness without changing the population being measured;\n- Richardson-Lucy TV controls now explain parameter effects and provide\n  practical linear or geometric slider windows without limiting exact spinner\n  entry; and\n- the former monolithic widget has been decomposed into focused Qt-free core and\n  UI service modules with dependency-direction tests.\n\nBreaking alpha changes are intentional where preserving an older implicit\nbehavior would weaken scientific validity. See the categorized\n[0.12 release notes](CHANGELOG.md#0120a3---2026-07-20), the\n[upgrade and workflow contract](docs/user-guide.md#save-workflow-json), and\n[planning.md](docs/planning.md) for later milestones. Semantic-axis collection\niteration, HCS traversal, scalable OME-Zarr previews, and broader scientific\nvalidation remain future work.\n\n## Citation, Acknowledgement, And License\n\nIf VIPP contributes to your work, acknowledge `napari-vipp` and link to the\n[project repository](https://github.com/rensutheart/napari-vipp). Citation\nmetadata is available in [CITATION.cff](CITATION.cff); a DOI or manuscript\ncitation can be added when available.\n\nnapari-vipp is distributed under the BSD 3-Clause License. See\n[LICENSE](LICENSE) for the full terms.\n","description_content_type":"text/markdown","keywords":"bioimage analysis,fluorescence microscopy,image processing,napari,node graph,visual programming","home_page":null,"download_url":null,"author":"Rensu P. Theart","author_email":null,"maintainer":null,"maintainer_email":null,"license":null,"classifier":["Development Status :: 3 - Alpha","Framework :: napari","Intended Audience :: Science/Research","Programming Language :: Python :: 3","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3 :: Only","Topic :: Scientific/Engineering :: Bio-Informatics","Topic :: Scientific/Engineering :: Image Processing","Topic :: Scientific/Engineering :: Visualization"],"requires_dist":["dask[array]>=2025.2","fsspec>=2024.2","imageio>=2.31","numpy>=1.24","ome-types>=0.6","ome-zarr>=0.17","pillow>=10","qtpy>=2.4","scikit-image>=0.21","scipy>=1.10","tifffile>=2023.8","zarr>=3.0","bioio>=3.4; extra == \"czi\"","bioio-czi; extra == \"czi\"","czifile[all]>=2026.6.12; python_version >= \"3.12\" and extra == \"czi\"","build>=1.2; extra == \"dev\"","napari[pyqt6]>=0.6; extra == \"dev\"","npe2>=0.8; extra == \"dev\"","pytest>=8; extra == \"dev\"","pytest-qt>=4.4; extra == \"dev\"","ruff>=0.12; extra == \"dev\"","bioio>=3.4; extra == \"bioformats\"","bioio-bioformats; extra == \"bioformats\"","bioio-czi; extra == \"bioformats\"","bioio-lif; extra == \"bioformats\"","bioio>=3.4; extra == \"microscope\"","bioio-bioformats; extra == \"microscope\"","bioio-czi; extra == \"microscope\"","bioio-lif; extra == \"microscope\"","czifile[all]>=2026.6.12; python_version >= \"3.12\" and extra == \"microscope\"","liffile[all]>=2026.4.11; python_version >= \"3.12\" and extra == \"microscope\"","nd2>=0.11; extra == \"microscope\"","oiffile[all]>=2026.2.8; python_version >= \"3.11\" and extra == \"microscope\"","oirfile[all]>=2026.4.25; python_version >= \"3.12\" and extra == \"microscope\"","nd2>=0.11; extra == \"nd2\""],"requires_python":">=3.12","requires_external":null,"project_url":["Homepage, https://github.com/rensutheart/napari-vipp","Documentation, https://rensutheart.github.io/vipp-mkdocs/","Repository, https://github.com/rensutheart/napari-vipp","Issues, https://github.com/rensutheart/napari-vipp/issues","Discussions, https://github.com/rensutheart/napari-vipp/discussions"],"provides_extra":["czi","dev","bioformats","microscope","nd2"],"provides_dist":null,"obsoletes_dist":null},"npe1_shim":false}