viv

Library for multiscale visualization of high-resolution multiplexed bioimaging data on the web. Directly renders Zarr and OME-TIFF.

https://github.com/hms-dbmi/viv

Science Score: 85.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 3 DOI reference(s) in README
  • Academic publication links
    Links to: nature.com
  • Committers with academic emails
    1 of 19 committers (5.3%) from academic institutions
  • Institutional organization owner
    Organization hms-dbmi has institutional domain (dbmi.hms.harvard.edu)
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (14.3%) to scientific vocabulary

Keywords

hidivelab hubmap imaging ome-tiff openmicroscopy viv zarr

Keywords from Contributors

standardization mesh pde interpretability widgets marimo parallel flux ode automatic-differentiation
Last synced: 6 months ago · JSON representation ·

Repository

Library for multiscale visualization of high-resolution multiplexed bioimaging data on the web. Directly renders Zarr and OME-TIFF.

Basic Info
Statistics
  • Stars: 316
  • Watchers: 13
  • Forks: 51
  • Open Issues: 64
  • Releases: 15
Topics
hidivelab hubmap imaging ome-tiff openmicroscopy viv zarr
Created about 6 years ago · Last pushed 7 months ago
Metadata Files
Readme License Citation

README.md

Viv npm version package documenation

A WebGL-powered toolkit for interactive visualization of high-resolution, multiplexed bioimaging datasets.

Interactive volumetric view in web browser; sliders control visible planes. Multi-channel rendering of high-resolution microscopy dataset

About

Viv is a JavaScript library for rendering OME-TIFF and OME-NGFF (Zarr) directly in the browser. The rendering components of Viv are packaged as deck.gl layers, making it easy to compose with existing layers to create rich interactive visualizations.

More details and related work can be found in our paper and original preprint. Please cite our paper 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." Nature Methods (2022), doi:10.31219/10.1038/s41592-022-01482-7

💻 Related Software

| Screenshot | Description | :-------------------------:|:-------------------------: Avivator viewer running in Chrome | Avivator
A lightweight viewer for local and remote datasets. The source code is include in this repository under avivator/. See our 🎥 video tutorial to learn more. Vizarr viewer running in Jupyter Notebook | Vizarr
A minimal, purely client-side program for viewing OME-NGFF and other Zarr-based images. Vizarr supports a Python backend using the imjoy-rpc, allowing it to not only function as a standalone application but also directly embed in Jupyter or Google Colab Notebooks.

💥 In Action

💾 Supported Data Formats

Viv's data loaders support OME-NGFF (Zarr), OME-TIFF, and Indexed OME-TIFF*. We recommend converting proprietrary file formats to open standard formats via the bioformats2raw + raw2ometiff pipeline. Non-pyramidal datasets 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.

*We describe Indexed OME-TIFF in our paper as an optional enhancement to provide efficient random chunk access for OME-TIFF. Our approach substantially improves chunk load times for OME-TIFF datasets with large Z, C, or T dimensions that otherwise may incur long latencies due to seeking. More information on generating an IFD index (JSON) can be found in our tutorial or documentation.

💽 Installation

bash $ npm install @hms-dbmi/viv

You will also need to install deck.gl and other peerDependencies manually. This step prevent users from installing multiple versions of deck.gl in their projects.

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

Breaking changes may happen on the minor version update. Please see the changelog for information.

📖 Documentation

Detailed API information and example sippets can be found in our documentation.

🏗️ Development

This repo is a monorepo using pnpm workspaces. The package manager used to install and link dependencies must be pnpm.

Each folder under packages/ are a published as a separate packages on npm under the @vivjs scope. The top-level package @hms-dbmi/viv exports from these dependencies.

To develop and test the @hms-dbmi/viv package:

  1. Run pnpm install in viv root folder
  2. Run pnpm dev to start a development server
  3. Run pnpm test to run all tests (or specific, e.g., pnpm test --filter=@vivjs/layers)

🛠️ Build

To build viv's documentation and the Avivator website (under sites/), run:

sh pnpm build # all packages, avivator, and documentation pnpm -r build --filter=avivator # build a specific package or site

📄 Sending PRs and making releases

