google / neuroglancer

WebGL-based viewer for volumetric data
Apache License 2.0
1.09k stars 299 forks source link

Neuroglancer: Web-based volumetric data visualization

License PyPI Build DOI

Neuroglancer is a WebGL-based viewer for volumetric data. It is capable of displaying arbitrary (non axis-aligned) cross-sectional views of volumetric data, as well as 3-D meshes and line-segment based models (skeletons).

This is not an official Google product.

Examples

A live demo is hosted at https://neuroglancer-demo.appspot.com. (The prior link opens the viewer without any preloaded dataset.) Use the viewer links below to open the viewer preloaded with an example dataset.

The four-pane view consists of 3 orthogonal cross-sectional views as well as a 3-D view (with independent orientation) that displays 3-D models (if available) for the selected objects. All four views maintain the same center position. The orientation of the 3 cross-sectional views can also be adjusted, although they maintain a fixed orientation relative to each other. (Try holding the shift key and either dragging with the left mouse button or pressing an arrow key.)

Supported data sources

Neuroglancer itself is purely a client-side program, but it depends on data being accessible via HTTP in a suitable format. It is designed to easily support many different data sources, and there is existing support for the following data APIs/formats:

Supported browsers

Keyboard and mouse bindings

For the complete set of bindings, see src/ui/default_input_event_bindings.ts, or within Neuroglancer, press h or click on the button labeled ? in the upper right corner.

Troubleshooting

Multi-threaded architecture

In order to maintain a responsive UI and data display even during rapid navigation, work is split between the main UI thread (referred to as the "frontend") and a separate WebWorker thread (referred to as the "backend"). This introduces some complexity due to the fact that current browsers:

The "frontend" UI thread handles user actions and rendering, while the "backend" WebWorker thread handle all queuing, downloading, and preprocessing of data needed for rendering.

Documentation Index

Building

node.js is required to build the viewer.

  1. First install NVM (node version manager) per the instructions here:

https://github.com/creationix/nvm

  1. Install a recent version of Node.js if you haven't already done so:

    nvm install stable

  2. Install the dependencies required by this project:

    (From within this directory)

    npm i

    Also re-run this any time the dependencies listed in package.json may have changed, such as after checking out a different revision or pulling changes.

  3. To run a local server for development purposes:

    npm run dev-server

    This will start a server on http://localhost:8080.

  4. To run the unit test suite on Chrome:

    npm test

  5. See package.json for other commands available.

Discussion Group

There is a Google Group/mailing list for discussion related to Neuroglancer: https://groups.google.com/forum/#!forum/neuroglancer.

Related Projects

Contributing

Want to contribute? Great! First, read CONTRIBUTING.md.

License

Copyright 2016 Google Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this software except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.