National Library of Medicine Segmentation and Registration Toolkit Bill Lorensen GE Corporate Research and Development
What is it? A common Application Programmers Interface (API). A framework for software development A toolkit for registration and segmentation An open-source resource for future research A validation model for segmentation and registration. A framework for validation development Assistance for algorithm designers A seed repository for validated segmentations
Toolkit Requirements Shall handle large datasets Visible Human data on a 512MB PC Shall run on multiple platforms Sun, SGI, Linux, Windows Shall provide multiple language api’s Shall support parallel processing Shall have no visualization system dependencies Shall support multi-dimensional images Shall support n-component data
$7.5 million, 3 year contract Who’s sponsoring it? $7.5 million, 3 year contract The National Science Foundation The National Institute for Dental and Craniofacial Research The National Institute of Neurological Disorders and Stroke
Who’s creating it?
Contractor Roles GE CRD Kitware Insightful (formerly MathSoft) Utah Architecture, algorithms, testing, validation Kitware Architecture, user community support Insightful (formerly MathSoft) Statistical segmentation, mutual information registration, deformable registration, level sets Beta test management Utah Level sets, low level image processing UNC Image processing, registration, high-dimensional segmentation UPenn Deformable surfaces, fuzzy connectedness
Project Management Robust code repository (cvs) Active mailing list (mailman) Automated documentation (doxygen) Stable, cross platform build environment (cmake) Weekly t-cons Stable nightly build and test (300 builds) Continuous build Stable nightly dashboard (dart) Quarterly face-to-face developer meetings Semi-annual project meetings
Insight - Schedule Alpha Release, April 4, 2001. Source code snapshot Some non-consortium participation. Limited Public Alpha Version, Aug 8, 2001. Public Beta Release, December 15, 2001. Software Developer’s Consortium Meeting Nov. 8-9, 2001, NLM, Bethesda.
Code + vnl numerics Stable core About 300 classes Reuse from the vxl project Stable core Image Mesh Process objects About 300 classes About 100 image filters (process objects) About 100K lines of code
Software Testing Requirements Test as much of the software as possible Test as often as is feasible Make testing as non-invasive as possible Use distributed testing Reusable/Retargetable framework
Testing Design Distributed testing Separate data from presentation Developers and users must be able to easily contribute testing results Pulled together in a central dashboard Separate data from presentation Cross-platform solution Strive to have the same code tested in all locations
Use Cases Check-in changes (new code or code modification) Business Manager Software developers Check-in new test Follow and analyze the system status Verifying impact of the changes on Test or Build Manage the evolution of Insight software quality Create and maintain the dashboard Project Manager Improve coverage Insight Test Master
XML / XSLT Extensible Stylesheet Language Transformations File.html File.xml XSLT Engine File.txt File.xsl
Issues Usage of high risk C++ features Some commercial compilers (e.g. Sun) will not compile it Software engineering skills vary across contractors Commercial groups are strong Some academics are weak Validation groups cannot come to agreement on approach