{"name":"napari-vipp","display_name":"napari-vipp","visibility":"public","icon":null,"categories":[],"schema_version":"0.3.0","on_activate":null,"on_deactivate":null,"contributions":{"commands":[{"id":"napari-vipp.make_widget","title":"VIPP Workflow","python_name":"napari_vipp._startup_widget:VippStartupWidget","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,"configurations":{}},"package_metadata":{"metadata_version":"2.4","name":"napari-vipp","version":"0.15.0a5","dynamic":["license-file"],"platform":null,"supported_platform":null,"summary":"Visual image processing made approachable","description":"<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"https://raw.githubusercontent.com/rensutheart/napari-vipp/main/docs/assets/branding/vipp-logo-dark.svg\">\n    <img src=\"https://raw.githubusercontent.com/rensutheart/napari-vipp/main/docs/assets/branding/vipp-logo.svg\" alt=\"VIPP\" width=\"420\">\n  </picture>\n</p>\n\n# VIPP — Visual Image Processing Platform\n\n**Design inspectable bioimage workflows with visual feedback at every stage.**\n\nVisual image processing made approachable through **visual workflows for\nreproducible 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\nVIPP is an open-source, napari-native platform for building bioimage analyses\nas visual graphs. Connect image, mask, label and table nodes, inspect parameters\nand intermediate results, compare processing routes on the same input, and then\nmove from representative samples to collection-wide execution.\n\nBuild and run workflows from the available nodes without writing Python. Save\nthem as versioned JSON, export them as Python, and retain the source, axes,\ncalibration, parameters, outputs and implementation provenance needed to\nunderstand how results were produced.\n\n> **Alpha software:** workflows and parameters may still change. Validate every\n> analysis on representative data before scientific interpretation or\n> publication.\n\n![VIPP workspace with a calculated 3D deconvolution workflow](https://raw.githubusercontent.com/rensutheart/napari-vipp/main/docs/assets/user-guide/vipp-3d-deconvolution-workspace.png)\n\n*A calculated 3D deconvolution workflow with the node catalogue, thumbnail\npreviews and selected-node inspector visible together.*\n\n## Why VIPP\n\n- **See each transformation.** Inspect images, histograms, tables, metadata and\n  parameters while designing the workflow.\n- **Iterate locally.** Recalculate one stage without repeatedly running every\n  later step.\n- **Compare approaches.** Apply different processing routes to the same input\n  and inspect the consequences side by side.\n- **Check before scaling.** Test representative samples before running the\n  workflow across an image collection.\n- **Keep the analysis record.** Save the graph, export Python, define batch\n  outputs and preserve execution provenance.\n- **Accelerate selected operations.** Dedicated GPU implementations are\n  available for supported filtering, restoration, segmentation and measurement\n  operations.\n\n## Install\n\nFor this version, use the\n[`v0.15.0a5` release page](https://github.com/rensutheart/napari-vipp/releases/tag/v0.15.0a5).\n\n| Platform | Recommended route |\n| --- | --- |\n| Windows 64-bit | Download `VIPP-Setup-0.15.0a5-Windows-x86_64-UNSIGNED.exe` from the release page. The setup application creates and manages a dedicated VIPP environment. A supported 64-bit Python is a separate prerequisite. |\n| macOS Apple Silicon | Download `VIPP-0.15.0a5-macOS-arm64-UNSIGNED.pkg`. The package is self-contained and CPU-only. |\n| macOS Intel | Download `VIPP-0.15.0a5-macOS-x86_64-UNSIGNED.pkg`. The package is self-contained and CPU-only. |\n| Linux or an existing Python environment | Use the manual installation below. CPU execution is supported. |\n\nThe desktop installers are unsigned alpha builds. Download them only from the\nofficial release, verify the matching SHA-256 file, and follow the\n[Quick Start](https://rensutheart.github.io/vipp-mkdocs/stable/getting-started/installation/) for the exact platform instructions.\n\nFor a manual installation, use a dedicated CPython 3.12 or 3.13 environment.\nOn Windows or Linux:\n\n```bash\npython -m pip install \"napari[pyqt6]>=0.6\" \"napari-vipp==0.15.0a5\"\nvipp\n```\n\nOn macOS, replace `\"napari[pyqt6]>=0.6\"` with `\"napari[pyside6]>=0.6\"`.\nThe macOS route is CPU-only.\n\nInside an existing napari session, open:\n\n```text\nPlugins > VIPP Workflow (napari-vipp)\n```\n\n## Try A Bundled Workflow\n\nNo external data is needed for the first run:\n\n1. Launch VIPP, open the gear menu, and select **Open example…**.\n2. Open **Red-Channel Label Cleanup**.\n3. Select the nodes from left to right. Inspect their parameters, previews,\n   histograms, metadata and outputs.\n4. Change a parameter and compare the affected stages. Use **Calculate** where\n   a computationally intensive node requires an explicit run.\n5. Pin an output into napari for full-resolution inspection, then save the\n   workflow as JSON.\n\nNext, open **Deterministic Batch & Provenance** for a self-contained example of\ncollection processing and reproducibility artifacts. See the\n[example workflow index](https://rensutheart.github.io/vipp-mkdocs/stable/reference/example-workflows/) for more starting points.\n\n## Analysis Coverage\n\n| Goal | Available building blocks |\n| --- | --- |\n| Prepare images | Intensity transforms, background correction, filtering, denoising, channel handling, axis operations, masks and volume regions of interest. |\n| Segment structures | Global and local thresholds, edges, watershed, binary morphology, label cleanup and connected-component operations. |\n| Quantify results | Object and intensity measurements, calibrated 3D mesh morphology, skeleton and network analysis, colocalisation, object association and table composition. |\n| Restore images | Measured or generated point-spread functions, Richardson–Lucy and RL–TV deconvolution in 2D and 3D. |\n| Reuse analyses | Workflow JSON, generated Python, explicit batch outputs, collection manifests and execution provenance. |\n\nVIPP reads OME-TIFF, ImageJ TIFF, TIFF, local OME-Zarr 0.4/0.5,\nNPY/NPZ and common 2D image formats. Optional readers add formats including ND2\nand CZI. The [I/O guide](https://rensutheart.github.io/vipp-mkdocs/stable/reference/import-export/) documents the complete matrix,\nmetadata behavior and limitations.\n\nMost graph operations currently materialize their inputs in memory. Plan cache,\npreview and output choices deliberately for large z-stacks and OME-Zarr data.\nSee [Cache and memory](https://rensutheart.github.io/vipp-mkdocs/stable/reference/cache-memory/).\n\n## GPU Acceleration (Optional)\n\nVIPP is fully usable on CPU on Windows, Linux and macOS. Selected\ncomputationally intensive operations offer dedicated GPU acceleration on\nqualified NVIDIA systems. VIPP records the implementation that ran, and a GPU\nrequest that cannot be honored falls back visibly to CPU.\n\nThe current public GPU route uses native 64-bit Windows, CPython 3.12, CUDA 13\nand an NVIDIA GPU with compute capability 7.5 or newer. Performance depends on\nthe operation, data and hardware. See the [GPU Guide](https://rensutheart.github.io/vipp-mkdocs/stable/how-to/choose-compute/) for\ninstallation, supported operation families, qualification and benchmarking.\n\n## Reproducibility And Scientific Traceability\n\nVIPP keeps workflow structure, parameters and intermediate decisions visible\nduring interactive design. Saved and batch-run workflows can retain source\nidentity, semantic axes, physical calibration, selected outputs and the actual\nCPU or GPU implementation used.\n\nThis record supports reproducibility, but it does not establish biological\nvalidity automatically. Users remain responsible for checking assumptions,\nparameter choices and results on suitable controls and representative data.\nRead the [scientific integrity boundaries](https://rensutheart.github.io/vipp-mkdocs/stable/developer/architecture/#non-negotiable-scientific-contracts)\nand [scientific behavior requirements](CONTRIBUTING.md#scientific-behavior-requirements).\n\n## Documentation\n\nThe [VIPP manual](https://rensutheart.github.io/vipp-mkdocs/stable/) is the single\nhome for user instructions. Select a version in the manual to match your installation.\n\n- [Quick Start](https://rensutheart.github.io/vipp-mkdocs/stable/getting-started/installation/) — installers, manual setup and the first workflow\n- [User Guide](https://rensutheart.github.io/vipp-mkdocs/stable/how-to/) — graph authoring, inspection, batch processing and export\n- [Example workflows](https://rensutheart.github.io/vipp-mkdocs/stable/reference/example-workflows/) — bundled starting points by analysis task\n- [Image import and export](https://rensutheart.github.io/vipp-mkdocs/stable/reference/import-export/) — formats, metadata and collection inputs\n- [GPU Guide](https://rensutheart.github.io/vipp-mkdocs/stable/how-to/choose-compute/) — acceleration, qualification and benchmarking\n- [Measurement workflows](https://rensutheart.github.io/vipp-mkdocs/stable/workflows/object-measurements-tables/) — quantitative analysis patterns\n- [Architecture](https://rensutheart.github.io/vipp-mkdocs/stable/developer/architecture/) — execution and scientific-integrity contracts\n- [Troubleshooting](https://rensutheart.github.io/vipp-mkdocs/stable/troubleshooting/) — common problems and support\n\n## Development And Support\n\nImplementation context stays with the code: [contributing](CONTRIBUTING.md),\n[architecture](docs/architecture.md), [planning and roadmap](docs/planning.md),\n[repository documentation](docs/README.md), and [changelog](CHANGELOG.md).\nSee [documentation ownership](docs/documentation.md) before editing a guide.\n\n```powershell\npython -m venv .venv\n.venv\\Scripts\\Activate.ps1\npython -m pip install -e \".[dev]\"\npython -m npe2 validate src/napari_vipp/napari.yaml\npython -m ruff check .\npython -m pytest\n```\n\nRead [CONTRIBUTING.md](CONTRIBUTING.md) before opening a pull request. Ask usage\nquestions in [GitHub Discussions](https://github.com/rensutheart/napari-vipp/discussions),\nuse [SUPPORT.md](SUPPORT.md) for help, report vulnerabilities privately through\n[SECURITY.md](SECURITY.md), and follow the [Code of Conduct](CODE_OF_CONDUCT.md).\n\n## Citation And License\n\nIf VIPP contributes to your work, acknowledge `napari-vipp` and link to this\nrepository. Citation metadata is available in [CITATION.cff](CITATION.cff). A\nDOI or manuscript citation will 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.13","Programming Language :: Python :: 3 :: Only","Topic :: Scientific/Engineering :: Bio-Informatics","Topic :: Scientific/Engineering :: Image Processing","Topic :: Scientific/Engineering :: Visualization"],"requires_dist":["czifile<2027,>=2026.8.16","dask[array]>=2025.2","fast-simplification<0.3,>=0.2.0","fsspec>=2024.2","imageio>=2.31","imagecodecs<2027,>=2026.8.16","liffile<2027,>=2026.7.14","matplotlib<4,>=3.7","nd2[legacy]<0.12,>=0.11.1","oiffile<2027,>=2026.2.8","oirfile<2027,>=2026.7.28","numpy>=1.24","ome-types>=0.6","ome-zarr>=0.17","packaging>=23","pillow>=10","psutil>=5.9","psygnal<0.16,>=0.14","qtpy>=2.4","scikit-image>=0.21","scipy>=1.10","tifffile>=2023.8","zarr>=3.0","napari[pyqt6]>=0.6; extra == \"app\"","numpy==2.5.1; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda12\"","scipy==1.18.0; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda12\"","scikit-image==0.26.0; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda12\"","cupy-cuda12x[ctk]==14.1.1; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda12\"","cuda-pathfinder==1.6.0; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda12\"","cuda-toolkit==12.9.2.0; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda12\"","nvidia-cublas-cu12==12.9.2.10; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda12\"","nvidia-cuda-nvrtc-cu12==12.9.86; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda12\"","nvidia-cuda-runtime-cu12==12.9.79; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda12\"","nvidia-cufft-cu12==11.4.1.4; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda12\"","nvidia-curand-cu12==10.3.10.19; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda12\"","nvidia-cusolver-cu12==11.7.5.82; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda12\"","nvidia-cusparse-cu12==12.5.10.65; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda12\"","nvidia-nvjitlink-cu12==12.9.86; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda12\"","numpy==2.5.1; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda13\"","scipy==1.18.0; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda13\"","scikit-image==0.26.0; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda13\"","cupy-cuda13x[ctk]==14.1.1; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda13\"","cuda-pathfinder==1.6.0; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda13\"","cuda-toolkit==13.2.2; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda13\"","nvidia-cublas==13.4.1.3; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda13\"","nvidia-cuda-nvrtc==13.2.86; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda13\"","nvidia-cuda-runtime==13.2.86; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda13\"","nvidia-cufft==12.2.0.57; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda13\"","nvidia-curand==10.4.2.66; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda13\"","nvidia-cusolver==12.2.0.11; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda13\"","nvidia-cusparse==12.7.10.12; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda13\"","nvidia-nvjitlink==13.2.86; (python_version == \"3.12\" and (platform_system == \"Windows\" or platform_system == \"Linux\")) and extra == \"gpu-cuda13\"","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\"","numpy==2.5.1; extra == \"dev\"","pytest>=8; extra == \"dev\"","pytest-qt>=4.4; extra == \"dev\"","ruff>=0.12; extra == \"dev\"","scikit-image==0.26.0; extra == \"dev\"","scipy==1.18.0; extra == \"dev\"","altgraph==0.17.5; extra == \"installer-build\"","build==1.5.0; extra == \"installer-build\"","pefile==2024.8.26; extra == \"installer-build\"","pyinstaller==6.21.0; extra == \"installer-build\"","pyinstaller-hooks-contrib==2026.6; extra == \"installer-build\"","PyQt6==6.10.2; extra == \"installer-build\"","PyQt6-Qt6==6.10.2; extra == \"installer-build\"","PyQt6-sip==13.11.1; extra == \"installer-build\"","pywin32-ctypes==0.2.3; extra == \"installer-build\"","setuptools==82.0.1; extra == \"installer-build\"","wheel==0.47.0; extra == \"installer-build\"","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.14,>=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":["app","gpu-cuda12","gpu-cuda13","czi","dev","installer-build","bioformats","microscope","nd2"],"provides_dist":null,"obsoletes_dist":null},"npe1_shim":false}