For changes to be reflected in package changelogs, run npx changeset and follow the prompts.

Note not every PR requires a changeset. Since changesets are focused on releases and changelogs, changes to the repository that don't effect these won't need a changeset (e.g., documentation, tests).

The Changesets GitHub Action will create and update a PR that applies changesets versions of @vivjs/ packages to NPM.

🌎 Browser Support

Viv supports coverage across Safari, Firefox, Chrome, and Edge. Please file an issue if you find a browser in which Viv does not work.

Owner

  • Name: Harvard Medical School - Department of Biomedical Informatics
  • Login: hms-dbmi
  • Kind: organization
  • Location: Boston

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it using these metadata."
title: "Viv"
authors:
  - given-names: "Trevor"
    family-names: "Manz"
    orcid: "https://orcid.org/0000-0001-7694-5164"
    affiliation: "Harvard Medical School"
  - given-names: "Ilan"
    family-names: "Gold"
    orcid: "https://orcid.org/0000-0002-5823-1026"
    affiliation: "Harvard Medical School"
url: "https://github.com/hms-dbmi/viv"
preferred-citation:
  type: article
  title: "Viv: multiscale visualization of high-resolution multiplexed bioimaging data on the web"
  authors:
    - given-names: "Trevor"
      family-names: "Manz"
      orcid: "https://orcid.org/0000-0001-7694-5164"
      affiliation: "Harvard Medical School"
    - given-names: "Ilan"
      family-names: "Gold"
      orcid: "https://orcid.org/0000-0002-5823-1026"
      affiliation: "Harvard Medical School"
    - given-names: "Nathan Heath"
      family-names: "Patterson"
      affiliation: "Vanderbilt University"
      orcid: "https://orcid.org/0000-0002-0064-1583"
    - given-names: "Chuck"
      family-names: "McCallum"
      affiliation: "Harvard Medical School"
      orcid: "https://orcid.org/0000-0003-4039-9768"
    - given-names: "Mark S."
      family-names: "Keller"
      affiliation: "Harvard Medical School"
      orcid: "https://orcid.org/0000-0003-3003-874X"
    - given-names: "Bruce W."
      family-names: "Herr"
      name-suffix: "II"
      affiliation: "Indiana University"
      orcid: "https://orcid.org/0000-0002-6703-7647"
    - given-names: "Kay"
      family-names: "Börner"
      affiliation: "Indiana University"
      orcid: "https://orcid.org/0000-0002-3321-6137"
    - given-names: "Jeffrey M."
      family-names: "Spraggins"
      affiliation: "Vanderbilt University"
      orcid: "https://orcid.org/0000-0001-9198-5498"
    - given-names: "Nils"
      family-names: "Gehlenborg"
      affiliation: "Harvard Medical School"
      orcid: "https://orcid.org/0000-0003-0327-8297"
  doi: "10.1038/s41592-022-01482-7"
  journal: "Nature Methods"
  month: 5
  year: 2022

GitHub Events

Total
  • Issues event: 17
  • Watch event: 31
  • Delete event: 68
  • Issue comment event: 94
  • Push event: 61
  • Pull request review comment event: 20
  • Pull request review event: 25
  • Pull request event: 92
  • Fork event: 6
  • Create event: 52
Last Year
  • Issues event: 17
  • Watch event: 31
  • Delete event: 68
  • Issue comment event: 94
  • Push event: 61
  • Pull request review comment event: 20
  • Pull request review event: 25
  • Pull request event: 92
  • Fork event: 6
  • Create event: 52

Committers

Last synced: 8 months ago

All Time
  • Total Commits: 522
  • Total Committers: 19
  • Avg Commits per committer: 27.474
  • Development Distribution Score (DDS): 0.446
Past Year
  • Commits: 35
  • Committers: 5
  • Avg Commits per committer: 7.0
  • Development Distribution Score (DDS): 0.514
