Difference between revisions of "NA-MIC-Kit"

From NAMIC Wiki
Jump to: navigation, search
(Undo revision 95773 by Zack (talk))
Tag: Undo
 
(118 intermediate revisions by 11 users not shown)
Line 2: Line 2:
 
__NOTOC__
 
__NOTOC__
 
= Overview =
 
= Overview =
{| border="00" cellpadding="5" cellspacing="0"
+
{| border="00" cellpadding="5" cellspacing="0" style="text-align:left;"
 
|-
 
|-
 
| rowspan="2"|
 
| rowspan="2"|
The NA-MIC Kit is a free open source software platform. The NA-MIC Kit is distributed under a BSD-style license without restrictions or "give-back" requirements and is intended for research, but there are not restrictions on other uses. It consists of the 3D Slicer application software, a number of tools and toolkits such as VTK and ITK, and a software engineering methodology that enables multiplatform implementations.  It also draws on other "best practices" from the community to support automatic testing for quality assurance. The NA-MIC kit uses a modular approach, where the individual components can be used by themselves or together. The NA-MIC kit is fully-compatible with local installation (behind institutional firewalls) and installation as an internet service.  Significant effort has been invested to ensure compatibility with standard file formats and interoperability with a large number of external applications.  
+
The NA-MIC Kit is a free open source software platform. The NA-MIC Kit is distributed under a BSD-style license without restrictions or "give-back" requirements and is intended for research, but there are no restrictions on other uses. It consists of the 3D Slicer application software, a number of tools and toolkits such as VTK and ITK, and a software engineering methodology that enables multiplatform implementations.  It also draws on other "best practices" from the community to support automatic testing for quality assurance. The NA-MIC kit uses a modular approach, where the individual components can be used by themselves or together. The NA-MIC kit is fully-compatible with local installation (behind institutional firewalls) and installation as an internet service.  Significant effort has been invested to ensure compatibility with standard file formats and interoperability with a large number of external applications.  
  
See this [[Media:NA-MIC_Kit_revised.ppt| '''presentation on the NA-MIC Kit''']] for more information.
+
| style="background: #ebeced" colspan="2" align="center"| <b>3D Slicer</b>
| style="background: #ebeced" colspan="2" align="center"| <b>Featured Software Tool</b>
 
 
|-
 
|-
 
| style="background: #ebeced"|[[Image:Slicer3-11-2007.jpg|center|350px|Visualization of the SPL/PNL Brain Atlas]]  
 
| style="background: #ebeced"|[[Image:Slicer3-11-2007.jpg|center|350px|Visualization of the SPL/PNL Brain Atlas]]  
| style="background: #ebeced"|3D Slicer is a general-purpose application to load, view, analyze, process and interact with biomedical data. Slicer can be extended at run-time through plug-in modules, enabling algorithms developers and researchers to modify and specialize Slicer to a particular application. Slicer is distributed under open source license free of commercial restriction. For more information about 3D Slicer click [http://www.slicer.org '''here'''].  
+
<br>3D Slicer is a general-purpose application for loading, viewing, analyzing, processing and interacting with biomedical data. Slicer can be extended at run-time through plug-in modules, enabling algorithms developers and researchers to modify and specialize Slicer to a particular application. Slicer is distributed under open source license free of commercial restriction. For more information about 3D Slicer click [http://www.slicer.org '''here'''].  
 
|}
 
|}
 
<br />
 
<br />
Line 22: Line 21:
 
* application developers
 
* application developers
 
* software toolkit developers and users; and
 
* software toolkit developers and users; and
* software process tools including support for building, testing, community building and software management.
+
* software process tools including support for building, testing, community building and software management, and is outlined [http://wiki.na-mic.org/Wiki/index.php/Media:NAMICSoftwareProcess.ppt in this presentation (ppt)], and [http://www.na-mic.org/Wiki/index.php/Media:NAMIC_Poster_SoftwareProcess_July_2006.pdf this poster (pdf)].
  
The NA-MIC Kit has also been employed by users wishing to perform image analysis and visualization tasks. For example, the Slicer application is being used at [http://iic.harvard.edu/ Harvard's IIC] for astrophysics research.  Other tools, such as [http://www.cmake.org CMake], are in wide use around the world in projects as disparate as [http://www.kde.org KDE], one of the world's open source software projects distributed as the Linux desktop windowing environment. [http://lwn.net/Articles/188693/ '''Why the KDE project switched to CMake''']. One of the largest FOSS efforts adopts a component of the NA-MIC kit for the next major release (June 2006).
+
The NA-MIC Kit has also been employed by users wishing to perform image analysis and visualization tasks. For example, the Slicer application is being used at [http://iic.harvard.edu/ Harvard's IIC] for astrophysics research.  Other tools, such as [http://www.cmake.org CMake], are in world wide use in projects as disparate as [http://www.kde.org KDE], one of the world's largest open source software projects. (For more information about the KDE Linux desktop environment, see [http://lwn.net/Articles/188693/ '''Why the KDE project switched to CMake'''], which describes how one of the largest FOSS efforts adopts a component of the NA-MIC kit.)
  
 
== Software Overview ==
 
== Software Overview ==
Users of the NAMIC Kit will typically use a combination of the modular components. More information about each tool is available below.
+
Users of the NAMIC Kit will typically use a combination of its many modular components. More information about each tool is available below.
  
* [http://www.slicer.org 3D Slicer] is a general purpose application. Biomedical researchers will typically use this software tool to load, view, analyze, process and save image data. [http://www.xnat.org XNAT] is an open source image database that interoperates closely with 3D Slicer.
+
* [http://www.slicer.org 3D Slicer] is a general purpose application. Biomedical researchers will typically use this software tool to load, view, analyze, process and save image data. Slicer has been implemented to interoperate with many other tools, including [http://www.xnat.org XNAT], which is an open source image database.
 
* Slicer modules, which are dynamically loaded by Slicer at run-time, can be used to extend Slicer's core functionality including defining graphical user interfaces. Modules are typically used by algorithms and application developers.
 
* Slicer modules, which are dynamically loaded by Slicer at run-time, can be used to extend Slicer's core functionality including defining graphical user interfaces. Modules are typically used by algorithms and application developers.
* Application and algorithms developers may also use NA-MIC Kit toolkits and libraries. For example, the [http://www.itk.org Insight Segmentation and Registration Toolkit ITK] can be used to develop slicer modules for medical image analysis. The [http://www.vtk.org Visualization Toolkit] can be used to process and visualize data. [http://www.kwwidgets.org KWWidgets] is a 2D graphical user interface toolset that can be used to build applications. Teem is a library of general purpose command-line tools that are useful for processing data. Finally, those individuals wishing to create and manage complex software, the NAMIC-Kit software process is available as embodied in CMake, CTest, CPack, DART and the various documentation, bug tracking and communication tools.
+
* Application and algorithms developers may also use NA-MIC Kit toolkits and libraries. For example, the [http://www.itk.org Insight Segmentation and Registration Toolkit ITK] can be used to develop slicer modules for medical image analysis. The [http://www.vtk.org Visualization Toolkit] can be used to process, visualize and graphically interact with data. Teem is a library of general purpose command-line tools that are useful for processing data. Finally, those individuals wishing to create and manage complex software, the NAMIC-Kit software process is available as embodied in CMake, CTest, CPack, DART and the various documentation, bug tracking and communication tools.
 +
 
 +
{|
 +
|width="120px" | [[Image:NAMIC-Kit-Overview.png|500px]]
 +
|align="left" |Thus the NA-MIC Kit consists of a modular set of interoperable free open source software (FOSS) packages, managed under a collaborative, high quality software engineering methodology (see Figure). These packages have been carefully architected to accommodate technology contributions from the NA-MIC Investigators, and to rapidly deploy these technologies to NA-MIC and the broader biomedical imaging community.Algorithm developers contribute to the computational platform (image analysis: ITK and Teem; visualization: VTK and OpenCL) and application developers create tools within an architectural framework (scene graph: MRML, GUI: Qt, scientific computing: Python) in conjunction with data management facilities (XNAT) and under the control of the quality software process (CMake and CDash). The 3D Slicer platform is designed to accommodate accelerated innovation with a flexible execution engine on which community-developed analysis modules can be rapidly deployed to clinical researchers and the broader community via the 3D Slicer.
 +
|}
 +
 
 +
==Software Methodology==
 +
 
 +
The Open Source Software development methodology that is used by NA-MIC is summarized in the following documents:
 +
*[http://www.youtube.com/watch?v=8Ut9o4OdSC0 A Google Tech talk] by Bill Hoffman is available for viewing (presented at Google NYC in December 2009).
 +
*[http://wiki.na-mic.org/Wiki/index.php/Media:NAMICSoftwareProcess.ppt This presentation (ppt)] was given to the participants of the [http://www.na-mic.org/Wiki/index.php/2007_Programming/Project_Week_MIT Fifth NA-MIC Project Event] by Bill Hoffman in June 2007.
 +
*[http://www.na-mic.org/Wiki/index.php/Media:NAMIC_Poster_SoftwareProcess_July_2006.pdf This poster (pdf)] was presented by Will Schroeder at the All-NCBC meeting in July 2006.
 +
*[[media:Engineering_Methodology_-_2008_June_Workshop_Germany.ppt|This presentation (ppt)]] was given at a training event by Sebastien Barre in June 2008.
 +
*[[media:Na-MIC-Germany-CTestCDash.ppt|This presentation (ppt)]] was given at a training event by Julien Jomier in June 2008.
 +
 
 +
==Support Resources==
 +
* [[NA-MIC-Kit_Documentation|Documentation]]
 +
* [[NA-MIC-kit-curriculum|Training curriculum]]
  
 
== Open Source Software ==
 
== Open Source Software ==
NAMIC fully embraces and advocates the use of open source software tools and data. We are using BSD style licenses without restrictions on the use of the software and free of license requirements. There are many reasons for this including
+
NAMIC fully embraces and advocates the use of open source software tools and data. We use BSD style licenses without restrictions on the use of the software and free of license requirements. There are many reasons for this including
 
* ease of collaboration in the spirit of scientific research (open science);
 
* ease of collaboration in the spirit of scientific research (open science);
 
* improved software quality; and
 
* improved software quality; and
Line 41: Line 58:
  
 
== Download Central ==
 
== Download Central ==
Please go [http://slicer.spl.harvard.edu/Downloads here to download software, documentation and data].
+
Please go [http://www.slicer.org/Downloads here to download Slicer software, documentation and data].
  
 
= Software Packages =
 
= Software Packages =
  
{|
+
{| class="wikitable"
| style="width:10%" | [[Image:3DSlicerLogo-V-Color-201x204.png|thumb|left|175px]]
+
|style="background:white"|[[Image:3DSlicerLogo-V-Color-201x204.png|100px]]
| style="width:90%" |
+
|[http://wiki.na-mic.org/Wiki/index.php/SlicerSummary 3D Slicer]<br>3D Slicer is a software package for visualization and medical image computing. A tutorial for prospective users of the program  can be found on the web. See our  [http://wiki.slicer.org/slicerWiki/index.php/Training '''training'''] page for an introduction to the use of 3D Slicer. [http://wiki.na-mic.org/Wiki/index.php/SlicerSummary More...]
 
+
|-
== [http://wiki.na-mic.org/Wiki/index.php/Slicer 3D Slicer] ==
+
|style="background:white"|[[Image:VTK-logo-medium-res.jpg|100px]]
 
+
|[http://wiki.na-mic.org/Wiki/index.php/VTKSummary The Visualization Toolkit VTK]<br>The Visualization Toolkit is an object-oriented toolkit for processing, viewing and interacting with a variety of data forms including images, volumes, polygonal data, and simulation datasets such as meshes, structured grids, and hierarchical multi-resolution forms. It also supports large-scale data processing and rendering. [http://wiki.na-mic.org/Wiki/index.php/VTKSummary More...]
3D Slicer is a software package for visualization and medical image computing. A tutorial for prospective users of the program  can be found on the web. See our  [[Slicer:Workshops:User_Training_101|'''tutorials''']] page for an introduction to the use of 3D Slicer. [http://wiki.na-mic.org/Wiki/index.php/Slicer More...]
+
|-
 
+
|style="background:white"|[[Image:itkLogo.jpg|100px]]
 +
|[http://wiki.na-mic.org/Wiki/index.php/ITKSummary The Insight Toolkit ITK]<br>The Insight Segmentation and Registration Toolkit ([http://www.itk.org ITK]) is an open-source software toolkit for performing registration and segmentation. Segmentation is the process of identifying and classifying data found in digitally sampled representations. Typically the sampled representation is an image acquired from such medical instrumentation as CT or MRI scanners. Registration is the task of aligning or developing correspondences between data. For example, in the medical environment, a CT scan may be registered with a MRI scan in order to combine the information contained in both. [http://wiki.na-mic.org/Wiki/index.php/ITKSummary More...]
 +
|-
 +
|style="background:white"|[[Image:NRRDLogo.png|100px]]
 +
|[http://wiki.na-mic.org/Wiki/index.php/TeemSummary Teem Libraries and Command Line Tools]<br>Teem is a coordinated group of libraries for representing, processing, and visualizing scientific raster data. Teem includes command-line tools that permit the library functions to be quickly applied to files and streams, without having to write any code. [http://wiki.na-mic.org/Wiki/index.php/TeemSummary More...]
 +
|-
 +
|style="background:white"|[[Image:CMake-logo-med-res.png|100px]]
 +
|[http://wiki.na-mic.org/Wiki/index.php/CmakeSummary CMake The Cross-platform Make Tool]<br>[http://www.cmake.org CMake] is used to control the software build process using simple platform, compiler and operating system independent configuration files. CMake generates native makefiles and workspaces that can be used in the development environment of your choice. CMake is quite sophisticated: it is possible to support complex environments requiring source code repository access, system configuration, pre-processor generation, code generation, and template instantiation. [http://wiki.na-mic.org/Wiki/index.php/CmakeSummary More...]
  
 +
<font color="red">'''Featured: '''</font> [http://lwn.net/Articles/188693/ CMake has been adopted by KDE], one of the world's largest open source software systems. CMake is downloaded over 1500 times/day.
 +
|-
 +
|style="background:white"|[[Image:Cdash.gif|100px]]
 +
|[http://wiki.na-mic.org/Wiki/index.php/CmakeSummary CDash, CTest, CPack Software Process Tools]<br>As an adjunct to [http://www.cmake.org CMake] the tools [http://wiki.na-mic.org/Wiki/index.php/CDashSummary CDash], [http://wiki.na-mic.org/Wiki/index.php/CTestSummary CTest], [http://wiki.na-mic.org/Wiki/index.php/CPackSummary CPack] are used to test and package all components of the NAMIC kit. CTest is a testing client that locally performs testing on a software repository, and then communicates the results of the testing to CDash (and other testing, dashboard servers such as DART2). CPack is a cross-platform tool for packaging, distributing and installing the NAMIC kit on various systems including Linux, Windows, and Mac OSX. [http://wiki.na-mic.org/Wiki/index.php/OverviewSoftwareProcessSummary More...]
 +
|-
 +
|style="background:white"|[[Image:MIDASLogo.png|100px]]
 +
|[http://www.kitware.com/products/midas.html MIDAS and the Publication Database]<br>[http://www.kitware.com/products/midas.html MIDAS] is open-source software for hosting heterogeneous databases, e.g., databases of images, publications, meta-data, presentations, and more. MIDAS also provides interfaces so that its data can be easily accesses over the web and via C++/python/Java. MIDAS can also harvest data from other databases on the web, e.g., PubMed and genomics databases. NA-MIC has a MIDAS installation to serve as the NA-MIC Publications Database. MIDAS is also being used to host NA-MIC data, the Insight Journal, the MIDAS Journal, and the VTK Journal. Direct access to MIDAS's data from within Slicer is being developed to support informatics analysis and visualization. Direct access to MIDAS's publications from within Slicer is being developed to provide documentation and integrative tutorials. [http://wiki.na-mic.org/Wiki/index.php/MIDASSummary More...]
 
|-
 
|-
 
+
|style="background:white"|[[Image:Logo-xnat.gif|100px]]
| | [[Image:VTK-logo-medium-res.jpg|thumb|left|175px]]
+
|[http://xnat.org XNAT Web-based Image Informatics Server]<br>The Extensible Neuroimaging Archive Toolkit (XNAT) is an open source software platform designed to facilitate management and exploration of neuroimaging and related data. XNAT includes a secure database backend and a rich web-based user interface. NA-MIC is working to provide a portable, easy-to-install and easy-to-administer version of XNAT that can be deployed as part the Kit. These efforts will build on ongoing work in the BIRN community to integrate Slicer with XNAT.
| |
 
 
 
== [http://wiki.na-mic.org/Wiki/index.php/VTKSummary The Visualization Toolkit VTK] ==
 
 
 
The Visualization Toolkit is an object-oriented toolkit for processing, viewing and interacting with a variety of data forms including images, volumes, polygonal data, and simulation datasets such as meshes, structured grids, and hierarchical multi-resolution forms. It also supports large-scale data processing and rendering. [http://wiki.na-mic.org/Wiki/index.php/VTKSummary More...]
 
 
 
 
 
 
|-
 
|-
 
+
|style="background:white"|[[Image:CTKLogo.gif|100px]]
| | [[Image:itkLogo.jpg|thumb|left|175px]]
+
|[http://wiki.na-mic.org/Wiki/index.php/CTKSummary CTK GUI Toolkit]<br>CTK is an Open Source library of GUI classes based on Qt, VTK, ITK, CMake, and DCMTK. This library is an international effort to simplify the development of medical image analysis and scientific computing applications. NAMIC is assisting in the architectural design, helping them establish software practices, contributing classes, and evaluating early developments. [http://wiki.na-mic.org/Wiki/index.php/CTKSummary More...]
| |
 
 
 
== [http://wiki.na-mic.org/Wiki/index.php/ITKSummary The Insight Toolkit ITK] ==
 
 
 
The Insight Segmentation and Registration Toolkit ([http://www.itk.org ITK]) is an open-source software toolkit for performing registration and segmentation. Segmentation is the process of identifying and classifying data found in digitally sampled representations. Typically the sampled representation is an image acquired from such medical instrumentation as CT or MRI scanners. Registration is the task of aligning or developing correspondences between data. For example, in the medical environment, a CT scan may be registered with a MRI scan in order to combine the information contained in both. [http://wiki.na-mic.org/Wiki/index.php/ITKSummary More...]
 
 
 
<font color="red">'''New: '''</font> ITK Version 3.4 has been announced.
 
 
 
 
|-
 
|-
 
+
|style="background:white"|[[Image:QtLogo.gif|100px]]
| | [[Image:KWWIdgetsLogo.png|thumb|left|175px]]
+
|[http://qt.nokia.com/ Qt GUI Toolkit]<br>Qt is a suite of tools and frameworks designed to streamline the creation of cross-platform applications for Microsoft Windows, Mac OS X, and Linux. [http://qt.nokia.com/ More...]
| |
 
 
 
== [http://wiki.na-mic.org/Wiki/index.php/KWWidgetsSummary KWKidgets GUI Toolkit] ==
 
 
 
KWWidgets is an Open Source library of GUI classes based on Tcl/Tk with a C++ API. This library was originally developed by Kitware for ParaView, and now has been extended in functionality and architecture thanks to NAMIC support. [http://wiki.na-mic.org/Wiki/index.php/KWWidgetsSummary More...]
 
 
 
 
|-
 
|-
 +
|style="background:white"|[[Image:PythonLogo.png|100px]]
 +
|[http://www.python.org/ Python]<br>Python is a programming language that enables developers and users to work quickly and integrate systems more effectively. Python enables rapid gains in productivity and lower software maintenance costs.  [http://www.python.org/ More...]
 +
|}
  
  
| | [[Image:NRRDLogo.png|thumb|left|175px]]
+
===View NA-MIC-Kit dashboards here:===
| |
+
The testing dashboards continually captures information relative to the quality of the various components of the NAMIC-Kit. Each component has its own dashboard, and a suite of tests that are executed on a continual basis. Developers check out these dashboards to monitor the health of the software, and to make fixes when problems are discovered. The following are the component dashboards for the NAMIC-Kit.
 +
*[http://www.cdash.org/CDash/index.php?project=Slicer3 Slicer]
 +
*[http://www.cdash.org/CDash/index.php?project=VTK VTK]  
 +
*[http://www.cdash.org/CDash/index.php?project=Insight ITK]  
 +
*[http://www.cdash.org/CDash/index.php?project=CMake CMake]
 +
*[http://www.cdash.org/CDash/index.php?project=Midas Midas]
 +
*[http://my.cdash.org/index.php?project=CTK CTK]
  
== [http://wiki.na-mic.org/Wiki/index.php/TeemSummary Teem Libraries and Command Line Tools] ==
+
<br>
  
Teem is a coordinated group of libraries for representing, processing, and visualizing scientific raster data. Teem includes command-line tools that permit the library functions to be quickly applied to files and streams, without having to write any code. [http://wiki.na-mic.org/Wiki/index.php/TeemSummary More...]
+
Go to [[NA-MIC-Kit-Old]] to see the version of the NA-MIC Kit web pages prior to October 2007.
  
 +
=NA-MIC Kit in Numbers=
 +
The numbers in this table are statistics characterizing the [http://wiki.na-mic.org/Wiki/index.php/NA-MIC-Kit NA-MIC kit]. They provide an estimate of the scale of the Kit, including approximate costs to create and total effort expended. Note that estimates such as these are required because large open-source software systems cannot be tracked via direct investment since much of the effort is voluntary in nature, and distributed across the world through a variety of organizations. Also note that the numbers reflect the current state as of the date of capture. Reorganization of the code can lead to fluctuation in the numbers over time.
 +
<BR><small> Source: http://www.ohloh.org. Captured on June. 27 2014. See the Ohloh website for an explanation of how the numbers were computed. Used salary estimate of $100K per developer.</small>
  
 +
{|border="1" cellpadding="2"
 +
| style="width:25%"|Package
 +
| style="width:25%"|Lines of code
 +
| style="width:25%"|Person years
 +
| style="width:25%"|Price tag at 100k per person year
 +
|-
 +
| Slicer
 +
| align="right" |1,446,222
 +
| align="right" |408
 +
| align="right" |$40,838,073
 +
|-
 +
| VTK
 +
| align="right" |1,493,877
 +
| align="right" |427
 +
| align="right" |$42,660,861
 +
|-
 +
| ITK
 +
| align="right" |1,602,013
 +
| align="right" |457
 +
| align="right" |$45,665,146
 
|-
 
|-
 
+
| CMake / CTest / CPack
 
+
| align="right" |832,766
| | [[Image:Logo-xnat.gif|thumb|left|175px]]
+
| align="right" |227
| |
+
| align="right" |$22,732,345
 
+
|-
== [http://xnat.org XNAT Web-based Image Informatics Server] ==
+
| CDash
 
+
| align="right" |243,231
The Extensible Neuroimaging Archive Toolkit (XNAT) is an open source software platform designed to facilitate management and exploration of neuroimaging and related data. XNAT includes a secure database backend and a rich web-based user interface.
+
| align="right" |62
 
+
| align="right" |$6,199,044
NA-MIC is working to provide a portable, easy-to-install and easy-to-administer version of XNAT that can be deployed as part the Kit.  These efforts will build on ongoing work in the BIRN community to integrate Slicer with XNAT.
+
|-
 
+
| Midas
 +
| align="right" |650,953
 +
| align="right" |176
 +
| align="right" |$17,635,039
 
|-
 
|-
 
+
| CTK
| | [[Image:BatchMakeLogo.gif|thumb|left|175px]]
+
| align="right" |177,606
| |
+
| align="right" |45
 
+
| align="right" |$4,486,786
== [http://batchmake.org Batchmake] ==
 
 
 
BatchMake is a cross platform tool for batch processing of large amount of data.
 
BatchMake can process datasets locally or on distributed systems using Condor (a grid computing tool that enables distributed computing across the network). Some of the key features of BatchMake include: 1) a BSD License, 2) CMake-like scripting language, 3) distributed scripting via Condor, 4) a centralized remote website for online statistical analysis. 4) a user Interface using FLTK, and 5) BatchMake is cross platform. [http://batchmake.org More...]
 
 
 
 
 
 
|-
 
|-
 
+
| Teem
| | [[Image:CMake-logo-med-res.png|thumb|left|175px]]
+
| align="right" |170,261
| |
+
| align="right" |44
 
+
| align="right" |$4,383,427
== [http://wiki.na-mic.org/Wiki/index.php/CmakeSummary CMake The Cross-platform Make Tool] ==
 
 
 
[http://www.cmake.org CMake] is used to control the software build process using simple platform, compiler and operating system independent configuration files. CMake generates native makefiles and workspaces that can be used in the development environment of your choice. That is, CMake does not attempt to replace standard development tools such as compilers and debuggers, rather it produces build files and other development resources that can benefit from automated generation. Further, once CMake configuration files are created, they can be used to produce developer resources across the many platforms that CMake supports. CMake is quite sophisticated: it is possible to support complex environments requiring system configuration, pre-processor generation, code generation, and template instantiation. [http://wiki.na-mic.org/Wiki/index.php/CmakeSummary More...]
 
 
 
<font color="red">'''New: '''</font> [http://lwn.net/Articles/188693/ CMake has been adopted by KDE], one of the world's largest open source software systems.
 
 
 
 
|-
 
|-
 
+
| DCMTK
 
+
| align="right" |471,114
| | [[Image:Cdash.gif|thumb|left|175px]]
+
| align="right" |127
| |
+
| align="right" |$12,690,868
 
 
== [http://wiki.na-mic.org/Wiki/index.php/CmakeSummary CTest and CPack Software Process Tools] ==
 
 
 
As an adjunct to [http://www.cmake.org CMake] the tools [http://wiki.na-mic.org/Wiki/index.php/CTestSummary CTest] and [http://wiki.na-mic.org/Wiki/index.php/CPackSummary CPack] are used to test and package all components of the NAMIC kit. CTest is a testing client that locally performs testing on a software repository, and then communicates the results of the testing to DART (and other testing, dashboard servers). CPack is a cross-platform tool for packaging, distributing and installing the NAMIC kit on various systems including Linux, Windows, and Mac OSX. [http://wiki.na-mic.org/Wiki/index.php/OverviewSoftwareProcessSummary More...]
 
 
 
 
|-
 
|-
 
+
| XNat
| | [[Image:DART-Logo.png|thumb|left|175px]]
+
| align="right" |508,354
| |
+
| align="right" |137
 
+
| align="right" |$13,700,329
== [http://wiki.na-mic.org/Wiki/index.php/CmakeSummary DART Testing Server] ==
 
 
 
DART is a testing server, meaning that it gathers the results of testing from clients (such as CTest) and aggregates them on the testing "dashboard". This dashboard is central to the NAMIC software process; it provides a centralized web site where NAMIC Kit developers and users can ascertain the day-to-day health of the software, and repair the software immediately if faults are discovered. It facilitates distributed development, and provides the stability that complex software such as the NAMIC Kit requires to support a large community of users.  [http://wiki.na-mic.org/Wiki/index.php/DartSummary More...]<br>
 
===View NA-MIC-Kit dashboards here:===
 
*[http://public.kitware.com/dashboard.php?name=slicer&page=1 Slicer]
 
*[http://public.kitware.com/dashboard.php?name=vtk VTK]
 
*[http://public.kitware.com/dashboard.php?name=itk ITK]
 
*[http://public.kitware.com/dashboard.php?name=cmake CMake]
 
*[http://public.kitware.com/dashboard.php?name=kwwidgets KWWidgets]
 
*[http://public.kitware.com/dashboard.php?name=BatchMake BatchMake]
 
 
 
 
 
 
 
 
|-
 
|-
 
+
|style="background:#8EDEB5; color:black" |Total
 
+
| style="background:#8EDEB5; color:black" align="right" |7,596,397
Go to [[NA-MIC-Kit-Old]] to see the version of the NA-MIC Kit web pages prior to October 2007.
+
| style="background:#8EDEB5; color:black" align="right" |2,110
 +
| style="background:#8EDEB5; color:black" align="right" |$210,991,918
 +
|}

Latest revision as of 09:59, 25 March 2020

Home < NA-MIC-Kit
Back to NA-MIC Internal Collaborations

Overview

The NA-MIC Kit is a free open source software platform. The NA-MIC Kit is distributed under a BSD-style license without restrictions or "give-back" requirements and is intended for research, but there are no restrictions on other uses. It consists of the 3D Slicer application software, a number of tools and toolkits such as VTK and ITK, and a software engineering methodology that enables multiplatform implementations. It also draws on other "best practices" from the community to support automatic testing for quality assurance. The NA-MIC kit uses a modular approach, where the individual components can be used by themselves or together. The NA-MIC kit is fully-compatible with local installation (behind institutional firewalls) and installation as an internet service. Significant effort has been invested to ensure compatibility with standard file formats and interoperability with a large number of external applications.

3D Slicer
Visualization of the SPL/PNL Brain Atlas


3D Slicer is a general-purpose application for loading, viewing, analyzing, processing and interacting with biomedical data. Slicer can be extended at run-time through plug-in modules, enabling algorithms developers and researchers to modify and specialize Slicer to a particular application. Slicer is distributed under open source license free of commercial restriction. For more information about 3D Slicer click here.



Target Audience

The NA-MIC Kit has been created to support a spectrum of users and developers. This includes:

  • biomedical researchers
  • algorithms developers
  • application developers
  • software toolkit developers and users; and
  • software process tools including support for building, testing, community building and software management, and is outlined in this presentation (ppt), and this poster (pdf).

The NA-MIC Kit has also been employed by users wishing to perform image analysis and visualization tasks. For example, the Slicer application is being used at Harvard's IIC for astrophysics research. Other tools, such as CMake, are in world wide use in projects as disparate as KDE, one of the world's largest open source software projects. (For more information about the KDE Linux desktop environment, see Why the KDE project switched to CMake, which describes how one of the largest FOSS efforts adopts a component of the NA-MIC kit.)

Software Overview

Users of the NAMIC Kit will typically use a combination of its many modular components. More information about each tool is available below.

  • 3D Slicer is a general purpose application. Biomedical researchers will typically use this software tool to load, view, analyze, process and save image data. Slicer has been implemented to interoperate with many other tools, including XNAT, which is an open source image database.
  • Slicer modules, which are dynamically loaded by Slicer at run-time, can be used to extend Slicer's core functionality including defining graphical user interfaces. Modules are typically used by algorithms and application developers.
  • Application and algorithms developers may also use NA-MIC Kit toolkits and libraries. For example, the Insight Segmentation and Registration Toolkit ITK can be used to develop slicer modules for medical image analysis. The Visualization Toolkit can be used to process, visualize and graphically interact with data. Teem is a library of general purpose command-line tools that are useful for processing data. Finally, those individuals wishing to create and manage complex software, the NAMIC-Kit software process is available as embodied in CMake, CTest, CPack, DART and the various documentation, bug tracking and communication tools.
NAMIC-Kit-Overview.png Thus the NA-MIC Kit consists of a modular set of interoperable free open source software (FOSS) packages, managed under a collaborative, high quality software engineering methodology (see Figure). These packages have been carefully architected to accommodate technology contributions from the NA-MIC Investigators, and to rapidly deploy these technologies to NA-MIC and the broader biomedical imaging community.Algorithm developers contribute to the computational platform (image analysis: ITK and Teem; visualization: VTK and OpenCL) and application developers create tools within an architectural framework (scene graph: MRML, GUI: Qt, scientific computing: Python) in conjunction with data management facilities (XNAT) and under the control of the quality software process (CMake and CDash). The 3D Slicer platform is designed to accommodate accelerated innovation with a flexible execution engine on which community-developed analysis modules can be rapidly deployed to clinical researchers and the broader community via the 3D Slicer.

Software Methodology

The Open Source Software development methodology that is used by NA-MIC is summarized in the following documents:

Support Resources

Open Source Software

NAMIC fully embraces and advocates the use of open source software tools and data. We use BSD style licenses without restrictions on the use of the software and free of license requirements. There are many reasons for this including

  • ease of collaboration in the spirit of scientific research (open science);
  • improved software quality; and
  • widespread dissemination of NAMIC products including software, documentation, data, training materials, and ideas.

Along these lines, we have had extensive discussions relative to acceptable open source standards in the NAMIC kit. We are also working with NIH, NLM and other interested parties to establish open source standards.

Download Central

Please go here to download Slicer software, documentation and data.

Software Packages

3DSlicerLogo-V-Color-201x204.png 3D Slicer
3D Slicer is a software package for visualization and medical image computing. A tutorial for prospective users of the program can be found on the web. See our training page for an introduction to the use of 3D Slicer. More...
VTK-logo-medium-res.jpg The Visualization Toolkit VTK
The Visualization Toolkit is an object-oriented toolkit for processing, viewing and interacting with a variety of data forms including images, volumes, polygonal data, and simulation datasets such as meshes, structured grids, and hierarchical multi-resolution forms. It also supports large-scale data processing and rendering. More...
ItkLogo.jpg The Insight Toolkit ITK
The Insight Segmentation and Registration Toolkit (ITK) is an open-source software toolkit for performing registration and segmentation. Segmentation is the process of identifying and classifying data found in digitally sampled representations. Typically the sampled representation is an image acquired from such medical instrumentation as CT or MRI scanners. Registration is the task of aligning or developing correspondences between data. For example, in the medical environment, a CT scan may be registered with a MRI scan in order to combine the information contained in both. More...
NRRDLogo.png Teem Libraries and Command Line Tools
Teem is a coordinated group of libraries for representing, processing, and visualizing scientific raster data. Teem includes command-line tools that permit the library functions to be quickly applied to files and streams, without having to write any code. More...
CMake-logo-med-res.png CMake The Cross-platform Make Tool
CMake is used to control the software build process using simple platform, compiler and operating system independent configuration files. CMake generates native makefiles and workspaces that can be used in the development environment of your choice. CMake is quite sophisticated: it is possible to support complex environments requiring source code repository access, system configuration, pre-processor generation, code generation, and template instantiation. More...

Featured: CMake has been adopted by KDE, one of the world's largest open source software systems. CMake is downloaded over 1500 times/day.

Cdash.gif CDash, CTest, CPack Software Process Tools
As an adjunct to CMake the tools CDash, CTest, CPack are used to test and package all components of the NAMIC kit. CTest is a testing client that locally performs testing on a software repository, and then communicates the results of the testing to CDash (and other testing, dashboard servers such as DART2). CPack is a cross-platform tool for packaging, distributing and installing the NAMIC kit on various systems including Linux, Windows, and Mac OSX. More...
MIDASLogo.png MIDAS and the Publication Database
MIDAS is open-source software for hosting heterogeneous databases, e.g., databases of images, publications, meta-data, presentations, and more. MIDAS also provides interfaces so that its data can be easily accesses over the web and via C++/python/Java. MIDAS can also harvest data from other databases on the web, e.g., PubMed and genomics databases. NA-MIC has a MIDAS installation to serve as the NA-MIC Publications Database. MIDAS is also being used to host NA-MIC data, the Insight Journal, the MIDAS Journal, and the VTK Journal. Direct access to MIDAS's data from within Slicer is being developed to support informatics analysis and visualization. Direct access to MIDAS's publications from within Slicer is being developed to provide documentation and integrative tutorials. More...
Logo-xnat.gif XNAT Web-based Image Informatics Server
The Extensible Neuroimaging Archive Toolkit (XNAT) is an open source software platform designed to facilitate management and exploration of neuroimaging and related data. XNAT includes a secure database backend and a rich web-based user interface. NA-MIC is working to provide a portable, easy-to-install and easy-to-administer version of XNAT that can be deployed as part the Kit. These efforts will build on ongoing work in the BIRN community to integrate Slicer with XNAT.
CTKLogo.gif CTK GUI Toolkit
CTK is an Open Source library of GUI classes based on Qt, VTK, ITK, CMake, and DCMTK. This library is an international effort to simplify the development of medical image analysis and scientific computing applications. NAMIC is assisting in the architectural design, helping them establish software practices, contributing classes, and evaluating early developments. More...
QtLogo.gif Qt GUI Toolkit
Qt is a suite of tools and frameworks designed to streamline the creation of cross-platform applications for Microsoft Windows, Mac OS X, and Linux. More...
PythonLogo.png Python
Python is a programming language that enables developers and users to work quickly and integrate systems more effectively. Python enables rapid gains in productivity and lower software maintenance costs. More...


View NA-MIC-Kit dashboards here:

The testing dashboards continually captures information relative to the quality of the various components of the NAMIC-Kit. Each component has its own dashboard, and a suite of tests that are executed on a continual basis. Developers check out these dashboards to monitor the health of the software, and to make fixes when problems are discovered. The following are the component dashboards for the NAMIC-Kit.


Go to NA-MIC-Kit-Old to see the version of the NA-MIC Kit web pages prior to October 2007.

NA-MIC Kit in Numbers

The numbers in this table are statistics characterizing the NA-MIC kit. They provide an estimate of the scale of the Kit, including approximate costs to create and total effort expended. Note that estimates such as these are required because large open-source software systems cannot be tracked via direct investment since much of the effort is voluntary in nature, and distributed across the world through a variety of organizations. Also note that the numbers reflect the current state as of the date of capture. Reorganization of the code can lead to fluctuation in the numbers over time.
Source: http://www.ohloh.org. Captured on June. 27 2014. See the Ohloh website for an explanation of how the numbers were computed. Used salary estimate of $100K per developer.

Package Lines of code Person years Price tag at 100k per person year
Slicer 1,446,222 408 $40,838,073
VTK 1,493,877 427 $42,660,861
ITK 1,602,013 457 $45,665,146
CMake / CTest / CPack 832,766 227 $22,732,345
CDash 243,231 62 $6,199,044
Midas 650,953 176 $17,635,039
CTK 177,606 45 $4,486,786
Teem 170,261 44 $4,383,427
DCMTK 471,114 127 $12,690,868
XNat 508,354 137 $13,700,329
Total 7,596,397 2,110 $210,991,918