NA-MIC National Alliance for Medical Image Computing NA-MIC Software Engineering Bill Lorensen GE Research NA-MIC Engineering Core PI
National Alliance for Medical Image Computing Structure
National Alliance for Medical Image Computing Core 1: Overview Harvard Georgia TechUNC UtahMIT Segmentation Registration Foundational Methods Structural Features and Statistics Connective Features and Statistics 1. Shape and Atlas Based Segmentation 2. Statistical Shape Analysis 3, DTI Connectivity Analysis 1. Diffusion-based Registration 2.Group Effect Maps 3. Automatic Segmentation 1. DTI Processing 2. Surface Processing 3. PDE Implementations 1. Combined Statistical/PDE Methods 1. Quantitative DTI Analysis 2. Cross-Sectional Shape Analysis 2. Stochastic Flow Models
National Alliance for Medical Image Computing Core 2: Overview GE IsomicsUCSD UCLAKitware Software Integration Software Engineering Software Quality Software Engineering Tools Data Access Tools 1. Cross-platform Build 2. Cross-platform Distribution 3. Cross-language API’s1. Software Architecture2. Software Process3. Software Quality1. Graphical programming interfaces 2. Coordinate pre-compiled tools 3. Data format interpreters1. DBP Applications 1. Grid Middleware 2. Data Grid 2. Application Methodology Distributed Computing Applications 3. Data Mediation3. Application Quality Assurance
National Alliance for Medical Image Computing Core 2: Overview Create a software development environment and culture that encourages and supports scientific algorithm innovation while at the same time produces high quality software that meets the needs of the driving biological projects
National Alliance for Medical Image Computing NA-MIC Philosophy Open the software from the very beginning –even in the early design stage All software is expected to rapidly evolve Make sharing, testing, and documentation part of your standard development process Only build on sharable code
National Alliance for Medical Image Computing NA-MIC Kit Slicer 3D –Interactive, DBP GUI LONI Pipeline –Distributed/parallel workflow BIRN Grid –Data repository ITK –Segmentation/registration toolkit VTK –Visualization/modeling toolkit
National Alliance for Medical Image Computing NA-MIC Tools CMake –Cross-platform build Dart 2 –Build/Test server CTest –Build/Test client Media Wiki –Reporting/discussion forum POTS –T-cons
National Alliance for Medical Image Computing NA-MIC Foundations Object-oriented design Generic Programming Design Patterns Frameworks Separation of Algorithms from Interfaces
National Alliance for Medical Image Computing Object-Oriented Design Dominated software systems throughout the 1990’s Continues to be the accepted software design technique Particularly useful for dealing with complexity Provides programmatic abstractions to deal with generalization and encapsulation C++ and Java have mechanisms to support OOD
National Alliance for Medical Image Computing Generic Programming Organize libraries consisting of generic—or reusable—software components. The essential ideas of generic programming are containers to hold data, iterators to access the data, and generic algorithms that use containers and iterators to create efficient, fundamental algorithms. ITK uses generic programming to process n-dimensional “images”.
National Alliance for Medical Image Computing Design Patterns Good object-oriented software systems have recurring designs (patterns) that occur frequently ITK and VTK employ a number of powerful design patterns –object factories –command/observer –smart pointer memory management
National Alliance for Medical Image Computing Frameworks Define how a group of participants can be put together to solve a particular task. Particularly suitable for describing complex flows or algorithms that have a number of steps that can be varied ITK Frameworks –A demand-driven data processing pipeline that connects algorithms to process n- dimensional image data –Registration framework –Level-set framework
National Alliance for Medical Image Computing Separation of Algorithms from Interfaces Implement the algorithms with a clear separation from the applications and especially the user interfaces. Uses the Command/Observer design pattern that permits applications to watch for significant events during the execution of an algorithm ITK has no built-in visualization, but has been interfaced to several systems including 3D Slicer, Analyze, SciRun and Volview.
National Alliance for Medical Image Computing User Desktop Slicer 3.0 AlgorithmsITKVTK Slicer Modules VTK Apps Using ITK Scripts of Slicer Mods Batch Programs Non-NAMIC Cmd tools LONI Pipeline Birn Grid Data/Compute Slicer 3.0
National Alliance for Medical Image Computing NA-MIC Rhythms Yearly All-Hands Meeting Bi-annual Programmers’ Week Weekly Engineering T-Cons Nightly Build/Test –ITK –VTK –Slicer
National Alliance for Medical Image Computing All Hands Meeting Day 0 – DTI Workshop Day 1 – Progress Day 2 - Future
National Alliance for Medical Image Computing Programmer’s Week
National Alliance for Medical Image Computing NCBC Center Interactions MRI Muscle Segmentation –Stanford Center for Biomedical Computation COPD Image Analysis –Harvard I2B2 Pipeline Integration –Center for Computational Biology
National Alliance for Medical Image Computing NA-MIC Challenges Identity Licensing Mixed skills Distributed team Business model
NA-MIC National Alliance for Medical Image Computing NA-MIC Software Engineering Bill Lorensen GE Research NA-MIC Engineering Core PI