Top Committers
Name Email Commits
ilan-gold i****d@g****m 289
Trevor Manz t****z@g****m 106
dependabot[bot] 4****] 70
Chuck McCallum m****c 16
Andreas Girgensohn a****3 8
Mark Keller 7****k 7
github-actions[bot] 4****] 7
Nils Gehlenborg n****s@h****u 5
Robert Schiemann b****d@g****m 3
Peter Todd x****e 2
EricMoerthVis 4****s 1
HongKee Moon h****n@m****m 1
Nathan Drezner 3****n 1
Nikolay Akhmetov n****v@g****m 1
Roger Trullo r****o@h****m 1
Wei Ouyang o****7@g****m 1
Yi Sun i****s@g****e 1
anton-slashm 1****m 1
s-n-i 1****i 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 6 months ago

All Time
  • Total issues: 91
  • Total pull requests: 327
  • Average time to close issues: almost 2 years
  • Average time to close pull requests: about 1 month
  • Total issue authors: 29
  • Total pull request authors: 18
  • Average comments per issue: 2.95
  • Average comments per pull request: 1.09
  • Merged pull requests: 181
  • Bot issues: 1
  • Bot pull requests: 175
Past Year
  • Issues: 16
  • Pull requests: 94
  • Average time to close issues: 6 days
  • Average time to close pull requests: 18 days
  • Issue authors: 9
  • Pull request authors: 7
  • Average comments per issue: 0.44
  • Average comments per pull request: 0.67
  • Merged pull requests: 36
  • Bot issues: 0
  • Bot pull requests: 72
Top Authors
Issue Authors
  • ilan-gold (22)
  • manzt (13)
  • xinaesthete (8)
  • ngehlenborg (7)
  • keller-mark (6)
  • yarikoptic (4)
  • rj3d (3)
  • alexeykurbako (3)
  • dependabot[bot] (2)
  • CameronFRWatson (2)
  • JohnGrime (2)
  • s-n-i (2)
  • Dev-Lan (2)
  • aliaksandr-voranau (2)
  • vadzimvashchanka (2)
Pull Request Authors
  • dependabot[bot] (181)
  • manzt (80)
  • ilan-gold (48)
  • github-actions[bot] (13)
  • xinaesthete (7)
  • keller-mark (4)
  • rj3d (3)
  • EricMoerthVis (2)
  • mccalluc (2)
  • anton-slashm (1)
  • haxiomic (1)
  • alexeykurbako (1)
  • hkmoon (1)
  • ndrezn (1)
  • s-n-i (1)
Top Labels
Issue Labels
bug (24) enhancement (11) investigation (7) good first issue (4) dependencies (2) help wanted (1) invalid (1) github_actions (1) javascript (1)
Pull Request Labels
dependencies (181) javascript (165) github_actions (11) bug (1)

Packages

  • Total packages: 10
  • Total downloads:
    • npm 76,561 last-month
  • Total dependent packages: 34
    (may contain duplicates)
  • Total dependent repositories: 45
    (may contain duplicates)
  • Total versions: 309
  • Total maintainers: 5
npmjs.org: @hms-dbmi/viv

> A WebGL-powered toolkit for interactive visualization of high-resolution, multiplexed bioimaging datasets.

  • Versions: 58
  • Dependent Packages: 7
  • Dependent Repositories: 17
  • Downloads: 9,849 Last month
Rankings
Dependent packages count: 2.8%
Downloads: 2.9%
Dependent repos count: 2.9%
Average: 3.3%
Stargazers count: 3.8%
Forks count: 4.2%
Last synced: 6 months ago
npmjs.org: @vivjs/constants

> **Warning** Internal module

  • Versions: 25
  • Dependent Packages: 6
  • Dependent Repositories: 4
  • Downloads: 9,604 Last month
Rankings
Downloads: 2.6%
Dependent packages count: 3.2%
Stargazers count: 3.8%
Average: 3.9%
Forks count: 4.2%
Dependent repos count: 5.6%
Maintainers (1)
Last synced: 6 months ago
npmjs.org: @vivjs/types

> Basic types used by Viv

  • Versions: 25
  • Dependent Packages: 5
  • Dependent Repositories: 4
  • Downloads: 9,538 Last month
Rankings
Downloads: 2.6%
Dependent packages count: 3.7%
Stargazers count: 3.8%
Average: 4.0%
Forks count: 4.2%
Dependent repos count: 5.6%
Maintainers (1)
Last synced: 6 months ago
npmjs.org: @vivjs/extensions

