Back to Projects List
3DSlicerHub
Key Investigators
  - Rafael Nebot (ITC - Instituto Tecnológico de Canarias)
 
  - Paula Moreno (ITC)
 
  - Juan Ruiz (ULPGC)
 
  - Idafen Santana (ULPGC)
 
  - Steve Pieper
 
Project Description
Multiuser approach to Slicer in a browser, based on Slicer Docker
Main Features
  - Browser based 3D Slicer using Slicer Docker, similar to AWS AppStream.
 
  - Per-user workspace, with persistent data and configuration.
 
  - Session control, including quick URL sharing convenience, for educational and collaborative purposes.
 
  - Authentication using OpenLDAP.
 
Objective
  - Use private clouds with GPU virtual machines.
 
  - Make the software configuration persistent after deleting the container.
 
  - Migrate from Docker+DockerCompose to Kubernetes+podman.
 
  - Set the size of 3DSlicer web window to fit the size of the user’s screen and other novnc settings.
 
  - USB over IP + OpenIGTLink + Slicer in Docker.
 
Approach and Plan
  - (o.1) GPU in Slicer Image: modify Slicer image to add nVidia drivers.
 
  - (o.1) GPU using separate MONAI Label images: analyze and design how to improve session manager to allow users to launch “pod-sets” (e.g. Slicer+MONAI, Slicer, Slicer+Orthanc, …).
 
  - (o.2) Share current status of the feataure with people knowing about Slicer to fix the issue “saving config in laptop works, in VM it does not”.
 
  - (o.3) Play with “kubernetes” package to familiariaze ourselves with the capabilities.
 
  - (o.3) Rewrite parts of 3d slicer hub accessing to containers to be able to work with “kubernetes” Python package.
 
  - (o.3) Start testing
 
  - (o.4) Gather information with participants knowing about websockify.
 
  - (o.5) Compile information about IGT protocol with participants in NAMIC.
 
  - (o.5) Modify design of 3dslicerhub architecture to enable IGT capabilities for Slicer containers
 
Progress and Next Steps
  - Slicer in Docker with GPU.
    
      - Approach: modify root image to one by nVidia.
 
    
    
      - Slicer works and detects the GPU.
        
          - But X11 server and the window manager do not start correctly 
    - Next:
 
        
       
      - from AWS/GCE instance image build scripts (https://github.com/pieper/SlicerMachines) extract X11 config sections to prepare nVidia configuration.
 
      - modify to ensure the image works on computers without GPU.
 
      - fork original repository (https://github.com/pieper/SlicerDockers), prepare pull request.
 
      - use as base image for SlicerHub spawner.
 
    
   
  - Persistence of configuration
    
      - A bug in the preparation of Slicer.ini was detected and solved.
 
      - A custom Slicer image is built using a Slicer.ini containing a connection to the Orthanc server of the OpenDx28 platform.
 
    
   
  - Migration from Docker Compose to Kubernetes
    
      - Study of Kubernetes. Two “technology scope” adjustments:
 
    
    
      - “podman” not ready for production, Docker used (also better for images with CUDA support).
 
      - Use of “kubectl” instead of Python package (direct REST calls).
      - Refactor current 3dslicerhub to enable switching between Container Orchestrator managers: baseline implementation, new implementation.
      - Efforts adapting for K8s concepts: because of the different scopes of Docker Compose and Kubernetes, concepts do not match exactly.
      - Next:
 
      - Find ways, using kubectl and resource files to (see diagram below):
        
          - Deploy NGINX service, using a volume containing “nginx.conf”.
 
          - Deploy SlicerHub service, using the same volume.
 
          - Execute “kubectl” from SlicerHub service to access its own K8s cluster.
 
        
       
      - Continue adaptation of Container Orchestrator implementation for Kubernetes.
 
      - Test locally.
 
      - Deploy at Teide VMs.
 
    
   
Illustrations




Screenshots
–>
–>
–>

Background and References