<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.na-mic.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lorensen</id>
	<title>NAMIC Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.na-mic.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lorensen"/>
	<link rel="alternate" type="text/html" href="https://www.na-mic.org/wiki/Special:Contributions/Lorensen"/>
	<updated>2026-06-07T23:09:44Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2012_Summer_Project_Week:ITKv4_Integration&amp;diff=76734</id>
		<title>2012 Summer Project Week:ITKv4 Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2012_Summer_Project_Week:ITKv4_Integration&amp;diff=76734"/>
		<updated>2012-06-21T20:15:59Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Key Investigators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-MIT2012.png|[[2012_Summer_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Iowa: Hans Johnson, Kent Williams&lt;br /&gt;
* GE: Jim Miller&lt;br /&gt;
* SPL: Steve Pieper&lt;br /&gt;
* Kitware: JC, Julien&lt;br /&gt;
* NLM (C): Bradley Lowekamp&lt;br /&gt;
* NoWare: Bill Lorensen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Move Slicer from ITKv3 to ITKv4&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
Figure out how to get packaging working when building with ITKv4&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
Basic building is working (Has been for a long time).&lt;br /&gt;
During Project Week we resolved the packaging issues.&lt;br /&gt;
# ITKv4 now supports runtime only installs. This required changes to both Slicer and ITKv4. The Slicer changes are checked into the repo.&lt;br /&gt;
# The current changes to Slicer work with ITK 4.1.&lt;br /&gt;
# Currenty, a few .h files are included in the Slicer package. Better support has been tested and will be available in ITK 4.2.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Delivery Mechanism==&lt;br /&gt;
&lt;br /&gt;
As part of the CMake build system&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://www.na-mic.org/Bug/view.php?id=2007&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2012_Summer_Project_Week:ITKv4_Integration&amp;diff=76425</id>
		<title>2012 Summer Project Week:ITKv4 Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2012_Summer_Project_Week:ITKv4_Integration&amp;diff=76425"/>
		<updated>2012-06-18T18:55:23Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-MIT2012.png|[[2012_Summer_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Iowa: Hans Johnson, Kent Williams&lt;br /&gt;
* GE: Jim Miller&lt;br /&gt;
* SPL: Steve Pieper&lt;br /&gt;
* Kitware: JC, Julien&lt;br /&gt;
* NLM (C): Bradley Lowekamp&lt;br /&gt;
* NoWare: Bill Lorensen&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Move Slicer from ITKv3 to ITKv4&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
Figure out how to get packaging working when building with ITKv4&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
Basic building is working (Has been for a long time).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Delivery Mechanism==&lt;br /&gt;
&lt;br /&gt;
As part of the CMake build system&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
http://www.na-mic.org/Bug/view.php?id=2007&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63888</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63888"/>
		<updated>2011-01-19T20:59:26Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Measure - Test Failures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen - Noware&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
* Mark Scully (Kent Williams/Hans Johnson) - Iowa&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' the integration of Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify, repair and document incompatible Slicer4/ITK4 API changes throughout the development of Slicer4 and ITK4.&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There were 605 compilation errors.&lt;br /&gt;
** Developer Instructions&lt;br /&gt;
*** http://www.slicer.org/slicerWiki/index.php/Slicer4&lt;br /&gt;
*** Source code downloaded as:&lt;br /&gt;
**** &amp;quot;svn co http://svn.slicer.org/Slicer4/trunk/&amp;quot;&lt;br /&gt;
*** Build Instructions:&lt;br /&gt;
**** [http://www.slicer.org/slicerWiki/index.php/Slicer4_Build_instructions Build Instructions: SuperBuild]&lt;br /&gt;
**** ccmake -DQT_QMAKE_EXECUTABLE:FILEPATH=/home/ibanez/bin/Qt/qtsdk-2010.05/qt/bin/qmake ~/src/NAMIC/Slicer4/SuperBuild &lt;br /&gt;
*** Dasboard submissions:&lt;br /&gt;
**** http://www.cdash.org/CDash/index.php?project=Slicer4&lt;br /&gt;
**** Linux 64 bits (eldorado.kitware)&lt;br /&gt;
**** Window 64 bits (redwall.kitware)&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
** After some changes to Slicer4 and ITK4, we successfully build Slicer4 without any compile error. Here is the [http://www.cdash.org/CDash/viewTest.php?onlyfailed&amp;amp;buildid=821247 dashboard] that shows 10 test failures. During the week the failures were reduced to 5.&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
** A Nightly Dashboard will be setup to continuously monitor any subsequent changes.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the [http://ij.itk.org/itkfaq/index.php?|ITK Migration Guide] section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Added itkExceptionMacro to each pure virtual method that was not implemented.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4.  Mark Scully is nearly done with necessary refactorings.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Task assigned to Kent Williams&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4. This will be upgraded to gdcm2. See other project week item: [[http://na-mic.org/Wiki/index.php/2011_Winter_Project_Week:DicomToNrrdRefactoring]]&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Not Yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Measure - Test Failures==&lt;br /&gt;
* DiffusionTensorEstimationTest floating point overflow&lt;br /&gt;
** Nrrd floating point exception (expected)&lt;br /&gt;
* DiffusionTensorMathematicsTest floating point overflow&lt;br /&gt;
** Nrrd floating point exception (expected)&lt;br /&gt;
* N4ITKBiasFieldCorrectionTest floating point zero divide&lt;br /&gt;
** Fixed by Andri Fedorov. Slicer 3 upgraded to itkv4 version.&lt;br /&gt;
** Needed new baseline&lt;br /&gt;
* PolyDataToLabelmapTest small image error&lt;br /&gt;
**  --compareNumberOfPixelsTolerance 20&lt;br /&gt;
* RegisterImagesMultiResTest abort&lt;br /&gt;
** Problems in regression testing.&lt;br /&gt;
* ResampleDTI2RigidTransformsLinearTest small image error&lt;br /&gt;
** 1 pixel difference. Added  --compareIntensityTolerance 1.&lt;br /&gt;
* ResampleDTIBSplineWSInterpolationTest small image error&lt;br /&gt;
** 1 pixel difference. Added  --compareIntensityTolerance 1.&lt;br /&gt;
* ResampleVolume2BSplineWSInterpolationTest SetParameters exception&lt;br /&gt;
** Fixed by Francois Budin&lt;br /&gt;
* ResampleVolume2HFieldTest SetParameters exception&lt;br /&gt;
** Fixed by Francois Budin&lt;br /&gt;
* ResampleVolume2RotationNNTest segmentation violation&lt;br /&gt;
** The WarpTransform3D was not usable in the ResampleImageFilter since it has no parameters, but is controlled by the DeformationField ivar. The class was modified to provide a CreateAnother method.&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the ITK4 API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
: Rigid3DTransform was meant to be a base class for 3D rigid registration. Unfortunately, in prior versions of ITK, it had a New() method. Since it has 12 optimization parameters, its use in registration is unstable. The preferred rigid registration is Versor3DRigidRegistration. In ITK4 we decided to enforce the intent of the original class (as an abstract base class). Since Slicer/3/4 was using it as a non-virtual class, we added two backward compatible solutions:&lt;br /&gt;
:# If the ITK cmake variable ITKV3_COMPATIBILITY flag is ON, itk::Rigid3DTransform behaves exactly as it did in ITK3.x.&lt;br /&gt;
:# When Slicer4 transitions to ITK4 and uses new ITK4 capabilities, the old behavior of itk::Rigid3DTransform is available in itkv3::Rigid3DTransform.&lt;br /&gt;
:# http://review.source.kitware.com/#change,680&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
: In ITK3, itk::Transform provided dummy implementations for some methods that should be implemented by derived classes. These dummy methods printed a warning &amp;quot;This method should be implemented in subclasses&amp;quot;.In ITK4, to make developers aware that they should implement these methods for derived subclasses, these methods are pure virtual. This means that subclasses that do not provide an implementation for these methods will no longer compile. Slicer's  ''Applications/CLI/DiffusionApplications/ResampleDTI/itkWarpTransform3D'' did not implement ''SetParameters()'',''SetFixedParameters()'', ''TransformVector()'' and ''TransformCovariantVector()''. The Slicer4 code now provides these methods and throws an exception if they are used.&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63847</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63847"/>
		<updated>2011-01-17T20:19:25Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Measure - Test Failures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen - Noware&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
* Mark Scully (Kent Williams/Hans Johnson) - Iowa&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' the integration of Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify, repair and document incompatible Slicer4/ITK4 API changes throughout the development of Slicer4 and ITK4.&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There were 605 compilation errors.&lt;br /&gt;
** Developer Instructions&lt;br /&gt;
*** http://www.slicer.org/slicerWiki/index.php/Slicer4&lt;br /&gt;
*** Source code downloaded as:&lt;br /&gt;
**** &amp;quot;svn co http://svn.slicer.org/Slicer4/trunk/&amp;quot;&lt;br /&gt;
*** Build Instructions:&lt;br /&gt;
**** [http://www.slicer.org/slicerWiki/index.php/Slicer4_Build_instructions Build Instructions: SuperBuild]&lt;br /&gt;
**** ccmake -DQT_QMAKE_EXECUTABLE:FILEPATH=/home/ibanez/bin/Qt/qtsdk-2010.05/qt/bin/qmake ~/src/NAMIC/Slicer4/SuperBuild &lt;br /&gt;
*** Dasboard submissions:&lt;br /&gt;
**** http://www.cdash.org/CDash/index.php?project=Slicer4&lt;br /&gt;
**** Linux 64 bits (eldorado.kitware)&lt;br /&gt;
**** Window 64 bits (redwall.kitware)&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
** After some changes to Slicer4 and ITK4, we successfully build Slicer4 without any compile error. Here is the [http://www.cdash.org/CDash/viewTest.php?onlyfailed&amp;amp;buildid=821247 dashboard] that shows 10 test failures. During the week the failures were reduced to 5.&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
** A Nightly Dashboard will be setup to continuously monitor any subsequent changes.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the [http://ij.itk.org/itkfaq/index.php?|ITK Migration Guide] section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Added itkExceptionMacro to each pure virtual method that was not implemented.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4.  Mark Scully is nearly done with necessary refactorings.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Task assigned to Kent Williams&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4. This will be upgraded to gdcm2. See other project week item: [[http://na-mic.org/Wiki/index.php/2011_Winter_Project_Week:DicomToNrrdRefactoring]]&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Not Yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Measure - Test Failures==&lt;br /&gt;
* DiffusionTensorEstimationTest floating point overflow&lt;br /&gt;
** Nrrd floating point exception (expected)&lt;br /&gt;
* DiffusionTensorMathematicsTest floating point overflow&lt;br /&gt;
** Nrrd floating point exception (expected)&lt;br /&gt;
* N4ITKBiasFieldCorrectionTest floating point zero divide&lt;br /&gt;
** Fixed by Andri Fedorov. Slicer 3 upgraded to itkv4 version.&lt;br /&gt;
** Needed new baseline&lt;br /&gt;
* PolyDataToLabelmapTest small image error&lt;br /&gt;
**  --compareNumberOfPixelsTolerance 20&lt;br /&gt;
* RegisterImagesMultiResTest abort&lt;br /&gt;
** TBD&lt;br /&gt;
* ResampleDTI2RigidTransformsLinearTest small image error&lt;br /&gt;
** 1 pixel difference. Added  --compareIntensityTolerance 1.&lt;br /&gt;
* ResampleDTIBSplineWSInterpolationTest small image error&lt;br /&gt;
** 1 pixel difference. Added  --compareIntensityTolerance 1.&lt;br /&gt;
* ResampleVolume2BSplineWSInterpolationTest SetParameters exception&lt;br /&gt;
** Fixed by Francois Budin&lt;br /&gt;
* ResampleVolume2HFieldTest SetParameters exception&lt;br /&gt;
** Fixed by Francois Budin&lt;br /&gt;
* ResampleVolume2RotationNNTest segmentation violation&lt;br /&gt;
** TBD&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the ITK4 API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
: Rigid3DTransform was meant to be a base class for 3D rigid registration. Unfortunately, in prior versions of ITK, it had a New() method. Since it has 12 optimization parameters, its use in registration is unstable. The preferred rigid registration is Versor3DRigidRegistration. In ITK4 we decided to enforce the intent of the original class (as an abstract base class). Since Slicer/3/4 was using it as a non-virtual class, we added two backward compatible solutions:&lt;br /&gt;
:# If the ITK cmake variable ITKV3_COMPATIBILITY flag is ON, itk::Rigid3DTransform behaves exactly as it did in ITK3.x.&lt;br /&gt;
:# When Slicer4 transitions to ITK4 and uses new ITK4 capabilities, the old behavior of itk::Rigid3DTransform is available in itkv3::Rigid3DTransform.&lt;br /&gt;
:# http://review.source.kitware.com/#change,680&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
: In ITK3, itk::Transform provided dummy implementations for some methods that should be implemented by derived classes. These dummy methods printed a warning &amp;quot;This method should be implemented in subclasses&amp;quot;.In ITK4, to make developers aware that they should implement these methods for derived subclasses, these methods are pure virtual. This means that subclasses that do not provide an implementation for these methods will no longer compile. Slicer's  ''Applications/CLI/DiffusionApplications/ResampleDTI/itkWarpTransform3D'' did not implement ''SetParameters()'',''SetFixedParameters()'', ''TransformVector()'' and ''TransformCovariantVector()''. The Slicer4 code now provides these methods and throws an exception if they are used.&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63846</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63846"/>
		<updated>2011-01-17T20:18:22Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Measure - Test Failures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen - Noware&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
* Mark Scully (Kent Williams/Hans Johnson) - Iowa&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' the integration of Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify, repair and document incompatible Slicer4/ITK4 API changes throughout the development of Slicer4 and ITK4.&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There were 605 compilation errors.&lt;br /&gt;
** Developer Instructions&lt;br /&gt;
*** http://www.slicer.org/slicerWiki/index.php/Slicer4&lt;br /&gt;
*** Source code downloaded as:&lt;br /&gt;
**** &amp;quot;svn co http://svn.slicer.org/Slicer4/trunk/&amp;quot;&lt;br /&gt;
*** Build Instructions:&lt;br /&gt;
**** [http://www.slicer.org/slicerWiki/index.php/Slicer4_Build_instructions Build Instructions: SuperBuild]&lt;br /&gt;
**** ccmake -DQT_QMAKE_EXECUTABLE:FILEPATH=/home/ibanez/bin/Qt/qtsdk-2010.05/qt/bin/qmake ~/src/NAMIC/Slicer4/SuperBuild &lt;br /&gt;
*** Dasboard submissions:&lt;br /&gt;
**** http://www.cdash.org/CDash/index.php?project=Slicer4&lt;br /&gt;
**** Linux 64 bits (eldorado.kitware)&lt;br /&gt;
**** Window 64 bits (redwall.kitware)&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
** After some changes to Slicer4 and ITK4, we successfully build Slicer4 without any compile error. Here is the [http://www.cdash.org/CDash/viewTest.php?onlyfailed&amp;amp;buildid=821247 dashboard] that shows 10 test failures. During the week the failures were reduced to 5.&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
** A Nightly Dashboard will be setup to continuously monitor any subsequent changes.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the [http://ij.itk.org/itkfaq/index.php?|ITK Migration Guide] section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Added itkExceptionMacro to each pure virtual method that was not implemented.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4.  Mark Scully is nearly done with necessary refactorings.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Task assigned to Kent Williams&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4. This will be upgraded to gdcm2. See other project week item: [[http://na-mic.org/Wiki/index.php/2011_Winter_Project_Week:DicomToNrrdRefactoring]]&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Not Yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Measure - Test Failures==&lt;br /&gt;
* DiffusionTensorEstimationTest floating point overflow&lt;br /&gt;
** TBD&lt;br /&gt;
* DiffusionTensorMathematicsTest floating point overflow&lt;br /&gt;
** TBD&lt;br /&gt;
* N4ITKBiasFieldCorrectionTest floating point zero divide&lt;br /&gt;
** Fixed by Andri Fedorov. Slicer 3 upgraded to itkv4 version.&lt;br /&gt;
* PolyDataToLabelmapTest small image error&lt;br /&gt;
**  --compareNumberOfPixelsTolerance 20&lt;br /&gt;
* RegisterImagesMultiResTest abort&lt;br /&gt;
** TBD&lt;br /&gt;
* ResampleDTI2RigidTransformsLinearTest small image error&lt;br /&gt;
** 1 pixel difference. Added  --compareIntensityTolerance 1.&lt;br /&gt;
* ResampleDTIBSplineWSInterpolationTest small image error&lt;br /&gt;
** 1 pixel difference. Added  --compareIntensityTolerance 1.&lt;br /&gt;
* ResampleVolume2BSplineWSInterpolationTest SetParameters exception&lt;br /&gt;
** Fixed by Francois Budin&lt;br /&gt;
* ResampleVolume2HFieldTest SetParameters exception&lt;br /&gt;
** Fixed by Francois Budin&lt;br /&gt;
* ResampleVolume2RotationNNTest segmentation violation&lt;br /&gt;
** TBD&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the ITK4 API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
: Rigid3DTransform was meant to be a base class for 3D rigid registration. Unfortunately, in prior versions of ITK, it had a New() method. Since it has 12 optimization parameters, its use in registration is unstable. The preferred rigid registration is Versor3DRigidRegistration. In ITK4 we decided to enforce the intent of the original class (as an abstract base class). Since Slicer/3/4 was using it as a non-virtual class, we added two backward compatible solutions:&lt;br /&gt;
:# If the ITK cmake variable ITKV3_COMPATIBILITY flag is ON, itk::Rigid3DTransform behaves exactly as it did in ITK3.x.&lt;br /&gt;
:# When Slicer4 transitions to ITK4 and uses new ITK4 capabilities, the old behavior of itk::Rigid3DTransform is available in itkv3::Rigid3DTransform.&lt;br /&gt;
:# http://review.source.kitware.com/#change,680&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
: In ITK3, itk::Transform provided dummy implementations for some methods that should be implemented by derived classes. These dummy methods printed a warning &amp;quot;This method should be implemented in subclasses&amp;quot;.In ITK4, to make developers aware that they should implement these methods for derived subclasses, these methods are pure virtual. This means that subclasses that do not provide an implementation for these methods will no longer compile. Slicer's  ''Applications/CLI/DiffusionApplications/ResampleDTI/itkWarpTransform3D'' did not implement ''SetParameters()'',''SetFixedParameters()'', ''TransformVector()'' and ''TransformCovariantVector()''. The Slicer4 code now provides these methods and throws an exception if they are used.&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63825</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63825"/>
		<updated>2011-01-16T18:23:44Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Measure - Test Failures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen - Noware&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
* Mark Scully (Kent Williams/Hans Johnson) - Iowa&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' the integration of Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify, repair and document incompatible Slicer4/ITK4 API changes throughout the development of Slicer4 and ITK4.&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There were 605 compilation errors.&lt;br /&gt;
** Developer Instructions&lt;br /&gt;
*** http://www.slicer.org/slicerWiki/index.php/Slicer4&lt;br /&gt;
*** Source code downloaded as:&lt;br /&gt;
**** &amp;quot;svn co http://svn.slicer.org/Slicer4/trunk/&amp;quot;&lt;br /&gt;
*** Build Instructions:&lt;br /&gt;
**** [http://www.slicer.org/slicerWiki/index.php/Slicer4_Build_instructions Build Instructions: SuperBuild]&lt;br /&gt;
**** ccmake -DQT_QMAKE_EXECUTABLE:FILEPATH=/home/ibanez/bin/Qt/qtsdk-2010.05/qt/bin/qmake ~/src/NAMIC/Slicer4/SuperBuild &lt;br /&gt;
*** Dasboard submissions:&lt;br /&gt;
**** http://www.cdash.org/CDash/index.php?project=Slicer4&lt;br /&gt;
**** Linux 64 bits (eldorado.kitware)&lt;br /&gt;
**** Window 64 bits (redwall.kitware)&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
** After some changes to Slicer4 and ITK4, we successfully build Slicer4 without any compile error. Here is the [http://www.cdash.org/CDash/viewTest.php?onlyfailed&amp;amp;buildid=821247 dashboard] that shows 10 test failures. During the week the failures were reduced to 5.&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
** A Nightly Dashboard will be setup to continuously monitor any subsequent changes.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the [http://ij.itk.org/itkfaq/index.php?|ITK Migration Guide] section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Added itkExceptionMacro to each pure virtual method that was not implemented.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4.  Mark Scully is nearly done with necessary refactorings.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Task assigned to Kent Williams&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4. This will be upgraded to gdcm2. See other project week item: [[http://na-mic.org/Wiki/index.php/2011_Winter_Project_Week:DicomToNrrdRefactoring]]&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Not Yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Measure - Test Failures==&lt;br /&gt;
* DiffusionTensorEstimationTest floating point overflow&lt;br /&gt;
** TBD&lt;br /&gt;
* DiffusionTensorMathematicsTest floating point overflow&lt;br /&gt;
** TBD&lt;br /&gt;
* N4ITKBiasFieldCorrectionTest floating point zero divide&lt;br /&gt;
** Fixed by Andri Fedorov. Slicer 3 upgraded to itkv4 version.&lt;br /&gt;
* PolyDataToLabelmapTest small image error&lt;br /&gt;
* RegisterImagesMultiResTest abort&lt;br /&gt;
** TBD&lt;br /&gt;
* ResampleDTI2RigidTransformsLinearTest small image error&lt;br /&gt;
** 1 pixel difference. Added  --compareIntensityTolerance 1.&lt;br /&gt;
* ResampleDTIBSplineWSInterpolationTest small image error&lt;br /&gt;
** 1 pixel difference. Added  --compareIntensityTolerance 1.&lt;br /&gt;
* ResampleVolume2BSplineWSInterpolationTest SetParameters exception&lt;br /&gt;
** Fixed by Francois Budin&lt;br /&gt;
* ResampleVolume2HFieldTest SetParameters exception&lt;br /&gt;
** Fixed by Francois Budin&lt;br /&gt;
* ResampleVolume2RotationNNTest segmentation violation&lt;br /&gt;
** TBD&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the ITK4 API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
: Rigid3DTransform was meant to be a base class for 3D rigid registration. Unfortunately, in prior versions of ITK, it had a New() method. Since it has 12 optimization parameters, its use in registration is unstable. The preferred rigid registration is Versor3DRigidRegistration. In ITK4 we decided to enforce the intent of the original class (as an abstract base class). Since Slicer/3/4 was using it as a non-virtual class, we added two backward compatible solutions:&lt;br /&gt;
:# If the ITK cmake variable ITKV3_COMPATIBILITY flag is ON, itk::Rigid3DTransform behaves exactly as it did in ITK3.x.&lt;br /&gt;
:# When Slicer4 transitions to ITK4 and uses new ITK4 capabilities, the old behavior of itk::Rigid3DTransform is available in itkv3::Rigid3DTransform.&lt;br /&gt;
:# http://review.source.kitware.com/#change,680&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
: In ITK3, itk::Transform provided dummy implementations for some methods that should be implemented by derived classes. These dummy methods printed a warning &amp;quot;This method should be implemented in subclasses&amp;quot;.In ITK4, to make developers aware that they should implement these methods for derived subclasses, these methods are pure virtual. This means that subclasses that do not provide an implementation for these methods will no longer compile. Slicer's  ''Applications/CLI/DiffusionApplications/ResampleDTI/itkWarpTransform3D'' did not implement ''SetParameters()'',''SetFixedParameters()'', ''TransformVector()'' and ''TransformCovariantVector()''. The Slicer4 code now provides these methods and throws an exception if they are used.&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63795</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63795"/>
		<updated>2011-01-14T17:48:06Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Key Investigators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen - Noware&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
* Mark Scully (Kent Williams/Hans Johnson) - Iowa&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' the integration of Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify, repair and document incompatible Slicer4/ITK4 API changes throughout the development of Slicer4 and ITK4.&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There were 605 compilation errors.&lt;br /&gt;
** Developer Instructions&lt;br /&gt;
*** http://www.slicer.org/slicerWiki/index.php/Slicer4&lt;br /&gt;
*** Source code downloaded as:&lt;br /&gt;
**** &amp;quot;svn co http://svn.slicer.org/Slicer4/trunk/&amp;quot;&lt;br /&gt;
*** Build Instructions:&lt;br /&gt;
**** [http://www.slicer.org/slicerWiki/index.php/Slicer4_Build_instructions Build Instructions: SuperBuild]&lt;br /&gt;
**** ccmake -DQT_QMAKE_EXECUTABLE:FILEPATH=/home/ibanez/bin/Qt/qtsdk-2010.05/qt/bin/qmake ~/src/NAMIC/Slicer4/SuperBuild &lt;br /&gt;
*** Dasboard submissions:&lt;br /&gt;
**** http://www.cdash.org/CDash/index.php?project=Slicer4&lt;br /&gt;
**** Linux 64 bits (eldorado.kitware)&lt;br /&gt;
**** Window 64 bits (redwall.kitware)&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
** After some changes to Slicer4 and ITK4, we successfully build Slicer4 without any compile error. Here is the [http://www.cdash.org/CDash/viewTest.php?onlyfailed&amp;amp;buildid=821247 dashboard] that shows 10 test failures. During the week the failures were reduced to 5.&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
** A Nightly Dashboard will be setup to continuously monitor any subsequent changes.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the [http://ij.itk.org/itkfaq/index.php?|ITK Migration Guide] section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Added itkExceptionMacro to each pure virtual method that was not implemented.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4.  Mark Scully is nearly done with necessary refactorings.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Task assigned to Kent Williams&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4. This will be upgraded to gdcm2. See other project week item: [[http://na-mic.org/Wiki/index.php/2011_Winter_Project_Week:DicomToNrrdRefactoring]]&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Not Yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Measure - Test Failures==&lt;br /&gt;
* DiffusionTensorEstimationTest floating point overflow&lt;br /&gt;
** TBD&lt;br /&gt;
* DiffusionTensorMathematicsTest floating point overflow&lt;br /&gt;
** TBD&lt;br /&gt;
* N4ITKBiasFieldCorrectionTest floating point zero divide&lt;br /&gt;
** Fixed by Andri Fedorov. Slicer 3 upgraded to itkv4 version.&lt;br /&gt;
* PolyDataToLabelmapTest small image error&lt;br /&gt;
* RegisterImagesMultiResTest abort&lt;br /&gt;
** TBD&lt;br /&gt;
* ResampleDTI2RigidTransformsLinearTest small image error&lt;br /&gt;
** TBD&lt;br /&gt;
* ResampleDTIBSplineWSInterpolationTest small image error&lt;br /&gt;
* ResampleVolume2BSplineWSInterpolationTest SetParameters exception&lt;br /&gt;
** Fixed by Francois Budin&lt;br /&gt;
* ResampleVolume2HFieldTest SetParameters exception&lt;br /&gt;
** Fixed by Francois Budin&lt;br /&gt;
* ResampleVolume2RotationNNTest segmentation violation&lt;br /&gt;
** TBD&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the ITK4 API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
: Rigid3DTransform was meant to be a base class for 3D rigid registration. Unfortunately, in prior versions of ITK, it had a New() method. Since it has 12 optimization parameters, its use in registration is unstable. The preferred rigid registration is Versor3DRigidRegistration. In ITK4 we decided to enforce the intent of the original class (as an abstract base class). Since Slicer/3/4 was using it as a non-virtual class, we added two backward compatible solutions:&lt;br /&gt;
:# If the ITK cmake variable ITKV3_COMPATIBILITY flag is ON, itk::Rigid3DTransform behaves exactly as it did in ITK3.x.&lt;br /&gt;
:# When Slicer4 transitions to ITK4 and uses new ITK4 capabilities, the old behavior of itk::Rigid3DTransform is available in itkv3::Rigid3DTransform.&lt;br /&gt;
:# http://review.source.kitware.com/#change,680&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
: In ITK3, itk::Transform provided dummy implementations for some methods that should be implemented by derived classes. These dummy methods printed a warning &amp;quot;This method should be implemented in subclasses&amp;quot;.In ITK4, to make developers aware that they should implement these methods for derived subclasses, these methods are pure virtual. This means that subclasses that do not provide an implementation for these methods will no longer compile. Slicer's  ''Applications/CLI/DiffusionApplications/ResampleDTI/itkWarpTransform3D'' did not implement ''SetParameters()'',''SetFixedParameters()'', ''TransformVector()'' and ''TransformCovariantVector()''. The Slicer4 code now provides these methods and throws an exception if they are used.&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63794</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63794"/>
		<updated>2011-01-14T17:47:04Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Key Investigators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen - Noware&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
* Mark Scully (Kent Williams/Hans Johnson) - Iowa&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' the integration of Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify, repair and document incompatible Slicer4/ITK4 API changes throughout the development of Slicer4 and ITK4.&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There were 605 compilation errors.&lt;br /&gt;
** Developer Instructions&lt;br /&gt;
*** http://www.slicer.org/slicerWiki/index.php/Slicer4&lt;br /&gt;
*** Source code downloaded as:&lt;br /&gt;
**** &amp;quot;svn co http://svn.slicer.org/Slicer4/trunk/&amp;quot;&lt;br /&gt;
*** Build Instructions:&lt;br /&gt;
**** [http://www.slicer.org/slicerWiki/index.php/Slicer4_Build_instructions Build Instructions: SuperBuild]&lt;br /&gt;
**** ccmake -DQT_QMAKE_EXECUTABLE:FILEPATH=/home/ibanez/bin/Qt/qtsdk-2010.05/qt/bin/qmake ~/src/NAMIC/Slicer4/SuperBuild &lt;br /&gt;
*** Dasboard submissions:&lt;br /&gt;
**** http://www.cdash.org/CDash/index.php?project=Slicer4&lt;br /&gt;
**** Linux 64 bits (eldorado.kitware)&lt;br /&gt;
**** Window 64 bits (redwall.kitware)&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
** After some changes to Slicer4 and ITK4, we successfully build Slicer4 without any compile error. Here is the [http://www.cdash.org/CDash/viewTest.php?onlyfailed&amp;amp;buildid=821247 dashboard] that shows 10 test failures. During the week the failures were reduced to &lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
** A Nightly Dashboard will be setup to continuously monitor any subsequent changes.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the [http://ij.itk.org/itkfaq/index.php?|ITK Migration Guide] section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Added itkExceptionMacro to each pure virtual method that was not implemented.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4.  Mark Scully is nearly done with necessary refactorings.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Task assigned to Kent Williams&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4. This will be upgraded to gdcm2. See other project week item: [[http://na-mic.org/Wiki/index.php/2011_Winter_Project_Week:DicomToNrrdRefactoring]]&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Not Yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Measure - Test Failures==&lt;br /&gt;
* DiffusionTensorEstimationTest floating point overflow&lt;br /&gt;
** TBD&lt;br /&gt;
* DiffusionTensorMathematicsTest floating point overflow&lt;br /&gt;
** TBD&lt;br /&gt;
* N4ITKBiasFieldCorrectionTest floating point zero divide&lt;br /&gt;
** Fixed by Andri Fedorov. Slicer 3 upgraded to itkv4 version.&lt;br /&gt;
* PolyDataToLabelmapTest small image error&lt;br /&gt;
* RegisterImagesMultiResTest abort&lt;br /&gt;
** TBD&lt;br /&gt;
* ResampleDTI2RigidTransformsLinearTest small image error&lt;br /&gt;
** TBD&lt;br /&gt;
* ResampleDTIBSplineWSInterpolationTest small image error&lt;br /&gt;
* ResampleVolume2BSplineWSInterpolationTest SetParameters exception&lt;br /&gt;
** Fixed by Francois Budin&lt;br /&gt;
* ResampleVolume2HFieldTest SetParameters exception&lt;br /&gt;
** Fixed by Francois Budin&lt;br /&gt;
* ResampleVolume2RotationNNTest segmentation violation&lt;br /&gt;
** TBD&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the ITK4 API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
: Rigid3DTransform was meant to be a base class for 3D rigid registration. Unfortunately, in prior versions of ITK, it had a New() method. Since it has 12 optimization parameters, its use in registration is unstable. The preferred rigid registration is Versor3DRigidRegistration. In ITK4 we decided to enforce the intent of the original class (as an abstract base class). Since Slicer/3/4 was using it as a non-virtual class, we added two backward compatible solutions:&lt;br /&gt;
:# If the ITK cmake variable ITKV3_COMPATIBILITY flag is ON, itk::Rigid3DTransform behaves exactly as it did in ITK3.x.&lt;br /&gt;
:# When Slicer4 transitions to ITK4 and uses new ITK4 capabilities, the old behavior of itk::Rigid3DTransform is available in itkv3::Rigid3DTransform.&lt;br /&gt;
:# http://review.source.kitware.com/#change,680&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
: In ITK3, itk::Transform provided dummy implementations for some methods that should be implemented by derived classes. These dummy methods printed a warning &amp;quot;This method should be implemented in subclasses&amp;quot;.In ITK4, to make developers aware that they should implement these methods for derived subclasses, these methods are pure virtual. This means that subclasses that do not provide an implementation for these methods will no longer compile. Slicer's  ''Applications/CLI/DiffusionApplications/ResampleDTI/itkWarpTransform3D'' did not implement ''SetParameters()'',''SetFixedParameters()'', ''TransformVector()'' and ''TransformCovariantVector()''. The Slicer4 code now provides these methods and throws an exception if they are used.&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63793</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63793"/>
		<updated>2011-01-14T17:44:42Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Measure - Test Failures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen - Noware&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
* Mark Scully (Kent Williams/Hans Johnson) - Iowa&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' the integration of Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify, repair and document incompatible Slicer4/ITK4 API changes throughout the development of Slicer4 and ITK4.&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There were 605 compilation errors.&lt;br /&gt;
** Developer Instructions&lt;br /&gt;
*** http://www.slicer.org/slicerWiki/index.php/Slicer4&lt;br /&gt;
*** Source code downloaded as:&lt;br /&gt;
**** &amp;quot;svn co http://svn.slicer.org/Slicer4/trunk/&amp;quot;&lt;br /&gt;
*** Build Instructions:&lt;br /&gt;
**** [http://www.slicer.org/slicerWiki/index.php/Slicer4_Build_instructions Build Instructions: SuperBuild]&lt;br /&gt;
**** ccmake -DQT_QMAKE_EXECUTABLE:FILEPATH=/home/ibanez/bin/Qt/qtsdk-2010.05/qt/bin/qmake ~/src/NAMIC/Slicer4/SuperBuild &lt;br /&gt;
*** Dasboard submissions:&lt;br /&gt;
**** http://www.cdash.org/CDash/index.php?project=Slicer4&lt;br /&gt;
**** Linux 64 bits (eldorado.kitware)&lt;br /&gt;
**** Window 64 bits (redwall.kitware)&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
** After some changes to Slicer4 and ITK4, we successfully build Slicer4 without any compile error. Here is the [http://www.cdash.org/CDash/viewTest.php?onlyfailed&amp;amp;buildid=821247 dashboard] that shows a few test failures.&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
** A Nightly Dashboard will be setup to continuously monitor any subsequent changes.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the [http://ij.itk.org/itkfaq/index.php?|ITK Migration Guide] section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Added itkExceptionMacro to each pure virtual method that was not implemented.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4.  Mark Scully is nearly done with necessary refactorings.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Task assigned to Kent Williams&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4. This will be upgraded to gdcm2. See other project week item: [[http://na-mic.org/Wiki/index.php/2011_Winter_Project_Week:DicomToNrrdRefactoring]]&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Not Yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Measure - Test Failures==&lt;br /&gt;
* DiffusionTensorEstimationTest floating point overflow&lt;br /&gt;
** TBD&lt;br /&gt;
* DiffusionTensorMathematicsTest floating point overflow&lt;br /&gt;
** TBD&lt;br /&gt;
* N4ITKBiasFieldCorrectionTest floating point zero divide&lt;br /&gt;
** Fixed by Andri Fedorov. Slicer 3 upgraded to itkv4 version.&lt;br /&gt;
* PolyDataToLabelmapTest small image error&lt;br /&gt;
* RegisterImagesMultiResTest abort&lt;br /&gt;
** TBD&lt;br /&gt;
* ResampleDTI2RigidTransformsLinearTest small image error&lt;br /&gt;
** TBD&lt;br /&gt;
* ResampleDTIBSplineWSInterpolationTest small image error&lt;br /&gt;
* ResampleVolume2BSplineWSInterpolationTest SetParameters exception&lt;br /&gt;
** Fixed by Francois Budin&lt;br /&gt;
* ResampleVolume2HFieldTest SetParameters exception&lt;br /&gt;
** Fixed by Francois Budin&lt;br /&gt;
* ResampleVolume2RotationNNTest segmentation violation&lt;br /&gt;
** TBD&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the ITK4 API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
: Rigid3DTransform was meant to be a base class for 3D rigid registration. Unfortunately, in prior versions of ITK, it had a New() method. Since it has 12 optimization parameters, its use in registration is unstable. The preferred rigid registration is Versor3DRigidRegistration. In ITK4 we decided to enforce the intent of the original class (as an abstract base class). Since Slicer/3/4 was using it as a non-virtual class, we added two backward compatible solutions:&lt;br /&gt;
:# If the ITK cmake variable ITKV3_COMPATIBILITY flag is ON, itk::Rigid3DTransform behaves exactly as it did in ITK3.x.&lt;br /&gt;
:# When Slicer4 transitions to ITK4 and uses new ITK4 capabilities, the old behavior of itk::Rigid3DTransform is available in itkv3::Rigid3DTransform.&lt;br /&gt;
:# http://review.source.kitware.com/#change,680&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
: In ITK3, itk::Transform provided dummy implementations for some methods that should be implemented by derived classes. These dummy methods printed a warning &amp;quot;This method should be implemented in subclasses&amp;quot;.In ITK4, to make developers aware that they should implement these methods for derived subclasses, these methods are pure virtual. This means that subclasses that do not provide an implementation for these methods will no longer compile. Slicer's  ''Applications/CLI/DiffusionApplications/ResampleDTI/itkWarpTransform3D'' did not implement ''SetParameters()'',''SetFixedParameters()'', ''TransformVector()'' and ''TransformCovariantVector()''. The Slicer4 code now provides these methods and throws an exception if they are used.&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63792</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63792"/>
		<updated>2011-01-14T17:44:03Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Measure - Test Failures */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen - Noware&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
* Mark Scully (Kent Williams/Hans Johnson) - Iowa&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' the integration of Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify, repair and document incompatible Slicer4/ITK4 API changes throughout the development of Slicer4 and ITK4.&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There were 605 compilation errors.&lt;br /&gt;
** Developer Instructions&lt;br /&gt;
*** http://www.slicer.org/slicerWiki/index.php/Slicer4&lt;br /&gt;
*** Source code downloaded as:&lt;br /&gt;
**** &amp;quot;svn co http://svn.slicer.org/Slicer4/trunk/&amp;quot;&lt;br /&gt;
*** Build Instructions:&lt;br /&gt;
**** [http://www.slicer.org/slicerWiki/index.php/Slicer4_Build_instructions Build Instructions: SuperBuild]&lt;br /&gt;
**** ccmake -DQT_QMAKE_EXECUTABLE:FILEPATH=/home/ibanez/bin/Qt/qtsdk-2010.05/qt/bin/qmake ~/src/NAMIC/Slicer4/SuperBuild &lt;br /&gt;
*** Dasboard submissions:&lt;br /&gt;
**** http://www.cdash.org/CDash/index.php?project=Slicer4&lt;br /&gt;
**** Linux 64 bits (eldorado.kitware)&lt;br /&gt;
**** Window 64 bits (redwall.kitware)&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
** After some changes to Slicer4 and ITK4, we successfully build Slicer4 without any compile error. Here is the [http://www.cdash.org/CDash/viewTest.php?onlyfailed&amp;amp;buildid=821247 dashboard] that shows a few test failures.&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
** A Nightly Dashboard will be setup to continuously monitor any subsequent changes.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the [http://ij.itk.org/itkfaq/index.php?|ITK Migration Guide] section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Added itkExceptionMacro to each pure virtual method that was not implemented.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4.  Mark Scully is nearly done with necessary refactorings.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Task assigned to Kent Williams&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4. This will be upgraded to gdcm2. See other project week item: [[http://na-mic.org/Wiki/index.php/2011_Winter_Project_Week:DicomToNrrdRefactoring]]&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Not Yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Measure - Test Failures==&lt;br /&gt;
* DiffusionTensorEstimationTest floating point overflow&lt;br /&gt;
** TBD&lt;br /&gt;
* DiffusionTensorMathematicsTest floating point overflow&lt;br /&gt;
** TBD&lt;br /&gt;
* N4ITKBiasFieldCorrectionTest floating point zero divide&lt;br /&gt;
** Fixed by Andri Fedorov. Slicer 3 upgraded to itkv4 version.&lt;br /&gt;
* PolyDataToLabelmapTest small image error&lt;br /&gt;
* RegisterImagesMultiResTest abort&lt;br /&gt;
** TBD&lt;br /&gt;
* ResampleDTI2RigidTransformsLinearTest small image error&lt;br /&gt;
** TBD&lt;br /&gt;
* ResampleDTIBSplineWSInterpolationTest small image error&lt;br /&gt;
* ResampleVolume2BSplineWSInterpolationTest SetParameters exception&lt;br /&gt;
** Fixed by Francois Budin&lt;br /&gt;
* ResampleVolume2HFieldTest SetParameters exception&lt;br /&gt;
** Fixed&lt;br /&gt;
* ResampleVolume2RotationNNTest segmentation violation&lt;br /&gt;
** TBD&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the ITK4 API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
: Rigid3DTransform was meant to be a base class for 3D rigid registration. Unfortunately, in prior versions of ITK, it had a New() method. Since it has 12 optimization parameters, its use in registration is unstable. The preferred rigid registration is Versor3DRigidRegistration. In ITK4 we decided to enforce the intent of the original class (as an abstract base class). Since Slicer/3/4 was using it as a non-virtual class, we added two backward compatible solutions:&lt;br /&gt;
:# If the ITK cmake variable ITKV3_COMPATIBILITY flag is ON, itk::Rigid3DTransform behaves exactly as it did in ITK3.x.&lt;br /&gt;
:# When Slicer4 transitions to ITK4 and uses new ITK4 capabilities, the old behavior of itk::Rigid3DTransform is available in itkv3::Rigid3DTransform.&lt;br /&gt;
:# http://review.source.kitware.com/#change,680&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
: In ITK3, itk::Transform provided dummy implementations for some methods that should be implemented by derived classes. These dummy methods printed a warning &amp;quot;This method should be implemented in subclasses&amp;quot;.In ITK4, to make developers aware that they should implement these methods for derived subclasses, these methods are pure virtual. This means that subclasses that do not provide an implementation for these methods will no longer compile. Slicer's  ''Applications/CLI/DiffusionApplications/ResampleDTI/itkWarpTransform3D'' did not implement ''SetParameters()'',''SetFixedParameters()'', ''TransformVector()'' and ''TransformCovariantVector()''. The Slicer4 code now provides these methods and throws an exception if they are used.&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63370</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63370"/>
		<updated>2011-01-11T18:47:37Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Key Investigators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen - Noware&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
* Mark Scully (Kent Williams/Hans Johnson) - Iowa&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' the integration of Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify, repair and document incompatible Slicer4/ITK4 API changes throughout the development of Slicer4 and ITK4.&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There were 605 compilation errors.&lt;br /&gt;
** Developer Instructions&lt;br /&gt;
*** http://www.slicer.org/slicerWiki/index.php/Slicer4&lt;br /&gt;
*** Source code downloaded as:&lt;br /&gt;
**** &amp;quot;svn co http://svn.slicer.org/Slicer4/trunk/&amp;quot;&lt;br /&gt;
*** Build Instructions:&lt;br /&gt;
**** [http://www.slicer.org/slicerWiki/index.php/Slicer4_Build_instructions Build Instructions: SuperBuild]&lt;br /&gt;
**** ccmake -DQT_QMAKE_EXECUTABLE:FILEPATH=/home/ibanez/bin/Qt/qtsdk-2010.05/qt/bin/qmake ~/src/NAMIC/Slicer4/SuperBuild &lt;br /&gt;
*** Dasboard submissions:&lt;br /&gt;
**** http://www.cdash.org/CDash/index.php?project=Slicer4&lt;br /&gt;
**** Linux 64 bits (eldorado.kitware)&lt;br /&gt;
**** Window 64 bits (redwall.kitware)&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
** After some changes to Slicer4 and ITK4, we successfully build Slicer4 without any compile error. Here is the [http://www.cdash.org/CDash/viewTest.php?onlyfailed&amp;amp;buildid=821247 dashboard] that shows a few test failures.&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
** A Nightly Dashboard will be setup to continuously monitor any subsequent changes.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the [http://ij.itk.org/itkfaq/index.php?|ITK Migration Guide] section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Added itkExceptionMacro to each pure virtual method that was not implemented.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4.  Mark Scully is nearly done with necessary refactorings.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Task assigned to Kent Williams&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4. This will be upgraded to gdcm2. See other project week item: [[http://na-mic.org/Wiki/index.php/2011_Winter_Project_Week:DicomToNrrdRefactoring]]&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Not Yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Measure - Test Failures==&lt;br /&gt;
* DiffusionTensorEstimationTest floating point overflow&lt;br /&gt;
* DiffusionTensorMathematicsTest floating point overflow&lt;br /&gt;
* N4ITKBiasFieldCorrectionTest floating point zero divide&lt;br /&gt;
* PolyDataToLabelmapTest small image error&lt;br /&gt;
* RegisterImagesMultiResTest abort&lt;br /&gt;
* ResampleDTI2RigidTransformsLinearTest small image error&lt;br /&gt;
* ResampleDTIBSplineWSInterpolationTest small image error&lt;br /&gt;
* ResampleVolume2BSplineWSInterpolationTest SetParameters exception&lt;br /&gt;
* ResampleVolume2HFieldTest SetParameters exception&lt;br /&gt;
* ResampleVolume2RotationNNTest segmentation violation&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the ITK4 API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
: Rigid3DTransform was meant to be a base class for 3D rigid registration. Unfortunately, in prior versions of ITK, it had a New() method. Since it has 12 optimization parameters, its use in registration is unstable. The preferred rigid registration is Versor3DRigidRegistration. In ITK4 we decided to enforce the intent of the original class (as an abstract base class). Since Slicer/3/4 was using it as a non-virtual class, we added two backward compatible solutions:&lt;br /&gt;
:# If the ITK cmake variable ITKV3_COMPATIBILITY flag is ON, itk::Rigid3DTransform behaves exactly as it did in ITK3.x.&lt;br /&gt;
:# When Slicer4 transitions to ITK4 and uses new ITK4 capabilities, the old behavior of itk::Rigid3DTransform is available in itkv3::Rigid3DTransform.&lt;br /&gt;
:# http://review.source.kitware.com/#change,680&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
: In ITK3, itk::Transform provided dummy implementations for some methods that should be implemented by derived classes. These dummy methods printed a warning &amp;quot;This method should be implemented in subclasses&amp;quot;.In ITK4, to make developers aware that they should implement these methods for derived subclasses, these methods are pure virtual. This means that subclasses that do not provide an implementation for these methods will no longer compile. Slicer's  ''Applications/CLI/DiffusionApplications/ResampleDTI/itkWarpTransform3D'' did not implement ''SetParameters()'',''SetFixedParameters()'', ''TransformVector()'' and ''TransformCovariantVector()''. The Slicer4 code now provides these methods and throws an exception if they are used.&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63367</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63367"/>
		<updated>2011-01-11T18:37:30Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Measure - ITK4 Changes that Affect Slicer4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen - Noware&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
* Mark Scully (Kent Williams/Hans Johnson) - Iowa&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' the integration of Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify and document incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There were 605 compilation errors.&lt;br /&gt;
** Developer Instructions&lt;br /&gt;
*** http://www.slicer.org/slicerWiki/index.php/Slicer4&lt;br /&gt;
*** Source code downloaded as:&lt;br /&gt;
**** &amp;quot;svn co http://svn.slicer.org/Slicer4/trunk/&amp;quot;&lt;br /&gt;
*** Build Instructions:&lt;br /&gt;
**** [http://www.slicer.org/slicerWiki/index.php/Slicer4_Build_instructions Build Instructions: SuperBuild]&lt;br /&gt;
**** ccmake -DQT_QMAKE_EXECUTABLE:FILEPATH=/home/ibanez/bin/Qt/qtsdk-2010.05/qt/bin/qmake ~/src/NAMIC/Slicer4/SuperBuild &lt;br /&gt;
*** Dasboard submissions:&lt;br /&gt;
**** http://www.cdash.org/CDash/index.php?project=Slicer4&lt;br /&gt;
**** Linux 64 bits (eldorado.kitware)&lt;br /&gt;
**** Window 64 bits (redwall.kitware)&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
** After some changes to Slicer4 and ITK4, we successfully build Slicer4 without any compile error. Here is the [http://www.cdash.org/CDash/viewTest.php?onlyfailed&amp;amp;buildid=821247 dashboard] that shows a few test failures.&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
** A Nightly Dashboard will be setup to continuously monitor any subsequent changes.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the [http://ij.itk.org/itkfaq/index.php?|ITK Migration Guide] section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Added itkExceptionMacro to each pure virtual method that was not implemented.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4.  Mark Scully is nearly done with necessary refactorings.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Task assigned to Kent Williams&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4. This will be upgraded to gdcm2. See other project week item: [[http://na-mic.org/Wiki/index.php/2011_Winter_Project_Week:DicomToNrrdRefactoring]]&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Not Yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Measure - Test Failures==&lt;br /&gt;
* DiffusionTensorEstimationTest floating point overflow&lt;br /&gt;
* DiffusionTensorMathematicsTest floating point overflow&lt;br /&gt;
* N4ITKBiasFieldCorrectionTest floating point zero divide&lt;br /&gt;
* PolyDataToLabelmapTest small image error&lt;br /&gt;
* RegisterImagesMultiResTest abort&lt;br /&gt;
* ResampleDTI2RigidTransformsLinearTest small image error&lt;br /&gt;
* ResampleDTIBSplineWSInterpolationTest small image error&lt;br /&gt;
* ResampleVolume2BSplineWSInterpolationTest SetParameters exception&lt;br /&gt;
* ResampleVolume2HFieldTest SetParameters exception&lt;br /&gt;
* ResampleVolume2RotationNNTest segmentation violation&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the ITK4 API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
: Rigid3DTransform was meant to be a base class for 3D rigid registration. Unfortunately, in prior versions of ITK, it had a New() method. Since it has 12 optimization parameters, its use in registration is unstable. The preferred rigid registration is Versor3DRigidRegistration. In ITK4 we decided to enforce the intent of the original class (as an abstract base class). Since Slicer/3/4 was using it as a non-virtual class, we added two backward compatible solutions:&lt;br /&gt;
:# If the ITK cmake variable ITKV3_COMPATIBILITY flag is ON, itk::Rigid3DTransform behaves exactly as it did in ITK3.x.&lt;br /&gt;
:# When Slicer4 transitions to ITK4 and uses new ITK4 capabilities, the old behavior of itk::Rigid3DTransform is available in itkv3::Rigid3DTransform.&lt;br /&gt;
:# http://review.source.kitware.com/#change,680&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
: In ITK3, itk::Transform provided dummy implementations for some methods that should be implemented by derived classes. These dummy methods printed a warning &amp;quot;This method should be implemented in subclasses&amp;quot;.In ITK4, to make developers aware that they should implement these methods for derived subclasses, these methods are pure virtual. This means that subclasses that do not provide an implementation for these methods will no longer compile. Slicer's  ''Applications/CLI/DiffusionApplications/ResampleDTI/itkWarpTransform3D'' did not implement ''SetParameters()'',''SetFixedParameters()'', ''TransformVector()'' and ''TransformCovariantVector()''. The Slicer4 code now provides these methods and throws an exception if they are used.&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63365</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63365"/>
		<updated>2011-01-11T18:23:23Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Key Investigators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen - Noware&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
* Mark Scully (Kent Williams/Hans Johnson) - Iowa&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' the integration of Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify and document incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There were 605 compilation errors.&lt;br /&gt;
** Developer Instructions&lt;br /&gt;
*** http://www.slicer.org/slicerWiki/index.php/Slicer4&lt;br /&gt;
*** Source code downloaded as:&lt;br /&gt;
**** &amp;quot;svn co http://svn.slicer.org/Slicer4/trunk/&amp;quot;&lt;br /&gt;
*** Build Instructions:&lt;br /&gt;
**** [http://www.slicer.org/slicerWiki/index.php/Slicer4_Build_instructions Build Instructions: SuperBuild]&lt;br /&gt;
**** ccmake -DQT_QMAKE_EXECUTABLE:FILEPATH=/home/ibanez/bin/Qt/qtsdk-2010.05/qt/bin/qmake ~/src/NAMIC/Slicer4/SuperBuild &lt;br /&gt;
*** Dasboard submissions:&lt;br /&gt;
**** http://www.cdash.org/CDash/index.php?project=Slicer4&lt;br /&gt;
**** Linux 64 bits (eldorado.kitware)&lt;br /&gt;
**** Window 64 bits (redwall.kitware)&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
** After some changes to Slicer4 and ITK4, we successfully build Slicer4 without any compile error. Here is the [http://www.cdash.org/CDash/viewTest.php?onlyfailed&amp;amp;buildid=821247 dashboard] that shows a few test failures.&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
** A Nightly Dashboard will be setup to continuously monitor any subsequent changes.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the [http://ij.itk.org/itkfaq/index.php?|ITK Migration Guide] section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Added itkExceptionMacro to each pure virtual method that was not implemented.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4.  Mark Scully is nearly done with necessary refactorings.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Task assigned to Kent Williams&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4. This will be upgraded to gdcm2. See other project week item: [[http://na-mic.org/Wiki/index.php/2011_Winter_Project_Week:DicomToNrrdRefactoring]]&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Not Yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the ITK4 API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
: Rigid3DTransform was meant to be a base class for 3D rigid registration. Unfortunately, in prior versions of ITK, it had a New() method. Since it has 12 optimization parameters, its use in registration is unstable. The preferred rigid registration is Versor3DRigidRegistration. In ITK4 we decided to enforce the intent of the original class (as an abstract base class). Since Slicer/3/4 was using it as a non-virtual class, we added two backward compatible solutions:&lt;br /&gt;
:# If the ITK cmake variable ITKV3_COMPATIBILITY flag is ON, itk::Rigid3DTransform behaves exactly as it did in ITK3.x.&lt;br /&gt;
:# When Slicer4 transitions to ITK4 and uses new ITK4 capabilities, the old behavior of itk::Rigid3DTransform is available in itkv3::Rigid3DTransform.&lt;br /&gt;
:# http://review.source.kitware.com/#change,680&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
: In ITK3, itk::Transform provided dummy implementations for some methods that should be implemented by derived classes. These dummy methods printed a warning &amp;quot;This method should be implemented in subclasses&amp;quot;.In ITK4, to make developers aware that they should implement these methods for derived subclasses, these methods are pure virtual. This means that subclasses that do not provide an implementation for these methods will no longer compile. Slicer's  ''Applications/CLI/DiffusionApplications/ResampleDTI/itkWarpTransform3D'' did not implement ''SetParameters()'',''SetFixedParameters()'', ''TransformVector()'' and ''TransformCovariantVector()''. The Slicer4 code now provides these methods and throws an exception if they are used.&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63157</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63157"/>
		<updated>2011-01-09T16:15:03Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen - Noware&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
* Mark Scully (Kent Williams/Hans Johnson) - Iowa&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' the integration of Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify and document incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There were 605 compilation errors.&lt;br /&gt;
** Developer Instructions&lt;br /&gt;
*** http://www.slicer.org/slicerWiki/index.php/Slicer4&lt;br /&gt;
*** Source code downloaded as:&lt;br /&gt;
**** &amp;quot;svn co http://svn.slicer.org/Slicer3/branches/Slicer4/&amp;quot;&lt;br /&gt;
*** Build Instructions:&lt;br /&gt;
**** http://www.slicer.org/slicerWiki/index.php/Slicer4_Build_instructions [[Slicer4_Build_instructions|Build Instructions: SuperBuild]]&lt;br /&gt;
*** Dasboard submissions:&lt;br /&gt;
**** Linux 64 bits (eldorado.kitware)&lt;br /&gt;
**** Window 64 bits (redwall.kitware)&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
** A Nightly Dashboard will be setup to continuously monitor any subsequent changes.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the [http://ij.itk.org/itkfaq/index.php?|ITK Migration Guide] section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Added itkExceptionMacro to each pure virtual method that was not implemented.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4.  Mark Scully is nearly done with necessary refactorings.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Task assigned to Kent Williams&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4. This will be upgraded to gdcm2. See other project week item: [[http://na-mic.org/Wiki/index.php/2011_Winter_Project_Week:DicomToNrrdRefactoring]]&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Not Yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the ITK4 API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
: Rigid3DTransform was meant to be a base class for 3D rigid registration. Unfortunately, in prior versions of ITK, it had a New() method. Since it has 12 optimization parameters, its use in registration is unstable. The preferred rigid registration is Versor3DRigidRegistration. In ITK4 we decided to enforce the intent of the original class (as an abstract base class). Since Slicer/3/4 was using it as a non-virtual class, we added two backward compatible solutions:&lt;br /&gt;
:# If the ITK cmake variable ITKV3_COMPATIBILITY flag is ON, itk::Rigid3DTransform behaves exactly as it did in ITK3.x.&lt;br /&gt;
:# When Slicer4 transitions to ITK4 and uses new ITK4 capabilities, the old behavior of itk::Rigid3DTransform is available in itkv3::Rigid3DTransform.&lt;br /&gt;
:# http://review.source.kitware.com/#change,680&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
: In ITK3, itk::Transform provided dummy implementations for some methods that should be implemented by derived classes. These dummy methods printed a warning &amp;quot;This method should be implemented in subclasses&amp;quot;.In ITK4, to make developers aware that they should implement these methods for derived subclasses, these methods are pure virtual. This means that subclasses that do not provide an implementation for these methods will no longer compile. Slicer's  ''Applications/CLI/DiffusionApplications/ResampleDTI/itkWarpTransform3D'' did not implement ''SetParameters()'',''SetFixedParameters()'', ''TransformVector()'' and ''TransformCovariantVector()''. The Slicer4 code now provides these methods and throws an exception if they are used.&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63129</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63129"/>
		<updated>2011-01-08T23:02:10Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Key Investigators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen - Noware&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' the integration of Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify and document incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There mere 605 compilation errors.&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
** A Nightly Dashboard will be setup to continuously monitor any subsequent changes.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the [http://ij.itk.org/itkfaq/index.php?|ITK Migration Guide] section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Added itkExceptionMacro to each pure virtual method that was not implemented.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4. This will be upgraded to gdcm2.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the ITK4 API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
: Rigid3DTransform was meant to be a base class for 3D rigid registration. Unfortunately, in prior versions of ITK, it had a New() method. Since it has 12 optimization parameters, its use in registration is unstable. The preferred rigid registration is Versor3DRigidRegistration. In ITK4 we decided to enforce the intent of the original class (as an abstract base class). Since Slicer/3/4 was using it as a non-virtual class, we added two backward compatible solutions:&lt;br /&gt;
:# If the ITK cmake variable ITKV3_COMPATIBILITY flag is ON, itk::Rigid3DTransform behaves exactly as it did in ITK3.x.&lt;br /&gt;
:# When Slicer4 transitions to ITK4 and uses new ITK4 capabilities, the old behavior of itk::Rigid3DTransform is available in itkv3::Rigid3DTransform.&lt;br /&gt;
:# http://review.source.kitware.com/#change,680&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
: In ITK3, itk::Transform provided dummy implementations for some methods that should be implemented by derived classes. These dummy methods printed a warning &amp;quot;This method should be implemented in subclasses&amp;quot;.In ITK4, to make developers aware that they should implement these methods for derived subclasses, these methods are pure virtual. This means that subclasses that do not provide an implementation for these methods will no longer compile. Slicer's  ''Applications/CLI/DiffusionApplications/ResampleDTI/itkWarpTransform3D'' did not implement ''SetParameters()'',''SetFixedParameters()'', ''TransformVector()'' and ''TransformCovariantVector()''. The Slicer4 code now provides these methods and throws an exception if they are used.&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63123</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63123"/>
		<updated>2011-01-08T21:20:19Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Key Investigators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen - Noware&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' compiler warnings in Slicer3. This project will concentrate on warnings produced by the GNU gcc 4.3 compiler. Similar approaches can be applied to other Slicer3 compilers.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify and document incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There mere 605 compilation errors.&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the ITK Migration Guide section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Added itkExceptionMacro to each pure virtual method that was not implemented.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4. This will be upgraded to gdcm2.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the ITK4 API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
: Rigid3DTransform was meant to be a base class for 3D rigid registration. Unfortunately, in prior versions of ITK, it had a New() method. Since it has 12 optimization parameters, its use in registration is unstable. The preferred rigid registration is Versor3DRigidRegistration. In ITK4 we decided to enforce the intent of the original class (as an abstract base class). Since Slicer/3/4 was using it as a non-virtual class, we added two backward compatible solutions:&lt;br /&gt;
:# If the ITK cmake variable ITKV3_COMPATIBILITY flag is ON, itk::Rigid3DTransform behaves exactly as it did in ITK3.x.&lt;br /&gt;
:# When Slicer4 transitions to ITK4 and uses new ITK4 capabilities, the old behaviour of itk::Rigid3DTransform is available in itkv3::Rigid3DTransform.&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
: In ITK3, itk::Transform provided dummy implementations for some methods that should be implemented by derived classes. These dummy methods printed a warning &amp;quot;This method should be implemented in subclasses&amp;quot;.In ITK4, to make developers aware that they should implement these methods for derived subclasses, these methods are pure virtual. This means that subclasses that do not provide an implementation for these methods will no longer compile. Slicer's  ''Applications/CLI/DiffusionApplications/ResampleDTI/itkWarpTransform3D'' did not implement ''SetParameters()'',''SetFixedParameters()'', ''TransformVector()'' and ''TransformCovariantVector()''. The Slicer4 code now provides these methods and throws an exception if they are used.&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63122</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63122"/>
		<updated>2011-01-08T21:19:01Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Analyze */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' compiler warnings in Slicer3. This project will concentrate on warnings produced by the GNU gcc 4.3 compiler. Similar approaches can be applied to other Slicer3 compilers.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify and document incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There mere 605 compilation errors.&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the ITK Migration Guide section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Added itkExceptionMacro to each pure virtual method that was not implemented.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4. This will be upgraded to gdcm2.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the ITK4 API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
: Rigid3DTransform was meant to be a base class for 3D rigid registration. Unfortunately, in prior versions of ITK, it had a New() method. Since it has 12 optimization parameters, its use in registration is unstable. The preferred rigid registration is Versor3DRigidRegistration. In ITK4 we decided to enforce the intent of the original class (as an abstract base class). Since Slicer/3/4 was using it as a non-virtual class, we added two backward compatible solutions:&lt;br /&gt;
:# If the ITK cmake variable ITKV3_COMPATIBILITY flag is ON, itk::Rigid3DTransform behaves exactly as it did in ITK3.x.&lt;br /&gt;
:# When Slicer4 transitions to ITK4 and uses new ITK4 capabilities, the old behaviour of itk::Rigid3DTransform is available in itkv3::Rigid3DTransform.&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
: In ITK3, itk::Transform provided dummy implementations for some methods that should be implemented by derived classes. These dummy methods printed a warning &amp;quot;This method should be implemented in subclasses&amp;quot;.In ITK4, to make developers aware that they should implement these methods for derived subclasses, these methods are pure virtual. This means that subclasses that do not provide an implementation for these methods will no longer compile. Slicer's  ''Applications/CLI/DiffusionApplications/ResampleDTI/itkWarpTransform3D'' did not implement ''SetParameters()'',''SetFixedParameters()'', ''TransformVector()'' and ''TransformCovariantVector()''. The Slicer4 code now provides these methods and throws an exception if they are used.&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63121</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63121"/>
		<updated>2011-01-08T20:52:56Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Measure - ITK4 Changes that Affect Slicer4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' compiler warnings in Slicer3. This project will concentrate on warnings produced by the GNU gcc 4.3 compiler. Similar approaches can be applied to other Slicer3 compilers.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify and document incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There mere 605 compilation errors.&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the ITK Migration Guide section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Added itkExceptionMacro to each pure virtual method that was not implemented.&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4. This will be upgraded to gdcm2.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63111</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=63111"/>
		<updated>2011-01-08T19:01:59Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Measure - ITK4 Changes that Affect Slicer4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' compiler warnings in Slicer3. This project will concentrate on warnings produced by the GNU gcc 4.3 compiler. Similar approaches can be applied to other Slicer3 compilers.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify and document incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There mere 605 compilation errors.&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the ITK Migration Guide section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Introduced ITKv3_COMPATIBILITY cmake variable that when ON, permits a New() on Rigid3DTransform. This mimics the old behaviour.&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
NA&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62787</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62787"/>
		<updated>2011-01-03T16:45:42Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Key Investigators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers. As part of the ITKv4 contract Slicer3 will be one of the [http://batchmake.org/Wiki/ITK_Release_4/Migration_Plan/Phases#Phase-I:_Sequestering_Reference_Applications sequestered applications]. This project goes beyond that and will continuously integrate Slicer4 and ITK4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' compiler warnings in Slicer3. This project will concentrate on warnings produced by the GNU gcc 4.3 compiler. Similar approaches can be applied to other Slicer3 compilers.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify and document incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There mere 605 compilation errors.&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the ITK Migration Guide section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62746</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62746"/>
		<updated>2011-01-01T18:42:37Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Analyze */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' compiler warnings in Slicer3. This project will concentrate on warnings produced by the GNU gcc 4.3 compiler. Similar approaches can be applied to other Slicer3 compilers.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify and document incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There mere 605 compilation errors.&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the ITK Migration Guide section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
:Early in the development of ITK, some compilers did not support stringstream. There was a wrapper to hide differences between std::stringstream and the old ostrstream(which has been deprecated).&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62745</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62745"/>
		<updated>2011-01-01T18:05:28Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* ITK4 Changes that Affect Slicer4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' compiler warnings in Slicer3. This project will concentrate on warnings produced by the GNU gcc 4.3 compiler. Similar approaches can be applied to other Slicer3 compilers.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify and document incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There mere 605 compilation errors.&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Measure - ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the ITK Migration Guide section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
==Analyze ==&lt;br /&gt;
Here we rationalize the API changes.&lt;br /&gt;
* Remove OStringStream&lt;br /&gt;
* Remove New method for Rigid3DTransform&lt;br /&gt;
* New Transform pure virtual methods&lt;br /&gt;
* Remove Brains2MaskImageIO&lt;br /&gt;
* Upgrade GDCM to v2&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:Breakout_Slicer&amp;diff=62743</id>
		<title>2011 Winter Project Week:Breakout Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:Breakout_Slicer&amp;diff=62743"/>
		<updated>2010-12-31T19:10:57Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* ITK4 Integration - Bill */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;  Back to [[AHM 2011#Agenda| Project Week Agenda]]&lt;br /&gt;
&lt;br /&gt;
'''Session Leaders: Steve Pieper, Julien Finet'''&lt;br /&gt;
&lt;br /&gt;
===Topic 1===&lt;br /&gt;
&lt;br /&gt;
===Topic 2===&lt;br /&gt;
&lt;br /&gt;
===Topic 3===&lt;br /&gt;
&lt;br /&gt;
===Command line modules / Slicer Execution Model - Jim ===&lt;br /&gt;
* What can it do?&lt;br /&gt;
* What do we have plans for?&lt;br /&gt;
* What do you want?&lt;br /&gt;
===ITK4 Integration - Bill===&lt;br /&gt;
[[2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration| Slicer4/ITK4 integration]]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:Breakout_Slicer&amp;diff=62742</id>
		<title>2011 Winter Project Week:Breakout Slicer</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:Breakout_Slicer&amp;diff=62742"/>
		<updated>2010-12-31T19:10:36Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Command line modules / Slicer Execution Model - Jim */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;  Back to [[AHM 2011#Agenda| Project Week Agenda]]&lt;br /&gt;
&lt;br /&gt;
'''Session Leaders: Steve Pieper, Julien Finet'''&lt;br /&gt;
&lt;br /&gt;
===Topic 1===&lt;br /&gt;
&lt;br /&gt;
===Topic 2===&lt;br /&gt;
&lt;br /&gt;
===Topic 3===&lt;br /&gt;
&lt;br /&gt;
===Command line modules / Slicer Execution Model - Jim ===&lt;br /&gt;
* What can it do?&lt;br /&gt;
* What do we have plans for?&lt;br /&gt;
* What do you want?&lt;br /&gt;
===ITK4 Integration - Bill===&lt;br /&gt;
[[2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration| Slicer4/ITK4 integration]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62741</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62741"/>
		<updated>2010-12-31T16:45:44Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Key Investigators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4. NA-MIC is a major customer of the insight Toolkit, ITK. It is critical that ITK developers understand the impact of API changes on customers.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is under-way and ITK version 4 has recently started. One of the goals of ITK 4 is to improve, simplify and clean-up the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4. We expect that a similar process will be created for other major ITK customers.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' compiler warnings in Slicer3. This project will concentrate on warnings produced by the GNU gcc 4.3 compiler. Similar approaches can be applied to other Slicer3 compilers.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify and document incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There mere 605 compilation errors.&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the ITK Migration Guide section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62740</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62740"/>
		<updated>2010-12-31T16:41:08Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Key Investigators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is underway and ITK version 4 has recently started. One of the goals of ITK 4 is too improve and cleanup the application programming interface (API). Every attempt is being made to keep the API compatible with ITK 3.x. ITKv4 will be a new major release and there are opportunities to remove antiquated code, simplify the code base and repair long standing design defects.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues that affect Slicer4.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' compiler warnings in Slicer3. This project will concentrate on warnings produced by the GNU gcc 4.3 compiler. Similar approaches can be applied to other Slicer3 compilers.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify and document incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
** A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There mere 605 compilation errors.&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
**A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
*** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
*** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
*** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the ITK Migration Guide section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62739</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62739"/>
		<updated>2010-12-31T16:31:50Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is underway and ITK version 4 has recently started. One of the goals of ITK 4 is too improve and cleanup the application programming interface (API). Although every attempt is being made to keep the API compatible with ITK 3.x. However, since ITKv4 will be a new major release, there are opportunities to remove antiquated code and repair long standing design defects.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' compiler warnings in Slicer3. This project will concentrate on warnings produced by the GNU gcc 4.3 compiler. Similar approaches can be applied to other Slicer3 compilers.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There mere 605 compilation errors.&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==ITK4 Changes that Affect Slicer4==&lt;br /&gt;
Here we summarize the API change that caused Slicer4 to not compile or run incorrectly. For each API change we list the major classes affected, how the issue was resolved and whether the change is compatible with ITK3.x. We also include a pointer to the ITK Migration Guide section that deals with the issue.&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! API Change&lt;br /&gt;
! Classes Affected&lt;br /&gt;
! Resolution&lt;br /&gt;
! Works for ITK3&lt;br /&gt;
! ITK Migration Doc&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove OStringStream&lt;br /&gt;
|&lt;br /&gt;
Many&lt;br /&gt;
|&lt;br /&gt;
Replace OStringStream with std::stringstream&lt;br /&gt;
|&lt;br /&gt;
Yes&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove New method for Rigid3DTransform&lt;br /&gt;
|&lt;br /&gt;
vtkSlicerTransformLogic&lt;br /&gt;
ResampleVolume2.cxx&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
New Transform pure virtual methods&lt;br /&gt;
|&lt;br /&gt;
itkWarpTransform3D.h&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Remove Brains2MaskImageIO&lt;br /&gt;
|&lt;br /&gt;
BRAINSTools&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
Upgrade GDCM to v2&lt;br /&gt;
|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
Skip building for ITKv4&lt;br /&gt;
|&lt;br /&gt;
No&lt;br /&gt;
|&lt;br /&gt;
Nothing yet&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week&amp;diff=62738</id>
		<title>2011 Winter Project Week</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week&amp;diff=62738"/>
		<updated>2010-12-31T15:45:05Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* NA-MIC Kit Internals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Back to [[Project Events]], [[Events]]&lt;br /&gt;
 Back to [[Project Events]], [[AHM_2011]], [[Events]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
[[image:PW-SLC2011.png|300px]]&lt;br /&gt;
&lt;br /&gt;
== Dates.Venue.Registration ==&lt;br /&gt;
&lt;br /&gt;
Please [[AHM_2011#Dates_Venue_Registration|click here for Dates, Venue, and Registration]] for this event.&lt;br /&gt;
&lt;br /&gt;
== Agenda==&lt;br /&gt;
&lt;br /&gt;
Please [[AHM_2011#Agenda|click here for the agenda for AHM 2011 and Project Week]].&lt;br /&gt;
&lt;br /&gt;
==Background==&lt;br /&gt;
&lt;br /&gt;
From January 10-14, 2011, the twelfth project week for hands-on research and development activity in Image-Guided Therapy and Neuroscience applications will be hosted in Salt Lake City, Utah. Participant engage in open source programming using the [[NA-MIC-Kit|NA-MIC Kit]], algorithms, medical imaging sequence development, tracking experiments, and clinical applications. The main goal of this event is to further the translational research deliverables of the sponsoring centers ([http://www.na-mic.org NA-MIC], [http://www.ncigt.org NCIGT], [http://nac.spl.harvard.edu NAC], [http://catalyst.harvard.edu/home.html Harvard Catalyst], and [http://www.cimit.org CIMIT]) and their collaborators by identifying and solving programming problems during planned and ad hoc break-out sessions.  &lt;br /&gt;
&lt;br /&gt;
Active preparation for this conference begins with a kick-off teleconference. Invitations to this call are sent to members of the sponsoring communities, their collaborators, past attendees of the event, as well as any parties expressing an interest in working with these centers. The main goal of the initial teleconference is to gather information about which groups/projects would be active at the upcoming event to ensure that there were sufficient resources available to meet everyone's needs. Focused discussions about individual projects are conducted during several subsequent teleconferences and permits the hosts to finalize the project teams, consolidate any common components, and identify topics that should be discussed in break-out sessions. In the final days leading up to the meeting, all project teams are asked to complete a template page on the wiki describing the objectives and research plan for each project.  &lt;br /&gt;
&lt;br /&gt;
On the first day of the conference, each project team leader delivers a short presentation to introduce their topic and individual members of their team. These brief presentations serve to both familiarize other teams doing similar work about common problems or practical solutions, and to identify potential subsets of individuals who might benefit from collaborative work.  For the remainder of the conference, about 50% time is devoted to break-out discussions on topics of common interest to particular subsets and 50% to hands-on project work.  For hands-on project work, attendees are organized into 30-50 small teams comprised of 2-4 individuals with a mix of multi-disciplinary expertise.  To facilitate this work, a large room is setup with ample work tables, internet connection, and power access. This enables each computer software development-based team to gather on a table with their individual laptops, connect to the internet, download their software and data, and work on specific projects.  On the final day of the event, each project team summarizes their accomplishments in a closing presentation.&lt;br /&gt;
&lt;br /&gt;
A summary of all past NA-MIC Project Events is available [[Project_Events#Past|here]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Projects==&lt;br /&gt;
 &lt;br /&gt;
=== Segmentation ===&lt;br /&gt;
* [[2011_Winter_Project_Week:Extension of ABC to detect pathology categories|Extension of ABC (Atlas-Based Classification) to detect pathology categories, with tests on TBI images]] (Bo Wang, Jack Van Horn, Marcel Prastawa, Guido Gerig).&lt;br /&gt;
* [[2011_Winter_Project_Week:Atrial_Fibrillation|Segmentation of the left atrial wall for atrial fibrillation ablation therapy]] (Behnood Gholami, Yi Gao, and Allen Tannenbaum)&lt;br /&gt;
* [[2011_Winter_Project_Week:The_Vascular_Modeling_Toolkit_in_3D_Slicer|The Vascular Modeling Toolkit in 3D Slicer]] (Daniel Haehn, Luca Antiga, Kilian Pohl, Steve Pieper, Ron Kikinis)&lt;br /&gt;
*TubeTK for vascular image segmentation and analysis (Stephen Aylward, Danielle Pace, Steve Pieper)&lt;br /&gt;
* [[2011_Winter_Project_Week:StenosisDetector|A stenosis detector in Slicer4 using VMTK ]](Suares Tamekue, Daniel Haehn, Luca Antiga, Ron Kikinis)&lt;br /&gt;
* [[2011_Winter_Project_Week:MeshCurvolver|Surface Region Segmentation for Surgical Planning and Mapping ]] (Peter Karasev, Karol Chudy, Allen Tannenbaum)&lt;br /&gt;
* [[2011_Winter_Project_Week:SPECTRE_Integration|Integration of SPECTRE into Slicer]] (Nicole Aucoin, Min Chen)&lt;br /&gt;
* [[2011_Winter_Project_Week:NerveSeg|Segmentation of Nerve and Nerve Ganglia in the Spine]] (Adrian Dalca, Giovanna Danagoulian, Ehud Schmidt, Polina Golland)&lt;br /&gt;
&lt;br /&gt;
=== Registration ===&lt;br /&gt;
*[[2011_Winter_Project_Week:RegistrationCaseLibrary|The 3DSlicer Registration Case Library]] (Dominik Meier,Ron Kikinis)&lt;br /&gt;
*[[2011_Winter_Project_Week:RegistrationAnisotropy|Voxel Anisotropy and Bias Field Effects on Slicer Image Registration]] (Dominik Meier, Andriy Fedorov, William Wells) (tentative)&lt;br /&gt;
* [[2011_Winter_Project_Week:DTIRegistrationWizard|DTI registration &amp;amp; resampling wizard]] (Dominik Meier, Hans Johnson, Francois Budin, Mark Scully)&lt;br /&gt;
* [[2011_Winter_Project_Week:Efficient co-registration of multiple MR modalities using the ABC|Efficient co-registration of multiple MR modalities using the ABC (atlas-based classification) framework, joint visualization of multiple co-registered modalities]] (Bo Wang, Jack Van Horn, Marcel Prastawa, Guido Gerig).&lt;br /&gt;
* [[2011_Winter_Project_Week:DTI_MRI_Registration|DTI MRI Registration- Evaluation of registration schemes]] (Anuja Sharma, Guido Gerig)&lt;br /&gt;
* [[2011_Winter_Project_Week:Atlas_Registration_in_Slicer3|Atlas Registration in Slicer3]] (Daniel Haehn, Dominik Meier, Kilian Pohl, Ryan Eckbo)&lt;br /&gt;
* Registration in the presence of anatomic variation (aka. Sliding organ registration) (Danielle Pace, Marc Niethammer, Petter Risholm, Tina Kapur, Sandy Wells, Stephen Aylward)&lt;br /&gt;
* [[2011_Winter_Project_Week:UncertaintyVisualization|Visualizing registration uncertainty in Slicer3]] (Peter Risholm, William Wells)&lt;br /&gt;
* [[2011_Winter_Project_Week:LandmarkRegularization|Landmark-based registration with analytic regularization]] (Nadya Shusharina, Gregory Sharp)&lt;br /&gt;
* [[2011_Winter_Project_Week:DTIPipeline|DTI registration/processing pipeline in Slicer3]] (Francois Budin, Clement Vachet)&lt;br /&gt;
&lt;br /&gt;
=== IGT ===&lt;br /&gt;
*[[2011_Winter_Project_Week:OpenIGTLink| OpenIGTLink 2.0]] (Junichi Tokuda, Nobuhiko Hata) &lt;br /&gt;
*[[2011_Winter_Project_Week:Osteomark|Osteormark, navigation tool for Osteotomy]] (Laurent Chauvin, Nobuhiko Hata)&lt;br /&gt;
*[[2011_Winter_Project_Week:Intra-ProceduralProstateMotion|Detection and compensation for prostate motion during MR-guided prostate biopsy]] (A.Fedorov, Andras Lasso)&lt;br /&gt;
*[[2011_Winter_Project_Week:ThinClientQtInterfaceForIGT|Thin Client QT Interface for IGT]] (Nicholas Herlambang, Steve Pieper, Julien Finet, JC)&lt;br /&gt;
*[[2011_Winter_Project_Week:TransformRecorderAndProcedureAnnotation|Transform recorder and (surgical) procedure annotation module]] (Tamas Ungi, Junichi Tokuda)&lt;br /&gt;
*[[2011_Winter_Project_Week:SurgicalToolsTracking|Surgical Tools Tracking]] (Martin Rajchl, Feng Li)&lt;br /&gt;
&lt;br /&gt;
=== Radiotherapy ===&lt;br /&gt;
* [[2011_Winter_Project_Week:SegEye|Segmentation of the eye structures for Adaptive Radiotherapy]] (Ivan Kolesov, Gregory Sharp, and Allen Tannenbaum)&lt;br /&gt;
* [[2011_Winter_Project_Week:DicomRtExport|DICOM-RT export]] (Greg Sharp, Steve Pieper)&lt;br /&gt;
&lt;br /&gt;
=== Analysis ===&lt;br /&gt;
* [[2011_Winter_Project_Week:GAMBITCorticalThicknessAnalysis |GAMBIT - Cortical thickness analysis]] - Clement Vachet, Martin Styner&lt;br /&gt;
* [[2011_Winter_Project_Week:ParticleShapeAnalysis|Particle shape analysis incorporating surface normals ]] - Beatriz Paniagua, Martin Styner&lt;br /&gt;
* [[2011_Winter_Project_Week:NAMICShapeAnalysis |NAMIC shape analysis pipeline in Slicer 3]] - Lucile Bompard, Martin Styner, Clement Vachet, Chris Gloschat&lt;br /&gt;
* Particle Systems for Shape Analysis - Josh Cates, Manasi Datar, Ross Whitaker&lt;br /&gt;
* [[2011_Winter_Project_Week:MRSI_module_and_SIVIC_interface| MRSI module and SIVIC interface]] - Bjoern Menze, Jason Crane, Beck Olson, Polina Golland&lt;br /&gt;
&lt;br /&gt;
=== Informatics ===&lt;br /&gt;
* [[2011_Winter_Project_Week:UIowaTHPDTIData|Share all UIowa Traveling Human Phantom DTI data with NAMIC]] - Mark Scully, Hans Johnson, Zack M.&lt;br /&gt;
&lt;br /&gt;
=== Diffusion ===&lt;br /&gt;
* [[2011_Winter_Project_Week:DicomToNrrdTestSuite |Test suite for DicomToNrrdConverter]] - Mark Scully, Zach Mullen, Xiaodong Tao, Hans Johnson &lt;br /&gt;
* [[2011_Winter_Project_Week:DicomToNrrdRefactoring |Requirements gathering for refactoring DicomToNrrdConverter]] - Mark Scully, Xiaodong Tao, Hans Johnson &lt;br /&gt;
* [[2011_Winter_Project_Week:DTIPrepDocumentation |Documentation and 1st Draft Tutorial for DTIPrep]] - Clement Vachet, Mark Scully, Hans Johnson&lt;br /&gt;
* Voxelwise fiber distribution from tractography - Yinpeng Li, Martin Styner&lt;br /&gt;
* [[2011_Winter_Project_Week:TwoTensorTracts |Two-tensor full brain tractography pipeline]] - Lauren O'Donnell, Yogesh Rathi,  C-F Westin&lt;br /&gt;
* [[2011_Winter_Project_Week:FreeWaterElimination |Free-water elimination]]  - Ofer Pasternak, Demian Wassermann, C-F Westin&lt;br /&gt;
* Finsler tractography in ITK - Antonio Tristan-Vega, C-F Westin&lt;br /&gt;
* Statistical analysis of Cingulum extracted using Volumetric framework - Gopal Veni, Ross Whitaker&lt;br /&gt;
&lt;br /&gt;
=== NA-MIC Kit Internals ===&lt;br /&gt;
&lt;br /&gt;
* Command line module logic redesign (passing paramenters, tie into workflows) - Jim, Steve&lt;br /&gt;
* 64bit Windows Builds - Dave P&lt;br /&gt;
* Dashboards: Factory machine, subprojects, and CDash@Home - Dave P, Zack M, Steve, and Stephen&lt;br /&gt;
* MIDAS for data hosting - Zach M and Hans&lt;br /&gt;
* vtkWidgets - JC and Will, Nicole Aucoin&lt;br /&gt;
* [[2011_Winter_Project_Week:Annotation_module_in_Slicer4_Display_widget_intersections|Annotation module in Slicer4: Display widget intersections]] (Daniel Haehn, Nicole Aucoin, Steve Pieper)&lt;br /&gt;
* [[2011_Winter_Project_Week: Python and Slicer4| Python and Slicer4]]: Workflows, Scripting, and Porting - JC, Jim, Steve, and Danielle&lt;br /&gt;
* [[2011_Winter_Project_Week: Slice View Performance| Improve Performance of Slice Rendering in slicer3 and slicer4]] (Steve, Will, Jc, J2, Jim, Luca)&lt;br /&gt;
* [[2011_NAMIC_Project_week:_Real-Time_Volume_Rendering_for_Virtual_Colonoscopy| Real-Time Volume Rendering for Virtual Colonoscopy]] (Steve, Alex)&lt;br /&gt;
* [[2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration| Slicer4 - ITK4 Integration]] (Bill, Luis)&lt;br /&gt;
&lt;br /&gt;
=== Execution Model ===&lt;br /&gt;
* Extract SlicerExecutionModel (SEM) into separate entity.  SEM is the only component needed to build modules compatible with Slicer3D, so it should be easy incorporate into external applications without all of Slicer3D.  Jim, Hans&lt;br /&gt;
* [[2011_Winter_Project_Week:ExtendSEMXml|Extend SEM xml]] to include sections for explicit grant acknowledgements, pointers to documentation, and pointers to examples. - Hans, Andriy&lt;br /&gt;
* [[2011_Winter_Project_Week:SEMXMLSchema|Create a formal schema for the SEM xml so that eternal tools (i.e. nipype) can validate the xml.]] - Hans Johnson, Jim Miller, Tim Olsen&lt;br /&gt;
* [[2011_Winter_Project_Week:XMLToMediaWiki|Improve documentation extractor script that converts XML to MediaWiki format so that it can directly push this information into the Slicer3D MediaWiki.]] - (Wiki Systems Admin), Hans Johnson&lt;br /&gt;
* [[2011_Winter_Project_Week:ExternalToolsMergingStrategies | Improve merging strategies between software that is part of externals tools and part of Slicer.]] - Mark Scully, Hans Johnson&lt;br /&gt;
&lt;br /&gt;
=== Workflows and Integration ===&lt;br /&gt;
# [[Winter_project_week_2011_Workflows_SOA|Workflows and Service Oriented Architecture Solutions for Slicer3 Modules]] (Alexander Zaitsev, Wendy Plesniak, Charles Guttmann, Ron Kikinis)&lt;br /&gt;
&lt;br /&gt;
=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
#Please make sure that you are on the [http://public.kitware.com/cgi-bin/mailman/listinfo/na-mic-project-week na-mic-project-week mailing list] &lt;br /&gt;
#Starting Thursday, October 28th, part of the weekly Thursday 3pm NA-MIC Engineering TCON will be used to prepare for this meeting.  The schedule for these preparatory calls is as follows:&lt;br /&gt;
#*October 28: Engineering Infrastructure Projects&lt;br /&gt;
#*November 4: Engineering Infrastructure Projects&lt;br /&gt;
#*November 11: DPB Projects: Iowa, Outcomes from Alg Core Retreat &lt;br /&gt;
#*November 18: DPB Projects: MGH &lt;br /&gt;
#*November 25:  DBP Projects, Funded External Collaborations&lt;br /&gt;
#*December 2: Funded External Collaborations&lt;br /&gt;
#*December 9: Other External Collaborations&lt;br /&gt;
#*December 16:Finalize Engineering Projects &lt;br /&gt;
#*January 6: Loose Ends&lt;br /&gt;
#By December 16, 2010: [[Project_Week/Template|Complete a templated wiki page for your project]]. Please do not edit the template page itself, but create a new page for your project and cut-and-paste the text from this template page.  If you have questions, please send an email to tkapur at bwh.harvard.edu.&lt;br /&gt;
#By December 16, 2010: Create a directory for each project on the [[Engineering:SandBox|NAMIC Sandbox]] (Zack)&lt;br /&gt;
##[https://www.kitware.com/Admin/SendPassword.cgi Ask Zack for a Sandbox account]&lt;br /&gt;
##Commit on each sandbox directory the code examples/snippets that represent our first guesses of appropriate methods. (Luis and Steve will help with this, as needed)&lt;br /&gt;
##Gather test images in any of the Data sharing resources we have (e.g. the BIRN). These ones don't have to be many. At least three different cases, so we can get an idea of the modality-specific characteristics of these images. Put the IDs of these data sets on the wiki page. (the participants must do this.)&lt;br /&gt;
##Setup nightly tests on a separate Dashboard, where we will run the methods that we are experimenting with. The test should post result images and computation time. (Zack)&lt;br /&gt;
#Please note that by the time we get to the project event, we should be trying to close off a project milestone rather than starting to work on one...&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62737</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62737"/>
		<updated>2010-12-31T15:34:54Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Key Investigators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is underway and ITK version 4 has recently started. One of the goals of ITK 4 is too improve and cleanup the application programming interface (API). Although every attempt is being made to keep the API compatible with ITK 3.x. However, since ITKv4 will be a new major release, there are opportunities to remove antiquated code and repair long standing design defects.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' compiler warnings in Slicer3. This project will concentrate on warnings produced by the GNU gcc 4.3 compiler. Similar approaches can be applied to other Slicer3 compilers.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There mere 605 compilation errors.&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62736</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62736"/>
		<updated>2010-12-31T14:03:58Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen&lt;br /&gt;
* Hans - Iowa&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is underway and ITK version 4 has recently started. One of the goals of ITK 4 is too improve and cleanup the application programming interface (API). Although every attempt is being made to keep the API compatible with ITK 3.x. However, since ITKv4 will be a new major release, there are opportunities to remove antiquated code and repair long standing design defects.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' compiler warnings in Slicer3. This project will concentrate on warnings produced by the GNU gcc 4.3 compiler. Similar approaches can be applied to other Slicer3 compilers.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
** The goal is to provide a mechanism to identify incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
** [http://itk.org/Wiki/ITK_Release_4/MigrationGuideDeveloperTutorial ITKv4 Migration Guide - Developer Tutorial]&lt;br /&gt;
** [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide What Developers Must Do To Contribute to the Users Migration Guide]&lt;br /&gt;
** [http://www.itk.org/Wiki/images/6/67/MigrationGuideFull.pdf Migration Guide Description PDF]&lt;br /&gt;
** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide - Online Pages]&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There mere 605 compilation errors.&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
** [http://ij.itk.org/itkfaq/index.php? ITKv4 Migration Guide]&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4.0 The ITKv4 Wiki Page]&lt;br /&gt;
* [http://itk.org/Wiki/ITK_Release_4/What_Developers_Must_Do_To_Contribute_to_the_Users_Migration_Guide ITKv4 Migration Guide]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62732</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62732"/>
		<updated>2010-12-31T13:51:37Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Key Investigators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen&lt;br /&gt;
* Hans - Iowa&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is underway and ITK version 4 has recently started. One of the goals of ITK 4 is too improve and cleanup the application programming interface (API). Although every attempt is being made to keep the API compatible with ITK 3.x. However, since ITKv4 will be a new major release, there are opportunities to remove antiquated code and repair long standing design defects.&lt;br /&gt;
&lt;br /&gt;
The API changes may be planned or accidental. This project will establish mechanisms to discover, resolve and document API issues.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' compiler warnings in Slicer3. This project will concentrate on warnings produced by the GNU gcc 4.3 compiler. Similar approaches can be applied to other Slicer3 compilers.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
The goal is to provide a mechanism to identify incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There mere 605 compilation errors.&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [[ITK_Release_4.0|The ITKv4 Wiki Page]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62731</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62731"/>
		<updated>2010-12-31T13:48:49Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Key Investigators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen&lt;br /&gt;
* Hans - Iowa&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is underway and ITK version 4 has recently started. One of the goals of ITK 4 is too improve and cleanup the application programming interface (API). Although every attempt is being made to keep the API compatible with ITK 3.x. However, since ITKv4 will be a new major release, there are opportunities to remove antiquated code and repair long standing design defects.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' compiler warnings in Slicer3. This project will concentrate on warnings produced by the GNU gcc 4.3 compiler. Similar approaches can be applied to other Slicer3 compilers.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
The goal is to provide a mechanism to identify incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There mere 605 compilation errors.&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [[ITK_Release_4.0|The ITKv4 Wiki Page]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62730</id>
		<title>2011 Winter Project Week: Slicer4-ITK4 Continuous Integration</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2011_Winter_Project_Week:_Slicer4-ITK4_Continuous_Integration&amp;diff=62730"/>
		<updated>2010-12-31T13:42:26Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: Created page with '__NOTOC__ &amp;lt;gallery&amp;gt; Image:PW-SLC2011.png|Projects List &amp;lt;/gallery&amp;gt;  ==Key Investigators== * Bill Lorensen * Hans - Iowa * Luis - Kitware  &amp;lt;di…'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2011.png|[[2011_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Bill Lorensen&lt;br /&gt;
* Hans - Iowa&lt;br /&gt;
* Luis - Kitware&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
Identify API changes in ITK4 that cause compilation or run-time errors in Slicer4.&lt;br /&gt;
&lt;br /&gt;
Slicer4 development is underway and ITK version 4 has recently started. One of the goals of ITK 4 is too improve and cleanuop the application programming interface (API). Although every attempt is being made to keep the API compatible with ITK 3.x. Howvever, since ITKv4 will be a new major release, there are opportunities to remove antiquated code and repair long standing design defects.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' compiler warnings in Slicer3. This project will concentrate on warnings produced by the GNU gcc 4.3 compiler. Similar approaches can be applied to other Slicer3 compilers.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
The goal is to provide a mechanism to identify incompatible Slicer4/ITK4 API changes.&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
A [http://www.cdash.org/CDash/index.php?project=Slicer4&amp;amp;date=2010-12-28&amp;amp;filtercount=1&amp;amp;showfilters=1&amp;amp;field1=site/string&amp;amp;compare1=63&amp;amp;value1=BillsBasement baseline dashboard] was created on December 27, 2010. There mere 605 compilation errors.&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
A description of each API incompatibility and how to address it will be provided.&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [[ITK_Release_4.0|The ITKv4 Wiki Page]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2010_EAB&amp;diff=47393</id>
		<title>2010 EAB</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2010_EAB&amp;diff=47393"/>
		<updated>2010-01-07T16:31:33Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Back to [[AHM_2010]], [[Events]], [[EAB]]&lt;br /&gt;
&lt;br /&gt;
The 2010 EAB meeting will be held on Thursday, January 9th from 3pm - 5pm.&lt;br /&gt;
&lt;br /&gt;
Confirmed Attendees:&lt;br /&gt;
*Godfrey Pearlson&lt;br /&gt;
*Bill Lorensen&lt;br /&gt;
*Chris Johnson&lt;br /&gt;
*Fred Prior&lt;br /&gt;
*Sandy Napel&lt;br /&gt;
*Carlo Pierpaoli&lt;br /&gt;
*Michael Ackerman (ex-officio)&lt;br /&gt;
*Zohara Cohen (NIH)&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2010_Winter_Project_Week_Slicer_Dashboard&amp;diff=47022</id>
		<title>2010 Winter Project Week Slicer Dashboard</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2010_Winter_Project_Week_Slicer_Dashboard&amp;diff=47022"/>
		<updated>2010-01-05T16:39:49Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Key Investigators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:PW-SLC2010.png|[[2010_Winter_Project_Week#Projects|Projects List]]&lt;br /&gt;
Image:RubberChicken.jpg|The Prize for Lack of Software Testing&lt;br /&gt;
Image:Tux.png|The Prize for Proper Software Testing&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Key Investigators==&lt;br /&gt;
* Kitware: Luis Ibanez &lt;br /&gt;
* Isomics: Steve Pieper&lt;br /&gt;
* EAB: Bill Lorensen&lt;br /&gt;
* NA-MIC: All Developers&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Objective&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reiterate the goals and practices related to using the NA-MIC testing infrastructure for the slicer project.&lt;br /&gt;
&lt;br /&gt;
Goal is to make the [http://www.cdash.org/CDash/index.php?project=Slicer3 Slicer3 dashboard] green and have that be the expected state now and into the future.  This will allow developers to run tests locally and know when their changes have led to broken tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Approach, Plan&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Use the Project Week to raise awareness among the developer community of the use of the dashboard and the importance of getting it green and keeping it green.  &lt;br /&gt;
&lt;br /&gt;
Review the materials here:&lt;br /&gt;
* the [http://www.cdash.org/CDash/index.php?project=Slicer3 Slicer3 dashboard]&lt;br /&gt;
** the [http://www.cdash.org/CDash/index.php?project=VTK VTK dashboard]&lt;br /&gt;
** the [http://www.cdash.org/CDash/index.php?project=Insight ITK dashboard]&lt;br /&gt;
* [http://www.slicer.org/slicerWiki/index.php/Slicer3:Testing Slicer Testing]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/NA-MIC-kit-curriculum NA-MIC Curriculum info]&lt;br /&gt;
**[http://www.na-mic.org/Wiki/index.php/NA-MIC-kit-curriculum/Testing-Based_Programming/How_to_add_Tests_in_CMake How to Add A Test]&lt;br /&gt;
** [http://www.na-mic.org/Wiki/index.php/NA-MIC-kit-curriculum/Testing-Based_Programming/How_to_run_Code_Coverage How to run Code Coverage]&lt;br /&gt;
** [http://www.na-mic.org/Wiki/index.php/NA-MIC-kit-curriculum/Testing-Based_Programming/How_to_run_Dynamic_Analysis How to run Dynamic Testing]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3&amp;gt;Progress&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 97%; float: left;&amp;quot;&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Summer_Project_Week&amp;diff=37991</id>
		<title>2009 Summer Project Week</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Summer_Project_Week&amp;diff=37991"/>
		<updated>2009-06-02T17:12:20Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Attendee List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Project Events]], [[Events]]&lt;br /&gt;
&lt;br /&gt;
*'''Dates:''' June 22-26, 2009&lt;br /&gt;
*'''Location:''' MIT. [[Meeting_Locations:MIT_Grier_A_%26B|Grier Rooms A &amp;amp; B: 34-401A &amp;amp; 34-401B]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction to the FIRST JOINT PROJECT WEEK==&lt;br /&gt;
&lt;br /&gt;
We are pleased to announce the FIRST JOINT PROJECT WEEK of hands-on research and development activity for Image-Guided Therapy and Neuroscience applications.  Participants will engage in open source programming using the [[NA-MIC-Kit|NA-MIC Kit]], algorithm design, medical imaging sequence development, tracking experiments, and clinical application. The main goal of this event is to move forward the translational research deliverables of the sponsoring centers and their collaborators. Active and potential collaborators are encouraged and welcome to attend this event. This event will be set up to maximize informal interaction between participants.  &lt;br /&gt;
&lt;br /&gt;
Active preparation will begin on''' Thursday, April 16th at 3pm ET''', with a kick-off teleconference.  Invitations to this call will be sent to members of the sponsoring communities, their collaborators, past attendees of the event, as well as any parties who have expressed an interest in working with these centers. The main goal of the kick-off call is to get an idea of which groups/projects will be active at the upcoming event, and to ensure that there is sufficient coverage for all. Subsequent teleconferences will allow for more focused discussions on individual projects and allow the hosts to finalize the project teams, consolidate any common components, and identify topics that should be discussed in breakout sessions. In the final days leading upto the meeting, all project teams will be asked to fill in a template page on this wiki that describes the objectives and plan of their projects.  &lt;br /&gt;
&lt;br /&gt;
The event itself will start off with a short presentation by each project team, driven using their previously created description, and will help all participants get acquainted with others who are doing similar work. In the rest of the week, about half the time will be spent in breakout discussions on topics of common interest of subsets of the attendees, and the other half will be spent in project teams, doing hands-on project work.  The hands-on activities will be done in 30-50 small teams of size 2-4, each with a mix of multi-disciplinary expertise.  To facilitate this work, a large room at MIT will be setup with several tables, with internet and power access, and each computer software development based team will gather on a table with their individual laptops, connect to the internet to download their software and data, and be able to work on their projects.  Teams working on projects that require the use of medical devices will proceed to Brigham and Women's Hospital and carry out their experiments there. On the last day of the event, a closing presentation session will be held in which each project team will present a summary of what they accomplished during the week.&lt;br /&gt;
&lt;br /&gt;
This event is part of the translational research efforts of [http://www.na-mic.org NA-MIC], [http://www.ncigt.org NCIGT], [http://nac.spl.harvard.edu/ NAC], [http://catalyst.harvard.edu/home.html Harvard Catalyst], and [http://www.cimit.org CIMIT].  It is an expansion of the NA-MIC Summer Project Week that has been held annually since 2005. It will be held every summer at MIT and Brigham and Womens Hospital in Boston, typically during the last full week of June, and in Salt Lake City in the winter, typically during the second week of January.  &lt;br /&gt;
&lt;br /&gt;
A summary of all past NA-MIC Project Events that this FIRST JOINT EVENT is based on is available [[Project_Events#Past|here]].&lt;br /&gt;
&lt;br /&gt;
== Agenda==&lt;br /&gt;
* Monday &lt;br /&gt;
** noon-1pm lunch &lt;br /&gt;
**1pm: Welcome (Ron Kikinis)&lt;br /&gt;
** 1:05-3:30pm Introduce [[#Projects|Projects]] using templated wiki pages (all Project Leads) ([http://wiki.na-mic.org/Wiki/index.php/Project_Week/Template Wiki Template]) &lt;br /&gt;
** 3:30-5:30pm Start project work&lt;br /&gt;
* Tuesday &lt;br /&gt;
** 8:30am breakfast&lt;br /&gt;
**9:30-10am: NA-MIC Kit Overview (Jim Miller)&lt;br /&gt;
** 10-10:30am Slicer 3.4 Update (Steve Pieper)&lt;br /&gt;
** 10:30-11am Slicer IGT and Imaging Kit Update Update (Noby Hata, Scott Hoge)&lt;br /&gt;
** 11am-12:00pm Breakout Session: [[2009 Project Week Breakout Session: Slicer-Python]] (Demian W)&lt;br /&gt;
** noon lunch&lt;br /&gt;
** 2:30pm-5pm: [[2009 Project Week Data Clinic|Data Clinic]] (Ron Kikinis)&lt;br /&gt;
** 5:30pm adjourn for day&lt;br /&gt;
* Wednesday &lt;br /&gt;
** 8:30am breakfast&lt;br /&gt;
** 9am-12pm Breakout Session: [[2009 Project Week Breakout Session: ITK]] (Luis Ibanez)&lt;br /&gt;
** noon lunch&lt;br /&gt;
** 2:30pm: Breakout Session: [[2009 Project Week Breakout Session: 3D+T Microscopy Cell Dataset Segmentation]] (Alex G.)&lt;br /&gt;
** 5:30pm adjourn for day&lt;br /&gt;
* Thursday&lt;br /&gt;
** 8:30am breakfast&lt;br /&gt;
** 9-11pm Tutorial Contest Presentations&lt;br /&gt;
** noon lunch&lt;br /&gt;
** 2:30pm: Breakout Session: [[2009 Project Week Breakout Session: XNAT]] (Dan M.)&lt;br /&gt;
** 5:30pm adjourn for day&lt;br /&gt;
* Friday &lt;br /&gt;
** 8:30am breakfast&lt;br /&gt;
** 10am-noon: Tutorial Contest Winner Announcement and Project Progress using update [[#Projects|Project Wiki pages]]&lt;br /&gt;
*** Noon: Lunch boxes and adjourn by 1:30pm.&lt;br /&gt;
***We need to empty room by 1:30.  You are welcome to use wireless in Stata.&lt;br /&gt;
***Please sign up for the developer [http://www.slicer.org/pages/Mailinglist mailing lists]&lt;br /&gt;
***Next Project Week [[AHM_2010|in Utah, January 4-8, 2010]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
The list of projects for this week will go here.&lt;br /&gt;
=== Collaboration Projects ===&lt;br /&gt;
#[[2009_Summer_Project_Week_Project_Segmentation_of_Muscoskeletal_Images]]&lt;br /&gt;
#[[2009_Summer_Project_Week_4D_Imaging| 4D Imaging (Perfusion, Cardiac, etc.) ]] (Junichi, Dan Blezek?, Steve, Alex G?)&lt;br /&gt;
#Liver Ablation in Slicer (Haiying, Ziv)&lt;br /&gt;
#SLicer3 and Brainlab - introduction to UCLA (Haiying, Xenios, Pratik, Nathan Hageman)&lt;br /&gt;
#Adaptive Radiotherapy - Deformable registration and DICOMRT (Greg Sharp, Steve, Wendy)&lt;br /&gt;
#Brain DTI Atlas? (Florin, Utah, UNC, GeorgiaTech)&lt;br /&gt;
#Slicer module for the computation of fibre dispersion and curving measures (Peter Savadjiev, C-F Westin)&lt;br /&gt;
#Xnat user interface improvements for NA-MIC (Dan M, Florin, Ron, Wendy)&lt;br /&gt;
#xnat and DICOMRT (Greg Sharp, Dan M) - might be done?&lt;br /&gt;
#Grid Wizard+xnat clinic (Clement Vachet)&lt;br /&gt;
#?Fluid Mechanincs Module (Nathan Hageman)&lt;br /&gt;
#?DTI digital phantom generator to create validation data sets - webservice/cmdlin module/binaries are downloadable from UCLA (Nathan Hageman)&lt;br /&gt;
#Cortical Thickness Pipeline (Clement Vachet, Ipek Oguz)&lt;br /&gt;
#Demo Brainlab/Slicer in BWH OR (Haiying, Nathan Hageman)&lt;br /&gt;
#Skull Stripping (Xiaodong, Snehashis Roy)&lt;br /&gt;
#[[2009_Summer_Project_Week-FastMarching_for_brain_tumor_segmentation |FastMarching for brain tumor segmentation]] (Fedorov, GeorgiaTech)&lt;br /&gt;
#Meningioma growth simulation for validation (Fedorov, Marcel, Ron)&lt;br /&gt;
#Automatic brain MRI processing pipeline (Marcel, Hans)&lt;br /&gt;
#XNAT integration into Harvard Catalyst i2b2 framework(Gao, Yong)&lt;br /&gt;
#[[2009_Summer_Project_Week_Spherical_Mesh_Diffeomorphic_Demons_Registration |Spherical Mesh Diffeomorphic Demons Registration]] (Luis Ibanez,Thomas Yeo, Polina Goland),  - (Mon, Tue, Wed)&lt;br /&gt;
#[[2009_Summer_Project_Week_MRSI-Module|MRSI Module]] (Bjoern Menze, Jeff Yager, Vince Magnotta)&lt;br /&gt;
#[[Measuring Alcohol Stress Interaction]] (Vidya Rajgopalan, Andrey Fedorov)&lt;br /&gt;
&lt;br /&gt;
===IGT Projects:===&lt;br /&gt;
#[[2009_Summer_Project_Week_Prostate_Robotics |Prostate Robotics]] (Junichi, Sam, Nathan Cho, Jack),  - Mon, Tue, Thursday 7pm-midnight)&lt;br /&gt;
#port 4d gated ultrasound code to Slicer -  (Danielle)&lt;br /&gt;
#integration of stereo video into Slicer (Mehdi)&lt;br /&gt;
#multi-modality statistical toolbox for MR T1, T2, fMRI, DTI data (Diego, sylvain jaume, nicholas, noby)&lt;br /&gt;
#neuroendoscope workflow presentation (sebastien barre)&lt;br /&gt;
#breakout session on Dynamic Patient Models (James Balter)&lt;br /&gt;
#[[2009_Summer_Project_Week_Registration_for_RT|2d/3d Registration (and GPGPU acceleration) for Radiation Therapy]] (Sandy Wells, Jim Balter, and others)&lt;br /&gt;
&lt;br /&gt;
===NA-MIC Engineering Projects===&lt;br /&gt;
# DICOM Validation and Cleanup Tool (Luis, Sid, Steve, Greg)&lt;br /&gt;
# [[Summer2009:Using_ITK_in_python| Using ITK in python]] (Steve, Demian, Jim)&lt;br /&gt;
# [[Summer2009:Implementing_parallelism_in_python| Taking advantage of multicore machines &amp;amp; clusters with python]] (Julien de Siebenthal, Sylvain Bouix)&lt;br /&gt;
# [[Summer2009:Using_client_server_paradigm_with_python_and_slicer| Deferring heavy computational tasks with python]] (Julien de Siebenthal, Sylvain Bouix)&lt;br /&gt;
# [[Summer2009:Using_CUDA_for_stochastic_tractography| Developing realtime feedback using CUDA]] (Julien de Siebenthal, Sylvain Bouix)&lt;br /&gt;
# [[2009_Summer_Project_Week_VTK_3D_Widgets_In_Slicer3|VTK 3d Widgets in Slicer3]] (Nicole, Karthik, Sebastien, Wendy)&lt;br /&gt;
# [[2009_Summer_Project_Week_Colors_Module |Updates to Slicer3 Colors module]] (Nicole)&lt;br /&gt;
# [[EM_Segmenter|EM Segmenter]] (Sylvain Jaume, Nicolas Rannou)&lt;br /&gt;
# Plug-in 3D Viewer based on XIP (Lining)&lt;br /&gt;
# [[MeshingSummer2009 | IAFE Mesh Modules - improvements and testing]] (Curt, Steve, Vince)&lt;br /&gt;
# [[Slicer3 Informatics Workflow Design &amp;amp; XNAT updates | Slicer3 Informatics Workflow Design &amp;amp; XNAT updates for Slicer]] (Wen, Steve, Dan M, Dan B)&lt;br /&gt;
# [[BSpline Registration in Slicer3 | BSpline Registration in Slicer3]] (Samuel Gerber,Jim Miller, Ross Whitaker)&lt;br /&gt;
# [[EPI Correction in Slicer3 | EPI Correction in Slicer3]] (Ran Tao, Jim Miller, Sylvain Bouix, Tom Fletcher, Ross Whitaker, Julien de Siebenthal)&lt;br /&gt;
# Fix [http://www.na-mic.org/Bug/view.php?id=416 bug 416] in registration (Andriy, Luis, Bill, Jim, Steve)&lt;br /&gt;
# [[Summer2009:The Vascular Modeling Toolkit in 3D Slicer | The Vascular Modeling Toolkit in 3D Slicer]] (Daniel Haehn)&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
# Please make sure that you are on the http://public.kitware.com/cgi-bin/mailman/listinfo/na-mic-project-week mailing list&lt;br /&gt;
# Join the kickoff TCON on April 16, 3pm ET.&lt;br /&gt;
# [[Engineering:TCON_2009|June 18 TCON]] at 3pm ET to tie loose ends.  Anyone with un-addressed questions should call.&lt;br /&gt;
# By 3pm ET on June 11, 2009: [[Project_Week/Template|Complete a templated wiki page for your project]]. Please do not edit the template page itself, but create a new page for your project and cut-and-paste the text from this template page.  If you have questions, please send an email to tkapur at bwh.harvard.edu.&lt;br /&gt;
# By 3pm on June 18, 2009: Create a directory for each project on the [[Engineering:SandBox|NAMIC Sandbox]] (Zack)&lt;br /&gt;
## Commit on each sandbox directory the code examples/snippets that represent our first guesses of appropriate methods. (Luis and Steve will help with this, as needed)&lt;br /&gt;
## Gather test images in any of the Data sharing resources we have (e.g. the BIRN). These ones don't have to be many. At least three different cases, so we can get an idea of the modality-specific characteristics of these images. Put the IDs of these data sets on the wiki page. (the participants must do this.)&lt;br /&gt;
## Setup nightly tests on a separate Dashboard, where we will run the methods that we are experimenting with. The test should post result images and computation time. (Zack)&lt;br /&gt;
# Please note that by the time we get to the project event, we should be trying to close off a project milestone rather than starting to work on one...&lt;br /&gt;
# People doing Slicer related projects should come to project week with slicer built on your laptop.&lt;br /&gt;
## Projects to develop extension modules should work with the [http://viewvc.slicer.org/viewcvs.cgi/branches/Slicer-3-4/#dirlist Slicer-3-4 branch] (new code should not be checked into the branch).&lt;br /&gt;
## Projects to modify core behavior of slicer should be done on the [http://viewvc.slicer.org/viewcvs.cgi/trunk/ trunk].&lt;br /&gt;
&lt;br /&gt;
==Attendee List==&lt;br /&gt;
If you plan to attend, please add your name here.&lt;br /&gt;
&lt;br /&gt;
#Ron Kikinis, BWH (NA-MIC, NAC, NCIGT)&lt;br /&gt;
#Ferenc Jolesz, BWH (NCIGT, NAC)&lt;br /&gt;
#Clare Tempany, BWH (NCIGT)&lt;br /&gt;
#Tina Kapur, BWH (NA-MIC, NCIGT)&lt;br /&gt;
#Steve Pieper, Isomics Inc&lt;br /&gt;
#Jim Miller, GE Research&lt;br /&gt;
#Xiaodong Tao, GE Research&lt;br /&gt;
#Randy Gollub, MGH&lt;br /&gt;
#Nicole Aucoin, BWH (NA-MIC)&lt;br /&gt;
#Dan Marcus, WUSTL&lt;br /&gt;
#Junichi Tokuda, BWH (NCIGT)&lt;br /&gt;
#Alex Gouaillard, Harvard Systems Biology&lt;br /&gt;
#Arnaud Gelas, Harvard Systems Biology &lt;br /&gt;
#Kishore Mosanliganti, Harvard Systems Biology&lt;br /&gt;
#Lydie Souhait, Harvard Systems Biology&lt;br /&gt;
#Luis Ibanez, Kitware Inc&lt;br /&gt;
#Vincent Magnotta, UIowa&lt;br /&gt;
#Hans Johnson, UIowa&lt;br /&gt;
#Xenios Papademetris, Yale&lt;br /&gt;
#Gregory S. Fischer, WPI (Mon, Tue, Wed)&lt;br /&gt;
#Daniel Blezek, Mayo (Tue-Fri)&lt;br /&gt;
#Danielle Pace, Robarts Research Institute / UWO&lt;br /&gt;
#Clement Vachet, UNC-Chapel Hill&lt;br /&gt;
#Dave Welch, UIowa&lt;br /&gt;
#Demian Wassermann, Odyssée lab, INRIA, France&lt;br /&gt;
#Manasi Ramachandran, UIowa&lt;br /&gt;
#Greg Sharp, MGH&lt;br /&gt;
#Rui Li, MGH&lt;br /&gt;
#Mehdi Esteghamatian, Robarts Research Institute / UWO&lt;br /&gt;
#Misha Milchenko, WUSTL&lt;br /&gt;
#Kevin Archie, WUSTL&lt;br /&gt;
#Tim Olsen, WUSTL&lt;br /&gt;
#Wendy Plesniak BWH (NAC)&lt;br /&gt;
#Haiying Liu BWH (NCIGT)&lt;br /&gt;
#Curtis Lisle, KnowledgeVis / Isomics&lt;br /&gt;
#Diego Cantor, Robarts Research Institute / UWO&lt;br /&gt;
#Daniel Haehn, BWH&lt;br /&gt;
#Nicolas Rannou, BWH&lt;br /&gt;
#Sylvain Jaume, MIT&lt;br /&gt;
#Alex Yarmarkovich, Isomics&lt;br /&gt;
#Marco Ruiz, UCSD&lt;br /&gt;
#Andriy Fedorov, BWH (NA-MIC)&lt;br /&gt;
#Harish Doddi, Stanford University&lt;br /&gt;
#Saikat Pal, Stanford University&lt;br /&gt;
#Scott Hoge, BWH (NCIGT)&lt;br /&gt;
#Vandana Mohan, Georgia Tech&lt;br /&gt;
#Ivan Kolosev, Georgia Tech&lt;br /&gt;
#Behnood Gholami, Georgia Tech&lt;br /&gt;
#James Balter, U Michigan&lt;br /&gt;
#Dan McShan, U Michigan&lt;br /&gt;
#Zhou Shen, U Michigan&lt;br /&gt;
#Maria Francesca Spadea, Italy&lt;br /&gt;
#Lining Yang, Siemens Corporate Research&lt;br /&gt;
#Beatriz Paniagua, UNC-Chapel Hill&lt;br /&gt;
#Bennett Landman, Johns Hopkins University &lt;br /&gt;
#Snehashis Roy, Johns Hopkins University&lt;br /&gt;
#Marta Peroni, Politecnico di Milano&lt;br /&gt;
#Sebastien Barre, Kitware, Inc.&lt;br /&gt;
#Samuel Gerber, SCI University of Utah&lt;br /&gt;
#Ran Tao, SCI University of Utah&lt;br /&gt;
#Marcel Prastawa, SCI University of Utah&lt;br /&gt;
#Katie Hayes, BWH (NA-MIC)&lt;br /&gt;
#Sonia Pujol, BWH (NA-MIC)&lt;br /&gt;
#Andras Lasso, Queen's University&lt;br /&gt;
#Yong Gao, MGH&lt;br /&gt;
#Minjeong Kim, UNC-Chapel Hill&lt;br /&gt;
#Guorong Wu, UNC-Chapel Hill&lt;br /&gt;
#Jeffrey Yager, UIowa&lt;br /&gt;
#Yanling Liu, SAIC/NCI-Frederick&lt;br /&gt;
#Ziv Yaniv, Georgetown&lt;br /&gt;
#Bjoern Menze, MIT&lt;br /&gt;
#Vidya Rajagopalan, Virginia Tech&lt;br /&gt;
#Sandy Wells, BWH (NAC, NCIGT)&lt;br /&gt;
#Lilla Zollei, MGH (NAC)&lt;br /&gt;
#Lauren O'Donnell, BWH&lt;br /&gt;
#Florin Talos, BWH (NAC)&lt;br /&gt;
#Nobuhiko Hata, BWH (NCIGT)&lt;br /&gt;
#Alark Joshi, Yale&lt;br /&gt;
#Yogesh Rathi, BWH&lt;br /&gt;
#Jimi Malcolm, BWH&lt;br /&gt;
#Dustin Scheinost, Yale&lt;br /&gt;
#Dominique Belhachemi, Yale&lt;br /&gt;
#Sam Song, JHU&lt;br /&gt;
#Nathan Cho, JHU&lt;br /&gt;
#Julien de Siebenthal, BWH&lt;br /&gt;
#Peter Savadjiev, BWH&lt;br /&gt;
#Carl-Fredrik Westin, BWH&lt;br /&gt;
#John Melonakos, AccelerEyes (Wed &amp;amp; Thu morning)&lt;br /&gt;
#Yi Gao, Georgia Tech&lt;br /&gt;
&lt;br /&gt;
== Logistics ==&lt;br /&gt;
*'''Dates:''' June 22-26, 2009&lt;br /&gt;
*'''Location:''' MIT. [[Meeting_Locations:MIT_Grier_A_%26B|Grier Rooms A &amp;amp; B: 34-401A &amp;amp; 34-401B]].&lt;br /&gt;
*'''Registration Fee:''' $260 (covers the cost of breakfast, lunch and coffee breaks for the week). Due by Friday, June 12th, 2009. Please make checks out to &amp;quot;Massachusetts Institute of Technology&amp;quot; and mail to: Donna Kaufman, MIT, 77 Massachusetts Ave., 38-409a, Cambridge, MA 02139.  Receipts will be provided by email as checks are received.  Please send questions to dkauf at mit.edu. '''If this is your first event and you are attending for only one day, the registration fee is waived.'''  Please let us know, so that we can cover the costs with one of our grants.&lt;br /&gt;
*'''Registration Method''' Add your name to the Attendee List section of this page&lt;br /&gt;
*'''Hotel:''' We have a group rate of $189/night (plus tax) at the Le Meridien (which used to be the Hotel at MIT). [http://www.starwoodmeeting.com/Book/MITDECSE  Please click here to reserve.] This rate is good only through June 1.&lt;br /&gt;
*Here is some information about several other Boston area hotels that are convenient to NA-MIC events: [[Boston_Hotels|Boston_Hotels]]. Summer is tourist season in Boston, so please book your rooms early.&lt;br /&gt;
*2009 Summer Project Week [[NA-MIC/Projects/Theme/Template|'''Template''']]&lt;br /&gt;
*[[2008_Summer_Project_Week#Projects|Last Year's Projects as a reference]]&lt;br /&gt;
*For hosting projects, we are planning to make use of the NITRC resources.  See [[NA-MIC_and_NITRC | Information about NITRC Collaboration]]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Summer_Project_Week&amp;diff=36095</id>
		<title>2009 Summer Project Week</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Summer_Project_Week&amp;diff=36095"/>
		<updated>2009-04-07T18:09:50Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Attendee List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Project Events]], [[Events]]&lt;br /&gt;
&lt;br /&gt;
*'''Dates:''' June 22-26, 2009&lt;br /&gt;
*'''Location:''' MIT. [[Meeting_Locations:MIT_Grier_A_%26B|Grier Rooms A &amp;amp; B: 34-401A &amp;amp; 34-401B]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction to the FIRST JOINT PROJECT WEEK==&lt;br /&gt;
&lt;br /&gt;
We are pleased to announce the FIRST JOINT PROJECT WEEK of hands-on research and development activity for Image-Guided Therapy and Neuroscience applications.  Participants will engage in open source programming using the [[NA-MIC-Kit|NA-MIC Kit]], algorithm design, medical imaging sequence development, tracking experiments, and clinical application. The main goal of this event is to move forward the translational research deliverables of the sponsoring centers and their collaborators. Active and potential collaborators are encouraged and welcome to attend this event. This event will be set up to maximize informal interaction between participants.  &lt;br /&gt;
&lt;br /&gt;
Active preparation will begin on''' Thursday, April 16th at 3pm ET''', with a kick-off teleconference.  Invitations to this call will be sent to members of the sponsoring communities, their collaborators, past attendees of the event, as well as any parties who have expressed an interest in working with these centers. The main goal of the kick-off call is to get an idea of which groups/projects will be active at the upcoming event, and to ensure that there is sufficient coverage for all. Subsequent teleconferences will allow for more focused discussions on individual projects and allow the hosts to finalize the project teams, consolidate any common components, and identify topics that should be discussed in breakout sessions. In the final days leading upto the meeting, all project teams will be asked to fill in a template page on this wiki that describes the objectives and plan of their projects.  &lt;br /&gt;
&lt;br /&gt;
The event itself will start off with a short presentation by each project team, driven using their previously created description, and will help all participants get acquainted with others who are doing similar work. In the rest of the week, about half the time will be spent in breakout discussions on topics of common interest of subsets of the attendees, and the other half will be spent in project teams, doing hands-on project work.  The hands-on activities will be done in 30-50 small teams of size 2-4, each with a mix of multi-disciplinary expertise.  To facilitate this work, a large room at MIT will be setup with several tables, with internet and power access, and each computer software development based team will gather on a table with their individual laptops, connect to the internet to download their software and data, and be able to work on their projects.  Teams working on projects that require the use of medical devices will proceed to Brigham and Women's Hospital and carry out their experiments there. On the last day of the event, a closing presentation session will be held in which each project team will present a summary of what they accomplished during the week.&lt;br /&gt;
&lt;br /&gt;
This event is part of the translational research efforts of [http://www.na-mic.org NA-MIC], [http://www.ncigt.org NCIGT], [http://nac.spl.harvard.edu/ NAC], [http://catalyst.harvard.edu/home.html Harvard Catalyst], and [http://www.cimit.org CIMIT].  It is an expansion of the NA-MIC Summer Project Week that has been held annually since 2005. It will be held every summer at MIT and Brigham and Womens Hospital in Boston, typically during the last full week of June, and in Salt Lake City in the winter, typically during the second week of January.  &lt;br /&gt;
&lt;br /&gt;
A summary of all past NA-MIC Project Events that this FIRST JOINT EVENT is based on is available [[Project_Events#Past|here]].&lt;br /&gt;
&lt;br /&gt;
== Agenda==&lt;br /&gt;
* Monday &lt;br /&gt;
** noon-1pm lunch &lt;br /&gt;
**1pm: Welcome (Ron Kikinis)&lt;br /&gt;
** 1:05-3:30pm Introduce [[#Projects|Projects]] using templated wiki pages (all Project Leads) ([[NA-MIC/Projects/Theme/Template|Wiki Template]]) &lt;br /&gt;
** 3:30-5:30pm Start project work&lt;br /&gt;
* Tuesday &lt;br /&gt;
** 8:30am breakfast&lt;br /&gt;
**9:30-10am: NA-MIC Kit Overview (Jim Miller)&lt;br /&gt;
** 10-10:30am Slicer 3.4 Update (Steve Pieper)&lt;br /&gt;
** 10:30-11am NCIGT Kit Update (Noby Hata, Scott Hoge)&lt;br /&gt;
** noon lunch&lt;br /&gt;
** 2:30pm-5pm: [[2009 Project Week Data Clinic|Data Clinic]]&lt;br /&gt;
** 5:30pm adjourn for day&lt;br /&gt;
* Wednesday &lt;br /&gt;
** 8:30am breakfast&lt;br /&gt;
** 10am-12pm Breakout Session: TBD&lt;br /&gt;
** noon lunch&lt;br /&gt;
** 2:30pm: Breakout Session: TBD&lt;br /&gt;
** 5:30pm adjourn for day&lt;br /&gt;
* Thursday&lt;br /&gt;
** 8:30am breakfast&lt;br /&gt;
** 9-11pm Tutorial Contest Presentations&lt;br /&gt;
** noon lunch&lt;br /&gt;
** 2:30pm: Breakout Session: TBD&lt;br /&gt;
** 5:30pm adjourn for day&lt;br /&gt;
* Friday &lt;br /&gt;
** 8:30am breakfast&lt;br /&gt;
** 10am-noon: Tutorial Contest Winner Announcement and Project Progress using update [[#Projects|Project Wiki pages]]&lt;br /&gt;
*** Noon: Lunch boxes and adjourn by 1:30pm.&lt;br /&gt;
***We need to empty room by 1:30.  You are welcome to use wireless in Stata.&lt;br /&gt;
***Please sign up for the developer [http://www.slicer.org/pages/Mailinglist mailing lists]&lt;br /&gt;
***Next Project Week [[AHM_2010|in Utah, January 4-8, 2010]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
The list of projects for this week will go here.&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
# Please make sure that you are on the http://public.kitware.com/cgi-bin/mailman/listinfo/na-mic-project-week mailing list&lt;br /&gt;
# Join the kickoff TCON on April 16, 3pm ET.&lt;br /&gt;
# [[Engineering:TCON_2009|June 18 TCON]] at 3pm ET to tie loose ends.  Anyone with un-addressed questions should call.&lt;br /&gt;
# By 3pm ET on June 11, 2009: [[Project_Week/Template|Complete a templated wiki page for your project]]. Please do not edit the template page itself, but create a new page for your project and cut-and-paste the text from this template page.  If you have questions, please send an email to tkapur at bwh.harvard.edu.&lt;br /&gt;
# By 3pm on June 18, 2009: Create a directory for each project on the [[Engineering:SandBox|NAMIC Sandbox]] (Zack)&lt;br /&gt;
## Commit on each sandbox directory the code examples/snippets that represent our first guesses of appropriate methods. (Luis and Steve will help with this, as needed)&lt;br /&gt;
## Gather test images in any of the Data sharing resources we have (e.g. the BIRN). These ones don't have to be many. At least three different cases, so we can get an idea of the modality-specific characteristics of these images. Put the IDs of these data sets on the wiki page. (the participants must do this.)&lt;br /&gt;
## Setup nightly tests on a separate Dashboard, where we will run the methods that we are experimenting with. The test should post result images and computation time. (Zack)&lt;br /&gt;
# Please note that by the time we get to the project event, we should be trying to close off a project milestone rather than starting to work on one...&lt;br /&gt;
&lt;br /&gt;
==Attendee List==&lt;br /&gt;
If you plan to attend, please add your name here.&lt;br /&gt;
&lt;br /&gt;
#Ron Kikinis&lt;br /&gt;
#Ferenc Jolesz&lt;br /&gt;
#Clare Tempany&lt;br /&gt;
#Tina Kapur&lt;br /&gt;
#Steve Pieper&lt;br /&gt;
#Jim Miller&lt;br /&gt;
#Bill Lorensen&lt;br /&gt;
#Randy Gollub&lt;br /&gt;
#Nicole Aucoin&lt;br /&gt;
#Dan Marcus&lt;br /&gt;
&lt;br /&gt;
== Logistics ==&lt;br /&gt;
*'''Dates:''' June 22-26, 2009&lt;br /&gt;
*'''Location:''' MIT. [[Meeting_Locations:MIT_Grier_A_%26B|Grier Rooms A &amp;amp; B: 34-401A &amp;amp; 34-401B]].&lt;br /&gt;
*'''Registration Fee:''' TBD (covers the cost of breakfast, lunch and coffee breaks for the week). Due by Friday, June 12th, 2009. Please make checks out to &amp;quot;Massachusetts Institute of Technology&amp;quot; and mail to: Donna Kaufman, MIT, 77 Massachusetts Ave., 38-409a, Cambridge, MA 02139.  Receipts will be provided by email as checks are received.  Please send questions to dkauf at mit.edu. '''If this is your first event and you are attending for only one day, the registration fee is waived.'''  Please let us know, so that we can cover the costs with one of our grants.&lt;br /&gt;
*'''Registration Method''' Add your name to the Attendee List section of this page&lt;br /&gt;
*'''Hotel:''' We have a group rate of XXX/night (plus tax) for a room with either 1 king or 2 queen beds at the [http://www.hotelatmit.com Hotel at MIT (now called Le Meridien)]. [http://www.starwoodmeeting.com/StarGroupsWeb/booking/reservation?id=0805167317&amp;amp;key=4FD1B  Please click here to reserve.] This rate is good only through June 1.&lt;br /&gt;
*Here is some information about several other Boston area hotels that are convenient to NA-MIC events: [[Boston_Hotels|Boston_Hotels]]. Summer is tourist season in Boston, so please book your rooms early.&lt;br /&gt;
*2008 Summer Project Week [[NA-MIC/Projects/Theme/Template|'''Template''']]&lt;br /&gt;
*[[2008_Summer_Project_Week#Projects|Last Year's Projects as a reference]]&lt;br /&gt;
*For hosting projects, we are planning to make use of the NITRC resources.  See [[NA-MIC_and_NITRC | Information about NITRC Collaboration]]&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Command_Line_Program_Testing&amp;diff=34763</id>
		<title>2009 Winter Project Week Command Line Program Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Command_Line_Program_Testing&amp;diff=34763"/>
		<updated>2009-01-09T14:35:34Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2009_Winter_Project_Week|Project Week Main Page]] ]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Key Investigators===&lt;br /&gt;
* Bill Lorensen (His Basement)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Objective&amp;lt;/h1&amp;gt;&lt;br /&gt;
There is NA-MIC funded infrastructure in place to regression test the command line programs found in Applications/CLI. Surprisingly, of the over 50 command line programs in the current Slicer3 distribution, only 11 have tests. This project will illustrate the importance of testing and show how easy it is to create tests for command line programs using the existing infrastructure. The project will document the process, create tests and help others to create tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Approach, Plan&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the existing infrastructure, the project will create regression tests for many of the existing command line programs in Applications/CLI. The project will provide expert assistance to those who feel that creating a test is difficult. A Wiki page will provide step-by-step procedures to test the command line programs.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Progress&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is really no excuse for the lack of testing in Applications/CLI. The infrastructure that has been in place for a few years makes it almost painless to test command line programs. Better documentation and peer pressure will help improve the situation.&lt;br /&gt;
&lt;br /&gt;
Tests have been created for all of the command line programs in Applications/CLI (not including sub directories). Three types of tests exist:&lt;br /&gt;
&lt;br /&gt;
# --help tests just run the command line program with the ''--help'' flag. These tests are as basic as a test can be. All they really test is whether or not the command line program can build, link and report help.&lt;br /&gt;
# Smoke tests run the program put do not check the results of the program. These are one step above the --help tests and should be the minimum test for each program.&lt;br /&gt;
# Regression tests run the program and compare the resulting output with a baseline output. Currently only image regression testing is available. Each command line program that produces an image should have a regression test.&lt;br /&gt;
&lt;br /&gt;
Documentation: [[Slicer3:Execution Model Testing|Slicer3 Execution Model Testing]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
Starting (current) status:&lt;br /&gt;
# 5 (20) regression tests&lt;br /&gt;
# 3 (9) smoke tests&lt;br /&gt;
# 30 (9) with no tests&lt;br /&gt;
&lt;br /&gt;
During Project Week, I'll work with those folks responsible for programs whose status is untested.&lt;br /&gt;
&lt;br /&gt;
The table shows each command line program and its testing status. Under '''Test Type''', the item in ''parentheses'' is a test that has been added as part of this project. Even the untested programs have at a minimum test that runs the program with ''--help''. We still consider these programs untested since every CLP program responds to ''--help''. However, at least these test programs can link and run.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Program&lt;br /&gt;
! Test Type&lt;br /&gt;
! Command Line&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
Add&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEMP}/AddTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
AffineRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
BSplineDeformableRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --resampledmovingfilename  ${TEMP}/BSplineDeformableRegistrationTest00.nhdr&lt;br /&gt;
 --outputtransform ${TEMP}/BSplineDeformableRegistrationTest00Transform.txt &lt;br /&gt;
 --default 0&lt;br /&gt;
 --maximumDeformation 1.0&lt;br /&gt;
 --constrain&lt;br /&gt;
 --spatialsamples 10000&lt;br /&gt;
 --histogrambins 32&lt;br /&gt;
 --gridSize 5&lt;br /&gt;
 --iterations 50&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr &lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
CheckerBoard&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --checkerPattern 5,3,2&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxialDoubled.nhdr&lt;br /&gt;
 ${TEMP}/CheckerBoardTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ConfidenceConnected&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --smoothingIterations 1&lt;br /&gt;
 --timestep 0.0625&lt;br /&gt;
 --iterations 5&lt;br /&gt;
 --multiplier 2.5&lt;br /&gt;
 --neighborhood 1&lt;br /&gt;
 --labelvalue 2&lt;br /&gt;
 --seed 9.71622,-8.1,14.2189 --seed -12.9459,-8.1,18.577&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/ConfidenceConnectedTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
CurvatureAnisotropicDiffusion&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --conductance 2&lt;br /&gt;
 --timeStep 0.0625&lt;br /&gt;
 --iterations 2&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxialDicom&lt;br /&gt;
 ${TEMP} CTHeadAxialFromDicom.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
DiffusionTensorEstimation&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --otsuomegathreshold 0.5&lt;br /&gt;
 ${MRML_TEST_DATA}/helix-DWI.nhdr&lt;br /&gt;
 ${TEMP}/DiffusionTensorEstimationTest_dti.nhdr&lt;br /&gt;
 ${TEMP}/DiffusionTensorEstimationTest_baseline.nhdr&lt;br /&gt;
 ${TEMP}/DiffusionTensorEstimationTest_otsu.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
DiffusionTensorMathematics&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --enumeration FractionalAnisotropy&lt;br /&gt;
 ${MRML_TEST_DATA}/helix-DWI.nhdr&lt;br /&gt;
 ${TEMP}/DiffusionTensorMathematicsTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DiffusionTensorTest&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DiffusionWeightedTest&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DWIDicomLoad&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
ExecutionModelTour&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --integer 30&lt;br /&gt;
 --double 30&lt;br /&gt;
 -f 1.3,2,-14&lt;br /&gt;
 --string_vector foo,bar,foobar&lt;br /&gt;
 --enumeration Bill&lt;br /&gt;
 --boolean1&lt;br /&gt;
 --transform1 ${TEST_DATA}/ExecutionModelTourTest.mrml\#vtkMRMLLinearTransformNode1&lt;br /&gt;
 --transform2 ${TEST_DATA}/ExecutionModelTourTest.mrml\#vtkMRMLLinearTransformNode2&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
FreesurferSurfaceSectionExtraction&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
GaussianBlurImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --sigma 2.5&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEMP}/GaussianBlurImageFilterTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
GradientAnisotropicDiffusion&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --conductance 2&lt;br /&gt;
 --timeStep 0.0625&lt;br /&gt;
 --iterations 2&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/GradientAnisotropicDiffusionTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
GrayscaleFillHoleImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/GrayscaleFillHoleTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
GrayscaleGrindPeakImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/GrayscaleGrindPeakTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
GrayscaleModelMaker&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --threshold 300&lt;br /&gt;
 --name CTFace&lt;br /&gt;
 --smooth 15&lt;br /&gt;
 --decimate 0.95&lt;br /&gt;
 --splitnormals&lt;br /&gt;
 --pointnormals&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEMP}GrayscaleModelMakerTest.vtp&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
HistogramMatching&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --numberOfHistogramLevels 64&lt;br /&gt;
 --numberOfMatchPoints 10&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
ImageLabelCombine&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ImageReadDicomWrite&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --patientName Austrialian&lt;br /&gt;
 --patientID 8775070&lt;br /&gt;
 --patientComments &amp;quot;A volunteer&amp;quot;&lt;br /&gt;
 --studyID 123456&lt;br /&gt;
 --studyDate 20090102&lt;br /&gt;
 --studyComments Resampled&lt;br /&gt;
 --studyDescription None&lt;br /&gt;
 --modality CT&lt;br /&gt;
 --manufacturer &amp;quot;GE Medical Systems&amp;quot;&lt;br /&gt;
 --model CT8800&lt;br /&gt;
 --seriesNumber 123456&lt;br /&gt;
 --seriesDescription None&lt;br /&gt;
 --dicomDirectory ${TEMP}&lt;br /&gt;
 --dicomPrefix CTHeadAxialDicom&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
LabelMapSmoothing&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --labelToSmooth 1&lt;br /&gt;
 --numberOfIterations 50&lt;br /&gt;
 --maxRMSError 0.01&lt;br /&gt;
 --gaussianSigma 3&lt;br /&gt;
 ${TEST_DATA}/CTHeadResampledOtsuSegmented.nhdr&lt;br /&gt;
 ${TEMP}/LabelMapSmoothingTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
LinearRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --resampledmovingfilename  ${TEMP}/LinearRegistrationTest00.nhdr&lt;br /&gt;
 --outputtransform ${TEMP}/LinearRegistrationTest00Transform.txt &lt;br /&gt;
 --initialtransform ${TEST_DATA}/itkAffineTransform00.txt&lt;br /&gt;
 --spatialsamples 10000&lt;br /&gt;
 --histogrambins 32&lt;br /&gt;
 --iterations 50&lt;br /&gt;
 --learningrate 0.01&lt;br /&gt;
 --translationscale 100&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr &lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
MedianImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --neighborhood 1,2,3 ${TEST_DATA}/CTHeadAxial.nhdr ${TEMP}/MedianImageFilterTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
ModelMaker&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --labels 2&lt;br /&gt;
 --modelSceneFile ${TEMP}/ModelMakerTest.mrml\#vtkMRMLModelHierarchyNode1&lt;br /&gt;
 ${MRML_TEST_DATA}/helix-roi-lable2.nrrd&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
MultipleModelsExample&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
OrientImage&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --orientation Axial ${MRML_DATA}/fixed.nrrd ${TEMP}/OrientImageTestAxial.nrrd&lt;br /&gt;
 --orientation Coronal ${MRML_DATA}/fixed.nrrd ${TEMP}/OrientImageTestCoronal.nrrd&lt;br /&gt;
 --orientation Sagittal ${MRML_DATA}/fixed.nrrd ${TEMP}/OrientImageTestSagittal.nrrd&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
OtsuThresholdImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --insideValue 0&lt;br /&gt;
 --outsideValue 255&lt;br /&gt;
 --numberOfBins 128 &lt;br /&gt;
 ${TEST_DATA}/CTHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/OtsuThresholdImageFilterTest.nhdr &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
OtsuThresholdSegmentation&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --brightObjects&lt;br /&gt;
 --numberOfBins 128&lt;br /&gt;
 --faceConnected&lt;br /&gt;
 --minimumObjectSize 1000&lt;br /&gt;
 ${TEST_DATA}/CTHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/OtsuThresholdSegmentationTest.nhdr &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
ProbeVolumeWithModel&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ResampleVolume2&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --Reference ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 --number_of_thread 0&lt;br /&gt;
 --transform_matrix 1,0,0,0,1,0,0,0,1,0,0,0&lt;br /&gt;
 --transform rt&lt;br /&gt;
 --space LPS&lt;br /&gt;
 --interpolation linear&lt;br /&gt;
 --window_function c&lt;br /&gt;
 --spline_order 3&lt;br /&gt;
 --spacing 0,0,0&lt;br /&gt;
 --size 0,0,0&lt;br /&gt;
 --direction_matrix 0,0,0,0,0,0,0,0,0&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/ResampleVolume2Test.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ResampleVolume&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --spacing 5,5,5&lt;br /&gt;
 --interpolation linear&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr &lt;br /&gt;
 ${TEMP}/ResampleVolumeTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
RigidRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
Subtract&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxialDoubled.nhdr&lt;br /&gt;
 ${TEMP}/SubtractTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
TestGridTransformRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --gridSize 5&lt;br /&gt;
 --outputtransform ${TEMP}/TestGridTransformRegistrationTest00Transform.txt&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
VotingBinaryHoleFillingImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --radius 3,3,3 &lt;br /&gt;
 --majorityThreshold 1&lt;br /&gt;
 --background 0&lt;br /&gt;
 --foreground 1&lt;br /&gt;
 ${TEST_DATA}/CTHeadResampledOtsuSegmented.nhdr&lt;br /&gt;
 ${TEMP}/VotingBinaryHoleFillingImageFilterTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ZeroCrossingBasedEdgeDetectionImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/CTHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/ZeroCrossingBasedEdgeDetectionImageFilterTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Command_Line_Program_Testing&amp;diff=34600</id>
		<title>2009 Winter Project Week Command Line Program Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Command_Line_Program_Testing&amp;diff=34600"/>
		<updated>2009-01-08T14:03:41Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2009_Winter_Project_Week|Project Week Main Page]] ]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Key Investigators===&lt;br /&gt;
* Bill Lorensen (His Basement)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Objective&amp;lt;/h1&amp;gt;&lt;br /&gt;
There is NA-MIC funded infrastructure in place to regression test the command line programs found in Applications/CLI. Surprisingly, of the over 50 command line programs in the current Slicer3 distribution, only 11 have tests. This project will illustrate the importance of testing and show how easy it is to create tests for command line programs using the existing infrastructure. The project will document the process, create tests and help others to create tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Approach, Plan&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the existing infrastructure, the project will create regression tests for many of the existing command line programs in Applications/CLI. The project will provide expert assistance to those who feel that creating a test is difficult. A Wiki page will provide step-by-step procedures to test the command line programs.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Progress&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is really no excuse for the lack of testing in Applications/CLI. The infrastructure that has been in place for a few years makes it almost painless to test command line programs. Better documentation and peer pressure will help improve the situation.&lt;br /&gt;
&lt;br /&gt;
Tests have been created for all of the command line programs in Applications/CLI (not including sub directories). Three types of tests exist:&lt;br /&gt;
&lt;br /&gt;
# --help tests just run the command line program with the ''--help'' flag. These tests are as basic as a test can be. All they really test is whether or not the command line program can build, link and report help.&lt;br /&gt;
# Smoke tests run the program put do not check the results of the program. These are one step above the --help tests and should be the minimum test for each program.&lt;br /&gt;
# Regression tests run the program and compare the resulting output with a baseline output. Currently only image regression testing is available. Each command line program that produces an image should have a regression test.&lt;br /&gt;
&lt;br /&gt;
Documentation: [[Slicer3:Execution Model Testing|Slicer3 Execution Model Testing]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
Starting (current) status:&lt;br /&gt;
# 5 (20) regression tests&lt;br /&gt;
# 3 (8) smoke tests&lt;br /&gt;
# 30 (10) with no tests&lt;br /&gt;
&lt;br /&gt;
During Project Week, I'll work with those folks responsible for programs whose status is untested.&lt;br /&gt;
&lt;br /&gt;
The table shows each command line program and its testing status. Under '''Test Type''', the item in ''parentheses'' is a test that has been added as part of this project. Even the untested programs have at a minimum test that runs the program with ''--help''. We still consider these programs untested since every CLP program responds to ''--help''. However, at least these test programs can link and run.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Program&lt;br /&gt;
! Test Type&lt;br /&gt;
! Command Line&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
Add&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEMP}/AddTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
AffineRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
BSplineDeformableRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --resampledmovingfilename  ${TEMP}/BSplineDeformableRegistrationTest00.nhdr&lt;br /&gt;
 --outputtransform ${TEMP}/BSplineDeformableRegistrationTest00Transform.txt &lt;br /&gt;
 --default 0&lt;br /&gt;
 --maximumDeformation 1.0&lt;br /&gt;
 --constrain&lt;br /&gt;
 --spatialsamples 10000&lt;br /&gt;
 --histogrambins 32&lt;br /&gt;
 --gridSize 5&lt;br /&gt;
 --iterations 50&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr &lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
CheckerBoard&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --checkerPattern 5,3,2&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxialDoubled.nhdr&lt;br /&gt;
 ${TEMP}/CheckerBoardTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ConfidenceConnected&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --smoothingIterations 1&lt;br /&gt;
 --timestep 0.0625&lt;br /&gt;
 --iterations 5&lt;br /&gt;
 --multiplier 2.5&lt;br /&gt;
 --neighborhood 1&lt;br /&gt;
 --labelvalue 2&lt;br /&gt;
 --seed 9.71622,-8.1,14.2189 --seed -12.9459,-8.1,18.577&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/ConfidenceConnectedTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
CurvatureAnisotropicDiffusion&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --conductance 2&lt;br /&gt;
 --timeStep 0.0625&lt;br /&gt;
 --iterations 2&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxialDicom&lt;br /&gt;
 ${TEMP} CTHeadAxialFromDicom.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
DiffusionTensorEstimation&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --otsuomegathreshold 0.5&lt;br /&gt;
 ${MRML_TEST_DATA}/helix-DWI.nhdr&lt;br /&gt;
 ${TEMP}/DiffusionTensorEstimationTest_dti.nhdr&lt;br /&gt;
 ${TEMP}/DiffusionTensorEstimationTest_baseline.nhdr&lt;br /&gt;
 ${TEMP}/DiffusionTensorEstimationTest_otsu.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DiffusionTensorMathematics&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DiffusionTensorTest&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DiffusionWeightedTest&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DWIDicomLoad&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
ExecutionModelTour&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --integer 30&lt;br /&gt;
 --double 30&lt;br /&gt;
 -f 1.3,2,-14&lt;br /&gt;
 --string_vector foo,bar,foobar&lt;br /&gt;
 --enumeration Bill&lt;br /&gt;
 --boolean1&lt;br /&gt;
 --transform1 ${TEST_DATA}/ExecutionModelTourTest.mrml\#vtkMRMLLinearTransformNode1&lt;br /&gt;
 --transform2 ${TEST_DATA}/ExecutionModelTourTest.mrml\#vtkMRMLLinearTransformNode2&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
FreesurferSurfaceSectionExtraction&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
GaussianBlurImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --sigma 2.5&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEMP}/GaussianBlurImageFilterTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
GradientAnisotropicDiffusion&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --conductance 2&lt;br /&gt;
 --timeStep 0.0625&lt;br /&gt;
 --iterations 2&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/GradientAnisotropicDiffusionTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
GrayscaleFillHoleImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/GrayscaleFillHoleTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
GrayscaleGrindPeakImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/GrayscaleGrindPeakTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
GrayscaleModelMaker&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --threshold 300&lt;br /&gt;
 --name CTFace&lt;br /&gt;
 --smooth 15&lt;br /&gt;
 --decimate 0.95&lt;br /&gt;
 --splitnormals&lt;br /&gt;
 --pointnormals&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEMP}GrayscaleModelMakerTest.vtp&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
HistogramMatching&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --numberOfHistogramLevels 64&lt;br /&gt;
 --numberOfMatchPoints 10&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
ImageLabelCombine&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ImageReadDicomWrite&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --patientName Austrialian&lt;br /&gt;
 --patientID 8775070&lt;br /&gt;
 --patientComments &amp;quot;A volunteer&amp;quot;&lt;br /&gt;
 --studyID 123456&lt;br /&gt;
 --studyDate 20090102&lt;br /&gt;
 --studyComments Resampled&lt;br /&gt;
 --studyDescription None&lt;br /&gt;
 --modality CT&lt;br /&gt;
 --manufacturer &amp;quot;GE Medical Systems&amp;quot;&lt;br /&gt;
 --model CT8800&lt;br /&gt;
 --seriesNumber 123456&lt;br /&gt;
 --seriesDescription None&lt;br /&gt;
 --dicomDirectory ${TEMP}&lt;br /&gt;
 --dicomPrefix CTHeadAxialDicom&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
LabelMapSmoothing&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --labelToSmooth 1&lt;br /&gt;
 --numberOfIterations 50&lt;br /&gt;
 --maxRMSError 0.01&lt;br /&gt;
 --gaussianSigma 3&lt;br /&gt;
 ${TEST_DATA}/CTHeadResampledOtsuSegmented.nhdr&lt;br /&gt;
 ${TEMP}/LabelMapSmoothingTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
LinearRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --resampledmovingfilename  ${TEMP}/LinearRegistrationTest00.nhdr&lt;br /&gt;
 --outputtransform ${TEMP}/LinearRegistrationTest00Transform.txt &lt;br /&gt;
 --initialtransform ${TEST_DATA}/itkAffineTransform00.txt&lt;br /&gt;
 --spatialsamples 10000&lt;br /&gt;
 --histogrambins 32&lt;br /&gt;
 --iterations 50&lt;br /&gt;
 --learningrate 0.01&lt;br /&gt;
 --translationscale 100&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr &lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
MedianImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --neighborhood 1,2,3 ${TEST_DATA}/CTHeadAxial.nhdr ${TEMP}/MedianImageFilterTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
ModelMaker&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --labels 2&lt;br /&gt;
 --modelSceneFile ${TEMP}/ModelMakerTest.mrml\#vtkMRMLModelHierarchyNode1&lt;br /&gt;
 ${MRML_TEST_DATA}/helix-roi-lable2.nrrd&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
MultipleModelsExample&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
OrientImage&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --orientation Axial ${MRML_DATA}/fixed.nrrd ${TEMP}/OrientImageTestAxial.nrrd&lt;br /&gt;
 --orientation Coronal ${MRML_DATA}/fixed.nrrd ${TEMP}/OrientImageTestCoronal.nrrd&lt;br /&gt;
 --orientation Sagittal ${MRML_DATA}/fixed.nrrd ${TEMP}/OrientImageTestSagittal.nrrd&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
OtsuThresholdImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --insideValue 0&lt;br /&gt;
 --outsideValue 255&lt;br /&gt;
 --numberOfBins 128 &lt;br /&gt;
 ${TEST_DATA}/CTHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/OtsuThresholdImageFilterTest.nhdr &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
OtsuThresholdSegmentation&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --brightObjects&lt;br /&gt;
 --numberOfBins 128&lt;br /&gt;
 --faceConnected&lt;br /&gt;
 --minimumObjectSize 1000&lt;br /&gt;
 ${TEST_DATA}/CTHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/OtsuThresholdSegmentationTest.nhdr &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
ProbeVolumeWithModel&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ResampleVolume2&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --Reference ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 --number_of_thread 0&lt;br /&gt;
 --transform_matrix 1,0,0,0,1,0,0,0,1,0,0,0&lt;br /&gt;
 --transform rt&lt;br /&gt;
 --space LPS&lt;br /&gt;
 --interpolation linear&lt;br /&gt;
 --window_function c&lt;br /&gt;
 --spline_order 3&lt;br /&gt;
 --spacing 0,0,0&lt;br /&gt;
 --size 0,0,0&lt;br /&gt;
 --direction_matrix 0,0,0,0,0,0,0,0,0&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/ResampleVolume2Test.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ResampleVolume&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --spacing 5,5,5&lt;br /&gt;
 --interpolation linear&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr &lt;br /&gt;
 ${TEMP}/ResampleVolumeTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
RigidRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
Subtract&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxialDoubled.nhdr&lt;br /&gt;
 ${TEMP}/SubtractTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
TestGridTransformRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --gridSize 5&lt;br /&gt;
 --outputtransform ${TEMP}/TestGridTransformRegistrationTest00Transform.txt&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
VotingBinaryHoleFillingImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --radius 3,3,3 &lt;br /&gt;
 --majorityThreshold 1&lt;br /&gt;
 --background 0&lt;br /&gt;
 --foreground 1&lt;br /&gt;
 ${TEST_DATA}/CTHeadResampledOtsuSegmented.nhdr&lt;br /&gt;
 ${TEMP}/VotingBinaryHoleFillingImageFilterTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ZeroCrossingBasedEdgeDetectionImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/CTHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/ZeroCrossingBasedEdgeDetectionImageFilterTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Command_Line_Program_Testing&amp;diff=34424</id>
		<title>2009 Winter Project Week Command Line Program Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Command_Line_Program_Testing&amp;diff=34424"/>
		<updated>2009-01-07T18:14:50Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2009_Winter_Project_Week|Project Week Main Page]] ]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Key Investigators===&lt;br /&gt;
* Bill Lorensen (His Basement)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Objective&amp;lt;/h1&amp;gt;&lt;br /&gt;
There is NA-MIC funded infrastructure in place to regression test the command line programs found in Applications/CLI. Surprisingly, of the over 50 command line programs in the current Slicer3 distribution, only 11 have tests. This project will illustrate the importance of testing and show how easy it is to create tests for command line programs using the existing infrastructure. The project will document the process, create tests and help others to create tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Approach, Plan&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the existing infrastructure, the project will create regression tests for many of the existing command line programs in Applications/CLI. The project will provide expert assistance to those who feel that creating a test is difficult. A Wiki page will provide step-by-step procedures to test the command line programs.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Progress&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is really no excuse for the lack of testing in Applications/CLI. The infrastructure that has been in place for a few years makes it almost painless to test command line programs. Better documentation and peer pressure will help improve the situation.&lt;br /&gt;
&lt;br /&gt;
Tests have been created for all of the command line programs in Applications/CLI (not including sub directories). Three types of tests exist:&lt;br /&gt;
&lt;br /&gt;
# --help tests just run the command line program with the ''--help'' flag. These tests are as basic as a test can be. All they really test is whether or not the command line program can build, link and report help.&lt;br /&gt;
# Smoke tests run the program put do not check the results of the program. These are one step above the --help tests and should be the minimum test for each program.&lt;br /&gt;
# Regression tests run the program and compare the resulting output with a baseline output. Currently only image regression testing is available. Each command line program that produces an image should have a regression test.&lt;br /&gt;
&lt;br /&gt;
Documentation: [[Slicer3:Execution Model Testing|Slicer3 Execution Model Testing]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
Starting (current) status:&lt;br /&gt;
# 5 (20) regression tests&lt;br /&gt;
# 3 (7) smoke tests&lt;br /&gt;
# 30 (11) with no tests&lt;br /&gt;
&lt;br /&gt;
During Project Week, I'll work with those folks responsible for programs whose status is untested.&lt;br /&gt;
&lt;br /&gt;
The table shows each command line program and its testing status. Under '''Test Type''', the item in ''parentheses'' is a test that has been added as part of this project. Even the untested programs have at a minimum test that runs the program with ''--help''. We still consider these programs untested since every CLP program responds to ''--help''. However, at least these test programs can link and run.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Program&lt;br /&gt;
! Test Type&lt;br /&gt;
! Command Line&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
Add&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEMP}/AddTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
AffineRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
BSplineDeformableRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --resampledmovingfilename  ${TEMP}/BSplineDeformableRegistrationTest00.nhdr&lt;br /&gt;
 --outputtransform ${TEMP}/BSplineDeformableRegistrationTest00Transform.txt &lt;br /&gt;
 --default 0&lt;br /&gt;
 --maximumDeformation 1.0&lt;br /&gt;
 --constrain&lt;br /&gt;
 --spatialsamples 10000&lt;br /&gt;
 --histogrambins 32&lt;br /&gt;
 --gridSize 5&lt;br /&gt;
 --iterations 50&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr &lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
CheckerBoard&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --checkerPattern 5,3,2&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxialDoubled.nhdr&lt;br /&gt;
 ${TEMP}/CheckerBoardTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ConfidenceConnected&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --smoothingIterations 1&lt;br /&gt;
 --timestep 0.0625&lt;br /&gt;
 --iterations 5&lt;br /&gt;
 --multiplier 2.5&lt;br /&gt;
 --neighborhood 1&lt;br /&gt;
 --labelvalue 2&lt;br /&gt;
 --seed 9.71622,-8.1,14.2189 --seed -12.9459,-8.1,18.577&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/ConfidenceConnectedTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
CurvatureAnisotropicDiffusion&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --conductance 2&lt;br /&gt;
 --timeStep 0.0625&lt;br /&gt;
 --iterations 2&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxialDicom&lt;br /&gt;
 ${TEMP} CTHeadAxialFromDicom.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DiffusionTensorEstimation&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DiffusionTensorMathematics&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DiffusionTensorTest&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DiffusionWeightedTest&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DWIDicomLoad&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
ExecutionModelTour&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --integer 30&lt;br /&gt;
 --double 30&lt;br /&gt;
 -f 1.3,2,-14&lt;br /&gt;
 --string_vector foo,bar,foobar&lt;br /&gt;
 --enumeration Bill&lt;br /&gt;
 --boolean1&lt;br /&gt;
 --transform1 ${TEST_DATA}/ExecutionModelTourTest.mrml\#vtkMRMLLinearTransformNode1&lt;br /&gt;
 --transform2 ${TEST_DATA}/ExecutionModelTourTest.mrml\#vtkMRMLLinearTransformNode2&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
FreesurferSurfaceSectionExtraction&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
GaussianBlurImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --sigma 2.5&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEMP}/GaussianBlurImageFilterTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
GradientAnisotropicDiffusion&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --conductance 2&lt;br /&gt;
 --timeStep 0.0625&lt;br /&gt;
 --iterations 2&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/GradientAnisotropicDiffusionTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
GrayscaleFillHoleImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/GrayscaleFillHoleTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
GrayscaleGrindPeakImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/GrayscaleGrindPeakTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
GrayscaleModelMaker&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --threshold 300&lt;br /&gt;
 --name CTFace&lt;br /&gt;
 --smooth 15&lt;br /&gt;
 --decimate 0.95&lt;br /&gt;
 --splitnormals&lt;br /&gt;
 --pointnormals&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEMP}GrayscaleModelMakerTest.vtp&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
HistogramMatching&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --numberOfHistogramLevels 64&lt;br /&gt;
 --numberOfMatchPoints 10&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
ImageLabelCombine&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ImageReadDicomWrite&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --patientName Austrialian&lt;br /&gt;
 --patientID 8775070&lt;br /&gt;
 --patientComments &amp;quot;A volunteer&amp;quot;&lt;br /&gt;
 --studyID 123456&lt;br /&gt;
 --studyDate 20090102&lt;br /&gt;
 --studyComments Resampled&lt;br /&gt;
 --studyDescription None&lt;br /&gt;
 --modality CT&lt;br /&gt;
 --manufacturer &amp;quot;GE Medical Systems&amp;quot;&lt;br /&gt;
 --model CT8800&lt;br /&gt;
 --seriesNumber 123456&lt;br /&gt;
 --seriesDescription None&lt;br /&gt;
 --dicomDirectory ${TEMP}&lt;br /&gt;
 --dicomPrefix CTHeadAxialDicom&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
LabelMapSmoothing&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --labelToSmooth 1&lt;br /&gt;
 --numberOfIterations 50&lt;br /&gt;
 --maxRMSError 0.01&lt;br /&gt;
 --gaussianSigma 3&lt;br /&gt;
 ${TEST_DATA}/CTHeadResampledOtsuSegmented.nhdr&lt;br /&gt;
 ${TEMP}/LabelMapSmoothingTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
LinearRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --resampledmovingfilename  ${TEMP}/LinearRegistrationTest00.nhdr&lt;br /&gt;
 --outputtransform ${TEMP}/LinearRegistrationTest00Transform.txt &lt;br /&gt;
 --initialtransform ${TEST_DATA}/itkAffineTransform00.txt&lt;br /&gt;
 --spatialsamples 10000&lt;br /&gt;
 --histogrambins 32&lt;br /&gt;
 --iterations 50&lt;br /&gt;
 --learningrate 0.01&lt;br /&gt;
 --translationscale 100&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr &lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
MedianImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --neighborhood 1,2,3 ${TEST_DATA}/CTHeadAxial.nhdr ${TEMP}/MedianImageFilterTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
ModelMaker&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --labels 2&lt;br /&gt;
 --modelSceneFile ${TEMP}/ModelMakerTest.mrml\#vtkMRMLModelHierarchyNode1&lt;br /&gt;
 ${MRML_TEST_DATA}/helix-roi-lable2.nrrd&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
MultipleModelsExample&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
OrientImage&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --orientation Axial ${MRML_DATA}/fixed.nrrd ${TEMP}/OrientImageTestAxial.nrrd&lt;br /&gt;
 --orientation Coronal ${MRML_DATA}/fixed.nrrd ${TEMP}/OrientImageTestCoronal.nrrd&lt;br /&gt;
 --orientation Sagittal ${MRML_DATA}/fixed.nrrd ${TEMP}/OrientImageTestSagittal.nrrd&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
OtsuThresholdImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --insideValue 0&lt;br /&gt;
 --outsideValue 255&lt;br /&gt;
 --numberOfBins 128 &lt;br /&gt;
 ${TEST_DATA}/CTHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/OtsuThresholdImageFilterTest.nhdr &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
OtsuThresholdSegmentation&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --brightObjects&lt;br /&gt;
 --numberOfBins 128&lt;br /&gt;
 --faceConnected&lt;br /&gt;
 --minimumObjectSize 1000&lt;br /&gt;
 ${TEST_DATA}/CTHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/OtsuThresholdSegmentationTest.nhdr &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
ProbeVolumeWithModel&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ResampleVolume2&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --Reference ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 --number_of_thread 0&lt;br /&gt;
 --transform_matrix 1,0,0,0,1,0,0,0,1,0,0,0&lt;br /&gt;
 --transform rt&lt;br /&gt;
 --space LPS&lt;br /&gt;
 --interpolation linear&lt;br /&gt;
 --window_function c&lt;br /&gt;
 --spline_order 3&lt;br /&gt;
 --spacing 0,0,0&lt;br /&gt;
 --size 0,0,0&lt;br /&gt;
 --direction_matrix 0,0,0,0,0,0,0,0,0&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/ResampleVolume2Test.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ResampleVolume&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --spacing 5,5,5&lt;br /&gt;
 --interpolation linear&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr &lt;br /&gt;
 ${TEMP}/ResampleVolumeTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
RigidRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
Subtract&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxialDoubled.nhdr&lt;br /&gt;
 ${TEMP}/SubtractTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
TestGridTransformRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --gridSize 5&lt;br /&gt;
 --outputtransform ${TEMP}/TestGridTransformRegistrationTest00Transform.txt&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
VotingBinaryHoleFillingImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --radius 3,3,3 &lt;br /&gt;
 --majorityThreshold 1&lt;br /&gt;
 --background 0&lt;br /&gt;
 --foreground 1&lt;br /&gt;
 ${TEST_DATA}/CTHeadResampledOtsuSegmented.nhdr&lt;br /&gt;
 ${TEMP}/VotingBinaryHoleFillingImageFilterTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ZeroCrossingBasedEdgeDetectionImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/CTHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/ZeroCrossingBasedEdgeDetectionImageFilterTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Compiler_Warnings:Slicer3_Graffiti&amp;diff=34298</id>
		<title>2009 Winter Project Week Compiler Warnings:Slicer3 Graffiti</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Compiler_Warnings:Slicer3_Graffiti&amp;diff=34298"/>
		<updated>2009-01-05T19:32:46Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Dangerous Code Detected by Warnings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2009_Winter_Project_Week|Project Week Main Page]] ]]&lt;br /&gt;
|[[Image:TippingPointBook.jpg|thumb|320px]]&lt;br /&gt;
|[[Image:Slicer3Graffiti.png|thumb|320px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Key Investigators===&lt;br /&gt;
* Bill Lorensen (His Basement)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Objective&amp;lt;/h1&amp;gt;&lt;br /&gt;
The book, [http://www.wikisummaries.org/The_Tipping_Point ''The Tipping Point''], analyses trends and how they take hold. As Slicer3 grows and the number of contributors increases, there needs to be tighter controls on the quality of the system. The larger the code base, number of platforms and developers, the more need there is for attention to quality.&lt;br /&gt;
&lt;br /&gt;
In the ''Tipping Point'', a chapter on increasing crime in New York City in the 1990's describes how the trend was reversed. The city concentrated areas like cleaning graffiti from subway cars. The author claims that this and other seemingly trivial goals may have led to a reversal of the crime trend.&lt;br /&gt;
&lt;br /&gt;
This project hypothesizes that compilation warnings are the graffiti of software quality. A lack of attention to this seemingly trivial goal shows a lack of attention to the overall quality of software. This project will reduce warnings to zero for a popular c++ compiler, GCC 4.3.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Approach, Plan&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This project will use the [http://en.wikipedia.org/wiki/DMAIC#DMAIC '''DMAIC'''] methodology of the [http://en.wikipedia.org/wiki/Six_Sigma ''Six Sigma management process''] to ''&amp;quot;Define&amp;quot;'', ''&amp;quot;Measure&amp;quot;'', ''&amp;quot;Analyze&amp;quot;'', ''&amp;quot;Improve&amp;quot;'' and ''&amp;quot;Control&amp;quot;'' compiler warnings in Slicer3. This project will concentrate on warnings produced by the GNU gcc 4.3 compiler. Similar approaches can be applied to other Slicer3 compilers.&lt;br /&gt;
&lt;br /&gt;
The basic methodology (from Wikipedia) consists of the following five steps:&lt;br /&gt;
*'''''D'''efine'' process goals that are consistent with customer demands and the NA-MIC's strategy.&lt;br /&gt;
*'''''M'''easure'' key aspects of the current process and collect relevant data.&lt;br /&gt;
*'''''A'''nalyze'' the data to verify cause-and-effect relationships. Determine what the relationships are, and attempt to ensure that all factors have been considered.&lt;br /&gt;
*'''''I'''mprove'' or optimize the process.&lt;br /&gt;
*'''''C'''ontrol'' to ensure that any deviations from target are corrected before they result in defects. Set up pilot runs to establish software quality, move on to production, set up control mechanisms and continuously monitor the process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Progress&amp;lt;/h1&amp;gt;&lt;br /&gt;
*'''''D'''efine''&lt;br /&gt;
The goal is to eliminate all compiler warnings produced by the GCC 4.3 c++ compiler and to implement measures to prevent warnings from entering the software.&lt;br /&gt;
*'''''M'''easure''&lt;br /&gt;
On December 1, 2008, a clean Slicer3 build using the gcc 4.3 compiler produced 523 warnings in 173 source files. The CXX_FLAGS &lt;br /&gt;
''-Wall -Wshadow -Wcast-qual'' produced the following warnings:&lt;br /&gt;
* 278: shadowed variables&lt;br /&gt;
* 131: unused variable&lt;br /&gt;
* 29: suggest parentheses around &amp;amp;&amp;amp; within ||&lt;br /&gt;
* 26: comparison between signed and unsigned integer expressions&lt;br /&gt;
* 17:  deprecated conversion from string constant to ‘char*’&lt;br /&gt;
* 14: defined but not used&lt;br /&gt;
* 13: cast from type ‘const char*’ to type ‘char*’ casts away constness&lt;br /&gt;
* 7: format expects type t argument has type ‘double’&lt;br /&gt;
* 2: zero-length printf format string&lt;br /&gt;
&lt;br /&gt;
*'''''A'''nalyze''&lt;br /&gt;
A description of each warning, why it is important and how to eliminate it will be provided.&lt;br /&gt;
*'''''I'''mprove''&lt;br /&gt;
All Slicer3 source files with GCC warning defects will be repaired. This is a manual process. For this project, the xemacs ''compile'' module produced a ''*compilation*'' buffer. The ''compile-goto-next-error'' command loaded the defective file and positioned the cursor at the defective line of code. This facilitated the manual process. Still, the warning defect cleansing took approximately 16 hours of hand editing. Over '''200''' files were edited.&lt;br /&gt;
*'''''C'''ontrol''&lt;br /&gt;
The [http://www.cdash.org/CDash/index.php?project=Slicer3 Slicer3 dashboard] reports the warnings each day. Individuals will receive e-mails when they introduce warnings. Other more drastic measures will be investigated. For example, the GCC compiler flag ''-Werror'' can treat warnings as errors, thus blocking compilation of any files that have defects.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Status==&lt;br /&gt;
All warnings from the gcc4.3 compiler on BillsBasement have been removed except for the optional IGT code. During project Week, I'll work with others that have different nightly build configurations.&lt;br /&gt;
&lt;br /&gt;
===Additional Data===&lt;br /&gt;
&lt;br /&gt;
Each ''shadowed variable'' warning produces 3 lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Modules/Meshing/BuildingBlock/vtkKWMimxAssignBoundaryConditionsGroup.cxx: In member function ‘void tkKWMimxAssignBoundaryConditionsGroup::UpdateBCVisibilityList()’:&lt;br /&gt;
Modules/Meshing/BuildingBlock/vtkKWMimxAssignBoundaryConditionsGroup.cxx:2382: warning: declaration of ‘stepNumber’ shadows a previous local&lt;br /&gt;
Modules/Meshing/BuildingBlock/vtkKWMimxAssignBoundaryConditionsGroup.cxx:2363: warning: shadowed declaration is here&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each ''unused variable'' warning produces 1 line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Base/Logic/vtkSlicerApplicationLogic.cxx:1501: warning: unused variable ‘vnd’&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each ''suggest parentheses around &amp;amp;&amp;amp; within ||'' warning produces 1 line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Base/GUI/vtkSlicerModelHierarchyWidget.cxx:980: warning: suggest parentheses around &amp;amp;&amp;amp; within ||&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each ''comparison between signed and unsigned integer expressions'' warning produces 1 line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Base/Logic/vtkImageConnectivity.cxx:630: warning: comparison between signed and unsigned integer expressions&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each ''deprecated conversion from string constant to char*'' warning produces 1 line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Modules/QueryAtlas/vtkTextureFontManager.cxx:44: warning: deprecated conversion from string constant to ‘char*’&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each ''defined but not used'' warning produces 1 line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Modules/QueryAtlas/vtkTextureText.h:59: warning: ‘sAutoLeading’ defined but not used&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each ''cast from type const char* to type char* casts away constness'' produces 1 line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Modules/Tractography/Display/vtkSlicerFiberBundleLogic.cxx:131: warning: cast from type ‘const char*’ to type ‘char*’ casts away constness&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each ''format expects type , but argument has type'' produces 1 line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Modules/QdecModule/vtkGDFReader.cxx:389: warning: format ‘%g’ expects type ‘float*’, but argument 3 has type ‘double*’&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Each ''zero-length printf format'' string produces 1 line:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Base/GUI/vtkSlicerCacheAndDataIOManagerGUI.cxx:618: warning: zero-length printf format string&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== Dangerous Code Detected by Warnings ==&lt;br /&gt;
&lt;br /&gt;
Compiler warnings are an annoyance. They stream by as you build your program. But tucked into those hundreds of lines of confusing messages, are a few that actually may affect the way your code runs.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Warning&lt;br /&gt;
! Code&lt;br /&gt;
! Fixed Code&lt;br /&gt;
! Who Cares?&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|&lt;br /&gt;
array subscript is above array bounds&lt;br /&gt;
|&lt;br /&gt;
  os &amp;lt;&amp;lt; indent &amp;lt;&amp;lt; &amp;quot;Cursor Color:             &amp;quot; &lt;br /&gt;
    &amp;lt;&amp;lt; this-&amp;gt;CursorColor[0] &amp;lt;&amp;lt; &amp;quot;,&amp;quot;&lt;br /&gt;
    &amp;lt;&amp;lt; this-&amp;gt;CursorColor['''2'''] &amp;lt;&amp;lt; &amp;quot;,&amp;quot;&lt;br /&gt;
    &amp;lt;&amp;lt; this-&amp;gt;CursorColor['''3'''] &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
|&lt;br /&gt;
  os &amp;lt;&amp;lt; indent &amp;lt;&amp;lt; &amp;quot;Cursor Color:             &amp;quot; &lt;br /&gt;
    &amp;lt;&amp;lt; this-&amp;gt;CursorColor[0] &amp;lt;&amp;lt; &amp;quot;,&amp;quot;&lt;br /&gt;
    &amp;lt;&amp;lt; this-&amp;gt;CursorColor['''1'''] &amp;lt;&amp;lt; &amp;quot;,&amp;quot;&lt;br /&gt;
    &amp;lt;&amp;lt; this-&amp;gt;CursorColor['''2'''] &amp;lt;&amp;lt; &amp;quot;\n&amp;quot;;&lt;br /&gt;
|&lt;br /&gt;
Trying to debug your code? You add an fooObject-&amp;gt;DebugON() and your code crashes. Sometimes...&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
array subscript is above array bounds&lt;br /&gt;
|&lt;br /&gt;
  double angle['''8'''];&lt;br /&gt;
  ...&lt;br /&gt;
  //corner 2 &lt;br /&gt;
  angle[6] = (vtkMath::Dot(b,c));&lt;br /&gt;
  angle[7] = (vtkMath::Dot(f,b));&lt;br /&gt;
  angle[8] = (vtkMath::Dot(f,c));&lt;br /&gt;
|&lt;br /&gt;
  double angle['''9'''];&lt;br /&gt;
  ...&lt;br /&gt;
  //corner 2 &lt;br /&gt;
  angle[6] = (vtkMath::Dot(b,c));&lt;br /&gt;
  angle[7] = (vtkMath::Dot(f,b));&lt;br /&gt;
  angle[8] = (vtkMath::Dot(f,c));&lt;br /&gt;
|&lt;br /&gt;
Runs on your system, crashes on your customers' systems&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
‘volume’ may be used uninitialized in this function&lt;br /&gt;
|&lt;br /&gt;
  double volume;&lt;br /&gt;
  IteratorType it(image, image-&amp;gt;GetLargestPossibleRegion());&lt;br /&gt;
  for(it.GoToBegin();!it.IsAtEnd();++it){&lt;br /&gt;
    if(it.Get())&lt;br /&gt;
      volume++;&lt;br /&gt;
  }&lt;br /&gt;
|&lt;br /&gt;
  double volume '''= 0.0''';&lt;br /&gt;
  IteratorType it(image, image-&amp;gt;GetLargestPossibleRegion());&lt;br /&gt;
  for(it.GoToBegin();!it.IsAtEnd();++it){&lt;br /&gt;
    if(it.Get())&lt;br /&gt;
      volume++;&lt;br /&gt;
  }&lt;br /&gt;
|&lt;br /&gt;
Every time you run it, the answers are different. Or runs in Debug, but not Release?&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
declaration of ‘BackgroundLayer’ shadows a member of 'this'&lt;br /&gt;
|&lt;br /&gt;
 void vtkSlicerSliceLogic::SetBackgroundLayer(&lt;br /&gt;
   vtkSlicerSliceLayerLogic *'''BackgroundLayer''')&lt;br /&gt;
 {&lt;br /&gt;
  if (this-&amp;gt;BackgroundLayer)&lt;br /&gt;
    {&lt;br /&gt;
    this-&amp;gt;BackgroundLayer-&amp;gt;SetAndObserveMRMLScene( NULL );&lt;br /&gt;
    this-&amp;gt;BackgroundLayer-&amp;gt;Delete();&lt;br /&gt;
    }&lt;br /&gt;
  this-&amp;gt;BackgroundLayer = '''BackgroundLayer''';&lt;br /&gt;
 ...&lt;br /&gt;
|&lt;br /&gt;
 void vtkSlicerSliceLogic::SetBackgroundLayer(&lt;br /&gt;
   vtkSlicerSliceLayerLogic *'''backgroundLayer''')&lt;br /&gt;
 {&lt;br /&gt;
  if (this-&amp;gt;BackgroundLayer)&lt;br /&gt;
    {&lt;br /&gt;
    this-&amp;gt;BackgroundLayer-&amp;gt;SetAndObserveMRMLScene( NULL );&lt;br /&gt;
    this-&amp;gt;BackgroundLayer-&amp;gt;Delete();&lt;br /&gt;
    }&lt;br /&gt;
  this-&amp;gt;BackgroundLayer = '''backgroundLayer''';&lt;br /&gt;
 ...&lt;br /&gt;
|&lt;br /&gt;
Leave out a this-&amp;gt; and you are in trouble.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
statement has no effect&lt;br /&gt;
|&lt;br /&gt;
  //Enable/Disable navigation window&lt;br /&gt;
  this-&amp;gt;'''EnableDisableNavButton''';&lt;br /&gt;
|&lt;br /&gt;
  //Enable/Disable navigation window&lt;br /&gt;
  this-&amp;gt;'''EnableDisableNavButton = NULL''';&lt;br /&gt;
|&lt;br /&gt;
But, I disabled that button? Not...&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
comparison with string literal results in unspecified behaviour&lt;br /&gt;
|&lt;br /&gt;
  if (  '''this-&amp;gt;GetUsername() == &amp;quot;&amp;quot;''' ||&lt;br /&gt;
        '''this-&amp;gt;GetPassword() == &amp;quot;&amp;quot;''')&lt;br /&gt;
    {&lt;br /&gt;
|&lt;br /&gt;
  if (  '''strcmp(this-&amp;gt;GetUsername(),&amp;quot;&amp;quot;) == 0''' ||&lt;br /&gt;
        '''strcmp(this-&amp;gt;GetPassword(),&amp;quot;&amp;quot;) == 0)'''&lt;br /&gt;
    {&lt;br /&gt;
|&lt;br /&gt;
Works for me. Oh, not for you?&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
format ‘%g’ expects type ‘float*’, but argument 3 has type ‘double*’&lt;br /&gt;
|&lt;br /&gt;
 sscanf(line, &amp;quot;%*s '''%g'''&amp;quot;, &amp;amp;this-&amp;gt;ResidualFWHM);&lt;br /&gt;
|&lt;br /&gt;
 sscanf(line, &amp;quot;%*s '''%lg'''&amp;quot;, &amp;amp;this-&amp;gt;ResidualFWHM);&lt;br /&gt;
|&lt;br /&gt;
Sorry MAC.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
comparison between signed and unsigned integer expressions&lt;br /&gt;
|&lt;br /&gt;
 '''int''' pos = filename.find(&amp;quot;.stl&amp;quot;);&lt;br /&gt;
|&lt;br /&gt;
 '''size_t''' pos = filename.find(&amp;quot;.stl&amp;quot;);&lt;br /&gt;
|&lt;br /&gt;
I just spent all of this money on a 64 bit system, now nothing works.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
value computed is not used&lt;br /&gt;
|&lt;br /&gt;
 (vtkMimxModPointWidget*)(Self-&amp;gt;PointWidget-&amp;gt;GetItemAsObject(i))&lt;br /&gt;
  -&amp;gt;AddObserver(vtkCommand::InteractionEvent,Self-&amp;gt;PWCallback);&lt;br /&gt;
|&lt;br /&gt;
 '''('''(vtkMimxModPointWidget*)(Self-&amp;gt;PointWidget-&amp;gt;GetItemAsObject(i))''')'''&lt;br /&gt;
  -&amp;gt;AddObserver(vtkCommand::InteractionEvent,Self-&amp;gt;PWCallback);&lt;br /&gt;
|&lt;br /&gt;
A tricky one. Can you find it? The compiler did.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
format '%d' expects type 'int', but argument 3 has type 'size_t'&lt;br /&gt;
|&lt;br /&gt;
 fprintf(stderr,&lt;br /&gt;
  &amp;quot;ERROR: QdecGlmDesign contrast size '''%d''' != %d\n&amp;quot;,&lt;br /&gt;
  contrast.size(), nreg);&lt;br /&gt;
|&lt;br /&gt;
 fprintf(stderr,&lt;br /&gt;
  &amp;quot;ERROR: QdecGlmDesign contrast size '''%ul''' != %d\n&amp;quot;,&lt;br /&gt;
  '''(unsigned long)''' contrast.size(), nreg);&lt;br /&gt;
|&lt;br /&gt;
Long live 32 bits!&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
comparison is always true due to limited range of data type&lt;br /&gt;
|&lt;br /&gt;
 '''unsigned int''' i;&lt;br /&gt;
 std::string tags;&lt;br /&gt;
 i = '''(unsigned int)''' tags.find(&amp;quot;=&amp;quot;);&lt;br /&gt;
 if ( i != std::string::npos)&lt;br /&gt;
|&lt;br /&gt;
 '''std::string::size_type''' i;&lt;br /&gt;
 std::string tags;&lt;br /&gt;
 i = tags.find(&amp;quot;=&amp;quot;);&lt;br /&gt;
 if ( i != std::string::npos)&lt;br /&gt;
|&lt;br /&gt;
stl is your friend.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Command_Line_Program_Testing&amp;diff=34260</id>
		<title>2009 Winter Project Week Command Line Program Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Command_Line_Program_Testing&amp;diff=34260"/>
		<updated>2009-01-05T17:57:52Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Status */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2009_Winter_Project_Week|Project Week Main Page]] ]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Key Investigators===&lt;br /&gt;
* Bill Lorensen (His Basement)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Objective&amp;lt;/h1&amp;gt;&lt;br /&gt;
There is NA-MIC funded infrastructure in place to regression test the command line programs found in Applications/CLI. Surprisingly, of the over 50 command line programs in the current Slicer3 distribution, only 11 have tests. This project will illustrate the importance of testing and show how easy it is to create tests for command line programs using the existing infrastructure. The project will document the process, create tests and help others to create tests.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Approach, Plan&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the existing infrastructure, the project will create regression tests for many of the existing command line programs in Applications/CLI. The project will provide expert assistance to those who feel that creating a test is difficult. A Wiki page will provide step-by-step procedures to test the command line programs.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Progress&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is really no excuse for the lack of testing in Applications/CLI. The infrastructure that has been in place for a few years makes it almost painless to test command line programs. Better documentation and peer pressure will help improve the situation.&lt;br /&gt;
&lt;br /&gt;
Tests have been created for all of the command line programs in Applications/CLI (not including sub directories). Three types of tests exist:&lt;br /&gt;
&lt;br /&gt;
# --help tests just run the command line program with the ''--help'' flag. These tests are as basic as a test can be. All they really test is whether or not the command line program can build, link and report help.&lt;br /&gt;
# Smoke tests run the program put do not check the results of the program. These are one step above the --help tests and should be the minimum test for each program.&lt;br /&gt;
# Regression tests run the program and compare the resulting output with a baseline output. Currently only image regression testing is available. Each command line program that produces an image should have a regression test.&lt;br /&gt;
&lt;br /&gt;
Documentation: [[Slicer3:Execution Model Testing|Slicer3 Execution Model Testing]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
Starting (current) status:&lt;br /&gt;
# 5 (19) regression tests&lt;br /&gt;
# 3 (7) smoke tests&lt;br /&gt;
# 30 (12) with no tests&lt;br /&gt;
&lt;br /&gt;
During Project Week, I'll work with those folks responsible for programs whose status is untested.&lt;br /&gt;
&lt;br /&gt;
The table shows each command line program and its testing status. Under '''Test Type''', the item in ''parentheses'' is a test that has been added as part of this project. Even the untested programs have at a minimum test that runs the program with ''--help''. We still consider these programs untested since every CLP program responds to ''--help''. However, at least these test programs can link and run.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! Program&lt;br /&gt;
! Test Type&lt;br /&gt;
! Command Line&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
Add&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEMP}/AddTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
AffineRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
BSplineDeformableRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --resampledmovingfilename  ${TEMP}/BSplineDeformableRegistrationTest00.nhdr&lt;br /&gt;
 --outputtransform ${TEMP}/BSplineDeformableRegistrationTest00Transform.txt &lt;br /&gt;
 --default 0&lt;br /&gt;
 --maximumDeformation 1.0&lt;br /&gt;
 --constrain&lt;br /&gt;
 --spatialsamples 10000&lt;br /&gt;
 --histogrambins 32&lt;br /&gt;
 --gridSize 5&lt;br /&gt;
 --iterations 50&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr &lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
CheckerBoard&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --checkerPattern 5,3,2&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxialDoubled.nhdr&lt;br /&gt;
 ${TEMP}/CheckerBoardTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ConfidenceConnected&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --smoothingIterations 1&lt;br /&gt;
 --timestep 0.0625&lt;br /&gt;
 --iterations 5&lt;br /&gt;
 --multiplier 2.5&lt;br /&gt;
 --neighborhood 1&lt;br /&gt;
 --labelvalue 2&lt;br /&gt;
 --seed 9.71622,-8.1,14.2189 --seed -12.9459,-8.1,18.577&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/ConfidenceConnectedTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
CurvatureAnisotropicDiffusion&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --conductance 2&lt;br /&gt;
 --timeStep 0.0625&lt;br /&gt;
 --iterations 2&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
DicomToNrrdConverter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxialDicom&lt;br /&gt;
 ${TEMP} CTHeadAxialFromDicom.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DiffusionTensorEstimation&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DiffusionTensorMathematics&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DiffusionTensorTest&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DiffusionWeightedTest&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
DWIDicomLoad&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
ExecutionModelTour&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --integer 30&lt;br /&gt;
 --double 30&lt;br /&gt;
 -f 1.3,2,-14&lt;br /&gt;
 --string_vector foo,bar,foobar&lt;br /&gt;
 --enumeration Bill&lt;br /&gt;
 --boolean1&lt;br /&gt;
 --transform1 ${TEST_DATA}/ExecutionModelTourTest.mrml\#vtkMRMLLinearTransformNode1&lt;br /&gt;
 --transform2 ${TEST_DATA}/ExecutionModelTourTest.mrml\#vtkMRMLLinearTransformNode2&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
FreesurferSurfaceSectionExtraction&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
GaussianBlurImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --sigma 2.5&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEMP}/GaussianBlurImageFilterTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
GradientAnisotropicDiffusion&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --conductance 2&lt;br /&gt;
 --timeStep 0.0625&lt;br /&gt;
 --iterations 2&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/GradientAnisotropicDiffusionTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
GrayscaleFillHoleImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/GrayscaleFillHoleTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
GrayscaleGrindPeakImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/GrayscaleGrindPeakTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
GrayscaleModelMaker&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --threshold 300&lt;br /&gt;
 --name CTFace&lt;br /&gt;
 --smooth 15&lt;br /&gt;
 --decimate 0.95&lt;br /&gt;
 --splitnormals&lt;br /&gt;
 --pointnormals&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEMP}GrayscaleModelMakerTest.vtp&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
HistogramMatching&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --numberOfHistogramLevels 64&lt;br /&gt;
 --numberOfMatchPoints 10&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
ImageLabelCombine&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ImageReadDicomWrite&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --patientName Austrialian&lt;br /&gt;
 --patientID 8775070&lt;br /&gt;
 --patientComments &amp;quot;A volunteer&amp;quot;&lt;br /&gt;
 --studyID 123456&lt;br /&gt;
 --studyDate 20090102&lt;br /&gt;
 --studyComments Resampled&lt;br /&gt;
 --studyDescription None&lt;br /&gt;
 --modality CT&lt;br /&gt;
 --manufacturer &amp;quot;GE Medical Systems&amp;quot;&lt;br /&gt;
 --model CT8800&lt;br /&gt;
 --seriesNumber 123456&lt;br /&gt;
 --seriesDescription None&lt;br /&gt;
 --dicomDirectory ${TEMP}&lt;br /&gt;
 --dicomPrefix CTHeadAxialDicom&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
LabelMapSmoothing&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --labelToSmooth 1&lt;br /&gt;
 --numberOfIterations 50&lt;br /&gt;
 --maxRMSError 0.01&lt;br /&gt;
 --gaussianSigma 3&lt;br /&gt;
 ${TEST_DATA}/CTHeadResampledOtsuSegmented.nhdr&lt;br /&gt;
 ${TEMP}/LabelMapSmoothingTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
LinearRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --resampledmovingfilename  ${TEMP}/LinearRegistrationTest00.nhdr&lt;br /&gt;
 --outputtransform ${TEMP}/LinearRegistrationTest00Transform.txt &lt;br /&gt;
 --initialtransform ${TEST_DATA}/itkAffineTransform00.txt&lt;br /&gt;
 --spatialsamples 10000&lt;br /&gt;
 --histogrambins 32&lt;br /&gt;
 --iterations 50&lt;br /&gt;
 --learningrate 0.01&lt;br /&gt;
 --translationscale 100&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr &lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
MedianImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --neighborhood 1,2,3 ${TEST_DATA}/CTHeadAxial.nhdr ${TEMP}/MedianImageFilterTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
ModelMaker&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --labels 2&lt;br /&gt;
 --modelSceneFile ${TEMP}/ModelMakerTest.mrml\#vtkMRMLModelHierarchyNode1&lt;br /&gt;
 ${MRML_TEST_DATA}/helix-roi-lable2.nrrd&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
MultipleModelsExample&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
OrientImage&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --orientation Axial ${MRML_DATA}/fixed.nrrd ${TEMP}/OrientImageTestAxial.nrrd&lt;br /&gt;
 --orientation Coronal ${MRML_DATA}/fixed.nrrd ${TEMP}/OrientImageTestCoronal.nrrd&lt;br /&gt;
 --orientation Sagittal ${MRML_DATA}/fixed.nrrd ${TEMP}/OrientImageTestSagittal.nrrd&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
OtsuThresholdImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --insideValue 0&lt;br /&gt;
 --outsideValue 255&lt;br /&gt;
 --numberOfBins 128 &lt;br /&gt;
 ${TEST_DATA}/CTHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/OtsuThresholdImageFilterTest.nhdr &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
OtsuThresholdSegmentation&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --brightObjects&lt;br /&gt;
 --numberOfBins 128&lt;br /&gt;
 --faceConnected&lt;br /&gt;
 --minimumObjectSize 1000&lt;br /&gt;
 ${TEST_DATA}/CTHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/OtsuThresholdSegmentationTest.nhdr &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
ProbeVolumeWithModel&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
ResampleVolume2&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ResampleVolume&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --spacing 5,5,5&lt;br /&gt;
 --interpolation linear&lt;br /&gt;
 ${TEST_DATA}/MRHeadResampled.nhdr &lt;br /&gt;
 ${TEMP}/ResampleVolumeTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#fa8072; color:black&amp;quot;|&lt;br /&gt;
RigidRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#fa8072&amp;quot;&amp;gt;--help&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
Subtract&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxialDoubled.nhdr&lt;br /&gt;
 ${TEMP}/SubtractTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#c0c0c0; color:black&amp;quot;|&lt;br /&gt;
TestGridTransformRegistration&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#000000&amp;quot;&amp;gt;Smoke&amp;lt;/span&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
 --gridSize 5&lt;br /&gt;
 --outputtransform ${TEMP}/TestGridTransformRegistrationTest00Transform.txt&lt;br /&gt;
 ${TEST_DATA}/CTHeadAxial.nhdr ${TEST_DATA}/CTHeadAxial.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
VotingBinaryHoleFillingImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 --radius 3,3,3 &lt;br /&gt;
 --majorityThreshold 1&lt;br /&gt;
 --background 0&lt;br /&gt;
 --foreground 1&lt;br /&gt;
 ${TEST_DATA}/CTHeadResampledOtsuSegmented.nhdr&lt;br /&gt;
 ${TEMP}/VotingBinaryHoleFillingImageFilterTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#98fb98; color:black&amp;quot;|&lt;br /&gt;
ZeroCrossingBasedEdgeDetectionImageFilter&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;None&amp;lt;/span&amp;gt; (&amp;lt;span style=&amp;quot;color:#00ff00&amp;quot;&amp;gt;Regression&amp;lt;/span&amp;gt;)&lt;br /&gt;
|&lt;br /&gt;
 ${TEST_DATA}/CTHeadResampled.nhdr&lt;br /&gt;
 ${TEMP}/ZeroCrossingBasedEdgeDetectionImageFilterTest.nhdr&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Testing&amp;diff=34167</id>
		<title>Slicer3:Execution Model Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Testing&amp;diff=34167"/>
		<updated>2009-01-04T21:24:21Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Check in the Test Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The design of [http://www.slicer.org/slicerWiki/index.php/Slicer3:Execution_Model Slicer3's Execution Model] facilitates testing, since the command line programs (CLP's) can be run as stand-alone programs. CMake, CTest and CDash provide mechanism to build, run and report the results of tests.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The Execution Model testing uses ITK's test driver. This test driver is located in [http://public.kitware.com/cgi-bin/viewcvs.cgi/Code/Common/itkTestMain.h?root=Insight&amp;amp;view=markup Insight/Code/Common/itkTestMain.h]. The ITK test driver runs each test as a subprocess, collects the output of the test and wraps the test output into an XML description of the test. Optionally, after all tests are run, CTest submits the results to the [http://www.cdash.org/CDash/index.php?project=Slicer3 Slicer3 CDash dashboard]. The test driver can also compare the test results with baseline images for the tests.&lt;br /&gt;
&lt;br /&gt;
In ITK, many test are run from a test executable. Currently, in Slicer3, each test executable runs one test.&lt;br /&gt;
&lt;br /&gt;
The CLP testing follows a number of conventions.&lt;br /&gt;
# Tests reside in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Slicer3/Applications/CLI/Testing]&lt;br /&gt;
# Most test data resides in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/ Slicer3/Testing/Data/Input]&lt;br /&gt;
# Baselines for regression tests reside in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/ Slicer3/Testing/Data/Baseline/CLI]&lt;br /&gt;
# Naming conventions:&lt;br /&gt;
## The test driver for a CLP program called Foo is in FooTest.cxx&lt;br /&gt;
## The baseline image for a CLP program called Foo is in FooTest.nhdr or some other image format.&lt;br /&gt;
&lt;br /&gt;
==Creating a Test==&lt;br /&gt;
There are 5 steps to create and run a test for a CLP program:&lt;br /&gt;
# Create a test driver file&lt;br /&gt;
# Design a test and optionally, create baseline images for the test&lt;br /&gt;
# Configure the test&lt;br /&gt;
# Run the test&lt;br /&gt;
# Check in the test files&lt;br /&gt;
&lt;br /&gt;
The following sections create a test for the CLP program ''CurvatureAnisotropicDiffusion''.&lt;br /&gt;
&lt;br /&gt;
===Creating a Test Driver===&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing] create the file ''CurvatureAnisotropicDiffusionTest.cxx''&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! C++ Code&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 #include &amp;lt;iostream&amp;gt;&lt;br /&gt;
 #include &amp;quot;itkTestMain.h&amp;quot; &lt;br /&gt;
 void RegisterTests()&lt;br /&gt;
 {&lt;br /&gt;
   REGISTER_TEST(CurvatureAnisotropicDiffusionTest);&lt;br /&gt;
 }&lt;br /&gt;
 #undef main&lt;br /&gt;
 #define main CurvatureAnisotropicDiffusionTest&lt;br /&gt;
 #include &amp;quot;CurvatureAnisotropicDiffusion.cxx&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
This is the ITK test driver. ITK tests usually REGISTER several tests. However, because of the nature of Slicer3 command line programs, only one test can exist in each test driver.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Designing a Test===&lt;br /&gt;
Find a set of data that you can use for the test. There are several sources of data in Slicer3 including:&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/ Testing/Data/Input]&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/EMSegment/Testing/TestData/TutorialTest2/VolumeData/ Modules/EMSegment/Testing/TestData/TutorialTest2/VolumeData] and its sub directories.&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Libs/MRML/Testing/TestData/ Libs/MRML/Testing/TestData]&lt;br /&gt;
&lt;br /&gt;
The dataset should be fairly small, but be large enough to produce a result that you can verify.&lt;br /&gt;
# Now run Slicer3 and load the data.&lt;br /&gt;
# Select the program that you will test.&lt;br /&gt;
# Define appropriate parameters.&lt;br /&gt;
# Run the program.&lt;br /&gt;
If the program produces an image, use File-&amp;gt;Save to save the resulting image as a Baseline in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/ Testing/Data/Baseline/CLI]. The name of the baseline image should follow the naming conventions described above.&lt;br /&gt;
&lt;br /&gt;
===Configure Build and Add the test===&lt;br /&gt;
Edit the [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/CMakeLists.txt?view=markup CMakeLists.txt] file in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing]. For the CurvatureAnisotropicDiffusion program the additional lines are:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! CMake Code&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 ##################################&lt;br /&gt;
 # CurvatureAnisotropicDiffusion tests&lt;br /&gt;
 set (CLP CurvatureAnisotropicDiffusion)&lt;br /&gt;
 add_executable(${CLP}Test ${CLP}Test.cxx)&lt;br /&gt;
 add_dependencies(${CLP}Test ${CLP})&lt;br /&gt;
 target_link_libraries(${CLP}Test ITKIO)&lt;br /&gt;
|&lt;br /&gt;
This cmake code creates the test driver executable for the test. The '''target_link_libraries''' should be the same ones specified when the command line program is build in ''Applications/CLI''. This ITK-based command line program only needs the ''ITKIO'' library.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 add_test(${CLP}Test ${Slicer3_EXE} --launch ${CLP}Test&lt;br /&gt;
   --compare ${BASELINE}/${CLP}Test.nhdr&lt;br /&gt;
             ${TEMP}/${CLP}Test.nhdr&lt;br /&gt;
   ${CLP}Test&lt;br /&gt;
     --conductance 2&lt;br /&gt;
     --timeStep 0.0625&lt;br /&gt;
     --iterations 2&lt;br /&gt;
     ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
     ${TEMP}/${CLP}Test.nhdr&lt;br /&gt;
   )&lt;br /&gt;
|&lt;br /&gt;
This cmake code creates the test and specifies the command line arguments. Tests are run using the ''--launch'' option of the Slicer3 program. This assures that all required environment variables are set properly. The ''--compare'' flag and its two arguments ''${BASELINE}/${CLP}Test.nhdr'' and ''${TEMP}/${CLP}Test.nhdr'' are only present for regression tests. Notice that the output of the test is stored in the ''${TEMP}'' directory. For regression tests, this output is compared with the image in ''${BASELINE}''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Configure the Test===&lt;br /&gt;
Run CMake followed by make (for linux) or the Visual Studio IDE.&lt;br /&gt;
&lt;br /&gt;
===Run the Test===&lt;br /&gt;
ctest -V -R CurvatureAnisotropicDiffusionTest&lt;br /&gt;
&lt;br /&gt;
If the test passes, proceed.&lt;br /&gt;
&lt;br /&gt;
=== Check in the Test Files===&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing],&lt;br /&gt;
&lt;br /&gt;
 svn add CurvatureAnisotropicDiffusionTest.cxx&lt;br /&gt;
 svn commit -m&amp;quot;ENH: New test for CurvatureAnisotropicDiffusion.&amp;quot;&lt;br /&gt;
  CMakeList.txt CurvatureAnisotropicDiffusiontest.cxx&lt;br /&gt;
&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/ Testing/Data/Input] add and commit any new input data.&lt;br /&gt;
&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/ Testing/Data/Baseline/CLI]&lt;br /&gt;
&lt;br /&gt;
 svn add CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.raw.gz&lt;br /&gt;
 svn commit -m&amp;quot;ENH: Baselines for CurvatureAnisotropicDiffusionTest&amp;quot;&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.raw.gz&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Testing&amp;diff=34166</id>
		<title>Slicer3:Execution Model Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Testing&amp;diff=34166"/>
		<updated>2009-01-04T21:23:46Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The design of [http://www.slicer.org/slicerWiki/index.php/Slicer3:Execution_Model Slicer3's Execution Model] facilitates testing, since the command line programs (CLP's) can be run as stand-alone programs. CMake, CTest and CDash provide mechanism to build, run and report the results of tests.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The Execution Model testing uses ITK's test driver. This test driver is located in [http://public.kitware.com/cgi-bin/viewcvs.cgi/Code/Common/itkTestMain.h?root=Insight&amp;amp;view=markup Insight/Code/Common/itkTestMain.h]. The ITK test driver runs each test as a subprocess, collects the output of the test and wraps the test output into an XML description of the test. Optionally, after all tests are run, CTest submits the results to the [http://www.cdash.org/CDash/index.php?project=Slicer3 Slicer3 CDash dashboard]. The test driver can also compare the test results with baseline images for the tests.&lt;br /&gt;
&lt;br /&gt;
In ITK, many test are run from a test executable. Currently, in Slicer3, each test executable runs one test.&lt;br /&gt;
&lt;br /&gt;
The CLP testing follows a number of conventions.&lt;br /&gt;
# Tests reside in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Slicer3/Applications/CLI/Testing]&lt;br /&gt;
# Most test data resides in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/ Slicer3/Testing/Data/Input]&lt;br /&gt;
# Baselines for regression tests reside in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/ Slicer3/Testing/Data/Baseline/CLI]&lt;br /&gt;
# Naming conventions:&lt;br /&gt;
## The test driver for a CLP program called Foo is in FooTest.cxx&lt;br /&gt;
## The baseline image for a CLP program called Foo is in FooTest.nhdr or some other image format.&lt;br /&gt;
&lt;br /&gt;
==Creating a Test==&lt;br /&gt;
There are 5 steps to create and run a test for a CLP program:&lt;br /&gt;
# Create a test driver file&lt;br /&gt;
# Design a test and optionally, create baseline images for the test&lt;br /&gt;
# Configure the test&lt;br /&gt;
# Run the test&lt;br /&gt;
# Check in the test files&lt;br /&gt;
&lt;br /&gt;
The following sections create a test for the CLP program ''CurvatureAnisotropicDiffusion''.&lt;br /&gt;
&lt;br /&gt;
===Creating a Test Driver===&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing] create the file ''CurvatureAnisotropicDiffusionTest.cxx''&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! C++ Code&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 #include &amp;lt;iostream&amp;gt;&lt;br /&gt;
 #include &amp;quot;itkTestMain.h&amp;quot; &lt;br /&gt;
 void RegisterTests()&lt;br /&gt;
 {&lt;br /&gt;
   REGISTER_TEST(CurvatureAnisotropicDiffusionTest);&lt;br /&gt;
 }&lt;br /&gt;
 #undef main&lt;br /&gt;
 #define main CurvatureAnisotropicDiffusionTest&lt;br /&gt;
 #include &amp;quot;CurvatureAnisotropicDiffusion.cxx&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
This is the ITK test driver. ITK tests usually REGISTER several tests. However, because of the nature of Slicer3 command line programs, only one test can exist in each test driver.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Designing a Test===&lt;br /&gt;
Find a set of data that you can use for the test. There are several sources of data in Slicer3 including:&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/ Testing/Data/Input]&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/EMSegment/Testing/TestData/TutorialTest2/VolumeData/ Modules/EMSegment/Testing/TestData/TutorialTest2/VolumeData] and its sub directories.&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Libs/MRML/Testing/TestData/ Libs/MRML/Testing/TestData]&lt;br /&gt;
&lt;br /&gt;
The dataset should be fairly small, but be large enough to produce a result that you can verify.&lt;br /&gt;
# Now run Slicer3 and load the data.&lt;br /&gt;
# Select the program that you will test.&lt;br /&gt;
# Define appropriate parameters.&lt;br /&gt;
# Run the program.&lt;br /&gt;
If the program produces an image, use File-&amp;gt;Save to save the resulting image as a Baseline in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/ Testing/Data/Baseline/CLI]. The name of the baseline image should follow the naming conventions described above.&lt;br /&gt;
&lt;br /&gt;
===Configure Build and Add the test===&lt;br /&gt;
Edit the [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/CMakeLists.txt?view=markup CMakeLists.txt] file in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing]. For the CurvatureAnisotropicDiffusion program the additional lines are:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! CMake Code&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 ##################################&lt;br /&gt;
 # CurvatureAnisotropicDiffusion tests&lt;br /&gt;
 set (CLP CurvatureAnisotropicDiffusion)&lt;br /&gt;
 add_executable(${CLP}Test ${CLP}Test.cxx)&lt;br /&gt;
 add_dependencies(${CLP}Test ${CLP})&lt;br /&gt;
 target_link_libraries(${CLP}Test ITKIO)&lt;br /&gt;
|&lt;br /&gt;
This cmake code creates the test driver executable for the test. The '''target_link_libraries''' should be the same ones specified when the command line program is build in ''Applications/CLI''. This ITK-based command line program only needs the ''ITKIO'' library.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 add_test(${CLP}Test ${Slicer3_EXE} --launch ${CLP}Test&lt;br /&gt;
   --compare ${BASELINE}/${CLP}Test.nhdr&lt;br /&gt;
             ${TEMP}/${CLP}Test.nhdr&lt;br /&gt;
   ${CLP}Test&lt;br /&gt;
     --conductance 2&lt;br /&gt;
     --timeStep 0.0625&lt;br /&gt;
     --iterations 2&lt;br /&gt;
     ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
     ${TEMP}/${CLP}Test.nhdr&lt;br /&gt;
   )&lt;br /&gt;
|&lt;br /&gt;
This cmake code creates the test and specifies the command line arguments. Tests are run using the ''--launch'' option of the Slicer3 program. This assures that all required environment variables are set properly. The ''--compare'' flag and its two arguments ''${BASELINE}/${CLP}Test.nhdr'' and ''${TEMP}/${CLP}Test.nhdr'' are only present for regression tests. Notice that the output of the test is stored in the ''${TEMP}'' directory. For regression tests, this output is compared with the image in ''${BASELINE}''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Configure the Test===&lt;br /&gt;
Run CMake followed by make (for linux) or the Visual Studio IDE.&lt;br /&gt;
&lt;br /&gt;
===Run the Test===&lt;br /&gt;
ctest -V -R CurvatureAnisotropicDiffusionTest&lt;br /&gt;
&lt;br /&gt;
If the test passes, proceed.&lt;br /&gt;
&lt;br /&gt;
=== Check in the Test Files===&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing],&lt;br /&gt;
&lt;br /&gt;
 svn add CurvatureAnisotropicDiffusionTest.cxx&lt;br /&gt;
 svn commit -m&amp;quot;ENH: New test for CurvatureAnisotropicDiffusion.&amp;quot;&lt;br /&gt;
  CMakeList.txt CurvatureAnisotropicDiffusiontest.cxx&lt;br /&gt;
&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/ Testing/Data/Input] Add and commit any new input data.&lt;br /&gt;
&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/ Testing/Data/Baseline/CLI]&lt;br /&gt;
&lt;br /&gt;
 svn add CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.raw.gz&lt;br /&gt;
 svn commit -m&amp;quot;ENH: Baselines for CurvatureAnisotropicDiffusionTest&amp;quot;&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.raw.gz&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Testing&amp;diff=34165</id>
		<title>Slicer3:Execution Model Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Testing&amp;diff=34165"/>
		<updated>2009-01-04T21:22:28Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Designing a Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The design of [http://www.slicer.org/slicerWiki/index.php/Slicer3:Execution_Model Slicer3's Execution Model] facilitates testing, since the command line programs (CLP's) can be run as stand-alone programs. CMake, CTest and CDash provide mechanism to build, run and report the results of tests.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The Execution Model testing uses ITK's test driver. This test driver is located in [http://public.kitware.com/cgi-bin/viewcvs.cgi/Code/Common/itkTestMain.h?root=Insight&amp;amp;view=markup Insight/Code/Common/itkTestMain.h]. The ITK test driver runs each test as a subprocess, collects the output of the test and wraps the test output into an XML description of the test. Optionally, after all tests are run, CTest submits the results to the [http://www.cdash.org/CDash/index.php?project=Slicer3 Slicer3 CDash dashboard]. The test driver can also compare the test results with baseline images for the tests.&lt;br /&gt;
&lt;br /&gt;
In ITK, many test are run from a test executable. Currently, in Slicer3, each test executable runs one test.&lt;br /&gt;
&lt;br /&gt;
The CLP testing follows a number of conventions.&lt;br /&gt;
# Tests reside in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Slicer3/Applications/CLI/Testing]&lt;br /&gt;
# Most test data resides in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/ Slicer3/Testing/Data/Input]&lt;br /&gt;
# Baselines for regression tests reside in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/ Slicer3/Testing/Data/Baseline/CLI]&lt;br /&gt;
# Naming conventions:&lt;br /&gt;
## The test driver for a CLP program called Foo is in FooTest.cxx&lt;br /&gt;
## The baseline image for a CLP program called Foo is in FooTest.nhdr or some other image format.&lt;br /&gt;
&lt;br /&gt;
==Creating a Test==&lt;br /&gt;
There are 5 steps to create and run a test for a CLP program:&lt;br /&gt;
# Create a test driver file&lt;br /&gt;
# Design a test and optionally, create baseline images for the test&lt;br /&gt;
# Configure the test&lt;br /&gt;
# Run the test&lt;br /&gt;
# Check in the test files&lt;br /&gt;
&lt;br /&gt;
The following sections create a test for the CLP program ''CurvatureAnisotropicDiffusion''.&lt;br /&gt;
&lt;br /&gt;
===Creating a Test Driver===&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing] create the file ''CurvatureAnisotropicDiffusionTest.cxx''&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! C++ Code&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 #include &amp;lt;iostream&amp;gt;&lt;br /&gt;
 #include &amp;quot;itkTestMain.h&amp;quot; &lt;br /&gt;
 void RegisterTests()&lt;br /&gt;
 {&lt;br /&gt;
   REGISTER_TEST(CurvatureAnisotropicDiffusionTest);&lt;br /&gt;
 }&lt;br /&gt;
 #undef main&lt;br /&gt;
 #define main CurvatureAnisotropicDiffusionTest&lt;br /&gt;
 #include &amp;quot;CurvatureAnisotropicDiffusion.cxx&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
This is the ITK test driver. ITK tests usually REGISTER several tests. However, because of the nature of Slicer3 command line programs, only one test can exist in each test driver.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Designing a Test===&lt;br /&gt;
Find a set of data that you can use for the test. There are several sources of data in Slicer3 including:&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/ Testing/Data/Input]&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/EMSegment/Testing/TestData/TutorialTest2/VolumeData/ Modules/EMSegment/Testing/TestData/TutorialTest2/VolumeData] and its sub directories.&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Libs/MRML/Testing/TestData/ Libs/MRML/Testing/TestData]&lt;br /&gt;
&lt;br /&gt;
The dataset should be fairly small, but be large enough to produce a result that you can verify.&lt;br /&gt;
# Now run Slicer3 and load the data.&lt;br /&gt;
# Select the program that you will test.&lt;br /&gt;
# Define appropriate parameters.&lt;br /&gt;
# Run the program.&lt;br /&gt;
If the program produces an image, use File-&amp;gt;Save to save the resulting image as a Baseline in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/?rev=8264 Testing/Data/Baseline/CLI]. The name of the baseline image should follow the naming conventions described above.&lt;br /&gt;
&lt;br /&gt;
===Configure Build and Add the test===&lt;br /&gt;
Edit the [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/CMakeLists.txt?view=markup CMakeLists.txt] file in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing]. For the CurvatureAnisotropicDiffusion program the additional lines are:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! CMake Code&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 ##################################&lt;br /&gt;
 # CurvatureAnisotropicDiffusion tests&lt;br /&gt;
 set (CLP CurvatureAnisotropicDiffusion)&lt;br /&gt;
 add_executable(${CLP}Test ${CLP}Test.cxx)&lt;br /&gt;
 add_dependencies(${CLP}Test ${CLP})&lt;br /&gt;
 target_link_libraries(${CLP}Test ITKIO)&lt;br /&gt;
|&lt;br /&gt;
This cmake code creates the test driver executable for the test. The '''target_link_libraries''' should be the same ones specified when the command line program is build in ''Applications/CLI''. This ITK-based command line program only needs the ''ITKIO'' library.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 add_test(${CLP}Test ${Slicer3_EXE} --launch ${CLP}Test&lt;br /&gt;
   --compare ${BASELINE}/${CLP}Test.nhdr&lt;br /&gt;
             ${TEMP}/${CLP}Test.nhdr&lt;br /&gt;
   ${CLP}Test&lt;br /&gt;
     --conductance 2&lt;br /&gt;
     --timeStep 0.0625&lt;br /&gt;
     --iterations 2&lt;br /&gt;
     ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
     ${TEMP}/${CLP}Test.nhdr&lt;br /&gt;
   )&lt;br /&gt;
|&lt;br /&gt;
This cmake code creates the test and specifies the command line arguments. Tests are run using the ''--launch'' option of the Slicer3 program. This assures that all required environment variables are set properly. The ''--compare'' flag and its two arguments ''${BASELINE}/${CLP}Test.nhdr'' and ''${TEMP}/${CLP}Test.nhdr'' are only present for regression tests. Notice that the output of the test is stored in the ''${TEMP}'' directory. For regression tests, this output is compared with the image in ''${BASELINE}''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Configure the Test===&lt;br /&gt;
Run CMake followed by make (for linux) or the Visual Studio IDE.&lt;br /&gt;
&lt;br /&gt;
===Run the Test===&lt;br /&gt;
ctest -V -R CurvatureAnisotropicDiffusionTest&lt;br /&gt;
&lt;br /&gt;
If the test passes, proceed.&lt;br /&gt;
&lt;br /&gt;
=== Check in the Test Files===&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing],&lt;br /&gt;
&lt;br /&gt;
 svn add CurvatureAnisotropicDiffusionTest.cxx&lt;br /&gt;
 svn commit -m&amp;quot;ENH: New test for CurvatureAnisotropicDiffusion.&amp;quot;&lt;br /&gt;
  CMakeList.txt CurvatureAnisotropicDiffusiontest.cxx&lt;br /&gt;
&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/ Testing/Data/Input] Add and commit any new input data.&lt;br /&gt;
&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/ Testing/Data/Baseline/CLI]&lt;br /&gt;
&lt;br /&gt;
 svn add CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.raw.gz&lt;br /&gt;
 svn commit -m&amp;quot;ENH: Baselines for CurvatureAnisotropicDiffusionTest&amp;quot;&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.raw.gz&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Testing&amp;diff=34164</id>
		<title>Slicer3:Execution Model Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Testing&amp;diff=34164"/>
		<updated>2009-01-04T21:21:47Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Check in the Test Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The design of [http://www.slicer.org/slicerWiki/index.php/Slicer3:Execution_Model Slicer3's Execution Model] facilitates testing, since the command line programs (CLP's) can be run as stand-alone programs. CMake, CTest and CDash provide mechanism to build, run and report the results of tests.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The Execution Model testing uses ITK's test driver. This test driver is located in [http://public.kitware.com/cgi-bin/viewcvs.cgi/Code/Common/itkTestMain.h?root=Insight&amp;amp;view=markup Insight/Code/Common/itkTestMain.h]. The ITK test driver runs each test as a subprocess, collects the output of the test and wraps the test output into an XML description of the test. Optionally, after all tests are run, CTest submits the results to the [http://www.cdash.org/CDash/index.php?project=Slicer3 Slicer3 CDash dashboard]. The test driver can also compare the test results with baseline images for the tests.&lt;br /&gt;
&lt;br /&gt;
In ITK, many test are run from a test executable. Currently, in Slicer3, each test executable runs one test.&lt;br /&gt;
&lt;br /&gt;
The CLP testing follows a number of conventions.&lt;br /&gt;
# Tests reside in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Slicer3/Applications/CLI/Testing]&lt;br /&gt;
# Most test data resides in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/ Slicer3/Testing/Data/Input]&lt;br /&gt;
# Baselines for regression tests reside in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/ Slicer3/Testing/Data/Baseline/CLI]&lt;br /&gt;
# Naming conventions:&lt;br /&gt;
## The test driver for a CLP program called Foo is in FooTest.cxx&lt;br /&gt;
## The baseline image for a CLP program called Foo is in FooTest.nhdr or some other image format.&lt;br /&gt;
&lt;br /&gt;
==Creating a Test==&lt;br /&gt;
There are 5 steps to create and run a test for a CLP program:&lt;br /&gt;
# Create a test driver file&lt;br /&gt;
# Design a test and optionally, create baseline images for the test&lt;br /&gt;
# Configure the test&lt;br /&gt;
# Run the test&lt;br /&gt;
# Check in the test files&lt;br /&gt;
&lt;br /&gt;
The following sections create a test for the CLP program ''CurvatureAnisotropicDiffusion''.&lt;br /&gt;
&lt;br /&gt;
===Creating a Test Driver===&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing] create the file ''CurvatureAnisotropicDiffusionTest.cxx''&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! C++ Code&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 #include &amp;lt;iostream&amp;gt;&lt;br /&gt;
 #include &amp;quot;itkTestMain.h&amp;quot; &lt;br /&gt;
 void RegisterTests()&lt;br /&gt;
 {&lt;br /&gt;
   REGISTER_TEST(CurvatureAnisotropicDiffusionTest);&lt;br /&gt;
 }&lt;br /&gt;
 #undef main&lt;br /&gt;
 #define main CurvatureAnisotropicDiffusionTest&lt;br /&gt;
 #include &amp;quot;CurvatureAnisotropicDiffusion.cxx&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
This is the ITK test driver. ITK tests usually REGISTER several tests. However, because of the nature of Slicer3 command line programs, only one test can exist in each test driver.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Designing a Test===&lt;br /&gt;
Find a set of data that you can use for the test. There are several sources of data in Slicer3 including:&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/?rev=8264 Testing/Data/Input]&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/EMSegment/Testing/TestData/TutorialTest2/VolumeData/ Modules/EMSegment/Testing/TestData/TutorialTest2/VolumeData] and its sub directories.&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Libs/MRML/Testing/TestData/ Libs/MRML/Testing/TestData]&lt;br /&gt;
&lt;br /&gt;
The dataset should be fairly small, but be large enough to produce a result that you can verify.&lt;br /&gt;
# Now run Slicer3 and load the data.&lt;br /&gt;
# Select the program that you will test.&lt;br /&gt;
# Define appropriate parameters.&lt;br /&gt;
# Run the program.&lt;br /&gt;
If the program produces an image, use File-&amp;gt;Save to save the resulting image as a Baseline in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/?rev=8264 Testing/Data/Baseline/CLI]. The name of the baseline image should follow the naming conventions described above.&lt;br /&gt;
&lt;br /&gt;
===Configure Build and Add the test===&lt;br /&gt;
Edit the [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/CMakeLists.txt?view=markup CMakeLists.txt] file in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing]. For the CurvatureAnisotropicDiffusion program the additional lines are:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! CMake Code&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 ##################################&lt;br /&gt;
 # CurvatureAnisotropicDiffusion tests&lt;br /&gt;
 set (CLP CurvatureAnisotropicDiffusion)&lt;br /&gt;
 add_executable(${CLP}Test ${CLP}Test.cxx)&lt;br /&gt;
 add_dependencies(${CLP}Test ${CLP})&lt;br /&gt;
 target_link_libraries(${CLP}Test ITKIO)&lt;br /&gt;
|&lt;br /&gt;
This cmake code creates the test driver executable for the test. The '''target_link_libraries''' should be the same ones specified when the command line program is build in ''Applications/CLI''. This ITK-based command line program only needs the ''ITKIO'' library.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 add_test(${CLP}Test ${Slicer3_EXE} --launch ${CLP}Test&lt;br /&gt;
   --compare ${BASELINE}/${CLP}Test.nhdr&lt;br /&gt;
             ${TEMP}/${CLP}Test.nhdr&lt;br /&gt;
   ${CLP}Test&lt;br /&gt;
     --conductance 2&lt;br /&gt;
     --timeStep 0.0625&lt;br /&gt;
     --iterations 2&lt;br /&gt;
     ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
     ${TEMP}/${CLP}Test.nhdr&lt;br /&gt;
   )&lt;br /&gt;
|&lt;br /&gt;
This cmake code creates the test and specifies the command line arguments. Tests are run using the ''--launch'' option of the Slicer3 program. This assures that all required environment variables are set properly. The ''--compare'' flag and its two arguments ''${BASELINE}/${CLP}Test.nhdr'' and ''${TEMP}/${CLP}Test.nhdr'' are only present for regression tests. Notice that the output of the test is stored in the ''${TEMP}'' directory. For regression tests, this output is compared with the image in ''${BASELINE}''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Configure the Test===&lt;br /&gt;
Run CMake followed by make (for linux) or the Visual Studio IDE.&lt;br /&gt;
&lt;br /&gt;
===Run the Test===&lt;br /&gt;
ctest -V -R CurvatureAnisotropicDiffusionTest&lt;br /&gt;
&lt;br /&gt;
If the test passes, proceed.&lt;br /&gt;
&lt;br /&gt;
=== Check in the Test Files===&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing],&lt;br /&gt;
&lt;br /&gt;
 svn add CurvatureAnisotropicDiffusionTest.cxx&lt;br /&gt;
 svn commit -m&amp;quot;ENH: New test for CurvatureAnisotropicDiffusion.&amp;quot;&lt;br /&gt;
  CMakeList.txt CurvatureAnisotropicDiffusiontest.cxx&lt;br /&gt;
&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/ Testing/Data/Input] Add and commit any new input data.&lt;br /&gt;
&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/ Testing/Data/Baseline/CLI]&lt;br /&gt;
&lt;br /&gt;
 svn add CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.raw.gz&lt;br /&gt;
 svn commit -m&amp;quot;ENH: Baselines for CurvatureAnisotropicDiffusionTest&amp;quot;&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.raw.gz&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Testing&amp;diff=34163</id>
		<title>Slicer3:Execution Model Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Testing&amp;diff=34163"/>
		<updated>2009-01-04T21:19:48Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Check in the Test Files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The design of [http://www.slicer.org/slicerWiki/index.php/Slicer3:Execution_Model Slicer3's Execution Model] facilitates testing, since the command line programs (CLP's) can be run as stand-alone programs. CMake, CTest and CDash provide mechanism to build, run and report the results of tests.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The Execution Model testing uses ITK's test driver. This test driver is located in [http://public.kitware.com/cgi-bin/viewcvs.cgi/Code/Common/itkTestMain.h?root=Insight&amp;amp;view=markup Insight/Code/Common/itkTestMain.h]. The ITK test driver runs each test as a subprocess, collects the output of the test and wraps the test output into an XML description of the test. Optionally, after all tests are run, CTest submits the results to the [http://www.cdash.org/CDash/index.php?project=Slicer3 Slicer3 CDash dashboard]. The test driver can also compare the test results with baseline images for the tests.&lt;br /&gt;
&lt;br /&gt;
In ITK, many test are run from a test executable. Currently, in Slicer3, each test executable runs one test.&lt;br /&gt;
&lt;br /&gt;
The CLP testing follows a number of conventions.&lt;br /&gt;
# Tests reside in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Slicer3/Applications/CLI/Testing]&lt;br /&gt;
# Most test data resides in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/ Slicer3/Testing/Data/Input]&lt;br /&gt;
# Baselines for regression tests reside in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/ Slicer3/Testing/Data/Baseline/CLI]&lt;br /&gt;
# Naming conventions:&lt;br /&gt;
## The test driver for a CLP program called Foo is in FooTest.cxx&lt;br /&gt;
## The baseline image for a CLP program called Foo is in FooTest.nhdr or some other image format.&lt;br /&gt;
&lt;br /&gt;
==Creating a Test==&lt;br /&gt;
There are 5 steps to create and run a test for a CLP program:&lt;br /&gt;
# Create a test driver file&lt;br /&gt;
# Design a test and optionally, create baseline images for the test&lt;br /&gt;
# Configure the test&lt;br /&gt;
# Run the test&lt;br /&gt;
# Check in the test files&lt;br /&gt;
&lt;br /&gt;
The following sections create a test for the CLP program ''CurvatureAnisotropicDiffusion''.&lt;br /&gt;
&lt;br /&gt;
===Creating a Test Driver===&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing] create the file ''CurvatureAnisotropicDiffusionTest.cxx''&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! C++ Code&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 #include &amp;lt;iostream&amp;gt;&lt;br /&gt;
 #include &amp;quot;itkTestMain.h&amp;quot; &lt;br /&gt;
 void RegisterTests()&lt;br /&gt;
 {&lt;br /&gt;
   REGISTER_TEST(CurvatureAnisotropicDiffusionTest);&lt;br /&gt;
 }&lt;br /&gt;
 #undef main&lt;br /&gt;
 #define main CurvatureAnisotropicDiffusionTest&lt;br /&gt;
 #include &amp;quot;CurvatureAnisotropicDiffusion.cxx&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
This is the ITK test driver. ITK tests usually REGISTER several tests. However, because of the nature of Slicer3 command line programs, only one test can exist in each test driver.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Designing a Test===&lt;br /&gt;
Find a set of data that you can use for the test. There are several sources of data in Slicer3 including:&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/?rev=8264 Testing/Data/Input]&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/EMSegment/Testing/TestData/TutorialTest2/VolumeData/ Modules/EMSegment/Testing/TestData/TutorialTest2/VolumeData] and its sub directories.&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Libs/MRML/Testing/TestData/ Libs/MRML/Testing/TestData]&lt;br /&gt;
&lt;br /&gt;
The dataset should be fairly small, but be large enough to produce a result that you can verify.&lt;br /&gt;
# Now run Slicer3 and load the data.&lt;br /&gt;
# Select the program that you will test.&lt;br /&gt;
# Define appropriate parameters.&lt;br /&gt;
# Run the program.&lt;br /&gt;
If the program produces an image, use File-&amp;gt;Save to save the resulting image as a Baseline in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/?rev=8264 Testing/Data/Baseline/CLI]. The name of the baseline image should follow the naming conventions described above.&lt;br /&gt;
&lt;br /&gt;
===Configure Build and Add the test===&lt;br /&gt;
Edit the [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/CMakeLists.txt?view=markup CMakeLists.txt] file in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing]. For the CurvatureAnisotropicDiffusion program the additional lines are:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! CMake Code&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 ##################################&lt;br /&gt;
 # CurvatureAnisotropicDiffusion tests&lt;br /&gt;
 set (CLP CurvatureAnisotropicDiffusion)&lt;br /&gt;
 add_executable(${CLP}Test ${CLP}Test.cxx)&lt;br /&gt;
 add_dependencies(${CLP}Test ${CLP})&lt;br /&gt;
 target_link_libraries(${CLP}Test ITKIO)&lt;br /&gt;
|&lt;br /&gt;
This cmake code creates the test driver executable for the test. The '''target_link_libraries''' should be the same ones specified when the command line program is build in ''Applications/CLI''. This ITK-based command line program only needs the ''ITKIO'' library.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 add_test(${CLP}Test ${Slicer3_EXE} --launch ${CLP}Test&lt;br /&gt;
   --compare ${BASELINE}/${CLP}Test.nhdr&lt;br /&gt;
             ${TEMP}/${CLP}Test.nhdr&lt;br /&gt;
   ${CLP}Test&lt;br /&gt;
     --conductance 2&lt;br /&gt;
     --timeStep 0.0625&lt;br /&gt;
     --iterations 2&lt;br /&gt;
     ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
     ${TEMP}/${CLP}Test.nhdr&lt;br /&gt;
   )&lt;br /&gt;
|&lt;br /&gt;
This cmake code creates the test and specifies the command line arguments. Tests are run using the ''--launch'' option of the Slicer3 program. This assures that all required environment variables are set properly. The ''--compare'' flag and its two arguments ''${BASELINE}/${CLP}Test.nhdr'' and ''${TEMP}/${CLP}Test.nhdr'' are only present for regression tests. Notice that the output of the test is stored in the ''${TEMP}'' directory. For regression tests, this output is compared with the image in ''${BASELINE}''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Configure the Test===&lt;br /&gt;
Run CMake followed by make (for linux) or the Visual Studio IDE.&lt;br /&gt;
&lt;br /&gt;
===Run the Test===&lt;br /&gt;
ctest -V -R CurvatureAnisotropicDiffusionTest&lt;br /&gt;
&lt;br /&gt;
If the test passes, proceed.&lt;br /&gt;
&lt;br /&gt;
=== Check in the Test Files===&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing],&lt;br /&gt;
&lt;br /&gt;
 svn add CurvatureAnisotropicDiffusionTest.cxx&lt;br /&gt;
 svn commit -m&amp;quot;ENH: New test for CurvatureAnisotropicDiffusion.&amp;quot;&lt;br /&gt;
  CMakeList.txt CurvatureAnisotropicDiffusiontest.cxx&lt;br /&gt;
&lt;br /&gt;
In Testing/Data/Input&lt;br /&gt;
&lt;br /&gt;
Add and commit any new input data.&lt;br /&gt;
&lt;br /&gt;
In Testing/data/Baseline/CLI&lt;br /&gt;
&lt;br /&gt;
 svn add CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.raw.gz&lt;br /&gt;
 svn commit -m&amp;quot;ENH: Baselines for CurvatureAnisotropicDiffusionTest&amp;quot;&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.raw.gz&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Testing&amp;diff=34162</id>
		<title>Slicer3:Execution Model Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Testing&amp;diff=34162"/>
		<updated>2009-01-04T21:19:24Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Configure Build and Add the test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The design of [http://www.slicer.org/slicerWiki/index.php/Slicer3:Execution_Model Slicer3's Execution Model] facilitates testing, since the command line programs (CLP's) can be run as stand-alone programs. CMake, CTest and CDash provide mechanism to build, run and report the results of tests.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The Execution Model testing uses ITK's test driver. This test driver is located in [http://public.kitware.com/cgi-bin/viewcvs.cgi/Code/Common/itkTestMain.h?root=Insight&amp;amp;view=markup Insight/Code/Common/itkTestMain.h]. The ITK test driver runs each test as a subprocess, collects the output of the test and wraps the test output into an XML description of the test. Optionally, after all tests are run, CTest submits the results to the [http://www.cdash.org/CDash/index.php?project=Slicer3 Slicer3 CDash dashboard]. The test driver can also compare the test results with baseline images for the tests.&lt;br /&gt;
&lt;br /&gt;
In ITK, many test are run from a test executable. Currently, in Slicer3, each test executable runs one test.&lt;br /&gt;
&lt;br /&gt;
The CLP testing follows a number of conventions.&lt;br /&gt;
# Tests reside in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Slicer3/Applications/CLI/Testing]&lt;br /&gt;
# Most test data resides in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/ Slicer3/Testing/Data/Input]&lt;br /&gt;
# Baselines for regression tests reside in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/ Slicer3/Testing/Data/Baseline/CLI]&lt;br /&gt;
# Naming conventions:&lt;br /&gt;
## The test driver for a CLP program called Foo is in FooTest.cxx&lt;br /&gt;
## The baseline image for a CLP program called Foo is in FooTest.nhdr or some other image format.&lt;br /&gt;
&lt;br /&gt;
==Creating a Test==&lt;br /&gt;
There are 5 steps to create and run a test for a CLP program:&lt;br /&gt;
# Create a test driver file&lt;br /&gt;
# Design a test and optionally, create baseline images for the test&lt;br /&gt;
# Configure the test&lt;br /&gt;
# Run the test&lt;br /&gt;
# Check in the test files&lt;br /&gt;
&lt;br /&gt;
The following sections create a test for the CLP program ''CurvatureAnisotropicDiffusion''.&lt;br /&gt;
&lt;br /&gt;
===Creating a Test Driver===&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing] create the file ''CurvatureAnisotropicDiffusionTest.cxx''&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! C++ Code&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 #include &amp;lt;iostream&amp;gt;&lt;br /&gt;
 #include &amp;quot;itkTestMain.h&amp;quot; &lt;br /&gt;
 void RegisterTests()&lt;br /&gt;
 {&lt;br /&gt;
   REGISTER_TEST(CurvatureAnisotropicDiffusionTest);&lt;br /&gt;
 }&lt;br /&gt;
 #undef main&lt;br /&gt;
 #define main CurvatureAnisotropicDiffusionTest&lt;br /&gt;
 #include &amp;quot;CurvatureAnisotropicDiffusion.cxx&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
This is the ITK test driver. ITK tests usually REGISTER several tests. However, because of the nature of Slicer3 command line programs, only one test can exist in each test driver.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Designing a Test===&lt;br /&gt;
Find a set of data that you can use for the test. There are several sources of data in Slicer3 including:&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/?rev=8264 Testing/Data/Input]&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/EMSegment/Testing/TestData/TutorialTest2/VolumeData/ Modules/EMSegment/Testing/TestData/TutorialTest2/VolumeData] and its sub directories.&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Libs/MRML/Testing/TestData/ Libs/MRML/Testing/TestData]&lt;br /&gt;
&lt;br /&gt;
The dataset should be fairly small, but be large enough to produce a result that you can verify.&lt;br /&gt;
# Now run Slicer3 and load the data.&lt;br /&gt;
# Select the program that you will test.&lt;br /&gt;
# Define appropriate parameters.&lt;br /&gt;
# Run the program.&lt;br /&gt;
If the program produces an image, use File-&amp;gt;Save to save the resulting image as a Baseline in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/?rev=8264 Testing/Data/Baseline/CLI]. The name of the baseline image should follow the naming conventions described above.&lt;br /&gt;
&lt;br /&gt;
===Configure Build and Add the test===&lt;br /&gt;
Edit the [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/CMakeLists.txt?view=markup CMakeLists.txt] file in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing]. For the CurvatureAnisotropicDiffusion program the additional lines are:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! CMake Code&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 ##################################&lt;br /&gt;
 # CurvatureAnisotropicDiffusion tests&lt;br /&gt;
 set (CLP CurvatureAnisotropicDiffusion)&lt;br /&gt;
 add_executable(${CLP}Test ${CLP}Test.cxx)&lt;br /&gt;
 add_dependencies(${CLP}Test ${CLP})&lt;br /&gt;
 target_link_libraries(${CLP}Test ITKIO)&lt;br /&gt;
|&lt;br /&gt;
This cmake code creates the test driver executable for the test. The '''target_link_libraries''' should be the same ones specified when the command line program is build in ''Applications/CLI''. This ITK-based command line program only needs the ''ITKIO'' library.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 add_test(${CLP}Test ${Slicer3_EXE} --launch ${CLP}Test&lt;br /&gt;
   --compare ${BASELINE}/${CLP}Test.nhdr&lt;br /&gt;
             ${TEMP}/${CLP}Test.nhdr&lt;br /&gt;
   ${CLP}Test&lt;br /&gt;
     --conductance 2&lt;br /&gt;
     --timeStep 0.0625&lt;br /&gt;
     --iterations 2&lt;br /&gt;
     ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
     ${TEMP}/${CLP}Test.nhdr&lt;br /&gt;
   )&lt;br /&gt;
|&lt;br /&gt;
This cmake code creates the test and specifies the command line arguments. Tests are run using the ''--launch'' option of the Slicer3 program. This assures that all required environment variables are set properly. The ''--compare'' flag and its two arguments ''${BASELINE}/${CLP}Test.nhdr'' and ''${TEMP}/${CLP}Test.nhdr'' are only present for regression tests. Notice that the output of the test is stored in the ''${TEMP}'' directory. For regression tests, this output is compared with the image in ''${BASELINE}''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Configure the Test===&lt;br /&gt;
Run CMake followed by make (for linux) or the Visual Studio IDE.&lt;br /&gt;
&lt;br /&gt;
===Run the Test===&lt;br /&gt;
ctest -V -R CurvatureAnisotropicDiffusionTest&lt;br /&gt;
&lt;br /&gt;
If the test passes, proceed.&lt;br /&gt;
&lt;br /&gt;
=== Check in the Test Files===&lt;br /&gt;
In Applications/CLI/Testing,&lt;br /&gt;
&lt;br /&gt;
 svn add CurvatureAnisotropicDiffusionTest.cxx&lt;br /&gt;
 svn commit -m&amp;quot;ENH: New test for CurvatureAnisotropicDiffusion.&amp;quot;&lt;br /&gt;
  CMakeList.txt CurvatureAnisotropicDiffusiontest.cxx&lt;br /&gt;
&lt;br /&gt;
In Testing/Data/Input&lt;br /&gt;
&lt;br /&gt;
Add and commit any new input data.&lt;br /&gt;
&lt;br /&gt;
In Testing/data/Baseline/CLI&lt;br /&gt;
&lt;br /&gt;
 svn add CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.raw.gz&lt;br /&gt;
 svn commit -m&amp;quot;ENH: Baselines for CurvatureAnisotropicDiffusionTest&amp;quot;&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.raw.gz&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Testing&amp;diff=34161</id>
		<title>Slicer3:Execution Model Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Testing&amp;diff=34161"/>
		<updated>2009-01-04T21:14:49Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Creating a Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The design of [http://www.slicer.org/slicerWiki/index.php/Slicer3:Execution_Model Slicer3's Execution Model] facilitates testing, since the command line programs (CLP's) can be run as stand-alone programs. CMake, CTest and CDash provide mechanism to build, run and report the results of tests.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The Execution Model testing uses ITK's test driver. This test driver is located in [http://public.kitware.com/cgi-bin/viewcvs.cgi/Code/Common/itkTestMain.h?root=Insight&amp;amp;view=markup Insight/Code/Common/itkTestMain.h]. The ITK test driver runs each test as a subprocess, collects the output of the test and wraps the test output into an XML description of the test. Optionally, after all tests are run, CTest submits the results to the [http://www.cdash.org/CDash/index.php?project=Slicer3 Slicer3 CDash dashboard]. The test driver can also compare the test results with baseline images for the tests.&lt;br /&gt;
&lt;br /&gt;
In ITK, many test are run from a test executable. Currently, in Slicer3, each test executable runs one test.&lt;br /&gt;
&lt;br /&gt;
The CLP testing follows a number of conventions.&lt;br /&gt;
# Tests reside in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Slicer3/Applications/CLI/Testing]&lt;br /&gt;
# Most test data resides in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/ Slicer3/Testing/Data/Input]&lt;br /&gt;
# Baselines for regression tests reside in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/ Slicer3/Testing/Data/Baseline/CLI]&lt;br /&gt;
# Naming conventions:&lt;br /&gt;
## The test driver for a CLP program called Foo is in FooTest.cxx&lt;br /&gt;
## The baseline image for a CLP program called Foo is in FooTest.nhdr or some other image format.&lt;br /&gt;
&lt;br /&gt;
==Creating a Test==&lt;br /&gt;
There are 5 steps to create and run a test for a CLP program:&lt;br /&gt;
# Create a test driver file&lt;br /&gt;
# Design a test and optionally, create baseline images for the test&lt;br /&gt;
# Configure the test&lt;br /&gt;
# Run the test&lt;br /&gt;
# Check in the test files&lt;br /&gt;
&lt;br /&gt;
The following sections create a test for the CLP program ''CurvatureAnisotropicDiffusion''.&lt;br /&gt;
&lt;br /&gt;
===Creating a Test Driver===&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing] create the file ''CurvatureAnisotropicDiffusionTest.cxx''&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! C++ Code&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 #include &amp;lt;iostream&amp;gt;&lt;br /&gt;
 #include &amp;quot;itkTestMain.h&amp;quot; &lt;br /&gt;
 void RegisterTests()&lt;br /&gt;
 {&lt;br /&gt;
   REGISTER_TEST(CurvatureAnisotropicDiffusionTest);&lt;br /&gt;
 }&lt;br /&gt;
 #undef main&lt;br /&gt;
 #define main CurvatureAnisotropicDiffusionTest&lt;br /&gt;
 #include &amp;quot;CurvatureAnisotropicDiffusion.cxx&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
This is the ITK test driver. ITK tests usually REGISTER several tests. However, because of the nature of Slicer3 command line programs, only one test can exist in each test driver.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Designing a Test===&lt;br /&gt;
Find a set of data that you can use for the test. There are several sources of data in Slicer3 including:&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/?rev=8264 Testing/Data/Input]&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/EMSegment/Testing/TestData/TutorialTest2/VolumeData/ Modules/EMSegment/Testing/TestData/TutorialTest2/VolumeData] and its sub directories.&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Libs/MRML/Testing/TestData/ Libs/MRML/Testing/TestData]&lt;br /&gt;
&lt;br /&gt;
The dataset should be fairly small, but be large enough to produce a result that you can verify.&lt;br /&gt;
# Now run Slicer3 and load the data.&lt;br /&gt;
# Select the program that you will test.&lt;br /&gt;
# Define appropriate parameters.&lt;br /&gt;
# Run the program.&lt;br /&gt;
If the program produces an image, use File-&amp;gt;Save to save the resulting image as a Baseline in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/?rev=8264 Testing/Data/Baseline/CLI]. The name of the baseline image should follow the naming conventions described above.&lt;br /&gt;
&lt;br /&gt;
===Configure Build and Add the test===&lt;br /&gt;
Edit the CMakeLists.txt file in Application/CLI/Testing. For the CurvatureAnisotropicDiffusion program the additional lines are:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! CMake Code&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 ##################################&lt;br /&gt;
 # CurvatureAnisotropicDiffusion tests&lt;br /&gt;
 set (CLP CurvatureAnisotropicDiffusion)&lt;br /&gt;
 add_executable(${CLP}Test ${CLP}Test.cxx)&lt;br /&gt;
 add_dependencies(${CLP}Test ${CLP})&lt;br /&gt;
 target_link_libraries(${CLP}Test ITKIO)&lt;br /&gt;
|&lt;br /&gt;
This cmake code creates the test driver executable for the test. The '''target_link_libraries''' should be the same ones specified when the command line program is build in ''Applications/CLI''. This ITK-based command line program only needs the ''ITKIO'' library.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 add_test(${CLP}Test ${Slicer3_EXE} --launch ${CLP}Test&lt;br /&gt;
   --compare ${BASELINE}/${CLP}Test.nhdr&lt;br /&gt;
             ${TEMP}/${CLP}Test.nhdr&lt;br /&gt;
   ${CLP}Test&lt;br /&gt;
     --conductance 2&lt;br /&gt;
     --timeStep 0.0625&lt;br /&gt;
     --iterations 2&lt;br /&gt;
     ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
     ${TEMP}/${CLP}Test.nhdr&lt;br /&gt;
   )&lt;br /&gt;
|&lt;br /&gt;
This cmake code creates the test and specifies the command line arguments. Tests are run using the ''--launch'' option of the Slicer3 program. This assures that all required environment variables are set properly. The ''--compare'' flag and its two arguments ''${BASELINE}/${CLP}Test.nhdr'' and ''${TEMP}/${CLP}Test.nhdr'' are only present for regression tests. Notice that the output of the test is stored in the ''${TEMP}'' directory. For regression tests, this output is compared with the image in ''${BASELINE}''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Configure the Test===&lt;br /&gt;
Run CMake followed by make (for linux) or the Visual Studio IDE.&lt;br /&gt;
&lt;br /&gt;
===Run the Test===&lt;br /&gt;
ctest -V -R CurvatureAnisotropicDiffusionTest&lt;br /&gt;
&lt;br /&gt;
If the test passes, proceed.&lt;br /&gt;
&lt;br /&gt;
=== Check in the Test Files===&lt;br /&gt;
In Applications/CLI/Testing,&lt;br /&gt;
&lt;br /&gt;
 svn add CurvatureAnisotropicDiffusionTest.cxx&lt;br /&gt;
 svn commit -m&amp;quot;ENH: New test for CurvatureAnisotropicDiffusion.&amp;quot;&lt;br /&gt;
  CMakeList.txt CurvatureAnisotropicDiffusiontest.cxx&lt;br /&gt;
&lt;br /&gt;
In Testing/Data/Input&lt;br /&gt;
&lt;br /&gt;
Add and commit any new input data.&lt;br /&gt;
&lt;br /&gt;
In Testing/data/Baseline/CLI&lt;br /&gt;
&lt;br /&gt;
 svn add CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.raw.gz&lt;br /&gt;
 svn commit -m&amp;quot;ENH: Baselines for CurvatureAnisotropicDiffusionTest&amp;quot;&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.raw.gz&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Testing&amp;diff=34160</id>
		<title>Slicer3:Execution Model Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Testing&amp;diff=34160"/>
		<updated>2009-01-04T21:14:17Z</updated>

		<summary type="html">&lt;p&gt;Lorensen: /* Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The design of [http://www.slicer.org/slicerWiki/index.php/Slicer3:Execution_Model Slicer3's Execution Model] facilitates testing, since the command line programs (CLP's) can be run as stand-alone programs. CMake, CTest and CDash provide mechanism to build, run and report the results of tests.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
The Execution Model testing uses ITK's test driver. This test driver is located in [http://public.kitware.com/cgi-bin/viewcvs.cgi/Code/Common/itkTestMain.h?root=Insight&amp;amp;view=markup Insight/Code/Common/itkTestMain.h]. The ITK test driver runs each test as a subprocess, collects the output of the test and wraps the test output into an XML description of the test. Optionally, after all tests are run, CTest submits the results to the [http://www.cdash.org/CDash/index.php?project=Slicer3 Slicer3 CDash dashboard]. The test driver can also compare the test results with baseline images for the tests.&lt;br /&gt;
&lt;br /&gt;
In ITK, many test are run from a test executable. Currently, in Slicer3, each test executable runs one test.&lt;br /&gt;
&lt;br /&gt;
The CLP testing follows a number of conventions.&lt;br /&gt;
# Tests reside in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Slicer3/Applications/CLI/Testing]&lt;br /&gt;
# Most test data resides in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/ Slicer3/Testing/Data/Input]&lt;br /&gt;
# Baselines for regression tests reside in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/ Slicer3/Testing/Data/Baseline/CLI]&lt;br /&gt;
# Naming conventions:&lt;br /&gt;
## The test driver for a CLP program called Foo is in FooTest.cxx&lt;br /&gt;
## The baseline image for a CLP program called Foo is in FooTest.nhdr or some other image format.&lt;br /&gt;
&lt;br /&gt;
==Creating a Test==&lt;br /&gt;
There are 5 steps to create and run a test for a CLP program:&lt;br /&gt;
# Create a test driver file in Applications/CLI/Testing&lt;br /&gt;
# Design a test and optionally, create baseline images for the test&lt;br /&gt;
# Configure the test&lt;br /&gt;
# Run the test&lt;br /&gt;
# Check in the test files&lt;br /&gt;
&lt;br /&gt;
The following sections create a test for the CLP program ''CurvatureAnisotropicDiffusion''.&lt;br /&gt;
&lt;br /&gt;
===Creating a Test Driver===&lt;br /&gt;
In [http://viewvc.slicer.org/viewcvs.cgi/trunk/Applications/CLI/Testing/ Applications/CLI/Testing] create the file ''CurvatureAnisotropicDiffusionTest.cxx''&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! C++ Code&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 #include &amp;lt;iostream&amp;gt;&lt;br /&gt;
 #include &amp;quot;itkTestMain.h&amp;quot; &lt;br /&gt;
 void RegisterTests()&lt;br /&gt;
 {&lt;br /&gt;
   REGISTER_TEST(CurvatureAnisotropicDiffusionTest);&lt;br /&gt;
 }&lt;br /&gt;
 #undef main&lt;br /&gt;
 #define main CurvatureAnisotropicDiffusionTest&lt;br /&gt;
 #include &amp;quot;CurvatureAnisotropicDiffusion.cxx&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
This is the ITK test driver. ITK tests usually REGISTER several tests. However, because of the nature of Slicer3 command line programs, only one test can exist in each test driver.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Designing a Test===&lt;br /&gt;
Find a set of data that you can use for the test. There are several sources of data in Slicer3 including:&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Input/?rev=8264 Testing/Data/Input]&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Modules/EMSegment/Testing/TestData/TutorialTest2/VolumeData/ Modules/EMSegment/Testing/TestData/TutorialTest2/VolumeData] and its sub directories.&lt;br /&gt;
# [http://viewvc.slicer.org/viewcvs.cgi/trunk/Libs/MRML/Testing/TestData/ Libs/MRML/Testing/TestData]&lt;br /&gt;
&lt;br /&gt;
The dataset should be fairly small, but be large enough to produce a result that you can verify.&lt;br /&gt;
# Now run Slicer3 and load the data.&lt;br /&gt;
# Select the program that you will test.&lt;br /&gt;
# Define appropriate parameters.&lt;br /&gt;
# Run the program.&lt;br /&gt;
If the program produces an image, use File-&amp;gt;Save to save the resulting image as a Baseline in [http://viewvc.slicer.org/viewcvs.cgi/trunk/Testing/Data/Baseline/CLI/?rev=8264 Testing/Data/Baseline/CLI]. The name of the baseline image should follow the naming conventions described above.&lt;br /&gt;
&lt;br /&gt;
===Configure Build and Add the test===&lt;br /&gt;
Edit the CMakeLists.txt file in Application/CLI/Testing. For the CurvatureAnisotropicDiffusion program the additional lines are:&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
! CMake Code&lt;br /&gt;
! Explanation&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 ##################################&lt;br /&gt;
 # CurvatureAnisotropicDiffusion tests&lt;br /&gt;
 set (CLP CurvatureAnisotropicDiffusion)&lt;br /&gt;
 add_executable(${CLP}Test ${CLP}Test.cxx)&lt;br /&gt;
 add_dependencies(${CLP}Test ${CLP})&lt;br /&gt;
 target_link_libraries(${CLP}Test ITKIO)&lt;br /&gt;
|&lt;br /&gt;
This cmake code creates the test driver executable for the test. The '''target_link_libraries''' should be the same ones specified when the command line program is build in ''Applications/CLI''. This ITK-based command line program only needs the ''ITKIO'' library.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
 add_test(${CLP}Test ${Slicer3_EXE} --launch ${CLP}Test&lt;br /&gt;
   --compare ${BASELINE}/${CLP}Test.nhdr&lt;br /&gt;
             ${TEMP}/${CLP}Test.nhdr&lt;br /&gt;
   ${CLP}Test&lt;br /&gt;
     --conductance 2&lt;br /&gt;
     --timeStep 0.0625&lt;br /&gt;
     --iterations 2&lt;br /&gt;
     ${TEST_DATA}/MRHeadResampled.nhdr&lt;br /&gt;
     ${TEMP}/${CLP}Test.nhdr&lt;br /&gt;
   )&lt;br /&gt;
|&lt;br /&gt;
This cmake code creates the test and specifies the command line arguments. Tests are run using the ''--launch'' option of the Slicer3 program. This assures that all required environment variables are set properly. The ''--compare'' flag and its two arguments ''${BASELINE}/${CLP}Test.nhdr'' and ''${TEMP}/${CLP}Test.nhdr'' are only present for regression tests. Notice that the output of the test is stored in the ''${TEMP}'' directory. For regression tests, this output is compared with the image in ''${BASELINE}''.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Configure the Test===&lt;br /&gt;
Run CMake followed by make (for linux) or the Visual Studio IDE.&lt;br /&gt;
&lt;br /&gt;
===Run the Test===&lt;br /&gt;
ctest -V -R CurvatureAnisotropicDiffusionTest&lt;br /&gt;
&lt;br /&gt;
If the test passes, proceed.&lt;br /&gt;
&lt;br /&gt;
=== Check in the Test Files===&lt;br /&gt;
In Applications/CLI/Testing,&lt;br /&gt;
&lt;br /&gt;
 svn add CurvatureAnisotropicDiffusionTest.cxx&lt;br /&gt;
 svn commit -m&amp;quot;ENH: New test for CurvatureAnisotropicDiffusion.&amp;quot;&lt;br /&gt;
  CMakeList.txt CurvatureAnisotropicDiffusiontest.cxx&lt;br /&gt;
&lt;br /&gt;
In Testing/Data/Input&lt;br /&gt;
&lt;br /&gt;
Add and commit any new input data.&lt;br /&gt;
&lt;br /&gt;
In Testing/data/Baseline/CLI&lt;br /&gt;
&lt;br /&gt;
 svn add CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.raw.gz&lt;br /&gt;
 svn commit -m&amp;quot;ENH: Baselines for CurvatureAnisotropicDiffusionTest&amp;quot;&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.nhdr&lt;br /&gt;
         CurvatureAnisotropicDiffusionTest.raw.gz&lt;/div&gt;</summary>
		<author><name>Lorensen</name></author>
		
	</entry>
</feed>