High Quality Software Practices Build an Extensible Medical Image Analysis Platform
With funding from the NIH via the Neuroimaging Analysis Center (NAC) and the National Alliance for Medical Image Computing (NA-MIC), Kitware has been collaborating on the refactoring and enhancement of 3D Slicer. Slicer is a tool for visualizing and quantifying medical images and related biomedical data. It provides advanced visualization, segmentation (e.g., boundary delineation), and registration algorithms that work with a wide variety of medical images: MRI, CT, PET, ultrasound, microscopy, and more. Slicer is a bridge between laboratory research, clinical studies, and patient care.
As re-affirmed with the release of version 4.2, Slicer has become a stable, extensible, and powerful platform for medical imaging analysis. It is now a shining example of the high-quality software practices and community support that are enabled by Kitware technologies, e.g., VTK, CMake, CTest, CDash, and Midas.
Slicer’s success and impact are indicated by many factors. It is being distributed on Windows, Linux, and MacOS. It has been downloaded over 48,000 times since the release of Slicer 4.0 in November 2011, and has been featured in tutorials given to thousands of researchers at workshops and conferences. It is being distributed with modular extensions created by academic and industry partners from around the world to solve challenging medical problems.
Figure 1. Kitware’s software development processes includes a continuous development, build, and test cycle (upper left). For Slicer, it has been augmented with automated package generation and distribution for multiple platforms (upper right). This has led to rapid community growth (bottom) which feeds the software development process.
This article provides a brief overview of the capabilities of Slicer and then lists several of the key technologies used and developed by the Slicer team to foster high-quality software practices within the team.
Slicer Applications
Slicer is most famous for the variety and significance of the medical image analysis findings that it has helped generate. A collection of over 125 research projects that are using Slicer is posted at http://slicer.org/pages/Slicer_Community. There are many more such projects that are not listed, because the Slicer community is a very large and very open. The following list of Slicer-based projects is meant to highlight some of the diversity and impact of Slicer.
Longitudinal MRI Study of Early Brain Development in Neuropsychiatric Disorder-Autism:
The primary goal of this UNC research project is to learn more about autism by examining cortical thickness patterns in the early developing brain. Increasing evidence indicates that brain volume in children with autism is enlarged relative to normal controls. Whether these differences are due to increased cortical thickness or increased cortical surface area, however, is less clear and is the focus of this project.
Figure 2. UNC developed the Automated Region Cortical ThiCkness (ARTIC) plug-ins in Slicer to produce cortical thickness measures for both individual and group analysis. (Image and caption provided by the Neuro Image Research and Analysis Laboratories and the Neurodevelopmental Disorders Research Center at UNC).
Modeling the Mechanics of Atrial Fibrillation:
The Comprehensive Arrhythmia Research and MAnagement (CARMA) Center at the University of Utah is a world leader in the rapidly emerging field of MRI-managed evaluation and ablation of atrial fibrillation. They are using Slicer to study the tissue remodeling of the atrial wall that is a hallmark of atrial fibrillation.
Figure 3. The CARMA Center’s Utah classification for Atrial Fibrillation staging involves segmentation of the left atrial wall from MRI, followed by quantification of enhanced vs. non-enhanced voxels in the wall. (Image and caption provided by CARMA).
Brain Tumor Resection Guidance:
Neurosurgical navigation systems have reduced the risk of complications from surgery and have allowed surgeons to remove tumors that were once considered inoperable. However, many techniques used by neurosurgical navigation systems to align pre- and intra-operative images are inaccurate when tissue deformations occur as the tumor is resected. This project is developing algorithms and infrastructure for deformable intra-operative image registration for neurosurgical guidance. The new methods employ ultrasound physics and geometry from the pre-operative images in the registration metrics. This NIH R01 is a collaboration between Brigham and Women’s hospital, with Kitware, InnerOptics, and Duke University.
Figure 4. Slicer is used to aggregate tracked intra-operative ultrasound, pre-operative MRI, and novel registration algorithms to display fused MRI and ultrasound images during procedures.
Assessment of Traumatic Brain Injury:
Nearly 1.7 million Americans suffer traumatic brain injury (TBI) annually, e.g., from car accidents, contact sports, gunshots, and improvised explosive devices. This project is investigating new methods for studying longitudinal changes in patient images to assist in predicting outcomes and prescribing treatments. Atlas-based segmentation methods and deformable registration in the presence of changing pathologies are being developed. This effort is lead by UCLA with collaborators at The University of Utah, UNC, and Kitware.
Figure 5. Example acute vs. chronic registration of TBI using geometric metamorphosis. Left: Schematic of registration framework. Right: Acute and chronic TBI images; background flow overlaid on chronic scan; pathology flow (recession areas shown in blue) overlaid on deformed acute pathology.
To achieve these diverse and cutting-edge algorithmic and visualization capabilities on a community supported software development project requires the establishment of a strong yet unobtrusive set of high-quality software practices and technologies. Those are explained next.
Slicer’s High Quality Software Processes and Technologies
Slicer has achieved its capabilities and recognition by building upon and extending complimentary open-source efforts. Many of these have been significantly enhanced by the Slicer development effort, and those enhancements have been contributed back to their originating projects. Slicer has also fostered the creation of new toolkits and processes. The list below highlights some of Slicer’s most notable enhancements and creations:
Python Integrations: Based on capabilities developed for ParaView, we have integrated a Python interface into Slicer. An interactive Python session can be started from within Slicer and have full access to the GUI, data, and algorithmic plug-ins of Slicer. Python can be used to define new algorithms and interfaces in Slicer, and scripts can be shared via the Slicer Catalog (below).
CTK: Slicer is one of the foundational toolkits that motivated and contributed to the development of the Common Toolkit (CTK). This new toolkit features a variety of Qt, DCMTK, and VTK-specific GUI elements and utilities for DICOM object I/O, DICOM query and retrieve, run-time loadable plug-ins, and the control of medical image displays.
Figure 6. A complete DICOM query and retrieve system is available as a Qt widget in CTK. Image data can be searched and downloaded from a clinical or research PACS.
CMake’s Superbuild: Slicer has exploited CMake’s ability to integrate external projects during compilation. Slicer downloads and/or builds over 35 external project dependencies during its compilation. The CMake team has worked with Slicer developers to ensure error reporting, diverse repositories, and build requirements are handled smoothly by Superbuild for Slicer.
Semi-Automated Wiki Documentation: The plug-ins of Slicer have integrated documentation that describe their inputs, parameters, operation, and outputs. The Slicer team has devised a method for automatically posting those descriptions to a wiki page for each plug-in. Those wiki pages can then be directly edited to include additional details. By automating the initial generation of these wiki pages, a base level of documentation is assured.
GUI Regression Testing: Building upon Qt technology developed by the ParaView team, the numerous tutorials of Slicer (http://www.slicer.org/pages/UserOrientation) have been converted to automated tests of the Slicer GUI. These tests can be run every night, on a multitude of machines, as part of the CTest / CDash build-test process used by Slicer.
Midas: The data required to test, demonstrate, and apply Slicer is massive and diverse. Kitware’s Midas is being used and improved to host and distribute these data via a variety of APIs: web interfaces, Python libraries, desktop applications, and C++ libraries. This technology was originally developed for ITK, so that testing data can be downloaded as needed from Midas, instead of requiring it to be packaged with each ITK (or Slicer) source code download. Testing data is versioned so that it is tied to specific code revisions. The linkages between CTest, CDash, run-time applications, and Midas continue to be expanded and refined.
Collect and distribute the products of the nightly dashboards: Every night, tens of machines build and test Slicer and submit summary reports to the Slicer dashboard via CDash. The Slicer team worked with CDash developers to extend that process, so that the compiled binaries and installation packages created as part of the testing process are automatically made available from the Slicer dashboard. A new package icon will appear next to a build-test report on a Slicer dashboard when its associated build-test products are available. That icon’s link will lead to a list of the associated binaries, test results, and packages that can be downloaded from that build-test run. This capability is now available on any new CDash installation.
Installation package management: An installation package manager module was created for Midas using CDash’s ability to collect the products of nightly dashboard. Via that Midas module, http://slicer.kitware.com now provides user-friendly access to the Slicer installation packages created by the nightly dashboard machines. From that website, installation packages for Slicer are available for a multitude of systems, e.g., various versions of Windows, MacOS, Ubuntu, and Debian Linux. A variety of package management tools have been added to this Midas module, e.g., packages can be preserved as stable or experimental releases. This technology is now being ported to other Kitware projects via http://download.kitware.com.
Slicer Catalog, aka Slicer Extension Manager: Building upon the Midas installation package management system, the Slicer, CDash, and Midas teams created the Slicer catalog which functions as an “app store” for Slicer plug-ins. It can be accessed over the web and from within Slicer. This infrastructure enables researchers to publish the code of their Slicer plug-ins so that their code is then compiled during the nightly build-test cycle of Slicer, and the resulting plug-ins are then stored by Midas and made available when the corresponding version of Slicer is run.
Figure 7. This Slicer Catalog page is available from within Slicer or over the web for simplifying the distribution and
installation of plug-ins for Slicer. This catalog page and underlying data are built upon Midas and can be re-used in other applications having plug-ins.
Conclusion
The combination of open source, high quality software processes, and advanced visualization and analysis algorithms from world-class collaborators have been the hallmark of Slicer. This article provides a glimpse into the diversity of applications enabled by Slicer and the high-quality software processes and technologies used to build and maintain it. It highlights that by building upon and contributing back to existing open source efforts (e.g., ParaView and CDash), by integrating those efforts to build technologies that can be re-used by other projects (e.g., Midas for installation package management), and by creating new toolkits that conform to existing standards and fill gaps in existing practices (e.g., CTK), a thriving and broad community is fostered.
\Kitware continues to expand its contributions to the Slicer community and to transitions those developments to its consulting practices. With the blessing of the Slicer community we now offer a variety of Slicer-related consulting services. These services include the development of custom plug-ins for advanced data analysis and visualization problems, the re-packaging of Slicer for streamlined applications to specific problems, the integration of Slicer into existing workflows and infrastructures, and the development of entirely new applications based on Slicer and its high-quality software practices and technologies. All products that result do not have recurring licensing fees. If you are interested in exploring ways in which Slicer can help your commercial efforts, please contact kitware@kitware.com.
Stephen Aylward is the Senior Director of Operations at Kitware’s North Carolina Office. Dr. Aylward is also an Associate Editor of IEEE Transactions on Medical Imaging, is a member of the Pattern Recognition Society, serves on the SPIE Medical Imaging: Image Processing program committee.
Jean-Christophe Fillion-Robin is an R&D Engineer at Kitware. His research interests include swarm intelligent systems, bio-inspired systems, and cognitive psychology. He is an active developer of the Slicer toolkit.
Julien Finet is an R&D Engineer at Kitware. He is involved in numerous projects in the medical team. He is notably a lead developer for the Slicer, CTK, and MSVTK projects.
Zach Mullen is an R&D Engineer at Kitware. He is a developer for the CMake, CDash, and Midas open source quality software process tools.