Difference between revisions of "Slicer3:Pipeline Integration"

From NAMIC Wiki
Jump to: navigation, search
m (Update from Wiki)
 
m (Update from Wiki)
Line 1: Line 1:
 
# The main features of the project
 
# The main features of the project
 
## http://pipeline.loni.ucla.edu
 
## http://pipeline.loni.ucla.edu
# The main outstanding questions that must be answered before you can complete the project (or even start)
+
# The main outstanding questions that must be answered before you can complete the project ::
 
## Pipeline -> Slicer3
 
## Pipeline -> Slicer3
 
### Once the API for submission to Slicer3 is released, we can integrate it into the Pipeline.
 
### Once the API for submission to Slicer3 is released, we can integrate it into the Pipeline.
 
## Slicer3 -> Pipeline
 
## Slicer3 -> Pipeline
### Current Status
+
### We have made considerable progress in making Pipeline more stable, robust and scalable. Detailed progress is listed below ::
#### We have some code that allows any external application to start an instance of Pipeline and submit workflows.
+
#### GUI : A new and improved graphical interface is now available. The gui is now much simpler in design and easier to use. The list of improvements/ new features is as follows :
#### Implement a JSON Interface to the pipeline that allows external applications to get a JSON parametric-description of submitted pipelines
 
#### Example usage: java -jar pipeline.jar -json MultiModalityRigidRegistration.module - The list of parameters in JSON format -
 
  
                    {"parameters":[
+
- Completely new data model/xml
                                  {
+
- Significantly easier parameter editing
                                    "phantom":"false",
+
- Cleaner drag and drop of modules
                                    "optional":"false",
+
- Easier list processing
                                    "connection-type":"",
+
- Stronger type checking (with feedback to help the user)
                                    "class-type":"Command Line Option",
+
- Variable can be used on parameter bindings
                                    "name":"ResolutionLevel"
+
- Personal Library of workflows and moduels
                                  },
+
- Copy/Paste of single modules and groups of modules (and still retain connections)
                                  {
+
- Undo/Redo on most operations
                                    "phantom":"false",
+
- Workflows can be layed out horizontally now
                                    "optional":"false",
+
- Faster and easier zooming
                                    "connection-type":"",
+
- Scalable GUI functionality - is able to handle hundreds of modules in a single workflow
                                    "class-type":"Command Line Option",
 
                                    "name":"QualityLevel"
 
                                  },
 
                                  {
 
                                    "phantom":"false",
 
                                    "optional":"false",
 
                                    "connection-type":"input",
 
                                    "class-type":"File",
 
                                    "name":"FixedImage"
 
                                  },
 
                                  {
 
                                    "phantom":"false",
 
                                    "optional":"false",
 
                                    "connection-type":"output",
 
                                    "class-type":"File",
 
                                    "name":"OutputTransform"
 
                                  },
 
                                  {
 
                                    "phantom":"false",
 
                                    "optional":"false",
 
                                    "connection-type":"input",
 
                                    "class-type":"File",
 
                                    "name":"MovingImage"
 
                                  },
 
                                  {
 
                                    "phantom":"false",
 
                                    "optional":"false",
 
                                    "connection-type":"input",
 
                                    "class-type":"File",
 
                                    "name":"InputTransform"
 
                                  }
 
                                  ]
 
                    }
 
  
# This JSON description can be then used to bind values to parameters and then submit the pipeline for
+
# ## ### #### DataModel : The data model, associated XML descriptions have been simplified greatly. The data model has been decoupled from the execution and the GUI, this component has been completed
 +
#### Translation : The translation portion of the software is responsible for accomodating logic that separates GUI/Execution vs Execution. This component has been completed, it takes the workflow and converts it into a flattened graph (it loses the property of module groups at this stage) and constructs the commands using the data model
 +
#### Validation : The validation portion conducts sanity checks on the workflow. It allows the user to fix errors prior to "actual" execution and informs the user of all steps needed to make the workflow run
 +
