- Steve Pieper
- Theodore Aptekarev
This project is aimed to provide an updated overview of existing techniques of using 3D Slicer over an internet connection.
During this project week we would like to:
- Categorize existing data regarding using slicer over the internet
- Test and create/link a set of easy-to-use manuals/tutorials/boilerplates that explain basic setup options and use cases
- Collect, categorize and analyse forum posts that ask about using Slicer remotely.
- Review existing techniques (Docker, Cloud VM, Slicer Notebooks, Browser-based web app, Headless usage).
- Create a set of example manuals/tutorials/boilerplates that show basic setup options for some of the existing techniques.
- Submit manuals for review and agree about featuring them in some place visible to relevant people.
After running a simple scrapper through the forum and collecting all articles that mention keywords such as “web”, “cloud”, “internet” and “remote” a list of 170 articles was filtered based on the criteria of being related to some sort of remote usage of Slicer and not simply mentioning “the cloud” in some context.
The chosen 170 articles were filtered based on relevance to cloud or other remote web-based environments. The resulting 63 forum posts were scanned for external links and their click count.
After analyzing the content and grouping the links tha data leads us to the 4 main approaches:
-
Slicer as a desktop app running on a remote computer with remote desktop access
For remote access to regular workstations VNC/RPD is used quite often. VNC connection errors appear in the forum topic sample quite frequently.
For running Slicer on a machine rented form a Cloud provider the forum pointed to the following:
# Technology Description 4 SlicerDockers A collection of docker containers with Various versions of Slicer 6 VirtualGL Techology behind noVNC that allows remote access to a Slicer machine via a web browser 11 SlicerGCPSetup Instructions on setting up Slicer on a virtual machine rented from Google 12 SlicerDocker A collection of docker containers with Slicer and Slicer Notebook -
Slicer as a headless computation node running on a remote computer
The SlicerDockers container contains a simple proof of concept example to run a slicer based script in a docker instance.
# Technology Description 4 SlicerDockers A collection of docker containers with Various versions of Slicer 5 Girder Slicer cli module for the Girder data management platform 7 SlicerWeb Slicer module that exposes a web server to support web services an applications. -
SlicerJupyter with a kernel running on a remote computer with TCP access
While using Slicer via a Jupyter notebook it is possible to access all the features of the application, render all existing UI elements, use ipywidgets to control parameters in Slicer and have remote interactive access to the application as a whole. See the Binder link to try this functionality online. Voilà being a part of Jupyter allows creation of simple dashboards.
# Technology Description 1 SlicerJupyter A collection of instructions on setting up a Jupyter Notebook server inside Slicer locally and remotely. 3 Binder A collection of notebooks for Binder demonstrating basic Slicer functionality. 8 Voilà Dashboard creation toolkit for Jupyter ecosystem 13 Google Collab Google's notebook service -
Pure web re-implementation of the slicer UI
If the task is to streampline the existing UI for a single user, serving a Slicelet from a docker container is a viable solution. For many of the re-implementations of the Slicer UI - vtk.js is the technology that is used unter the hood.
# Technology Description 2 Slicelets Documentation for creating simplified UI for specific workflows. 10 vtk.js Javascript port of the Visualization Tool Kit 15 dcmjs/vtkDisplay An example that demonstrates how to display a DICOM Segmentation object with vtk-js. Apart from the technologies mentioned there are a lot of web-applications and toolkits that can be a starting point or an inspiration for re-implementing certain functionality of Slicer:
# Technology Description 9 ParaView Glance Web version of Paraview 14 Universal Viewer Web based 2D image viewer 16 Sphinx-Gallery Web based image viewer and gallery 17 SliceDrop Simple browser based image viewer -- OHIF A zero-footprint medical image viewer -- Cornerstone.js A JS library to display interactive medical images Cloud providers:
# Technology Description 18 Jetstream HPC Cloud infrastructure provider 19 Microsoft Azure VMs Cloud infrastructure provider 20 Google Cloud Cloud infrastructure provider
To test different approaches a repository with docker-compose configuration files was created. It links to the projects mentioned above and makes launching sample containers as simple as running a single docker-compose up
command.
- Motivating Example: high resolution brain imaging data running on a cloud hosted GPU: https://youtu.be/oHZBFm02wbM
- Example of running docker in google cloud environment: https://youtu.be/WgiT5mCfG_w
- SlicerDockers can run in cloud machines with a container optimized OS on a VM or a regular OS with docker installed. You can access the desktop by exposing the port or by tunneling the port through ssh. SlicerDocker should also work in this way.
- https://github.com/pieper/SlicerMachines is a system for generating bootable machine images that come pre-loaded with a GPU-backed Slicer and a desktop environment.
- SlicerCompose runs containers from SlicerDockers and SlicerJupyter using docker-compose configuration files