2011_AHM-Slicer4 - National Alliance for Medical Image

advertisement
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
Download