{"name":"napari-ome-arrow","display_name":"OME-Arrow","visibility":"public","icon":"","categories":[],"schema_version":"0.2.1","on_activate":null,"on_deactivate":null,"contributions":{"commands":[{"id":"napari-ome-arrow.get_reader","title":"Open OME-Arrow data","python_name":"napari_ome_arrow._reader:napari_get_reader","short_title":null,"category":null,"icon":null,"enablement":null}],"readers":[{"command":"napari-ome-arrow.get_reader","filename_patterns":["*.ome.parquet","*.parquet","*.pq","*.ome.vortex","*.vortex","*.ome.tif","*.ome.tiff","*.tif","*.tiff","*.ome.zarr","*.zarr"],"accepts_directories":true}],"writers":null,"widgets":null,"sample_data":null,"themes":null,"menus":{},"submenus":null,"keybindings":null,"configuration":[]},"package_metadata":{"metadata_version":"2.4","name":"napari-ome-arrow","version":"0.0.5","dynamic":["license-file"],"platform":null,"supported_platform":null,"summary":"A Napari plugin for OME-Arrow and OME-Parquet bioimage data","description":"# napari-ome-arrow\n\n[![License BSD-3](https://img.shields.io/pypi/l/napari-ome-arrow.svg?color=green)](https://github.com/wayscience/napari-ome-arrow/raw/main/LICENSE)\n[![PyPI](https://img.shields.io/pypi/v/napari-ome-arrow.svg?color=green)](https://pypi.org/project/napari-ome-arrow)\n[![Python Version](https://img.shields.io/pypi/pyversions/napari-ome-arrow.svg?color=green)](https://python.org)\n[![napari hub](https://img.shields.io/endpoint?url=https://api.napari-hub.org/shields/napari-ome-arrow)](https://napari-hub.org/plugins/napari-ome-arrow)\n[![npe2](https://img.shields.io/badge/plugin-npe2-blue?link=https://napari.org/stable/plugins/index.html)](https://napari.org/stable/plugins/index.html)\n[![Software DOI badge](https://zenodo.org/badge/DOI/10.5281/zenodo.17613571.svg)](https://doi.org/10.5281/zenodo.17613571)\n\n`napari-ome-arrow` is a minimal plugin for [napari](https://napari.org) that opens image data through the [OME-Arrow](https://github.com/wayscience/ome-arrow) toolkit.\n\nIt provides a single, explicit pathway for loading OME-style bioimage data:\n\n- **OME-TIFF** (`.ome.tif`, `.ome.tiff`, `.tif`, `.tiff`)\n- **OME-Zarr** (`.ome.zarr`, `.zarr` stores and URLs)\n- **OME-Parquet** (`.ome.parquet`, `.parquet`, `.pq`)\n- **OME-Vortex** (`.ome.vortex`, `.vortex`)\n- **Bio-Formats–style stack patterns** (paths containing `<`, `>`, or `*`)\n- A simple **`.npy` fallback** for quick testing / ad-hoc arrays\n\n## Key features\n\n- ✅ **Unified reader via OMEArrow**\n  All supported formats are loaded through `OME-Arrow`, which normalizes data into a common **TCZYX**-like representation.\n\n- ✅ **Explicit image vs labels mode**\n  This plugin never guesses whether your data are intensities or segmentation masks. You must tell it:\n\n  - via the GUI prompt when you drop/open a file in napari, or\n  - via an environment variable for scripted/CLI usage.\n\n- ✅ **Interactive choice in the GUI**\n  When `NAPARI_OME_ARROW_LAYER_TYPE` is not set and you open a supported file, napari shows a small dialog:\n\n  > *How should `my_data.ome.tif` be loaded?*\n  > `[Image]   [Labels]   [Cancel]`\n\n  This makes the “image vs labels” choice explicit at load time without relying on file naming conventions.\n\n- ✅ **Image mode**\n\n  - Returns a napari **image layer**\n  - Preserves channels and sets `channel_axis` when appropriate\n    (e.g. multi-channel OME-TIFF or stack patterns)\n  - Works for 2D, 3D (Z-stacks), and higher-dimensional data (T, C, Z, Y, X)\n\n- ✅ **Labels mode**\n\n  - Returns a napari **labels layer**\n  - Converts data to an integer dtype (suitable for labels)\n  - Applies a reasonable default opacity for overlaying on images\n\n- ✅ **Automatic 3D for Z-stacks**\n  If the loaded data include a true Z dimension (`Z > 1`, assuming a TCZYX subset), the plugin asks the current viewer to switch to **3D** (`viewer.dims.ndisplay = 3`) so z-stacks open directly in volume mode.\n\n- ✅ **Headless / scripted friendly**\n  When Qt is not available (e.g., in headless or purely programmatic contexts), the reader:\n\n  - respects `NAPARI_OME_ARROW_LAYER_TYPE`, and\n  - defaults to `\"image\"` if the variable is not set.\n\n- ✅ **Grid view for multi-row OME-Parquet / OME-Vortex**\n  When a Parquet or Vortex file contains multiple OME-Arrow rows, each row is loaded as its own layer and the viewer is switched to napari’s grid mode. Set `NAPARI_OME_ARROW_PARQUET_COLUMN` or `NAPARI_OME_ARROW_VORTEX_COLUMN` to pick which image column to visualize.\n\n- ✅ **Stack scale prompt + override**\n  When loading image stacks (stack patterns), napari prompts for voxel spacing only if no scale metadata or `NAPARI_OME_ARROW_STACK_SCALE` override is present and a Qt UI is available (headless runs skip the prompt). To avoid the prompt, set `NAPARI_OME_ARROW_STACK_SCALE` using `Z,Y,X` or `T,C,Z,Y,X`.\n\n______________________________________________________________________\n\nThis [napari] plugin was generated with [copier] using the [napari-plugin-template] (None).\n\n## Installation\n\nYou can install `napari-ome-arrow` via [pip]:\n\n```\npip install napari-ome-arrow\n```\n\nIf napari is not already installed, you can install `napari-ome-arrow` with napari and Qt via:\n\n```\npip install \"napari-ome-arrow[all]\"\n```\n\nTo install latest development version :\n\n```\npip install git+https://github.com/wayscience/napari-ome-arrow.git\n```\n\nTo enable OME-Vortex support via OME-Arrow, install the optional extra:\n\n```bash\npip install \"napari-ome-arrow[vortex]\"\n```\n\n## Usage\n\n### From the napari GUI\n\n1. Install the plugin (see above).\n1. Start napari.\n1. Drag and drop an OME-TIFF, OME-Zarr, OME-Parquet, OME-Vortex file, a stack pattern, or a multi-select stack (e.g. `img_000.tif` ... `img_123.tif`) into the viewer.\n1. When prompted, choose **Image** or **Labels**.\n\nThe plugin will:\n\n- load the data through `OMEArrow`,\n- map channels and axes appropriately, and\n- automatically switch to 3D if there is a Z-stack.\n- When multiple files look like a numbered stack, treat them as a single stack rather than independent layers.\n\n### From the command line\n\nYou can control the mode via an environment variable:\n\n```bash\n# Load as regular images\nNAPARI_OME_ARROW_LAYER_TYPE=image napari my_data.ome.tif\n\n# Load as labels (segmentation)\nNAPARI_OME_ARROW_LAYER_TYPE=labels napari my_labels.ome.parquet\n\n# Pick a specific column in a multi-row OME-Parquet and show in grid mode\nNAPARI_OME_ARROW_LAYER_TYPE=image \\\\\nNAPARI_OME_ARROW_PARQUET_COLUMN=Image_FileName_OrigDNA_OMEArrow_ORIG \\\\\nnapari tests/data/cytodataframe/BR00117006.ome.parquet\n\n# Prefill stack voxel spacing for stack patterns (Z,Y,X or T,C,Z,Y,X)\nNAPARI_OME_ARROW_STACK_SCALE=1.0,0.108,0.108 napari \"stack/z<000-120>.tif\"\n\n# Prefill stack voxel spacing for multi-file stacks (use a pattern or glob on CLI)\nNAPARI_OME_ARROW_STACK_SCALE=1.0,0.108,0.108 napari \"stack/img_<000-120>.tif\"\n```\n\n## Contributing\n\nContributions are very welcome.\nPlease reference our [CONTRIBUTING.md](CONTRIBUTING.md) guide.\n\n## License\n\nPlease see the [LICENSE](LICENSE) file for more information.\n\n## Issues\n\nIf you encounter any problems, please [file an issue] along with a detailed description.\n\n[copier]: https://copier.readthedocs.io/en/stable/\n[file an issue]: https://github.com/wayscience/napari-ome-arrow/issues\n[napari]: https://github.com/napari/napari\n[napari-plugin-template]: https://github.com/napari/napari-plugin-template\n[pip]: https://pypi.org/project/pip/\n","description_content_type":"text/markdown","keywords":null,"home_page":null,"download_url":null,"author":null,"author_email":null,"maintainer":null,"maintainer_email":null,"license":"Copyright (c) 2025, Dave Bunten\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution.\n\n* Neither the name of copyright holder nor the names of its\n  contributors may be used to endorse or promote products derived from\n  this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n","classifier":["Framework :: napari","Intended Audience :: Developers","License :: OSI Approved :: BSD License","Operating System :: OS Independent","Programming Language :: Python","Programming Language :: Python :: 3 :: Only","Programming Language :: Python :: 3.11","Programming Language :: Python :: 3.12","Programming Language :: Python :: 3.13","Programming Language :: Python :: 3.14","Topic :: Scientific/Engineering :: Image Processing"],"requires_dist":["magicgui","numpy","ome-arrow>=0.0.3","qtpy>=2.4","scikit-image","napari; extra == \"all\"","qtpy>=2.4; extra == \"all\"","napari[pyqt6]; extra == \"pyqt6\"","pyqt6>=6.6; extra == \"pyqt6\"","qtpy>=2.4; extra == \"pyqt6\"","napari[pyside6]; extra == \"pyside6\"","pyside6>=6.6; extra == \"pyside6\"","qtpy>=2.4; extra == \"pyside6\"","vortex-data; extra == \"vortex\""],"requires_python":">=3.11","requires_external":null,"project_url":["Bug Tracker, https://github.com/wayscience/napari-ome-arrow/issues","Documentation, https://github.com/wayscience/napari-ome-arrow#README.md","Source Code, https://github.com/wayscience/napari-ome-arrow","User Support, https://github.com/wayscience/napari-ome-arrow/issues"],"provides_extra":["all","pyqt6","pyside6","vortex"],"provides_dist":null,"obsoletes_dist":null},"npe1_shim":false}