Code Monkey home page Code Monkey logo

viv's Introduction

Viv npm version

A library for multiscale visualization of high-resolution multiplexed bioimaging data on the web. Directly renders Bio-Formats-compatible Zarr and OME-TIFF. Written in JavaScript and built on Deck.gl with modern web technologies.

drawing drawing

About

Viv is a JavaScript library providing utilities for rendering primary imaging data. Viv supports WebGL-based multi-channel rendering of both pyramidal and non-pyramidal images. The rendering components of Viv are provided as Deck.gl layers, making it easy to compose images with existing layers and efficiently update rendering properties within a reactive paradigm.

More details can be found in our preprint describing the Viv library and related work. Please cite this preprint in your research:

Trevor Manz, Ilan Gold, Nathan Heath Patterson, Chuck McCallum, Mark S Keller, Bruce W Herr II, Katy Börner, Jeffrey M Spraggins, Nils Gehlenborg, "Viv: Multiscale Visualization of High-resolution Multiplexed Bioimaging Data on the Web." OSF Preprints (2020), doi:10.31219/osf.io/wd2gu

Related Software

  • Avivator Included in this repository is Avivator, a lightweight viewer for remote imaging data. Avivator is a purely client-side program that only requires access to Bio-Formats-compatiable Zarr or OME-TIFF data over HTTP or on local disk.
  • Vizarr Vizarr is a minimal, purely client-side program for viewing Zarr-based images built with Viv. It exposes a Python API using the imjoy-rpc and can be directly embedded in Jupyter Notebooks or Google Colab Notebooks.
  • Viv benchmark A set of scripts to benchmark Viv's retrieval of image tiles from pyramidal OME-TIFF files and Zarr stores via HTTP1 and HTTP2.

Tools Built with Viv

Vitessce

OME-NGFF:

ImJoy:

Galaxy:

HuBMAP CCF EUI:

Supported Data Formats

Viv supports a subset of formats that can be generated with the bioformats2raw + raw2ometiff pipeline:

  • OME-TIFF files (pyramidal)
  • Bioformats-compatible Zarr stores (pyramidal)

For OME-TIFF, Viv supports any pyramid that implements the OME design spec for TIFF pyramids(which the bioformats2raw + raw2ometiff pipeline provides). Non-pyramidal images are also supported provided the individual texture can be uploaded to the GPU (< 4096 x 4096 in pixel size).

Please see the tutorial for more information on these formats.

Data Preparation

Initial load time for OME-TIFFs can be optimized by generating a special offsets.json file containing byte offsets for the associated binary data. For more information, see the documentation.

Installation

$ npm install @hms-dbmi/viv

You will also need to install deck.gl (and its companion luma.gl) dependencies as they are listed as peerDependencies here. This is in order to prevent users from installing multiple versions of deck.gl.

$ npm install deck.gl @luma.gl/core

Development

$ git clone https://github.com/hms-dbmi/viv.git
$ cd viv && npm install # install deps for viv library
$ npm run install:avivator # install deps for avivator app
$ npm start # Starts rollup build (for Viv) & dev server for Avivator

Please install the Prettier plug-in for your preferred editor. Badly formatted code will fail on Travis.

To run unit and integration tests locally, use npm test. For full prodcution test (including linting and formatting checks), use npm run test:prod.

Build

  • @hms-dbmi/viv library: npm run build
  • Avivator viewer: npm run build:avivator

Publish

To bump the version number, clean up/update the CHANGELOG.md, and push the tag to Github, please run npm version [major | minor | patch] depending on which you want. Then run ./publish.sh to publish the package/demo.

Browser Support

We support both WebGL1 and WebGL2 contexts, which provides near universal coverage across Safari, Firefox, Chrome, and Edge. Please file an issue if you find a browser in which Viv does not work.

Documentation

Please navigate to viv.gehlenborglab.org to see the full documenation.

viv's People

Contributors

ilan-gold avatar manzt avatar mccalluc avatar dependabot[bot] avatar andreasg123 avatar ngehlenborg avatar keller-mark avatar oeway avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.