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