1 / 21

Integrating with Slicer3

Integrating with Slicer3. NA-MIC Kit Goals. Software and Methodologies for Medical Image Computing Facilitate Research Promote Interoperability Stable, Cross-Platform Run Time Environment Full Set of Core Features Avoid Duplicated Effort Flexible Module Architecture

Télécharger la présentation

Integrating with Slicer3

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Integrating with Slicer3

  2. NA-MIC Kit Goals • Software and Methodologies for Medical Image Computing • Facilitate Research • Promote Interoperability • Stable, Cross-Platform Run Time Environment • Full Set of Core Features • Avoid Duplicated Effort • Flexible Module Architecture • Plug-ins should be As Simple As Possible

  3. Slicer3 data model Provided by D. Gering

  4. MRML (Model) For Scene Description and Application State MRML Nodes are Persistent and Undoable Scene and Nodes are Observable Logic Encapsulate VTK and ITK Pipelines (Controller) Observe MRML to Configure Pipelines Help Create/Manage Nodes No UI Components (no Widgets, Actors, Mappers, Renderers or RenderWindows) GUI (View) Observe and Edit MRML Interact with User and Display Hardware Modules Should Follow Same Conventions Slicer3 “Observer MVC” Pattern GUI Renderers Widgets Edit Observe Logic Observe Edit Observe Edit MRML Nodes “Observe” means generic event mechanisms are used to pass information. “Edit” means code can directly call methods. Example: GUI can call methods in Logic classes,but Logic cannot call GUI methods. MRML cannot call Logic or GUI methods. There can be many observers for any event.

  5. Variety of levels of integration

  6. Base Features vs. Modules

  7. Each module has … … an entry in the module menu … a panel of user interface controls

  8. Built in module Slicer provided Module writer provided vtkMRMLNode.h vtkSlicerModuleGUI.h vtkSlicerModuleLogic.h • vtkSlicerYourModuleGUI.h • BuildGUI() • ProcessGUIEvents() • ProcessLogicEvents() • ProcessMRMLEvents() • vtkMRMLYourModuleNode.h • GetNodeTagName() • Copy() • ReadXMLAttributes() • WriteXML() • vtkSlicerYourModuleLogic.h • ProcessMRMLEvents() • ProcessLogicEvents()

  9. Loadable module Slicer provided Module writer provided vtkMRMLNode.h vtkSlicerModuleGUI.h vtkSlicerModuleLogic.h • vtkSlicerYourModuleGUI.h • BuildGUI() • ProcessGUIEvents() • ProcessLogicEvents() • ProcessMRMLEvents() • vtkMRMLYourModuleNode.h • GetNodeTagName() • Copy() • ReadXMLAttributes() • WriteXML() • vtkSlicerYourModuleLogic.h • ProcessMRMLEvents() • ProcessLogicEvents() • YourModule.so • GetLoadableModuleDescription() • GetLoadableModuleLogic() • GetLoadableModuleGUI()

  10. http://wiki.slicer.org/slicerWiki/images/b/bc/QtPortInSlicer.ppthttp://wiki.slicer.org/slicerWiki/images/b/bc/QtPortInSlicer.ppt Qt Loadable Module Slicer provided Module writer provided vtkMRMLNode.h qSlicerAbstractModuleWidget.h qSlicerAbstractModuleLogic.h • qSlicerYourModuleWidget.h • initialize() • showModuleAction() • setup() • setLogic() • vtkMRMLYourModuleNode.h • GetNodeTagName() • Copy() • ReadXMLAttributes() • WriteXML() • qSlicerYourModuleLogic.h • initialize() • setup() qSlicerAbstractModule.h QtPlugins qSlicerYourModule.ui • qSlicerYourModule.h • ahowModuleAction() • setup() • setLogic() Q_EXPORT_PLUGIN2(qSlicerYourModule, qSllicerYourModule); qSlicerYourModule.qrc

  11. Tcl scripted module Slicer provided Module writer provided vtkMRMLScriptedModuleNode.h vtkSlicerScriptedModuleGUI.h vtkSlicerScriptedModuleLogic.h YourModuleNode.tcl • YourModuleGUI.tcl • proc YourModuleBuildGUI • proc YourModuleProcessGUIEvents • proc YourModuleProcessLogicEvents • proc YourModuleProcessLogicEvents YourModuleLogic.tcl • YourModule.tcl • package provide YourModule x.y

  12. Python scripted module Slicer provided Module writer provided vtkMRMLScriptedModuleNode.h vtkSlicerScriptedModuleGUI.h vtkSlicerScriptedModuleLogic.h • YourModuleGUI.py • def BuildGUI() • def ProcessGUIEvents() • def ProcessLogicEvents() • def ProcessLogicEvents()

  13. Command line module Slicer provided Module writer provided vtkMRMLCommandLineModuleNode.h vtkCommandLineModuleGUI.h vtkCommandLineModuleLogic.h • YourModule.xml • <image> • <geometry> • <integer> • <double> • <file> • YourModule.py • XML • def toXML() • def Execute() • YourModule (exe) • YourModule –xml • YourModule.so • XMLModuleDescription • GetXMLModuleDescription() • ModelEntryPoint() or or

  14. All modules are created equal… … an entry in the module menu … a panel of user interface controls

  15. Extensions • Keep the base package “lean and mean” • Modules have individual identity • Per-module web site, svn, downloads, mailing lists, wiki… • Allow users to assemble their own set of tools • Customized ‘Bundles’ by task or application • Easy to download compatible extensions • Analogous to Firefox extensions • Integrate extension builds into developer/nightly/release processs • NITRC Supplement to NA-MIC helping to pay for needed infrastructure (Neuroimaging Informatics Tools and Resources Clearinghouse) • NITRC can host neuroimaging projects (gforge implementation)

  16. Extensions distribution

  17. Extension module

  18. Daemon YourTool slicerget.tcl name > image.nrrd cat image.nrrd | slicerput.tcl name

  19. Variety of levels of integration

  20. By the numbers…

  21. Future • More Qt • More Python, more numpy • Interactive modules to fill gap between Loadable Modules and Command Line Modules • Restricted access to Slicer internals • Simple methods to control interaction and display

More Related