Automated Deployment of Gadgetron Workstation in Azure

A while back, I helped start the Gadgetron project. It is an open source medical image reconstruction engine, which has been used for MRI reconstruction. The build pipeline for the Gadgetron produces Docker images that allow users to easily run the Gadgetron without setting up the required dependencies (there are a few). I showed recently how you can run the Gadgetron in Kubernetes in Azure. Users that would like to develop the Gadgetron and contribute to the project will need to set up a workstation with all the dependencies installed. It is a bit involved if you want to be able to work with all the pieces including the ISMRMRD Raw Data format and the associated data converters for commercial MRI systems.

To make this process easy, I have created a push button template for deploying a Gadgetron workstation in Azure. You can find it as part of my Infrastructure as Code repository. Specifically, go to https://github.com/hansenms/iac/tree/master/gadgetron-workstation and there will be a button to click to deploy a workstation in Azure:

This button will take you to the Azure Portal (https://portal.azure.com), where you will need to fill in a few details like the resource group where you would like to deploy, the username of your user, an SSH key, and the virtual machine type (size). The automated deployment will:

  1. Create a Linux Ubuntu 18.04 VM with all the Gadgetron dependencies installed.
  2. Install an x2go server to allow you to connect to a graphical desktop.
  3. Download the source code for Gadgetron, ISMRMRD, converters, etc. into the users home and compile. The binaries will be installed in ~/local

The deployment and compilation of code will take 20-60 minutes (depending on the size of VM you have chosen) and once complete, you can sign in and either run the Gadgetron or start working on the code.

To connect to the remote desktop, download the x2go client from https://wiki.x2go.org/doku.php. The Ubuntu MATE desktop is installed, and you can pick that desktop type when creating the connection. Supply your SSH private key and username and once connected you should see a desktop environment. Here is an example of running the Gadgetron in one terminal and sending data from another:

And that's it. You are ready to do development and contribute to the Gadgetron project. The current setup does not install NVIDIA CUDA drivers or libraries, but you could easily add that by looking at one of the Docker files that include CUDA.

Let me know if you have questions/comments/suggestions. If you want additional tools added, put up a pull request and I am happy to merge it in.