Presentation is loading. Please wait.

Presentation is loading. Please wait.

NA-MIC National Alliance for Medical Image Computing IGT Software Design and Process Bill Lorensen GE Research.

Similar presentations


Presentation on theme: "NA-MIC National Alliance for Medical Image Computing IGT Software Design and Process Bill Lorensen GE Research."— Presentation transcript:

1 NA-MIC National Alliance for Medical Image Computing http://na-mic.org IGT Software Design and Process Bill Lorensen GE Research

2 National Alliance for Medical Image Computing http://na-mic.org Outline Background Design Principles Software Process Challenges

3 National Alliance for Medical Image Computing http://na-mic.org Open Source Menu for Success A Community with a common vision A pool of talented and motivated developers/scientists A mix of academic and commercial An organized, light weight approach to software development A leadership structure Communication A business model

4 National Alliance for Medical Image Computing http://na-mic.org Guiding Principles Open is good Proprietary is bad Reuse is good NIH * is bad Modularity is good Monolithic is bad *Not invented here

5 NA-MIC National Alliance for Medical Image Computing http://na-mic.org Design Principles

6 National Alliance for Medical Image Computing http://na-mic.org Toolkits and Libraries Visualization - VTK Segmentation/Registration - ITK State machines – IGSTK UI – KWWidgets, ?? Tracking – OpenTracker, ?? DICOM – dcmtk, gdcm File I/O – nrrd, meta, pnglib, …

7 National Alliance for Medical Image Computing http://na-mic.org 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

8 National Alliance for Medical Image Computing http://na-mic.org 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”.

9 National Alliance for Medical Image Computing http://na-mic.org Design Patterns Good object-oriented software systems have recurring designs (patterns) that occur frequently ITK employs a number of powerful design patterns –object factories –command/observer –smart pointer memory management

10 National Alliance for Medical Image Computing http://na-mic.org 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

11 National Alliance for Medical Image Computing http://na-mic.org 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.

12 National Alliance for Medical Image Computing http://na-mic.org Slicer 3 Execution Model: Goals Provide interface to batch programs –Simplify and unify command line processing Auto generate C++ command line processing –Simplify and unify GUI Auto generate GUI

13 National Alliance for Medical Image Computing http://na-mic.org 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

14 National Alliance for Medical Image Computing http://na-mic.org Execution Model: Plugins XML Interface Description –Describes command line options –Describes suggestions for GUI GenerateCLP –Generates C++ command line processing code from XML –Reports XML description

15 National Alliance for Medical Image Computing http://na-mic.org Program Flow User Desktop prog.xmlGenerateCLPprogCLP.h Slicer Modules prog.cxx Non-NAMIC Cmd tools LONI Pipeline Birn Grid Data/Compute Slicer 3.0

16 National Alliance for Medical Image Computing http://na-mic.org Resample --xml filtering Resample Volume Resamples a volume 1.0 Bill Lorensen Resampling Parameters Parameters used for resampling outputPixelSpacing -s --spacing Spacing along each dimension (0 means use input spacing) Spacing 0,0,0 IO Input/output parameters InputVolume input Volume input 0 Input volume to be resampled OutputVolume output 1 Resampled Volume

17 National Alliance for Medical Image Computing http://na-mic.org Resample.cxx. #include “ResampleCLP.h” Main (int argc, char *argv[]) { PARSE_ARGS; algorithm code }

18 National Alliance for Medical Image Computing http://na-mic.org Resample --help USAGE: ResampleVolume [--xml] [--echo] [-s >] [--] [--version] [-h] Where: --xml Produce xml description of command line arguments (default: 0) --echo Echo the command line arguments (default: 0) -s >, --spacing > Spacing along each dimension (0 means use input spacing) (default: 0,0,0) --, --ignore_rest Ignores the rest of the labeled arguments following this flag. --version Displays version information and exits. -h, --help Displays usage information and exits. (required) Input volume to be resampled (default: None) (required) Resampled Volume (default: None) Resamples a volume

19 NA-MIC National Alliance for Medical Image Computing http://na-mic.org Software Process

20 National Alliance for Medical Image Computing http://na-mic.org NA-MIC Rhythms Yearly All-Hands Meeting Bi-annual Programmers’ Week Weekly Engineering T-Cons Nightly Build/Test –ITK –VTK –Slicer

21 National Alliance for Medical Image Computing http://na-mic.org NA-MIC Tools CMake –Cross-platform build Dart 2 –Build/Test server CTest –Build/Test client Cpack –Packaging and Distribution Media Wiki –Reporting/discussion forum POTS –T-cons

22 National Alliance for Medical Image Computing http://na-mic.org How DART Enables Collaboration CVS SVN Results posted on web (the dashboard) CVS/SVN maintains source code revisions DART compiles source code, runs tests Developers review results Developers check-in code

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

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

25 Multi-Platform Builds

26 National Alliance for Medical Image Computing http://na-mic.org IGT Challenges Define an architecture tailored to IGT requirements Leverage existing toolkits Fill in toolkit gaps

27 NA-MIC National Alliance for Medical Image Computing http://na-mic.org IGT Software Design and Process Bill Lorensen GE Research


Download ppt "NA-MIC National Alliance for Medical Image Computing IGT Software Design and Process Bill Lorensen GE Research."

Similar presentations


Ads by Google