Skip to main content

Interactive image viewer widget for Jupyter/marimo with annotation tools and SAM integration

Project description

anybioimage

Interactive bioimage viewer widget for Jupyter and marimo notebooks. Built on anywidget, it supports multi-dimensional images, multi-channel composites, mask overlays, annotation tools, and HCS plate navigation.

Documentation: https://maartenpaul.github.io/anybioimage/

Installation

uv pip install anybioimage

# With all recommended dependencies (excludes SAM/PyTorch)
uv pip install "anybioimage[all]"

# With SAM support (Python 3.10–3.12, requires PyTorch)
uv pip install "anybioimage[complete]"

Quick Start

Minimal example (NumPy only)

import numpy as np
from anybioimage import BioImageViewer

viewer = BioImageViewer()
viewer.set_image(np.random.randint(0, 255, (512, 512), dtype=np.uint8))
viewer  # displays in notebook

Example with a tiff image

from anybioimage import BioImageViewer
from bioio import BioImage
import bioio_tifffile

viewer = BioImageViewer()
viewer.set_image(BioImage("image.tif", reader=bioio_tifffile.Reader))
viewer  # renders inline

marimo

import marimo as mo
from anybioimage import BioImageViewer
from bioio import BioImage
import bioio_tifffile

viewer = BioImageViewer()
viewer.set_image(BioImage("image.tif", reader=bioio_tifffile.Reader))
mo.ui.anywidget(viewer)

Features

Multi-dimensional images

Supports 5D arrays (TCZYX: Time, Channel, Z-stack, Y, X) with sliders for T, Z, and per-channel controls. Pass a BioImage object for lazy loading — efficient for large TIFF and OME-Zarr files.

from bioio import BioImage
import bioio_tifffile
import bioio_ome_zarr

img = BioImage("image.tif",  reader=bioio_tifffile.Reader)
viewer.set_image(img)  # activates T/Z sliders, per-channel LUT controls

Multi-channel composites

Each channel has independent color, brightness/contrast (LUT), and visibility controls via the Layers panel in the toolbar. Channel settings can also be set programmatically:

# Access and modify channel settings
settings = list(viewer._channel_settings)
settings[0] = {**settings[0], "name": "DAPI", "color": "#0000ff"}
viewer._channel_settings = settings

Mask overlays

Add segmentation masks as overlay layers with configurable color, opacity, and contour rendering:

viewer.add_mask(labels, name="Nuclei", color="#ff0000", opacity=0.5)

# Manage masks
viewer.update_mask_settings(mask_id, opacity=0.3)
viewer.remove_mask(mask_id)
viewer.clear_masks()

HCS plate support

Load OME-Zarr HCS plates with well and FOV navigation dropdowns built into the widget:

viewer = BioImageViewer()
viewer.set_plate("plate.zarr")
viewer  # shows Well / FOV dropdowns

Annotation tools

Tool Shortcut Description
Pan P Navigate and zoom
Select V Select annotations; Delete to remove
Rectangle R Draw bounding boxes
Polygon G Click vertices, double-click to close
Point O Place point markers

Export annotations as DataFrames:

viewer.rois_df      # rectangles: id, x, y, width, height
viewer.polygons_df  # polygons: id, points, num_vertices
viewer.points_df    # points: id, x, y

SAM integration

Automatic segmentation with Segment Anything Model when drawing rectangles or placing points:

viewer.enable_sam(model_type="mobile_sam")  # ~40 MB, fastest
viewer.enable_sam(model_type="sam_b")       # SAM base, ~375 MB

Requires uv pip install "anybioimage[sam]" (Python 3.10–3.12).

Optional dependencies

Extra Installs Use case
bioio bioio, bioio-tifffile TIFF / OME-Zarr loading
contours scipy Contour-only mask rendering
sam ultralytics (PyTorch) SAM segmentation
all bioio + contours Recommended (no PyTorch)
complete all + sam Everything

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

anybioimage-0.3.1.tar.gz (46.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

anybioimage-0.3.1-py3-none-any.whl (44.5 kB view details)

Uploaded Python 3

File details

Details for the file anybioimage-0.3.1.tar.gz.

File metadata

  • Download URL: anybioimage-0.3.1.tar.gz
  • Upload date:
  • Size: 46.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for anybioimage-0.3.1.tar.gz
Algorithm Hash digest
SHA256 2a8456ba8dba768344a6c7e0a15f34a317a855ba74105243a3968c6edd98ed23
MD5 1e30040d025438103a0f3b04c84a1d7f
BLAKE2b-256 945d4f699d5ff11865953f4b86e75a425bee42c7cbac05755ea7891dc4171cf6

See more details on using hashes here.

Provenance

The following attestation bundles were made for anybioimage-0.3.1.tar.gz:

Publisher: publish.yml on maartenpaul/anybioimage

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file anybioimage-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: anybioimage-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 44.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for anybioimage-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bad3595c2f2c828952ff434b81de164ece0ec635eef422f0597bab8b4280d264
MD5 b09c78a94472e6b2d9c05f8ec7bdc6c4
BLAKE2b-256 58271e273c8776cca72ff3c8bf688b11b603a4a9de5ceea8ac97eb7e66ea1b6f

See more details on using hashes here.

Provenance

The following attestation bundles were made for anybioimage-0.3.1-py3-none-any.whl:

Publisher: publish.yml on maartenpaul/anybioimage

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page