Title: Slicer3 and Slicer4
1Slicer3 and Slicer4
- Steve Pieper, PhD
- Chief Architect for 3D Slicer
Engineering Core PI for Neuroimage Analysis
Center Engineering Site PI and Dissemination
Co-PI for National Alliance for Medical Image
Computing CEO of Isomics, Inc.
2Topics
- Overview of 3D Slicer
- Slicer3 to Slicer4 Transition Issues
- Radiation Therapy Implementation Issues
(Discussion Topics)
3Core 1b Engineering5 Aims / 5 Platforms
Architecture tools, operating paradigms,
reporting mechanisms, integration points End-user
platform interactive methods and information
visualization for longitudinal analysis,
exploratory data analysis, and translational
research Computational platform stream
processing, cloud computing, statistical
analysis, informatics, machine learning Data
management non-imaging and derived data, DICOM
and cloud services Software engineering and
software quality navigable timeline for
revision control, build, test, documentation and
release
4What is Slicer?
- Multi-OS End-User Application (Windows, Linux,
Mac) - Medical Image Visualization and Analysis
- Multi-Modal CT, MR, fMRI, dMRI
- Integrated View Images, Surfaces, Annotations,
Devices - Project on the Scale of a Microsoft Office or
Adobe Photoshop - Extensible Architecture
- Dozens of Custom Modules
- Application Specific Functionality
- Fully Open and Non-Restrictive License
- All Source Code Available
- Can Be Used in Commercial or Proprietary Projects
- Common Platform for Medical Image Computing
Research and Dissemination - Because Slicer Exists, Researchers Dont Need to
Reinvent the Wheel for Each Project
http//slicer.org
Images A. Jakab and the Slicer Community
5End-user platform
- 3D Slicer a cross platform system for
translating innovative algorithms into clinical
research applications
- Developer Needs
- Clinical Grade IO and UI
- Rich Utility Libraries
- Extensible and Reconfigurable
- Stable Base
- Easily Deployable
User Needs Easy Install and Upgrade Standard
Clinical Behavior Consistent Interface Advanced
Functionality
6Developer Needs
- Clinical Grade IO and UI
- Slicer developers work closely with DBPs on real
data and are exposed to clinical state of the art - Rich Utility Libraries
- NA-MIC Kit
- Extensible and Reconfigurable
- Loadable Extensions
- Scriptable GUI
- Stable Base
- Nightly Extensions Built Against Latest Slicer
Release - Slicer Release Relies on Upstream Release (ITK,
VTK, etc) - Easily Deployable
- Binary Installers for the most common platforms
7User Needs
- Easy Install and Upgrade
- Binary installers and Extension Wizard
- Standard Clinical Behavior
- Adhere to Conventions where Possible
- Varies by Domain (IGT Navigation vs. Neuroscience
Research vs. RT Planning) - New Functionality has no Standard by Definition
- Consistent Interface
- Learning one Slicer Module should help you know
how to use other ones - Advanced Functionality
- Main Motivation you use slicer because nothing
else does what you need we try to make that as
painless as possible
8Translational Focus
- Improved DICOM Support
- Local Database
- Query / Retrieve / Store
- Application Hosting
- OpenIGT Link and Real-Time Performance
- Clinical Interfaces
- Uncluttered Display
- Compare View, Lightbox
- Large Format, Multi-Monitor
9Slicer Development Dissemination
- Distributed Team
- Twice-Yearly Project Weeks with 100 Developers
- Yearly Large Releases Integrate Latest Advances
- Slicer 3.6.3 Released March, 2011
- Training and Outreach Events
- Over 30 in 2010 Alone!
- Slicer Extension Modules
- Standard Framework for Disseminating our Science
- End-to-End Solutions Contributed by Dozens of
Institutions - Publications, Code, Data, Tutorials
- Reproducible Science
10Slicer Impact
- 20,000 Downloads Per Year
- 200 Peer Reviewed Publications
- Dozens of Funded Collaborations
- Active Academic and Industrial Participation
Software is Increasingly Essential for Medical
Research Slicer has a Proven Formula for
Software Innovation and Dissemination
11Slicer4 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
12Slicer4 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
13Slicer4 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
14Slicer4 Qt
- Qt for Slicer4
- Released LGPL by Nokia
- Large Developer Community
- Many Highly Refined Tools
- Major Effort Underway thanks to ARRA Supplement
- Results are Very Encouraging, but there is a lot
To Do - Qt as a Platform
- No Longer in Nokias Critical Path for
Smartphones - Desktop Qt Works Well for Our Needs
- Need to Watch Long Term Development Trends
15Slicer4 Qt Impact
- No More X11 on Mac OSX
- New C Paradigms
- Designer for GUI Construction
- Native WebKit
- Native HTML (CSS, HTML5, webgl)
- JavaScript Engine
16Slicer4 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
17Slicer4 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
18Slicer4 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
19Slicer4 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
20Slicer4 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
21Slicer4 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
22Slicer4 Whats 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.
23Integration Options
24Extensions
- Keep the base package lean and mean
- Modules have individual identity
- Per-module web site, svn, downloads, mailing
lists, wiki - Allow users to assemble their own set of tools
- Customized Bundles by task or application
- Easy to download compatible extensions
- Analogous to Firefox extensions
- Integrate extension builds into
developer/nightly/release processs - NITRC Supplement to NA-MIC helping to pay for
needed infrastructure (Neuroimaging Informatics
Tools and Resources Clearinghouse) - NITRC can host neuroimaging projects (gforge
implementation)
25Extensions
- Keep the base package lean and mean
- Modules have individual identity
- Per-module web site, svn, downloads, mailing
lists, wiki - Allow users to assemble their own set of tools
- Customized Bundles by task or application
- Easy to download compatible extensions
- Analogous to Firefox extensions
- Integrate extension builds into
developer/nightly/release processs - NITRC Supplement to NA-MIC helping to pay for
needed infrastructure (Neuroimaging Informatics
Tools and Resources Clearinghouse) - NITRC can host neuroimaging projects (gforge
implementation)
26Extensions Interface
27Slicer4 Radiation Therapy Topics
- DICOM RT
- Greg Sharp will Describe Slicer3/Slicer4
Plastimatch I/O - ITKv4 was Planning DICOM RT Support
- DCMRT is a DCMTK Extension from Oldenberg (Offis)
and DKFZ in Heidelberg - Multi-Structure Volume Representation in VTK and
ITK - Vector Valued Pixel Data
- Efficient Transforms and Rendering
- Preserving DICOM Header Information
- CUDA/OpenCL Deployment (shadie)
- Server-Side-Slicer
- In Prototype Phase
- Web Apps for Deployment to Workstations via
Browser - Javascript, HTML5, WebGL