2013 Project Week:Self Tests and Sample Data

From NAMIC Wiki
Jump to: navigation, search
Home < 2013 Project Week:Self Tests and Sample Data

Key Investigators

  • Steve Pieper, Isomics
  • Jim Miller, GE
  • Jean-Christophe Fillion-Robin, Sankhesh Jhaveri, Kitware

Project Description

Slicer Self Test modules have been added based on work done during the summer project week 2012. They rely on the ability to download data at run time, and will re-use previously downloaded data if it is in the cache, but they do not currently check that the download has a valid checksum.

As we have used this feature, we noticed that being able to download atlases and other data with a single click is very useful for giving demos and for helping users get started with modules that require complex data.

At the same time, there is new data that needs to be added to the Sample Data module.

It would make sense to add a way for modules to register data with the Sample Data module, in much the same way that modules can define their own MRML nodes or DICOM plugins.

At the same time, it would be nice to factor out some of the other redundant code from Self Tests so that it is easier for developers to create and maintain the tests.


  • Create a plug-in architecture for registering Sample Data
  • Make sure that the downloaded data is validated (probably with MD5 hash)
  • Refactor Self Test code for easier re-use

Approach, Plan

  • Review other factory registration methods in slicer and pick the most flexible and lowest complexity version as a model to emulate
  • Think about an organized design for the Sample Data module
  • Consider if it makes sense to hard-code an assumption that the data will be hosted on midas, or stick with a generic download URL.


  • Productive discussions of SelfTests and role of sample data
  • Concept of embedding test information in CLI XML
    • Test Block in XML
    • Define input parameters (data from URL)
    • Define output from URL
    • Allow ctest or user to invoke test
  • Demian implemented Self Test and refactored for increased pythonicness