3D Slicer Version 4 Architecture and Status by UBn4Y84W

VIEWS: 23 PAGES: 16

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




3D Slicer Version 4
Architecture and Status
Steve Pieper, Ph.D.
Slicer4: Goals
• Slim Down, Modernize, and Optimize
• Improve Collaboration and Code Sharing
  with Research Community
• Introduce New Technologies
• Increase Testing and Code Consistency

http://www.slicer.org/slicerWiki/index.php/Slicer4



National Alliance for Medical Image Computing
http://na-mic.org
     Slicer4: Collaborations
•   Nokia - Qt Software Ecosystem
•   CTK (Common Toolkit)
     – Widgets, DICOM, Messaging…
•   BRAINS, BioImageSuite…
•   ITKv4
•   Scipy (Scientific Python), Nipy
    (Neuroimaging Python)
•   And, of course, NAC, NCIGT,
    NA-MIC DBPs, Collaboration
    Grants, Like-Minded Developers,
    Longtime Friends and Family…




    National Alliance for Medical Image Computing
    http://na-mic.org
Slicer4 Compatibility Pledge
• Import .xml and .mrml from Slicer2.x and
  Slicer3.x
• Command Line Modules will not Need to Change
      – Except perhaps the build tree
      – Can be modified for new features if desired
• Core Modules will be Ported
• Help will be Provided for Porting Loadable
  Modules
      – MRML and Logic Basically Unchanged, Only GUI
        Needs to be Rewritten
      – ModuleWizard to Create Code Framework
• Consistent Slicer Terminology and Concepts
      – Ease User Transition, Leverage Training
National Alliance for Medical Image Computing
http://na-mic.org
Slicer4: Git
• Git Advantages:
      – Arguably better than svn
      – Many (all?) of our colleagues are migrating
• Git Disadvantages:
      – Best practices still evolving
      – Many (most?) of our colleagues are frustrated ;)
• We had planned to use git from the start for
  slicer4, but have backed off.
• Now we suggest using git-svn for your own work
  and collaborative topic branches
      http://www.slicer.org/slicerWiki/index.php/Slicer3:git-svn

National Alliance for Medical Image Computing
http://na-mic.org
Slicer4: Qt
• Large Developer Community
• Many Highly Refined Tools
• Major Effort Underway thanks to
  ARRA Supplement
• Learn More This Week
• Results are Very Encouraging, but
  there is a lot To Do…

National Alliance for Medical Image Computing
http://na-mic.org
Slicer4: Qt Impact
•    No More X11 on Mac OSX
•    New C++ Paradigms
•    Designer for GUI Construction
•    Native WebKit
      – Native HTML (CSS, HTML5, webgl)
      – JavaScript Engine



National Alliance for Medical Image Computing
http://na-mic.org
Slicer4: CTK
• See commontk.org for info
• CTK is Home Many for “Generic” Parts of
  Slicer4
      – CTKWidgets, including Transfer Function
        Editor
      – ctkDICOM, based on DCMTK
      – Other Code may Migrate (Execution Model?
        MRML? …)
• Active International Development Team

National Alliance for Medical Image Computing
http://na-mic.org
Slicer4: PythonQt
• Developed by Mevislab (Germany)
• LGPL, Stable
• Scripted Access to Classes, Signals,
  Slots, Properties
• May (or may not) be Replaced with
  PySide in the Future


National Alliance for Medical Image Computing
http://na-mic.org
Slicer4: Tcl and Python
• VTK and VTK-based Slicer4 Code are Wrapped
  with Python
• A Compatibility Layer Allows Tcl to Call
  VTK/Slicer Code via Python
      – This is the inverse of Slicer3, where Python calls are
        routed through Tcl
      – Used for Editor and Slice Interaction
      – This layer is for porting only and should not be used
        when writing new code
• Any Tk or KWWidgets GUI code will need to be
  rewritten in Qt

National Alliance for Medical Image Computing
http://na-mic.org
Slicer4: SuperBuild
• Evolution of getbuildtest.tcl Concept into Pure
  CMake
      – More General Implementation to Serve as Template for
        Other Projects
      – getbuildtest is Still the Supported Tool for Slicer3.6
• Hierarchical
      – CTK also Uses SuperBuild
• Extension Support
      – Coming
• Try It
      – Slicer4 Build Instructions on Wiki

National Alliance for Medical Image Computing
http://na-mic.org
Slicer4: Development
• Emphasis on the NA-MIC Software Engineering
  Methdology
      – Testing, Coverage, Documentation & Coding Style
• New Modules Start as Extensions
      – Only Widely Applicable Functionality Bundled with
        Application
      – Only When Coding Standards Are Met
• Increase Communication via the Developer
  Mailing List
      – Keep Everyone in the Loop on Architecture and Coding
        Conventions
      – Verbose Commit Messages


National Alliance for Medical Image Computing
http://na-mic.org
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)
•    Many things…




National Alliance for Medical Image Computing
http://na-mic.org
Slicer4: What’s Missing
•    Many Core Modules
•    Volume Rendering
•    Hierarchies
•    IGT Modules
•    Extensions
•    Progress / Status feedback
•    Your Module!

Please help identify what is needed to support your work.




National Alliance for Medical Image Computing
http://na-mic.org
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
National Alliance for Medical Image Computing
http://na-mic.org
Architecture




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

								
To top