Skip to content
This repository has been archived by the owner on Apr 14, 2022. It is now read-only.
/ ivvv Public archive

The image voxel volume viewer (pronounced ivy)

License

Notifications You must be signed in to change notification settings

imaging-tools/ivvv

Repository files navigation

THIS REPOSITORY IS DEPRECATED

Please visit https://github.com/allen-cell-animated/nbvv for the newer and more fully featured version of this notebook extension.

ivvv

Binder

The image voxel volume viewer (pronounced ivy).

What?

ivvv is an attmept to provide a lightweight, minimal volume viewer for interactive data exploration in jupyter. (This is a jupyter widget that provide volumetric rendering given a multiple channel zstack as a numpy array.)

Why?

We wanna look at stuff in notebooks Most 3D viewers are far too heavyweight to use for quick visualization tasks when experimenting with tractably-sized (analyzing, checking, ...) 3D volumetric datasets.

Who?

Envisioned user group is anyone who wants a robust and quick way to interactively interrogate volumetric data as part of their workflows; domain which motivated development is multi-channel volumetric light/fluorescence microscopy datasets.

Stripped down version of 3D renderes used 3D cell viewer. Standard scientific python toolkit.

How?

We've used a stripped down version of 3D rendering provided by the Allen Cell Explorer's 3D Cell Viewer.

Demo Notebooks

Under development

Install

pip install ivvv <- would be nice if it worked jupyter nbextension install --py ivvv jupyter nbextension enable ivvv --py

Detailed docs

Schema

{
    "$schema": "http://json-schema.org/draft-06/schema#",
    "title": "Allen Volume Format image",
    "description": "An image from e.g. the Allen Cell Explorer Collection defined for render by 3D Cell Viewer (ACE)",
    "type": "object",
    "properties": {
        "width": {
            "description": "Width of original volumetric data prior to downsampling.",
            "type": "integer"
        },
        "height": {
            "description": "Height of original volumetric data prior to downsampling.",
            "type": "integer"
        },
        "channels": {
            "description": "Specifies number of channels.",
            "type": "integer",
        },
        "channel_names": {
            "description": "Names of each of the channels to be rendered, in order. Unique identifier expected.",
            "type": "array",
            "items": {
                "type": "string"
            },
            "minItems": 1,
            "uniqueItems": true
        },
         "rows": {
            "description": "Number of rows in tile array in each image.",
            "type": "integer"
        },
         "cols": {
            "description": "Number of columns in tile array in each image.",
            "type": "integer"
        },
        "tiles": {
            "description": "Number of tiles, which must be equal to the number of z-slices in original volumetric data.",
            "type": "integer"
        },
        "tile_width": {
            "description": "Width of each tile in volumetric dataset to be rendered, in pixels.",
            "type": "integer"
        },
        "tile_height": {
            "description": "Height of each tile in volumetric dataset to be rendered, in pixels.",
            "type": "integer"
        },
        "atlas_width": {
            "description": "Total width of volumetric object containing all the tiles, in pixels.",
            "type": "integer"
        },
        "atlas_height": {
            "description": "Total height of volumetric object containing all the tiles, in pixels.",
            "type": "integer"
        },
        "pixel_size_x": {
            "description": "Size of pixels in volumetric data to be rendered, in x-dimension, unitless.",
            "type": "float"
        },
        "pixel_size_y": {
            "description": "Size of pixels in volumetric data to be rendered, in y-dimension, unitless.",
            "type": "float"
        },
         "pixel_size_z": {
            "description": "Size of pixels in volumetric data to be rendered, in z-dimension, unitless.",
            "type": "float"
        },
         "name": {
            "description": "Base name of images.",
            "type": "string"
        },
        "images": {
            "description": "List of images as defined by name and channel array; should correspond to *name*.",
            "type": "array",
            "items": {             
                "name": {
                    "description": "Name of single image item.",
                    "type": "string",
             },
                "channels": {
                "description": "Channels to be rendered. Unique identifiers expected.",
                "type": "array",
                "items": {
                "type": "integer"
             },
                "minItems": 1,
                "uniqueItems": true
             },
            "minItems": 1,
            "uniqueItems": true
            }
        }, 
         "version": {
            "description": "Current version of the schema.",
            "type": "string"
        },
         "aicsImageVersion": {
            "description": "Version of aicsImage python library that generated the employed texture map.",
            "type": "string"
        },
    },
    "required": ["width", "height", "channels", "channel_names", "rows", "cols", "tiles", "tile_width", "tile_height", "atlas_width", "atlas_height", "pixel_size_x", "pixel_size_y", "pixel_size_z", "name", "images", "version"]
}

Nice example

AICS-10_5_5.ome.tif_atlas.json

{
  "width":306,
  "height":494,
  "channels":9,
  "channel_names":["DRAQ5","EGFP","Hoechst 33258","TL Brightfield","SEG_STRUCT","SEG_Memb","SEG_DNA","CON_Memb","CON_DNA"],
  "rows":7,
  "cols":10,
  "tiles":65,
  "tile_width":204,
  "tile_height":292,
  "atlas_width":2040,
  "atlas_height":2044,
  "pixel_size_x":0.065,
  "pixel_size_y":0.065,
  "pixel_size_z":0.29,
  "images":[{"name":"AICS-10_5_5.ome.tif_atlas_0.png","channels":[0,1,2]},{"name":"AICS-10_5_5.ome.tif_atlas_1.png","channels":[3,4,5]},{"name":"AICS-10_5_5.ome.tif_atlas_2.png","channels":[6,7,8]}],
  "name":"AICS-10_5_5",
  "version":"0.0.0",
  "aicsImageVersion":"0.3.0"
  }

About

The image voxel volume viewer (pronounced ivy)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published