How ChRIS Works
Let's get started.In this tutorial, you'll learn about what ChRIS is, what technologies it's comprised of, and how it is architected.
This tutorial is based on a presentation, "Medical Image Processing with OpenShift and OpenStack,” given by Dan McPherson (Red Hat), Rudolph Pienaar (Boston Children's Hospital), and Ata Turk (Mass Open Cloud) at the Red Hat Summit in 2018. The full video of this presentation is available, but for the purposes of this tutorial we have broken it down into chunks summarizing each section and linking directly to the timestamp where that part of the presentation begins.
The Landscape of Medical Image Processing Tools
We begin with a brief background on the landscape of medical image processing tools to better understand the context driving the technological and architectural choices made in ChRIS.
Computational research tends to happen in relative isolation, and researchers tend to build their own platform. The focus is on solving very difficult problems more efficiently, accurately, and rapidly; there aren’t incentives to build a system that’s easy to run, can be used for more general problems, or that will ever leave the lab it was created in. ChRIS aims to provide a better infrastructure for researchers to build cleaner solutions.Watch video
“There is about two decades worth of amazing tools that exist in the research community, but these almost never make it out to the clinical front lines,” Rudolph explains. “No clinician is ever going to fire up a Linux terminal, type in some commands, think about SSH and SCP and login to a cluster—it’s never going to happen.”
Providing a simple user interface for clinicians to be able to benefit from this computing power is a big piece of the vision for ChRIS. ChRIS is comprised of containerized, microservice open source tools that communicate with each other via REST-based APIs in order to enable that vision.Watch video
Mass Open Cloud
The Mass Open Cloud (MOC) is a collaborative effort between research universities, government, and industry.
Unlike large commercial clouds, MOC provides an open ecosystem of cloud services backed by OpenStack and OpenShift. The MOC operates in datacenter with a 15 Megawatts capacity and 2 acres of computing space—it is about half the size of the average Google datacenter.
MOC is particularly interested in the healthcare space—hospitals are generating more and more data and facing challenges in maintaining and analyzing it. MOC is interested in running industry-level healthcare applications on their cloud to analyze and learn from. Healthcare applications can also gain access to the MOC's computing capacity without having to hand their data over to a large commercial cloud.Watch video
Everything in ChRIS is built as OCI / docker images, including the image processing tools. With ChRIS, anyone can take an existing tool, containerize it, and gain portability to run it anywhere from a single laptop to a full production environment.
OpenShift allows for scaling jobs running image processors in ChRIS using resource management (CPU/Memory/Network/GPU). It also provides operational standardization for logging, metrics, and cluster management.
Another area of focus is around Artifical Intelligence (AI) and Machine Learning (ML), e.g. Spark and Tensorflow. A lot of research is looking to use ML technologies in this space, but it’s not yet gained wide adoption in production.Watch video
Medical Image Processing
There are specific techniques that are particularly useful in the context of medical image processing and the types of image processing ChRIS plugins might typically do:
- When you take one image and match it into the space of another image.
- Classification (AI/ML)
- Automatically recognizes different structures in a scan, for example, a tumor.
- Uses the dispersion, reflection, and refraction of light within the brain to indicate oxygen metabolism in a brain.
- When you scan the same image from slightly different angles, solve diffusion equation, and build 3D image from it.
ChRIS Architecture Overview
ChRIS, from within Boston Children's Hospital, retrieves image data from a data source and image processing plugin container from a plugin store and pushes them to the Mass Open Cloud via an IO handler in MOC's OpenShift. Once computation is finished, the plugin output is retrieved back into ChRIS.
When ChRIS pushes data to the MOC, that data is stored in Swift within MOC's OpenStack. This is to enable data segmentation between jobs. When ChRIS pushes a plugin to the MOC, the OpenShift process manager processes the plugin container launches it into a job starting with an init container that pulls the data out of Swift and makes it available for the image plugin container, which passes its result to a publish container that passes the data to Swift, and the IO Handler passes the output data back to ChRIS.
The image processor doesn’t have to understand the environment around it. All it has to know is how to read and write data from the disk.Watch video
Now that you've got a good idea of what ChRIS is, what kinds of computation ChRIS enables, the technology behind ChRIS, and the basic structure of its architecture, why not get started running ChRIS on your own?
Here's a full set of instructions to get ChRIS running on your local system so you can start working with the codebase.