NA-MIC National Alliance for Medical Image Computing 3D Slicer Modules and Extensions Steve Pieper,...

20
NA-MIC National Alliance for Medical Image Computing http://na-mic.org 3D Slicer Modules and Extensions Steve Pieper, Ph.D.

description

National Alliance for Medical Image Computing Provided by D. Gering Slicer3 data model Provided by R. Kikinis

Transcript of NA-MIC National Alliance for Medical Image Computing 3D Slicer Modules and Extensions Steve Pieper,...

Page 1: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

NA-MICNational Alliance for Medical Image Computing http://na-mic.org

3D Slicer

Modules and Extensions

Steve Pieper, Ph.D.

Page 2: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

How Modules Should Work• Slicer 3.4 is a Stable Base for Many Medical

Image Computing Apps– Core File I/O, Visualization, Interface…– Tutorials and Other Resources to Get New Users Up to

Speed• Developers of New Techniques can Draw on the

NA-MIC Kit to Implement Compatible Modules– Consistent Framework for Deployment and User

Interface– Several Styles of Development to Meet Varied

Requirements

Page 3: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

Provided by D. Gering

Slicer3 data model

Provided by R. Kikinis

Page 4: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

Slicer3 “Observer MVC” Pattern• 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

Logic

MRML Nodes

GUI

Widgets Renderers

EditObserve

Observe

Observe

Edit

Edit

“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.

Page 5: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

Variety of levels of integrationSlicer Libs

• ModuleDescriptionParser• GenerateCLP• vtkITK• MRML

Non-slicer specific support libraries

Slicer Base • Application logic• Widgets

Common infrastructure for Slicer applications

Built in modules• Slice viewers• Models• Fiducials• Transforms

Full access to Slicer internals

Loadable modules

• Query Atlas• QDEC• Volume rendering• ChangeTracker• EMSegment

Full access to Slicer internals

Scripted modules• Editor• Teem Two Tensor Tractography• VMTK

Limited access to Slicer internals

Command line modules • Registration Restricted access to Slicer internals

Daemon • OpenIGTLink• Stochastic Tractography Access to MRML

Page 6: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

Base Features vs. ModulesFeatures Base ModulesVisualization MRML: Models, Volumes, Volume Rendering, Fiducials,

Continuum Meshes, Labeled DataCan create custom MRML Nodes and behavior

Filtering None Implemented as Modules using ITK or other Libraries

Registration Transform Display and Edit, Save/Restore Calculate Transforms, Resample Data

Segmentation Label Maps, Parcellated Surfaces Segmentation Algorithms in ITK or other Libraries

Quantification Label, Image, Volume Statistics; Numpy access to MRML

Applications in Python or MATLAB

Real-time Integration VTK Rendering, KWWidgets framework, Tracker Support (as Transforms)

Direct Manipulation of the MRML Scene; 2D/3D Widgets; Device Interfaces, OpenIGTLink Module

Diffusion Imaging DWI, DTI, Fiber Bundles Tractography, Clustering, Atlases

Applications “Bundles” of Modules in Distribution: Registration, Editor, some Filters,

Customized Extensions, Domain-specific code, Optimized Interfaces…

Page 7: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

Each module has …… an entry in the module menu

… a panel of user interface controls

Page 8: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

Built in module

vtkMRMLNode.h vtkSlicerModuleGUI.h vtkSlicerModuleLogic.h

vtkMRMLYourModuleNode.h•GetNodeTagName()•Copy()•ReadXMLAttributes()•WriteXML()

vtkSlicerYourModuleGUI.h•BuildGUI()•ProcessGUIEvents()•ProcessLogicEvents()•ProcessMRMLEvents()

vtkSlicerYourModuleLogic.h•ProcessMRMLEvents()•ProcessLogicEvents()

Slicer provided

Module writer provided

Page 9: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

Loadable module

vtkMRMLNode.h vtkSlicerModuleGUI.h vtkSlicerModuleLogic.h

vtkMRMLYourModuleNode.h•GetNodeTagName()•Copy()•ReadXMLAttributes()•WriteXML()