#### Execution : The execution portion now is an independent component that is agnostic of the data model and can be invoked on the command line directly. Self-sufficient workflows (with previously bound parameters), can be now invoked and executed from the commandline, bypassing the GUI entirely. Workflows or pipes can now be executed both locally and on the LONI grid. The scalability has dramatically improved from 30 inputs to thousands of inputs per workflow. The changes in the execution model are ::
  
execution -
+
- Agnostic of the data model
 
+
  - Minimal synchronization to express sequentiality and/or parallelism
# The XML representation is given below:
+
  - Local execution and LONI grid execution supported
 
+
  - Detailed logs to keep track of progress
   
+
- Periodic status messages passed to GUI for immediate user feedback
  <?xml version="1.0" encoding="UTF-8"?>
+
- Scalability of execution allows running > 1000 inputs per workflow
  <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:owl="http://www.w3.org/2002/07/owl#">
 
  <owl:Ontology>
 
    <owl:versionInfo><![CDATA[20050412]]></owl:versionInfo>
 
    <rdfs:label locale="en" />
 
    <rdfs:comment locale="en" />
 
  </owl:Ontology>
 
  <FunctionPipeline rdf:ID="1118265959469">
 
    <rdfs:label locale="en"><![CDATA[MultiModalityRigidRegistration pipeline function]]></rdfs:label>
 
    <rdfs:comment locale="en"><![CDATA[MultiModalityRigidRegistration (Programmers Week)]]></rdfs:comment>
 
    <Assign rdf:ID="11182659594690">
 
      <owl:allValuesFrom rdf:resource="1118265959620" />
 
      <rdfs:label locale="en"><![CDATA[11182659594690]]></rdfs:label>
 
    </Assign>
 
    <GUI>
 
      <rdfs:label locale="en" />
 
      <rdfs:comment locale="en" />
 
    </GUI>
 
  </FunctionPipeline>
 
  <Module rdf:ID="1118265959469:1118265959586" rdf:resource="1118265959469">
 
    <rdfs:label locale="en"><![CDATA[MultiModalityRigidRegistration pipeline]]></rdfs:label>
 
    <rdfs:comment locale="en"><![CDATA[MultiModalityRigidRegistration (Programmers Week)]]></rdfs:comment>
 
    <Module rdf:ID="1118265959620:1118265959625" rdf:resource="11182659594690">
 
      <rdfs:label locale="en"><![CDATA[MultiModalityRigidRegistration]]></rdfs:label>
 
      <rdfs:comment locale="en"><![CDATA[MultiModalityRigidRegistration (Programmers Week)]]></rdfs:comment>
 
      <GUI x="196" y="171">
 
        <rdfs:label locale="en" />
 
        <rdfs:comment locale="en" />
 
      </GUI>
 
      <Assign rdf:resource="Parameter1118266141102">
 
        <owl:allValuesFrom rdf:resource="File:1118266118686" />
 
        <rdfs:label locale="en" />
 
      </Assign>
 
      <Assign rdf:resource="Parameter1118266282720">
 
        <owl:allValuesFrom rdf:resource="File:1118266266201" />
 
        <rdfs:label locale="en" />
 
      </Assign>
 
      <Assign rdf:resource="Parameter1118266397117">
 
        <owl:allValuesFrom rdf:resource="File:1118266372629" />
 
        <rdfs:label locale="en" />
 
      </Assign>
 
      <Assign rdf:resource="Parameter1118266521616">
 
        <owl:allValuesFrom rdf:resource="CommandLineOption:1118266435955" />
 
        <rdfs:label locale="en" />
 
      </Assign>
 
      <Assign rdf:resource="Parameter1118266541544">
 
        <owl:allValuesFrom rdf:resource="CommandLineOption:1118266461834" />
 
        <rdfs:label locale="en" />
 
      </Assign>
 
      <Assign rdf:resource="Parameter1118266740529">
 
        <owl:allValuesFrom rdf:resource="File:1118266713458" />
 
        <rdfs:label locale="en" />
 
      </Assign>
 
    </Module>
 
  </Module>
 
  <ExecutableFile rdf:ID="1118265959620" url="pipeline://localhost//home/jrajendi/ProgrammersWeek/ItkGridPipeline/testdir/grid-reg/MultiModalityRigidRegistration">
 
    <rdfs:label locale="en"><![CDATA[MultiModalityRigidRegistration function]]></rdfs:label>
 
    <rdfs:comment locale="en"><![CDATA[MultiModalityRigidRegistration (Programmers Week)]]></rdfs:comment>
 
    <GUI>
 
      <rdfs:label locale="en" />
 
      <rdfs:comment locale="en" />
 
    </GUI>
 
    <Parameter rdf:ID="Parameter1118266141102" connectionType="input">
 
      <rdfs:label locale="en"><![CDATA[FixedImage]]></rdfs:label>
 
      <rdfs:comment locale="en"><![CDATA[Fixed Image parameter]]></rdfs:comment>
 
      <rdf:type rdf:resource="File" />
 
    </Parameter>
 
    <Parameter rdf:ID="Parameter1118266282720" connectionType="input">
 
      <rdfs:label locale="en"><![CDATA[MovingImage]]></rdfs:label>
 
      <rdfs:comment locale="en"><![CDATA[moving image parameter]]></rdfs:comment>
 
      <rdf:type rdf:resource="File" />
 
    </Parameter>
 
    <Parameter rdf:ID="Parameter1118266397117" connectionType="input">
 
      <rdfs:label locale="en"><![CDATA[InputTransform]]></rdfs:label>
 
      <rdfs:comment locale="en"><![CDATA[input transform parameter]]></rdfs:comment>
 
      <rdf:type rdf:resource="File" />
 
    </Parameter>
 
    <Parameter rdf:ID="Parameter1118266521616" connectionType="">
 
      <rdfs:label locale="en"><![CDATA[ResolutionLevel]]></rdfs:label>
 
      <rdfs:comment locale="en"><![CDATA[resolutionlevel parameter]]></rdfs:comment>
 
      <rdf:type rdf:resource="CommandLineOption" />
 
    </Parameter>
 
    <Parameter rdf:ID="Parameter1118266541544" connectionType="">
 
      <rdfs:label locale="en"><![CDATA[QualityLevel]]></rdfs:label>
 
      <rdfs:comment locale="en"><![CDATA[Quality level]]></rdfs:comment>
 
      <rdf:type rdf:resource="CommandLineOption" />
 
    </Parameter>
 
    <Parameter rdf:ID="Parameter1118266740529" connectionType="output">
 
      <rdfs:label locale="en"><![CDATA[OutputTransform]]></rdfs:label>
 
      <rdfs:comment locale="en"><![CDATA[output transform file]]></rdfs:comment>
 
      <rdf:type rdf:resource="File" />
 
    </Parameter>
 
  </ExecutableFile>
 
  <CommandLineOption rdf:ID="CommandLineOption:1118266044377">
 
    <Values>
 
      <Value>
 
        <string><![CDATA[pipeline://localhost//home/jrajendi/ProgrammersWeek/ItkGridPipeline/testdir/grid-reg/]]></string>
 
      </Value>
 
    </Values>
 
    <rdfs:label locale="en"><![CDATA[Input Directory]]></rdfs:label>
 
    <rdfs:comment locale="en"><![CDATA[input directory for images and input configuration files]]></rdfs:comment>
 
  </CommandLineOption>
 
  <CommandLineOption rdf:ID="CommandLineOption:1118266073584">
 
    <Values>
 
      <Value>
 
        <string><![CDATA[reg.nhdr]]></string>
 
      </Value>
 
    </Values>
 
    <rdfs:label locale="en"><![CDATA[Fixed Image Filename]]></rdfs:label>
 
    <rdfs:comment locale="en"><![CDATA[reg.nhdr filename]]></rdfs:comment>
 
  </CommandLineOption>
 
  <File rdf:ID="File:1118266118686">
 
    <Values>
 
      <Value>
 
        <string rdf:resource="CommandLineOption:1118266044377" />
 
        <string rdf:resource="CommandLineOption:1118266073584" />
 
      </Value>
 
    </Values>
 
    <rdfs:label locale="en"><![CDATA[FixedImage]]></rdfs:label>
 
    <rdfs:comment locale="en"><![CDATA[fixed image variable]]></rdfs:comment>
 
  </File>
 
  <CommandLineOption rdf:ID="CommandLineOption:1118266234482">
 
    <Values>
 
      <Value>
 
        <string><![CDATA[mrt.nhdr]]></string>
 
      </Value>
 
    </Values>
 
    <rdfs:label locale="en"><![CDATA[Moving Image Filename]]></rdfs:label>
 
    <rdfs:comment locale="en"><![CDATA[filename for moving image input]]></rdfs:comment>
 
  </CommandLineOption>
 
  <File rdf:ID="File:1118266266201">
 
    <Values>
 
      <Value>
 
        <string rdf:resource="CommandLineOption:1118266044377" />
 
        <string rdf:resource="CommandLineOption:1118266234482" />
 
      </Value>
 
    </Values>
 
    <rdfs:label locale="en"><![CDATA[MovingImage]]></rdfs:label>
 
    <rdfs:comment locale="en"><![CDATA[Moving image variable]]></rdfs:comment>
 
  </File>
 
  <CommandLineOption rdf:ID="CommandLineOption:1118266341295">
 
    <Values>
 
      <Value>
 
        <string><![CDATA[xformIN]]></string>
 
      </Value>
 
    </Values>
 
    <rdfs:label locale="en"><![CDATA[InputTransform Filename]]></rdfs:label>
 
    <rdfs:comment locale="en"><![CDATA[Input Transformation Filename]]></rdfs:comment>
 
  </CommandLineOption>
 
  <File rdf:ID="File:1118266372629">
 
    <Values>
 
      <Value>
 
        <string rdf:resource="CommandLineOption:1118266044377" />
 
        <string rdf:resource="CommandLineOption:1118266341295" />
 
      </Value>
 
    </Values>
 
    <rdfs:label locale="en"><![CDATA[InputTransform]]></rdfs:label>
 
    <rdfs:comment locale="en"><![CDATA[input transformation variable]]></rdfs:comment>
 
  </File>
 
  <CommandLineOption rdf:ID="CommandLineOption:1118266435955">
 
    <Values>
 
      <Value>
 
        <string><![CDATA[2]]></string>
 
      </Value>
 
    </Values>
 
    <rdfs:label locale="en"><![CDATA[ResolutionLevel]]></rdfs:label>
 
    <rdfs:comment locale="en"><![CDATA[resolution levels {1, 2, 3}]]></rdfs:comment>
 
  </CommandLineOption>
 
  <CommandLineOption rdf:ID="CommandLineOption:1118266461834">
 
    <Values>
 
      <Value>
 
        <string><![CDATA[1]]></string>
 
      </Value>
 
    </Values>
 
    <rdfs:label locale="en"><![CDATA[QualityLevel]]></rdfs:label>
 
    <rdfs:comment locale="en"><![CDATA[quality levels {1,2}]]></rdfs:comment>
 
  </CommandLineOption>
 
  <CommandLineOption rdf:ID="CommandLineOption:1118266576527">
 
    <Values>
 
      <Value>
 
        <string><![CDATA[xformOUT]]></string>
 
      </Value>
 
    </Values>
 
    <rdfs:label locale="en"><![CDATA[OuputTransform Filename]]></rdfs:label>
 
    <rdfs:comment locale="en"><![CDATA[output transform filename]]></rdfs:comment>
 
  </CommandLineOption>
 
  <CommandLineOption rdf:ID="CommandLineOption:1118266669340">
 
    <Values>
 
      <Value>
 
        <string><![CDATA[pipeline://localhost//home/jrajendi/ProgrammersWeek/ItkGridPipeline/testdir/grid-reg/refinedmodule/]]></string>
 
      </Value>
 
    </Values>
 
    <rdfs:label locale="en"><![CDATA[Output Directory]]></rdfs:label>
 
    <rdfs:comment locale="en"><![CDATA[output directory for outputTransformfile]]></rdfs:comment>
 
  </CommandLineOption>
 
  <File rdf:ID="File:1118266713458">
 
    <Values>
 
      <Value>
 
        <string rdf:resource="CommandLineOption:1118266669340" />
 
        <string rdf:resource="CommandLineOption:1118266576527" />
 
      </Value>
 
    </Values>
 
    <rdfs:label locale="en"><![CDATA[OutputTransform]]></rdfs:label>
 
    <rdfs:comment locale="en"><![CDATA[output transform file]]></rdfs:comment>
 
  </File>
 
</rdf:RDF>
 
 
 
<br />
 
  
 
# To start a pipeline on the commandline with parameters:
 
# To start a pipeline on the commandline with parameters:
  
java -jar pipeline.client.jar -batch -module=MultiModalityRigidRegistration.module -parameter:Paramter_1=Value_1 -parameter:Parameter_2=Value_2
+
java -classpath pipeline.client.jar ui.cli.Main -execute prebound_workflow
  
 
'''Team Members'''<nowiki>: </nowiki>
 
'''Team Members'''<nowiki>: </nowiki>
  
* Michael Pan - UCLA
 
 
* Jagadeeswaran Rajendiran - UCLA
 
* Jagadeeswaran Rajendiran - UCLA

Revision as of 13:42, 18 December 2006

Home < Slicer3:Pipeline Integration
  1. The main features of the project
    1. http://pipeline.loni.ucla.edu
  2. The main outstanding questions that must be answered before you can complete the project ::
    1. Pipeline -> Slicer3
      1. Once the API for submission to Slicer3 is released, we can integrate it into the Pipeline.
    2. Slicer3 -> Pipeline
      1. We have made considerable progress in making Pipeline more stable, robust and scalable. Detailed progress is listed below ::
        1. GUI : A new and improved graphical interface is now available. The gui is now much simpler in design and easier to use. The list of improvements/ new features is as follows :
- Completely new data model/xml
- Significantly easier parameter editing
- Cleaner drag and drop of modules
- Easier list processing
- Stronger type checking (with feedback to help the user)
- Variable can be used on parameter bindings
- Personal Library of workflows and moduels
- Copy/Paste of single modules and groups of modules (and still retain connections)
- Undo/Redo on most operations
- Workflows can be layed out horizontally now
- Faster and easier zooming
- Scalable GUI functionality - is able to handle hundreds of modules in a single workflow
  1. ## ### #### DataModel : The data model, associated XML descriptions have been simplified greatly. The data model has been decoupled from the execution and the GUI, this component has been completed
        1. Translation : The translation portion of the software is responsible for accomodating logic that separates GUI/Execution vs Execution. This component has been completed, it takes the workflow and converts it into a flattened graph (it loses the property of module groups at this stage) and constructs the commands using the data model
        2. Validation : The validation portion conducts sanity checks on the workflow. It allows the user to fix errors prior to "actual" execution and informs the user of all steps needed to make the workflow run
        3. Execution : The execution portion now is an independent component that is agnostic of the data model and can be invoked on the command line directly. Self-sufficient workflows (with previously bound parameters), can be now invoked and executed from the commandline, bypassing the GUI entirely. Workflows or pipes can now be executed both locally and on the LONI grid. The scalability has dramatically improved from 30 inputs to thousands of inputs per workflow. The changes in the execution model are ::
- Agnostic of the data model
- Minimal synchronization to express sequentiality and/or parallelism
- Local execution and LONI grid execution supported
- Detailed logs to keep track of progress
- Periodic status messages passed to GUI for immediate user feedback
- Scalability of execution allows running > 1000 inputs per workflow
  1. To start a pipeline on the commandline with parameters:

java -classpath pipeline.client.jar ui.cli.Main -execute prebound_workflow

Team Members:

  • Jagadeeswaran Rajendiran - UCLA