2008 Summer Project Week:ModuleChaining

From NAMIC
Jump to: navigation, search
Home < 2008 Summer Project Week:ModuleChaining



Key Investigators

  • UCSD: Marco Ruiz, Jeff Grethe
  • Isomics: Steve Pieper, Daniel Blezek
  • GE: Jim Miller
  • UNC: Clement Vachet
  • Utah: Casey Goodlett, Marcel Prastawa
  • Mario Negri Inst: Luca Antiga

Objective

To create a standard infrastructure for Slicer3 to support sequential module chaining functionality. This functionality includes features such as allowing the user to describe an ordered set of modules to execute one after another, which outputs to pipe as inputs of future module invocations and how to render the Slicer3 UI to gather the required parameters of the "chain". All of this done leveraging on the standard execution module to require minimal user input.

Approach, Plan

The first prototype has been developed as an independent engine system in Java. This will serve to provide a "proof of concept" type of grounds to evaluate and refine current and new ideas, in order to create a standard, full-feature version of this engine embedded into Slicer3.

Progress

We successfully integrated the chain module engine into Slicer3 and test run it with 2 custom chain descriptors (created according to specifications). These descriptors were successfully used by the integrated engine to behave as a true Slicer3 module (tested within the UI): auto-generating the desired "Standard Execution Model" descriptor when invoked with the "--xml" reactor and, when invoked without it, executing in sequence the referred modules, with the appropriate argument chaining, as expected. All details of this effort are being documented at: Slicer3:JavaBasedChainCLMsEngine


  • CHAINS MENU:

ChainSamples-Menu.png

  • CHAIN #1 UI:

Chain1GeneratedUI.png

  • CHAIN #2 UI:

Chain2GeneratedUI.png


References

  • Example Shell Script to chain two modules and expose the result as a CLI:

http://www.na-mic.org/ViewVC/index.cgi/trunk/Modules/CommandLineModule/Testing/CLI-shell.sh?annotate=6987

  • Note, this shell script is not cross platform - the bundled tcl or python interp should be used instead of /bin/sh