1 / 29

Slicer4 Guided Tour

Slicer4 Guided Tour. Steve Pieper, Ph.D. Goals. Understanding the Lay of the Land Developing our Common Language Highlighting the Points of Interest http://www.slicer.org/slicerWiki/index.php/Slicer4. The Big Picture. Model / View / Controller Style MRML / GUI / Logic Rules:

Download Presentation

Slicer4 Guided Tour

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. Slicer4Guided Tour Steve Pieper, Ph.D.

  2. Goals Understanding the Lay of the Land Developing our Common Language Highlighting the Points of Interest http://www.slicer.org/slicerWiki/index.php/Slicer4

  3. The Big Picture Model / View / Controller Style MRML / GUI / Logic Rules: MRML: Things that get loaded with a scene file. GUI: Things that depend on a display. Logic: Things that operate on MRML.

  4. Overview

  5. MRML Concepts: Nodes Data Containers and Data Helpers XML (De)Serializable Issue Events when Changed Have Pointers to Bulk Data E.g. vtkImageData, vtkPolyData… Have Unique IDs Exist in only one MRML Scene One MRML Scene for the Application

  6. Coordinate Systems Interface Works in Millimeters, Patient Space Volume Nodes have IJKToRAS IJK is Index Space of Image RAS is Right/Anterior/Superior vtkImageData is pixel container with origin 0,0,0 and spacing 1,1,1 Annotations, PolyData are RAS mm http://www.slicer.org/slicerWiki/index.php/Coordinate_systems

  7. MRML: Storable Storable Nodes Reference Storage Nodes Storage Nodes: Bulk Data I/O Storage Nodes allow RemoteIO (URL access to Bulk Data) HTTP download supported now Upload handlers still experimental Scene files can contain URLs

  8. MRML: Displayable Has List of Display Nodes Tagged by ViewNode IDs: each display node on/off in each view E.g. FiberBundles with Lines + Glyphs DisplayNode has Parameters and Pipelines to Implement Visualization of Displayable

  9. MRML Transformable Has Reference to TransformNode defining Transform To Parent Transforms are RAS to RAS Linear Transforms are Handled On-the-fly Non-Linear Transforms must be applied using modules

  10. MRML: Hierarchies Grouping Concept Independent of Transform Hierarchy E.g. Vascular Tree Levels of Detail In Slicer3, Parent Model Display Parameters Override when Collapsed In Slicer4, Plans to Use Hierarchies for Time Series, DICOM, etc.

  11. (Were SceneSnapShots in Slicer3) Retains State of MRML Nodes Included in MRML Scene File Optional Image and Text Description Bulk Data Not Copied Load all Bulk Data Before Making SceneViews Use Visibility to Control what is Shown MRML: SceneViews

  12. Module GUIs qSlicerAbstractModuleWidget subclasses (are QWidgets) setup() enter() exit() Are MRMLNode Editors Synchronize MRML Eventsto/from Widgets

  13. Modules Slicer Loadable Modules Shared Libraries Discovered at Run-Time Can use Qt, MRML, VTK, ITK, Teem, etc. Best Choice for Full Control, Interactivity, Optimized Computation Requires Familiarity with C++ APIs

  14. Command Line Interface (CLI) Modules Just Like Slicer3 Any Executable that Works with –xml can be used (even via wrapper scripts) Shared Library CLI for Better Performance No Slicer API Knowledge Required Interface is Consistent, but Limited

  15. Scripted Modules Most of Qt, VTK, Slicer API Exposed Only Python Supported Tcl Legacy Mode to Ease Transition Very Rapid Development Iterations Requires Some Familiarity with APIs More about Slicer4 Python Later…

  16. Extensions Any Module Type can be an Extension Optional User Install Built to Match Slicer Version Network Download from within Slicer NA-MIC DBPs, Collaborations are Expected to Deliver Extensions Extension Writing Tutorial Later…

  17. Slicer4 Views LayoutNode Defines Interface Layout Manager Creates View Widget Instances to Match Layout ViewNodes Describe 3D Views SliceNodes + SliceCompositeNodes Describe 2D Slice Views

  18. DisplayableManagers DisplaybleManagers Link DisplayableNodes to VTK Actors/Mappers/Props/Widgets Must Synchronize Events from Either Source (like Module GUIs) Modules Can Register DisplayableManagers with Factory DisplayableManagers are Instanced as Views are Created

  19. Overview Revisited

  20. Functional Decomposition Reusable Components with Only Needed Dependencies CTK for Non-Slicer-Specific Qt+DICOM (+VTK) Reusable MRML: MRMLLogic, qMRMLWidgets Module Support: SlicerExecutionModel, QTCLI Slicer: QTCore, QTGUI Modules: QTCoreModules, QTModules, QTScriptedModules Extensions

  21. DICOM Interface Slicer3 File Based, Limited Write Special Purpose Converters (e.g. DWI) Slicer4 (in Development) Networking and Database (Q/R, Store) Ron’s “Lollipop” Model (MRMLScene in Private Tags) Community Input Needed

  22. Collaborating Groups CTK, DCMTK, ITKv4, VTK, CMake, Python, Qt… “SuperBuild Philosophy” Slicer Organization on github.com patched versions as needed Edits “Belonging” in Package Go in git Avoid Workarounds/Duplicates in Slicer

  23. svn and git http://svn.slicer.org/Slicer4/trunk For Nightly builds, releases, collaboration http://www.slicer.org/slicerWiki/index.php/Slicer:git-svn Developers can choose to use git for topic branches Extensions can use git/svn/cvs

  24. Coding Conventions http://www.slicer.org/slicerWiki/index.php/Slicer:Style_and_Conventions Use Style of Parent Class VTK Classes use VTK Style Qt Classes use Qt Style Python Code uses Python Style Comments and Testing Communicate with your Colleagues

  25. Python in Slicer4 Scripted Modules as Slicelets Python Console PythonQt Slicer in External Python .slicerrc.py Python testing Scripted Access to Modules

  26. Slicer4: What Works (mostly) Main GUI, Toolbars, Menus Scene/Data Load/Save Slice and 3D Visualization (pan/zoom, overlays, models…) Command Line Modules Python Wrapping, Python Scripted Modules Loadable Modules Editor Annotations (Evolution of Fiducials and Measurements) Nightly Builds Volume Rendering Many things…

  27. Slicer4: What’s Missing Some Core Modules Need Work Hierarchies Need Elaboration IGT Modules Performance Optimization Your Extensions! Please help identify what is needed to support your work.

  28. Developer Decision Tree Working on the Slicer Core? Focus on Qt Transition Working on a Module? Build it as an Extension Command Line Module? Develop and Test with Slicer3.6 or Slicer4 GUI Project with Deadlines in early 2011? Develop with KWWidgets for 3.6.X Keep your Logic and MRML Distinct from the GUI Ongoing Support will be Provided Longer-Term Project that Needs a Custom GUI? Start working with developer builds of Slicer4 Talk with dev team about any key missing features Consider doing some or all coding in Python Just use Slicer4 for New Projects

  29. Implementation Strategies Non-Interactive Algorithm Write ITK Class Use Slicer Execution Model Add as Extension Interactive Segmentation Add Effect to Editor Module Add as Extension (coming soon) Custom GUI? Loadable Module

More Related