> A collection of Deck.gl [`LayerExtension`](https://deck.gl/docs/developer-guide/custom-layers/layer-extensions#layerextension-interface) modules for `@vivjs/layers`

  • Versions: 25
  • Dependent Packages: 4
  • Dependent Repositories: 4
  • Downloads: 9,587 Last month
Rankings
Downloads: 2.6%
Stargazers count: 3.8%
Average: 4.1%
Forks count: 4.2%
Dependent packages count: 4.5%
Dependent repos count: 5.6%
Maintainers (1)
Last synced: 6 months ago
npmjs.org: @vivjs/loaders

> Utilities for loading multiscale imaging datasets in Viv

  • Versions: 25
  • Dependent Packages: 4
  • Dependent Repositories: 4
  • Downloads: 9,538 Last month
Rankings
Downloads: 2.6%
Stargazers count: 3.8%
Average: 4.1%
Forks count: 4.2%
Dependent packages count: 4.5%
Dependent repos count: 5.6%
Maintainers (1)
Last synced: 6 months ago
npmjs.org: @vivjs/layers

> A collection of custom Deck.gl layers for bioimaging datasets

  • Versions: 25
  • Dependent Packages: 3
  • Dependent Repositories: 4
  • Downloads: 9,526 Last month
Rankings
Downloads: 2.6%
Stargazers count: 3.8%
Forks count: 4.2%
Average: 4.4%
Dependent repos count: 5.6%
Dependent packages count: 5.9%
Maintainers (1)
Last synced: 6 months ago
npmjs.org: @vivjs/views

> Deck.gl [`View`](https://deck.gl/docs/api-reference/core/view) implementations for Viv

  • Versions: 25
  • Dependent Packages: 3
  • Dependent Repositories: 4
  • Downloads: 9,483 Last month
Rankings
Downloads: 2.6%
Stargazers count: 3.8%
Forks count: 4.2%
Average: 4.4%
Dependent repos count: 5.6%
Dependent packages count: 5.9%
Maintainers (1)
Last synced: 6 months ago
npmjs.org: @vivjs/viewers

> Drop-in React components for Viv

  • Versions: 25
  • Dependent Packages: 2
  • Dependent Repositories: 4
  • Downloads: 9,435 Last month
Rankings
Downloads: 2.6%
Stargazers count: 3.8%
Forks count: 4.2%
Average: 5.0%
Dependent repos count: 5.6%
Dependent packages count: 8.8%
Maintainers (1)
Last synced: 6 months ago
proxy.golang.org: github.com/hms-dbmi/viv
  • Versions: 72
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 6.5%
Average: 6.7%
Dependent repos count: 7.0%
Last synced: 6 months ago
npmjs.org: zelibobla-viv

High bit depth, high resolution, many channels, low overhead

  • Versions: 4
  • Dependent Packages: 0
  • Dependent Repositories: 0
  • Downloads: 1 Last month
Rankings
Stargazers count: 4.9%
Forks count: 5.5%
Average: 22.1%
Dependent repos count: 25.3%
Dependent packages count: 32.9%
Downloads: 41.7%
Maintainers (1)
Last synced: 6 months ago

Dependencies

package.json npm
  • @deck.gl/test-utils ^8.6.7 development
  • @luma.gl/core ^8.5.10 development
  • @luma.gl/gltools ^8.5.10 development
  • @luma.gl/test-utils ^8.5.10 development
  • @probe.gl/test-utils ^3.4.1 development
  • @rollup/plugin-node-resolve ^10.0.0 development
  • @rollup/plugin-sucrase ^3.1.0 development
  • @vitejs/plugin-react ^1.0.1 development
  • abortcontroller-polyfill ^1.5.0 development
  • browserify ^17.0.0 development
  • deck.gl ^8.6.7 development
  • documentation ^13.1.0 development
  • eslint ^7.12.1 development
  • eslint-config-airbnb ^18.2.0 development
  • eslint-config-prettier ^6.15.0 development
  • eslint-plugin-import ^2.22.1 development
  • eslint-plugin-react ^7.21.5 development
  • eslint-plugin-react-app ^6.2.2 development
  • gl ^4.4.1 development
  • glsl-colormap ^1.0.1 development
  • prettier ^2.2.1 development
  • promise.prototype.finally ^3.1.2 development
  • rollup ^2.32.1 development
  • rollup-plugin-glslify ^1.2.0 development
  • serve-static ^1.14.1 development
  • tap-spec ^5.0.0 development
  • tape ^5.0.1 development
  • tape-catch ^1.0.6 development
  • tape-run ^8.0.0 development
  • typescript ^4.1.3 development
  • vite ^2.8.6 development
  • @math.gl/culling ^3.4.2
  • fast-deep-equal ^3.1.3
  • fast-xml-parser ^3.16.0
  • geotiff ^2.0.5
  • lzw-tiff-decoder ^0.1.1
  • math.gl ^3.3.0
  • quickselect ^2.0.0
  • zarr ^0.5.1
packages/constants/package.json npm
  • @luma.gl/constants ~8.5.16
packages/extensions/package.json npm
  • @vivjs/types workspace:* development
  • glsl-colormap ^1.0.1 development
  • @vivjs/constants workspace:*
packages/layers/package.json npm
  • @math.gl/core ^3.5.7
  • @math.gl/culling ^3.5.7
  • @vivjs/constants workspace:*
  • @vivjs/extensions workspace:*
  • @vivjs/loaders workspace:*
  • @vivjs/types workspace:*
packages/loaders/package.json npm
  • @vivjs/types workspace:*
  • fast-xml-parser ^3.16.0
  • geotiff ^2.0.5
  • lzw-tiff-decoder ^0.1.1
  • quickselect ^2.0.0
  • zarr ^0.5.1
packages/main/package.json npm
  • @vivjs/constants workspace:*
  • @vivjs/extensions workspace:*
  • @vivjs/layers workspace:*
  • @vivjs/loaders workspace:*
  • @vivjs/types workspace:*
  • @vivjs/viewers workspace:*
  • @vivjs/views workspace:*
packages/types/package.json npm
  • @vivjs/constants workspace:*
  • math.gl ^3.5.7
packages/viewers/package.json npm
  • @vivjs/constants workspace:*
  • @vivjs/extensions workspace:*
  • @vivjs/views workspace:*
  • fast-deep-equal ^3.1.3
packages/views/package.json npm
  • @math.gl/core ^3.5.7
  • @vivjs/layers workspace:*
  • @vivjs/loaders workspace:*
  • math.gl ^3.5.7
pnpm-lock.yaml npm
  • 1339 dependencies
sites/avivator/package.json npm
  • @vitejs/plugin-react ^1.3.2 development
  • serve-static ^1.15.0 development
  • vite ^2.9.9 development
  • @hms-dbmi/viv workspace:*
  • @material-ui/core ^4.11.0
  • @material-ui/icons ^4.9.1
  • @material-ui/lab ^4.0.0-alpha.56
  • @math.gl/core ^3.5.7
  • geotiff ^2.0.5
  • lodash ^4.17.21
  • react ^16.8.0 || ^17.0.0
  • react-dom ^16.8.0 || ^17.0.0
  • react-dropzone ^11.2.3
  • react-router-dom ^5.2.0
  • zustand ^3.4.1
sites/docs/package.json npm
  • @rollup/plugin-node-resolve ^13.3.0 development
  • documentation ^13.2.5 development
  • rollup ^2.75.7 development
  • @hms-dbmi/viv workspace:*
  • @rollup/plugin-sucrase ^4.0.4
.github/workflows/ci.yml actions
  • actions/checkout v4 composite
  • actions/setup-node v3 composite
  • pnpm/action-setup v2 composite
.github/workflows/release.yml actions
  • actions/checkout v4 composite
  • changesets/action v1 composite
  • pnpm/action-setup v2 composite
.github/workflows/pages.yml actions
  • actions/checkout v4 composite
  • actions/deploy-pages v2 composite
  • actions/upload-pages-artifact v2 composite
  • pnpm/action-setup v2 composite