16
NA-MIC National Alliance for Medical Image Computing http://na-mic.org 3D Slicer Version 4 Architecture and Status Steve Pieper, Ph.D.

3D Slicer Version 4 Architecture and Status

  • Upload
    thetis

  • View
    29

  • Download
    0

Embed Size (px)

DESCRIPTION

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 - PowerPoint PPT Presentation

Citation preview

Page 1: 3D Slicer Version 4 Architecture and Status

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

3D Slicer Version 4Architecture and Status

Steve Pieper, Ph.D.

Page 2: 3D Slicer Version 4 Architecture and Status

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

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

Page 3: 3D Slicer Version 4 Architecture and Status

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…

Page 4: 3D Slicer Version 4 Architecture and Status

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

Page 5: 3D Slicer Version 4 Architecture and Status

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 brancheshttp://www.slicer.org/slicerWiki/index.php/Slicer3:git-svn

Page 6: 3D Slicer Version 4 Architecture and Status

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…

Page 7: 3D Slicer Version 4 Architecture and Status

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

Page 8: 3D Slicer Version 4 Architecture and Status

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

Page 9: 3D Slicer Version 4 Architecture and Status

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

Page 10: 3D Slicer Version 4 Architecture and Status

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

Page 11: 3D Slicer Version 4 Architecture and Status

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

Page 12: 3D Slicer Version 4 Architecture and Status

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

Page 13: 3D Slicer Version 4 Architecture and Status

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…

Page 14: 3D Slicer Version 4 Architecture and Status

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.

Page 15: 3D Slicer Version 4 Architecture and Status

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

Page 16: 3D Slicer Version 4 Architecture and Status

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

Architecture