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:
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.