Skip to main content

Visualize 3D numpy arrays in the browser.

Project description

PyPI version

microviewer

Multiplatform 3D numpy image browser based viewer.

from microviewer import view, hyperview, objects

view(numpy_image) # for gray and color images
view(numpy_image, seg=True) # for segmentation labels
view(numpy_image, seg=True, port=8082)

hyperview(image, labels) # interactive overlay

# uses vtk to visualize meshes, bounding boxes, 
# skeletons, and point clouds
objects([ mesh, skeleton, bbox, point_cloud ])
uview image.npy.gz # view as image
uview labels.npy.gz --seg # view as segmentation
uview image.npy.gz labels.npy.gz # view image w/ overlay
uview image.npy.gz --paint # view image w/ blank overlay

Segmentation display in microviewer

Visualize 3D numpy arrays in your browser without difficult installation procedures or reformatting your data. The code is CPU based and the image is uncompressed in memory. You're limited to images that are at most 2^31 bytes large (~2.1 GB) due to browser limitations.

Features

  • 3 axis visualization of 3D images.
  • Grayscale images with segmentation overlay.
  • Segmentation selection with brush tools.
  • Direct voxel painting.
  • Save segmentation as .npy or .ckl, an advanced compresssion format.
  • Undo/Redo

3D Image Support

  • 8-bit grayscale 3D images
  • color images (including 3 channel 3D images)
  • floating point images
  • boolean images
  • segmentation labels
  • .npy, .ckl, .nrrd, or .nii format

For .ckl, .nrrd, and .nii formats, you must install crackle-codec, pynrrd, and nibabel respectively. All are installed by the "all_formats" optional installation argument.

3D Object Support

  • osteoid Skeletons
    • Color By: Connected Component, Radius, Cross Sectional Area
  • zmesh and CloudVolume Meshes
  • Point Clouds
  • Bounding Boxes

Example

import numpy as np
import zmesh
import kimimaro
import crackle
import microviewer
from osteoid.lib import Bbox

labels = crackle.load("connectomics.npy.ckl.gz", label=62347522)
resolution = np.array([16,16,40])

skel = kimimaro.skeletonize(
  labels, 
  teasar_params={
    'scale': 3,
    'pdrf_exponent': 8,
  },
  anisotropy=resolution,
)[1]

mesher = zmesh.Mesher(resolution)
mesher.mesh(labels)
mesh = mesher.get(1)

bbox = Bbox([0,0,0], np.array(labels.shape) * resolution)

microviewer.objects([ bbox, mesh, skel ], skeleton_color_by='radius')


# x = cross sectional area (if precomputed)
# r = radius (if precomputed, but usually is)
# c = connected components
microviewer.objects([ bbox, mesh, skel ], skeleton_color_by='x', skeleton_heatmap={
  "min": 100, # automatically determined if unspecified
  "max": 100000, # automatically determined if unspecified
  "scale": "log", # linear (default) or log
})

3D object display in microviewer via vtk

Installation

pip install microviewer

By default, only .npy files are supported. Additional formats are supported via optional downloads.

Possible optional arguments:

all_formats, nii, nrrd, ckl, jxl,
objects,
all

Note: jxl and objects have relatively heavy downloads.

pip install "microviewer[all]"

History

This microviewer package has been a part of CloudVolume since 2018, but is now broken out into its own package for more flexible wider use. Microviewer uses a modified version of https://github.com/seung-lab/data-cube-x/ (2016) to represent the array in Javascript, which was originally developed for eyewire.org.

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

microviewer-1.21.0.tar.gz (1.5 MB view details)

Uploaded Source

Built Distribution

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

microviewer-1.21.0-py3-none-any.whl (161.2 kB view details)

Uploaded Python 3

File details

Details for the file microviewer-1.21.0.tar.gz.

File metadata

  • Download URL: microviewer-1.21.0.tar.gz
  • Upload date:
  • Size: 1.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for microviewer-1.21.0.tar.gz
Algorithm Hash digest
SHA256 072b6d6008fcfe3001c920b2fc24e3b913384b35691f88f84c971d902f375c53
MD5 9037602df3bdf0ea9b106c166095f7e3
BLAKE2b-256 c5ad389fab379346658d70b4da421ad5e1605b1ecf0f2513460ba532bdae60e6

See more details on using hashes here.

File details

Details for the file microviewer-1.21.0-py3-none-any.whl.

File metadata

  • Download URL: microviewer-1.21.0-py3-none-any.whl
  • Upload date:
  • Size: 161.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for microviewer-1.21.0-py3-none-any.whl
Algorithm Hash digest
SHA256 8de9d6814dab3a1af1869807b556b8b7876797e6b6198797dc3563c23174a56c
MD5 59604dc6658c40a50fec2693263b279f
BLAKE2b-256 4154bd41b09b521183b0cb0b3abe1e483058846a8ed79c5ef73c8600590028be

See more details on using hashes here.

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