vtkSlicerYourModuleGUI.h•BuildGUI()•ProcessGUIEvents()•ProcessLogicEvents()•ProcessMRMLEvents()

vtkSlicerYourModuleLogic.h•ProcessMRMLEvents()•ProcessLogicEvents()

YourModule.so•GetLoadableModuleDescription()•GetLoadableModuleLogic()•GetLoadableModuleGUI()

Slicer provided

Module writer provided

Page 10: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

Tcl scripted module

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

Slicer provided

Module writer provided

Page 11: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

Python scripted module

vtkMRMLScriptedModuleNode.h

vtkSlicerScriptedModuleGUI.h

vtkSlicerScriptedModuleLogic.h

YourModuleGUI.py•def BuildGUI()•def ProcessGUIEvents()•def ProcessLogicEvents() •def ProcessLogicEvents()

Slicer provided

Module writer provided

YourModuleNode.py• Optional State Management

YourModuleLogic.py• Optional Helper Code

Page 12: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

Command line module

vtkMRMLCommandLineModuleNode.h

vtkCommandLineModuleGUI.h

vtkCommandLineModuleLogic.h

YourModule.xml•<image>•<geometry>•<integer>•<double>•<file>

YourModule.so•XMLModuleDescription•GetXMLModuleDescription()•ModelEntryPoint()

Slicer provided

Module writer provided

YourModule (exe)•YourModule –xml

YourModule.py•XML•def toXML()•def Execute()

or or

Page 13: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

All modules are created equal…

… an entry in the module menu

… a panel of user interface controls

Page 14: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

Daemons

slicerget.tcl name > image.nrrd

cat image.nrrd | slicerput.tcl name

YourTool(exernal process such as

MATLAB)

OpenIGTLink Protocol YourTool(exernal process such as

Tracker or Scanner)

SlicerDaemon

OpenIGTLinkIF

Page 15: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

Variety of levels of integrationSlicer Libs

• ModuleDescriptionParser• GenerateCLP• vtkITK• MRML

Non-slicer specific support libraries

Slicer Base • Application logic• Widgets

Common infrastructure for Slicer applications

Built in modules• Slice viewers• Models• Fiducials• Transforms

Full access to Slicer internals

Loadable modules

• Query Atlas• QDEC• Volume rendering• ChangeTracker• EMSegment

Full access to Slicer internals

Scripted modules• Editor• Teem Two Tensor Tractography• VMTK

Limited access to Slicer internals

Command line modules • Registration Restricted access to Slicer internals

Daemon • OpenIGTLink• Stochastic Tractography Access to MRML

Page 16: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

Extension Goals• 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 process

• NITRC Supplement to NA-MIC helping to pay for needed infrastructure (Neuroimaging Informatics Tools and Resources Clearinghouse)

– NITRC can host neuroimaging projects (gforge implementation) • Other repositories can also be used

– NAMICSandBox, Institution’s svn, Google Code, etc…

Page 17: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

Extension Management Wizard*

* Under development

Page 18: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

NITRC

http://www.nitrc.org/projects/slicer3examples/Sample Code for CommandLine, Loadable, and Scripted Extension Modules

Page 19: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

Extension Process

• Write your module following the examples on nitrc.org

• Create .s3ext description file– http://viewvc.slicer.org/viewcvs.cgi/trunk/Extensions/

– Svn path, dependencies, homepage, category, status, description…

• Nightly builds create compatible sets of extension binaries that correspond to the slicer builds (windows, linux, mac)– Correct lib versions, compiler versions, etc

• Users can install from Extension Manager

Page 20: NA-MIC National Alliance for Medical Image Computing  3D Slicer Modules and Extensions Steve Pieper, Ph.D.

National Alliance for Medical Image Computing http://na-mic.org

CTK Issues

• Can some or all Slicer Module types be interoperable with other CTK Tools– Automatic Adaptors?

• What will be the CTK Preferred Module Implementation?– Web Services? daemons? OSGi?...