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

Slides:



Advertisements
Similar presentations
Slicer3 for developers – Sonia Pujol, Ph.D. -1- National Alliance for Medical Image Computing Programming into Slicer3 Sonia Pujol, Ph.D. Surgical Planning.
Advertisements

National Alliance for Medical Image Computing Slicer3 plugins Common architecture for interactive and batch processing.
National Alliance for Medical Image Computing User Desktop Slicer 3.0 Architecure AlgorithmsITKVTK Slicer Modules VTK Apps Using ITK.
National Alliance for Medical Image Computing Slicer3 Architecture.
Programming into Slicer3. Sonia Pujol, Ph.D., Harvard Medical School National Alliance for Medical Image Computing ©2010,ARR
NA-MIC National Alliance for Medical Image Computing National Alliance for Medical Image Computing: NAMIC Ron Kikinis, M.D.
National Alliance for Medical Image Computing Slicer3 plugins Common architecture for interactive and batch processing.
1 OBJECTIVES To generate a web-based system enables to assemble model configurations. to submit these configurations on different.
National Alliance for Medical Image Computing Anatomy of a plugin Common architecture for interactive and batch processing.
NA-MIC National Alliance for Medical Image Computing 3D Slicer Interactive Modules Steve Pieper, PhD.
National Alliance for Medical Image Computing User Desktop Slicer 3.0 Architecure AlgorithmsITKVTK Slicer Modules VTK Apps Using ITK.
June 22, 2005NCRR NIBIB PI Meeting Open, Distributed and Collaborative Software Development Bill Lorensen GE Research
1 ParaView Current Architecture and History Current Architecture and History Issues with the Current Design Issues with the Current Design.
NA-MIC National Alliance for Medical Image Computing Slicer4 Guided Tour Steve Pieper, Ph.D.
Software Process, CMake, Dashboards, CPack Bill Hoffman Kitware, Inc.
Software Process for Distributed Teams KITWARE, Inc.
EUROPEAN UNION Polish Infrastructure for Supporting Computational Science in the European Research Space Cracow Grid Workshop’10 Kraków, October 11-13,
NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering End-user Platform Steve Pieper Isomics, Inc.
NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering End-user Platform Steve Pieper Isomics, Inc.
Lecture 7: Objects and Interaction 1  Principles of Interactive Graphics  CMSCD2012  Dr David England, Room 718,  ex 2271 
September 6, 2007Open Source Software Practice Overview of the Software Process Bill Lorensen GE Research (retired)
Getting Started with ITK in Python Language
NA-MIC National Alliance for Medical Image Computing NAMIC-Kit Update Will Schroeder Jim Miller Bill Lorensen.
National Alliance for Medical Image Computing Grid Computing with BatchMake Julien Jomier Kitware Inc.
NA-MIC National Alliance for Medical Image Computing The NA-MIC Kit National Alliance for Medical Image Computing.
NA-MIC National Alliance for Medical Image Computing NA-MIC Software Engineering Bill Lorensen GE Research NA-MIC Engineering Core PI.
ITK 10 Year Anniversery ITK – Version 4 Looking Back to Look Forward Bill Lorensen marchingcubes.org.
NA-MIC National Alliance for Medical Image Computing Why NITRC Matters to NA-MIC Steve Pieper, PhD.
NA-MIC National Alliance for Medical Image Computing Slicer4 CLI Slicer Execution Model.
Workflow based Slicer IGT Module : Tutorial Andinet Enquobahrie, PhD Kitware Inc December, 2008.
Community Software Engineering Practices and Principles A Case Study of the Open Source Insight Toolkit (ITK) Terry Yoo (National Library of Medicine),
NA-MIC National Alliance for Medical Image Computing NA-MIC Core 2 Update: Kitware Will Schroeder Kitware NA-MIC Core 2 PI NA-MIC Core.
NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering Software Process Stephen R. Aylward Kitware, Inc.
SimITK and SimVTK: ITK and VTK in Simulink DG Gobbi, P Mousavi, KM Li, J Xiang, A Campigotto, A LaPointe, G Fichtinger, P Abolmaesumi Medical Image Analysis.
William Schroeder, Ph.D. §, Andy Cedilnik §, Sebastien Barré, Ph.D. §, William Lorensen ‡, James Miller, Ph.D. ‡, Daniel Blezek, Ph.D. ‡ § Kitware Inc.,
NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering Software Process Stephen R. Aylward Kitware, Inc.
NA-MIC National Alliance for Medical Image Computing The NA-MIC Kit: ITK, VTK, Pipelines, Grids and 3D Slicer as An Open Platform for.
NA-MIC National Alliance for Medical Image Computing ParaView Server Manager Berk Geveci Andy Cedilnik.
NA-MIC National Alliance for Medical Image Computing National Alliance for Medical Image Computing: NAMIC Ron Kikinis, M.D.
NA-MIC National Alliance for Medical Image Computing UCSD: Engineering Core 2 Portal and Grid Infrastructure.
NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering Components Jim Miller GE Research.
Frameworks CompSci 230 S Software Construction.
Slicer3 for developers – S.Pujol -1- National Alliance for Medical Image Computing Slicer3 Course for developers Sonia Pujol, Ph.D. Surgical Planning Laboratory.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
NA-MIC National Alliance for Medical Image Computing 3D Slicer and the NA-MIC Kit for IGT Research Steve Pieper, PhD NAC, SPL, NA-MIC,
Programming into Slicer3. Sonia Pujol, Ph.D., Harvard Medical School National Alliance for Medical Image Computing ©
Connections to Other Packages The Cactus Team Albert Einstein Institute
NA-MIC National Alliance for Medical Image Computing Slicer 2010: Past, Present, and Future Steve Pieper, Ph.D.
August 2003 At A Glance The IRC is a platform independent, extensible, and adaptive framework that provides robust, interactive, and distributed control.
Neuroimage Analysis Center An NCRR National Resource Center NAC Engineering Core Steve Pieper, Core PI SPL; Isomics, Inc.
Slicer 3 Ron Kikinis, Steve Pieper. CTK Workshop Heidelberg, June 29/30, 2009 Slicer Goals  Stable, Usable, Cross Platform, End-User Software for Medical.
NA-MIC National Alliance for Medical Image Computing Kitware, Inc. Core 2 Engineering William J. Schroeder.
LONI Pipeline Jagadeeswaran LONI,UCLA. Site PI: Arthur W Toga Director, Laboratory of Neuro Imaging Co-Director, Brain Mapping Center Director, Training.
NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering Computational Platform Jim Miller GE Research.
Aerial Image Exploitation Change Detection Event Detection Object Tracking Region Classification Medical Image Analysis Automated Cancer Detection Automatic.
NA-MIC National Alliance for Medical Image Computing Non-Interactive Tools Stephen Aylward, Kitware
NA-MIC National Alliance for Medical Image Computing NA-MIC Core 2 Update Isomics Steve Pieper Isomics, Inc. NA-MIC Engineering Isomics.
NA-MIC National Alliance for Medical Image Computing Engineering a Segmentation Framework Marcel Prastawa.
INFSO-RI Enabling Grids for E-sciencE Using of GANGA interface for Athena applications A. Zalite / PNPI.
National Alliance for Medical Image Computing User Desktop Slicer 3.0 Architecure AlgorithmsITKVTK Slicer Modules VTK Apps Using ITK.
Ganga/Dirac Data Management meeting October 2003 Gennady Kuznetsov Production Manager Tools and Ganga (New Architecture)
National Alliance for Medical Image Computing Slicer3 Plugins Common architecture for interactive and batch processing.
NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering Data Management Daniel Marcus Washington University.
NA-MIC All Hands Meeting - 1/9/2006
Pipeline Execution Environment
Core 2 Progress Day 1 Salt Lake City
Slicer3 Architecture.
National Library of Medicine Segmentation and Registration Toolkit
Slicer Timeline GUI Thread Processing Thread
NA-MIC Kit
Presentation transcript:

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

National Alliance for Medical Image Computing Outline Background Design Principles Software Process Challenges

National Alliance for Medical Image Computing 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

National Alliance for Medical Image Computing Guiding Principles Open is good Proprietary is bad Reuse is good NIH * is bad Modularity is good Monolithic is bad *Not invented here

NA-MIC National Alliance for Medical Image Computing Design Principles

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

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 employs 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 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

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

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

National Alliance for Medical Image Computing 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

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

National Alliance for Medical Image Computing 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

NA-MIC National Alliance for Medical Image Computing Software Process

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

National Alliance for Medical Image Computing 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

National Alliance for Medical Image Computing Dart

National Alliance for Medical Image Computing

Multi-Platform Builds

National Alliance for Medical Image Computing IGT Challenges Define an architecture tailored to IGT requirements Leverage existing toolkits Fill in toolkit gaps

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