<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.slicer.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gregsharp</id>
	<title>Slicer Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.slicer.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Gregsharp"/>
	<link rel="alternate" type="text/html" href="https://www.slicer.org/wiki/Special:Contributions/Gregsharp"/>
	<updated>2026-04-04T05:08:16Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Modules/PlmLANDWARP&amp;diff=63984</id>
		<title>Documentation/Nightly/Modules/PlmLANDWARP</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Modules/PlmLANDWARP&amp;diff=63984"/>
		<updated>2022-02-18T18:58:24Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: Fix tutorial links, remove obsolete links.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-start|{{documentation/modulename}}}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
Extension: [[Documentation/{{documentation/version}}/Extensions/Plastimatch|Plastimatch]]&amp;lt;br&amp;gt;&lt;br /&gt;
Acknowledgments:&lt;br /&gt;
*An Ira J Spiro translational research grant (2009)&lt;br /&gt;
*NIH / NCI 6-PO1 CA 21239&lt;br /&gt;
*The Federal share of program income earned by MGH on C06CA059267&lt;br /&gt;
*Progetto Rocca Foundation – A collaboration between MIT and Politecnico di Milano&lt;br /&gt;
*The National Alliance for Medical Image Computing (NAMIC), funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant 2-U54-EB005149; information on the National Centers for Biomedical Computing can be obtained from http://nihroadmap.nih.gov/bioinformatics&lt;br /&gt;
*NSF ERC Innovation Award EEC-0946463&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Webpage: [http://www.plastimatch.org www.plastimatch.org]&amp;lt;br&amp;gt;&lt;br /&gt;
Author: Greg Sharp (Department of Radiation Oncology, Massachusetts General Hospital)&amp;lt;br&amp;gt;&lt;br /&gt;
Contributor1: Julien Finet ({{collaborator|name|kitware}})&amp;lt;br&amp;gt;&lt;br /&gt;
Contact: Greg Sharp, &amp;lt;email&amp;gt;gcsharp@partners.org&amp;lt;/email&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-logo-gallery&lt;br /&gt;
|{{collaborator|logo|kitware}}|{{collaborator|longname|kitware}}&lt;br /&gt;
|{{collaborator|logo|namic}}|{{collaborator|longname|namic}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-end}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
&lt;br /&gt;
This is the plastimatch landmark-based deformable image registration module.  The intended application of this method is rapid, interactive correction of registration failures with a small number of mouse clicks.  Compared to other landmark-based methods, the plastimatch registration method might offer:&lt;br /&gt;
&lt;br /&gt;
#both local and global registration&lt;br /&gt;
#regularization of the deformation field&lt;br /&gt;
&lt;br /&gt;
Examples of how this module is being used:&lt;br /&gt;
&lt;br /&gt;
*Intra-subject registration for adaptive radiotherapy&lt;br /&gt;
*Inter-subject registration for automatic segmentation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:before_reg.png|thumb|280px|Before Registration]]&lt;br /&gt;
|[[Image:after_reg.png|thumb|280px|After Registration]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:3D_Slicer_Plastimatch_Landmark_Registration_Tutorial.png|thumb|280px|[https://sourceforge.net/projects/plastimatch/files/Sample%20Data/3D_Slicer_Plastimatch_Landmark_Registration_Tutorial.ppt/download Download tutorial]]]&lt;br /&gt;
|[[Image:fixed.png|thumb|230px|[https://sourceforge.net/projects/plastimatch/files/Sample%20Data/landwarp-tutorial-images.zip/download Download tutorial data]]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels and their use}}&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
*'''Input/Output panel:'''&lt;br /&gt;
**'''Fixed Volume:'''  Here you choose the &amp;quot;fixed image&amp;quot;, which is the reference image.&lt;br /&gt;
**'''Moving Volume:''' Here you choose the &amp;quot;moving image&amp;quot;, which will be warped to match the fixed image.&lt;br /&gt;
**'''Output Volume:''' Here you choose where to put the warped image.  You can replace an existing image in the scene, or create a new image.&lt;br /&gt;
**'''Basis function:''' Here you can choose either tps (thin plate splines), or gauss (Gaussian RBF), or wendland (Wendland RBF).&lt;br /&gt;
**'''RBF radius:''' Here you can choose the radius of RBF.&lt;br /&gt;
**'''Number of clusters:''' Here you can choose the number of landmark clusters.&lt;br /&gt;
**'''Stiffness:''' Here you can choose the regularization parameter.&lt;br /&gt;
**'''Default Pixel Value:''' Here you can choose the value for pixels with unknown value.&lt;br /&gt;
|[[Image:plastimatch_landmark_gui.png|thumb|280px|User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Similar Modules}}&lt;br /&gt;
&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmBSplineDeformableRegistration|Plastimatch Automatic deformable image registration]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
&lt;br /&gt;
*G Sharp et al. &amp;quot;Plastimatch - An open source software suite for radiotherapy image processing,&amp;quot; Proceedings of the XVIth International Conference on the use of Computers in Radiotherapy, May, 2010.&lt;br /&gt;
*N. Shusharina, G. Sharp &amp;quot;Landmark-based image registration with analytic regularization&amp;quot;, IEEE Trans. Med. Imag., submitted, 2011.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Extensions/Plastimatch&amp;diff=63983</id>
		<title>Documentation/Nightly/Extensions/Plastimatch</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Extensions/Plastimatch&amp;diff=63983"/>
		<updated>2022-02-18T18:56:28Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: Remove obsolete link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-start|{{documentation/modulename}}}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
Acknowledgments:&lt;br /&gt;
This work is part of the National Alliance for Medical Image Computing (NAMIC), funded by ... &amp;lt;br&amp;gt;&lt;br /&gt;
Author:Greg Sharp&amp;lt;br&amp;gt;&lt;br /&gt;
Contributors: Jean-Christophe Fillion-Robin ({{collaborator|name|kitware}})&amp;lt;br&amp;gt;&lt;br /&gt;
Contact: Greg Sharp, &amp;lt;email&amp;gt;gcsharp@partners.org&amp;lt;/email&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Website: http://plastimatch.org/&amp;lt;br&amp;gt;&lt;br /&gt;
License: [http://forge.abcd.harvard.edu/gf/project/plastimatch/scmsvn/?action=browse&amp;amp;path=%2F*checkout*%2Fplastimatch%2Ftrunk%2Fsrc%2Fplastimatch%2FLICENSE.TXT&amp;amp;revision=2388 BSD]&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-logo-gallery&lt;br /&gt;
|{{collaborator|logo|namic}}|{{collaborator|longname|namic}}&lt;br /&gt;
}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Extension Description}}&lt;br /&gt;
Plastimatch is an open source software for image computation. Our main focus is high-performance volumetric registration of medical images, such as X-ray computed tomography (CT), magnetic resonance imaging (MRI), and positron emission tomography (PET). Software features include:&lt;br /&gt;
&lt;br /&gt;
*B-spline method for deformable image registration (GPU and multicore accelerated)&lt;br /&gt;
*Demons method for deformable image registration (GPU accelerated)&lt;br /&gt;
*ITK-based algorithms for translation, rigid, affine, demons, and B-spline registration&lt;br /&gt;
*Pipelined, multi-stage registration framework with seamless conversion between most algorithms and transform types&lt;br /&gt;
*Landmark-based deformable registration using thin-plate splines for global registration&lt;br /&gt;
*Landmark-based deformable registration using radial basis functions for local corrections&lt;br /&gt;
*Broad support for 3D image file formats (using ITK), including DICOM, Nifti, NRRD, MetaImage, and Analyze&lt;br /&gt;
*DICOM and DICOM-RT import and export&lt;br /&gt;
*XiO import and export&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Modules}}&lt;br /&gt;
&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmBSplineDeformableRegistration|Plastimatch Automatic deformable image registration]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmLANDWARP|Plastimatch LANDWARP Landmark]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Use Cases}}&lt;br /&gt;
[http://plastimatch.org/data_sources.html Sample data] to use with modules.&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:plastimatch_dicomrt_ss.png|DICOM-RT Structure Set&lt;br /&gt;
Image:plastimatch_dicomrt_dose.png|DICOM-RT Dose&lt;br /&gt;
Image:plastimatch_image_1.png|Before Registration&lt;br /&gt;
Image:plastimatch_image_2.png|After Registration&lt;br /&gt;
Image:before_reg.png|Before Registration&lt;br /&gt;
Image:after_reg.png|After Registration&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Tutorials}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
File:Plastimatch tutorial ppt.png|[https://sourceforge.net/projects/plastimatch/files/Sample%20Data/3D_Slicer_Plastimatch_Registration_2015_12_29.pdf/download Download tutorial]&lt;br /&gt;
File:Plastimatch tutorial data.png|[https://sourceforge.net/projects/plastimatch/files/Sample%20Data/rider-lung-images.tar.gz/download Download tutorial data]&lt;br /&gt;
File:3D Slicer Plastimatch Landmark Registration Tutorial.png|[https://sourceforge.net/projects/plastimatch/files/Sample%20Data/3D_Slicer_Plastimatch_Landmark_Registration_Tutorial.ppt/download Download tutorial]&lt;br /&gt;
File:Fixed.png|[https://sourceforge.net/projects/plastimatch/files/Sample%20Data/landwarp-tutorial-images.zip/download Download tutorial data]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Similar Extensions}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|References}}&lt;br /&gt;
&lt;br /&gt;
*G Sharp, N Kandasamy, H Singh, M Folkert, &amp;quot;GPU-based streaming architectures for fast cone-beam CT image reconstruction and demons deformable registration,&amp;quot; Physics in Medicine and Biology, 52(19), pp 5771-83, 2007.&lt;br /&gt;
*V Boldea, G Sharp, SB Jiang, D Sarrut, &amp;quot;4D-CT lung motion estimation with deformable registration: Quantification of motion nonlinearity and hysteresis,&amp;quot; Medical Physics, 33(3), pp 1008-18, 2008.&lt;br /&gt;
*Z Wu, E Rietzel, V Boldea, D Sarrut, G Sharp, &amp;quot;Evaluation of deformable registration of patient lung 4DCT with sub-anatomical region segmentations,&amp;quot; Medical Physics, 35(2), pp 775-81, 2008.&lt;br /&gt;
*G Sharp et al. &amp;quot;Plastimatch - An open source software suite for radiotherapy image processing,&amp;quot; Proceedings of the XVIth International Conference on the use of Computers in Radiotherapy, May, 2010.&lt;br /&gt;
*N. Shusharina, G. Sharp &amp;quot;Landmark-based image registration with analytic regularization&amp;quot;, IEEE Trans. Med. Imag., submitted, 2011.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-developerinfo}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Modules/PlmBSplineDeformableRegistration&amp;diff=63982</id>
		<title>Documentation/Nightly/Modules/PlmBSplineDeformableRegistration</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Modules/PlmBSplineDeformableRegistration&amp;diff=63982"/>
		<updated>2022-02-18T18:53:27Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: Remove obsolete links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-start|{{documentation/modulename}}}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
Extension: [[Documentation/{{documentation/version}}/Extensions/Plastimatch|Plastimatch]]&amp;lt;br&amp;gt;&lt;br /&gt;
Acknowledgments:&lt;br /&gt;
*An Ira J Spiro translational research grant (2009)&lt;br /&gt;
*NIH / NCI 6-PO1 CA 21239&lt;br /&gt;
*The Federal share of program income earned by MGH on C06CA059267&lt;br /&gt;
*Progetto Rocca Foundation – A collaboration between MIT and Politecnico di Milano&lt;br /&gt;
*The National Alliance for Medical Image Computing (NAMIC), funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant 2-U54-EB005149; information on the National Centers for Biomedical Computing can be obtained from http://nihroadmap.nih.gov/bioinformatics&lt;br /&gt;
*NSF ERC Innovation Award EEC-0946463&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Webpage: www.plastimatch.org&amp;lt;br&amp;gt;&lt;br /&gt;
Author: Greg Sharp (Department of Radiation Oncology, Massachusetts General Hospital)&amp;lt;br&amp;gt;&lt;br /&gt;
Contributor1: Julien Finet ({{collaborator|name|kitware}})&amp;lt;br&amp;gt;&lt;br /&gt;
Contact: Greg Sharp, &amp;lt;email&amp;gt;gcsharp@partners.org&amp;lt;/email&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-logo-gallery&lt;br /&gt;
|{{collaborator|logo|kitware}}|{{collaborator|longname|kitware}}&lt;br /&gt;
|{{collaborator|logo|namic}}|{{collaborator|longname|namic}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-end}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
&lt;br /&gt;
This is the plastimatch automatic (B-spline) deformable image registration module.  It includes a multi-stage, multi-resolution pipeline, as well as multicore and GPU acceleration.  Compared to other B-spline methods in 3d slicer, the plastimatch registration method might offer:&lt;br /&gt;
&lt;br /&gt;
#superior accuracy for CT-CT (or CT-CBCT) registration&lt;br /&gt;
#faster results for MSE registration&lt;br /&gt;
&lt;br /&gt;
However, to date there have been no rigorous comparisons of the various 3D Slicer registration methods.&lt;br /&gt;
&lt;br /&gt;
Examples of how this module is being used:&lt;br /&gt;
&lt;br /&gt;
*Intra-subject registration for adaptive radiotherapy&lt;br /&gt;
*Inter-subject registration for automatic segmentation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:plastimatch_dicomrt_ss.png|thumb|280px|DICOM-RT Structure Set]]&lt;br /&gt;
|[[Image:plastimatch_dicomrt_dose.png|thumb|280px|DICOM-RT Dose]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:plastimatch_tutorial_ppt.png|thumb|280px|[https://sourceforge.net/projects/plastimatch/files/Sample%20Data/3D_Slicer_Plastimatch_Registration_2015_12_29.pdf/download Download tutorial]]]&lt;br /&gt;
|[[Image:plastimatch_tutorial_data.png|thumb|230px|[https://sourceforge.net/projects/plastimatch/files/Sample%20Data/rider-lung-images.tar.gz/download Download tutorial data]]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels and their use}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
*'''Input/Output panel:'''&lt;br /&gt;
**'''Fixed Volume:'''  Here you choose the &amp;quot;fixed image&amp;quot;, which is the reference image.&lt;br /&gt;
**'''Moving Volume:''' Here you choose the &amp;quot;moving image&amp;quot;, which will be warped to match the fixed image.&lt;br /&gt;
**'''Output Volume:''' Here you choose where to put the warped image.  You can replace an existing image in the scene, or create a new image.&lt;br /&gt;
**'''Cost Function:''' Here you can choose either Mean-squared error (MSE) for unimodal registration, or Mutual Information (MI) for multimodal registration.&lt;br /&gt;
**'''Hardware:''' Here you can choose either GPU for CUDA-accelerated registration, or CPU for multicore-accelerated registration.&lt;br /&gt;
*'''Stage 0 panel:''' Stage 0 is the a pre-alignment stage, which uses either a translation, rigid transform, or affine transform to make a rough alignment of the moving image to the fixed image.  The default is not to do pre-alignment.  If your images are reasonably well aligned you can keep this option off, which makes plastimatch run faster.  But generally it doesn't hurt to enable Stage 0.&lt;br /&gt;
**'''Enable Stage 0:'''  Click on this checkbox to enable the pre-alignment stage.&lt;br /&gt;
**'''Image Subsampling Rate:'''  This option is specified as three integers, separated by commas.  It tells plastimatch to subsample the images in the (x,y,z) dimensions by this amount for this stage.  This is one of the methods that plastimatch implements multi-resolution registration. by cascading stages of different subsampling rates.&lt;br /&gt;
**'''Max Iterations:''' This option controls how many iterations of B-spline registration will be run in this stage.  Usually there is no benefit beyond 200 iterations.  Also, there is usually no harm in running extra iterations, except that it takes longer.&lt;br /&gt;
**'''Transformation:''' This option controls whether the pre-alignment uses a translation (3 DOF), a rigid transform (6 DOF), or an affine transform (12 DOF).  Generally speaking, translation is recommended unless the images are extremely different.&lt;br /&gt;
*'''Stage 1 panel:''' Stage 1 is the first stage of non-rigid registration.  The plastimatch plugin will always do at least one non-rigid stage.&lt;br /&gt;
**'''Image Subsampling Rate:'''  This option is specified as three integers, separated by commas.  It tells plastimatch to subsample the images in the (x,y,z) dimensions by this amount for this stage.  This is one of the methods that plastimatch implements multi-resolution registration. by cascading stages of different subsampling rates.&lt;br /&gt;
**'''Max Iterations:''' This option controls how many iterations of B-spline registration will be run in this stage.  Usually there is no benefit beyond 200 iterations.  Also, there is usually no harm in running extra iterations, except that it takes longer.&lt;br /&gt;
**'''Grid Spacing:''' The grid spacing parameter is a floating point number which controls the size of the B-spline control grid, in mm.  Larger spacing means a smoother registration, while smaller spacing means a finer registration.&lt;br /&gt;
*'''Stage 2 panel:'''  Stage 2 is an optional second round of non-rigid registration.  If you get good results after stage 1, you might try stage 2 to further improve the results.  However, enabling stage 2 increases the time required to perform the registration.&lt;br /&gt;
**'''Enable Stage 2:'''  Click on this checkbox to enable stage 2.&lt;br /&gt;
**'''Image Subsampling Rate:'''  This option is specified as three integers, separated by commas.  It tells plastimatch to subsample the images in the (x,y,z) dimensions by this amount for this stage.  This is one of the methods that plastimatch implements multi-resolution registration. by cascading stages of different subsampling rates.&lt;br /&gt;
**'''Max Iterations:''' This option controls how many iterations of B-spline registration will be run in this stage.  Usually there is no benefit beyond 200 iterations.  Also, there is usually no harm in running extra iterations, except that it takes longer.&lt;br /&gt;
**'''Grid Spacing:''' The grid spacing parameter is a floating point number which controls the size of the B-spline control grid, in mm.  Larger spacing means a smoother registration, while smaller spacing means a finer registration.&lt;br /&gt;
|[[Image:plastimatch_bspline_gui.png|thumb|380px|User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Similar Modules}}&lt;br /&gt;
&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmLANDWARP|Plastimatch LANDWARP Landmark]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
&lt;br /&gt;
*G Sharp, N Kandasamy, H Singh, M Folkert, &amp;quot;GPU-based streaming architectures for fast cone-beam CT image reconstruction and demons deformable registration,&amp;quot; Physics in Medicine and Biology, 52(19), pp 5771-83, 2007.&lt;br /&gt;
*V Boldea, G Sharp, SB Jiang, D Sarrut, &amp;quot;4D-CT lung motion estimation with deformable registration: Quantification of motion nonlinearity and hysteresis,&amp;quot; Medical Physics, 33(3), pp 1008-18, 2008.&lt;br /&gt;
*Z Wu, E Rietzel, V Boldea, D Sarrut, G Sharp, &amp;quot;Evaluation of deformable registration of patient lung 4DCT with sub-anatomical region segmentations,&amp;quot; Medical Physics, 35(2), pp 775-81, 2008.&lt;br /&gt;
*G Sharp et al. &amp;quot;Plastimatch - An open source software suite for radiotherapy image processing,&amp;quot; Proceedings of the XVIth International Conference on the use of Computers in Radiotherapy, May, 2010.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Modules/PlmBSplineDeformableRegistration&amp;diff=63981</id>
		<title>Documentation/Nightly/Modules/PlmBSplineDeformableRegistration</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Modules/PlmBSplineDeformableRegistration&amp;diff=63981"/>
		<updated>2022-02-18T18:52:28Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: Fix tutorial links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-start|{{documentation/modulename}}}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
Extension: [[Documentation/{{documentation/version}}/Extensions/Plastimatch|Plastimatch]]&amp;lt;br&amp;gt;&lt;br /&gt;
Acknowledgments:&lt;br /&gt;
*An Ira J Spiro translational research grant (2009)&lt;br /&gt;
*NIH / NCI 6-PO1 CA 21239&lt;br /&gt;
*The Federal share of program income earned by MGH on C06CA059267&lt;br /&gt;
*Progetto Rocca Foundation – A collaboration between MIT and Politecnico di Milano&lt;br /&gt;
*The National Alliance for Medical Image Computing (NAMIC), funded by the National Institutes of Health through the NIH Roadmap for Medical Research, Grant 2-U54-EB005149; information on the National Centers for Biomedical Computing can be obtained from http://nihroadmap.nih.gov/bioinformatics&lt;br /&gt;
*NSF ERC Innovation Award EEC-0946463&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Webpage: www.plastimatch.org&amp;lt;br&amp;gt;&lt;br /&gt;
Author: Greg Sharp (Department of Radiation Oncology, Massachusetts General Hospital)&amp;lt;br&amp;gt;&lt;br /&gt;
Contributor1: Julien Finet ({{collaborator|name|kitware}})&amp;lt;br&amp;gt;&lt;br /&gt;
Contact: Greg Sharp, &amp;lt;email&amp;gt;gcsharp@partners.org&amp;lt;/email&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-logo-gallery&lt;br /&gt;
|{{collaborator|logo|kitware}}|{{collaborator|longname|kitware}}&lt;br /&gt;
|{{collaborator|logo|namic}}|{{collaborator|longname|namic}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-end}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Module Description}}&lt;br /&gt;
&lt;br /&gt;
This is the plastimatch automatic (B-spline) deformable image registration module.  It includes a multi-stage, multi-resolution pipeline, as well as multicore and GPU acceleration.  Compared to other B-spline methods in 3d slicer, the plastimatch registration method might offer:&lt;br /&gt;
&lt;br /&gt;
#superior accuracy for CT-CT (or CT-CBCT) registration&lt;br /&gt;
#faster results for MSE registration&lt;br /&gt;
&lt;br /&gt;
However, to date there have been no rigorous comparisons of the various 3D Slicer registration methods.&lt;br /&gt;
&lt;br /&gt;
Examples of how this module is being used:&lt;br /&gt;
&lt;br /&gt;
*Intra-subject registration for adaptive radiotherapy&lt;br /&gt;
*Inter-subject registration for automatic segmentation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Use Cases}}&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:plastimatch_dicomrt_ss.png|thumb|280px|DICOM-RT Structure Set]]&lt;br /&gt;
|[[Image:plastimatch_dicomrt_dose.png|thumb|280px|DICOM-RT Dose]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Tutorials}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:plastimatch_tutorial_ppt.png|thumb|280px|[https://sourceforge.net/projects/plastimatch/files/Sample%20Data/3D_Slicer_Plastimatch_Registration_2015_12_29.pdf/download Download tutorial]]]&lt;br /&gt;
|[[Image:plastimatch_tutorial_data.png|thumb|230px|[https://sourceforge.net/projects/plastimatch/files/Sample%20Data/rider-lung-images.tar.gz/download Download tutorial data]]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Panels and their use}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
*'''Input/Output panel:'''&lt;br /&gt;
**'''Fixed Volume:'''  Here you choose the &amp;quot;fixed image&amp;quot;, which is the reference image.&lt;br /&gt;
**'''Moving Volume:''' Here you choose the &amp;quot;moving image&amp;quot;, which will be warped to match the fixed image.&lt;br /&gt;
**'''Output Volume:''' Here you choose where to put the warped image.  You can replace an existing image in the scene, or create a new image.&lt;br /&gt;
**'''Cost Function:''' Here you can choose either Mean-squared error (MSE) for unimodal registration, or Mutual Information (MI) for multimodal registration.&lt;br /&gt;
**'''Hardware:''' Here you can choose either GPU for CUDA-accelerated registration, or CPU for multicore-accelerated registration.&lt;br /&gt;
*'''Stage 0 panel:''' Stage 0 is the a pre-alignment stage, which uses either a translation, rigid transform, or affine transform to make a rough alignment of the moving image to the fixed image.  The default is not to do pre-alignment.  If your images are reasonably well aligned you can keep this option off, which makes plastimatch run faster.  But generally it doesn't hurt to enable Stage 0.&lt;br /&gt;
**'''Enable Stage 0:'''  Click on this checkbox to enable the pre-alignment stage.&lt;br /&gt;
**'''Image Subsampling Rate:'''  This option is specified as three integers, separated by commas.  It tells plastimatch to subsample the images in the (x,y,z) dimensions by this amount for this stage.  This is one of the methods that plastimatch implements multi-resolution registration. by cascading stages of different subsampling rates.&lt;br /&gt;
**'''Max Iterations:''' This option controls how many iterations of B-spline registration will be run in this stage.  Usually there is no benefit beyond 200 iterations.  Also, there is usually no harm in running extra iterations, except that it takes longer.&lt;br /&gt;
**'''Transformation:''' This option controls whether the pre-alignment uses a translation (3 DOF), a rigid transform (6 DOF), or an affine transform (12 DOF).  Generally speaking, translation is recommended unless the images are extremely different.&lt;br /&gt;
*'''Stage 1 panel:''' Stage 1 is the first stage of non-rigid registration.  The plastimatch plugin will always do at least one non-rigid stage.&lt;br /&gt;
**'''Image Subsampling Rate:'''  This option is specified as three integers, separated by commas.  It tells plastimatch to subsample the images in the (x,y,z) dimensions by this amount for this stage.  This is one of the methods that plastimatch implements multi-resolution registration. by cascading stages of different subsampling rates.&lt;br /&gt;
**'''Max Iterations:''' This option controls how many iterations of B-spline registration will be run in this stage.  Usually there is no benefit beyond 200 iterations.  Also, there is usually no harm in running extra iterations, except that it takes longer.&lt;br /&gt;
**'''Grid Spacing:''' The grid spacing parameter is a floating point number which controls the size of the B-spline control grid, in mm.  Larger spacing means a smoother registration, while smaller spacing means a finer registration.&lt;br /&gt;
*'''Stage 2 panel:'''  Stage 2 is an optional second round of non-rigid registration.  If you get good results after stage 1, you might try stage 2 to further improve the results.  However, enabling stage 2 increases the time required to perform the registration.&lt;br /&gt;
**'''Enable Stage 2:'''  Click on this checkbox to enable stage 2.&lt;br /&gt;
**'''Image Subsampling Rate:'''  This option is specified as three integers, separated by commas.  It tells plastimatch to subsample the images in the (x,y,z) dimensions by this amount for this stage.  This is one of the methods that plastimatch implements multi-resolution registration. by cascading stages of different subsampling rates.&lt;br /&gt;
**'''Max Iterations:''' This option controls how many iterations of B-spline registration will be run in this stage.  Usually there is no benefit beyond 200 iterations.  Also, there is usually no harm in running extra iterations, except that it takes longer.&lt;br /&gt;
**'''Grid Spacing:''' The grid spacing parameter is a floating point number which controls the size of the B-spline control grid, in mm.  Larger spacing means a smoother registration, while smaller spacing means a finer registration.&lt;br /&gt;
|[[Image:plastimatch_bspline_gui.png|thumb|380px|User Interface]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Similar Modules}}&lt;br /&gt;
&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmDICOMRTImport|Plastimatch DICOM-RT import]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmDICOMRTExport|Plastimatch DICOM-RT export]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmDoseComparison|Plastimatch Dose Comparison]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmDoseVolumeHistogram|Plastimatch Dose Volume Histogram]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmLANDWARP|Plastimatch LANDWARP Landmark]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmSyntheticImageGeneration|Plastimatch Synthetic Image Generation]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmThreshBox|Plastimatch Threshold in a box]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmXFORMWARP|Plastimatch XFORMWARP]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|References}}&lt;br /&gt;
&lt;br /&gt;
*G Sharp, N Kandasamy, H Singh, M Folkert, &amp;quot;GPU-based streaming architectures for fast cone-beam CT image reconstruction and demons deformable registration,&amp;quot; Physics in Medicine and Biology, 52(19), pp 5771-83, 2007.&lt;br /&gt;
*V Boldea, G Sharp, SB Jiang, D Sarrut, &amp;quot;4D-CT lung motion estimation with deformable registration: Quantification of motion nonlinearity and hysteresis,&amp;quot; Medical Physics, 33(3), pp 1008-18, 2008.&lt;br /&gt;
*Z Wu, E Rietzel, V Boldea, D Sarrut, G Sharp, &amp;quot;Evaluation of deformable registration of patient lung 4DCT with sub-anatomical region segmentations,&amp;quot; Medical Physics, 35(2), pp 775-81, 2008.&lt;br /&gt;
*G Sharp et al. &amp;quot;Plastimatch - An open source software suite for radiotherapy image processing,&amp;quot; Proceedings of the XVIth International Conference on the use of Computers in Radiotherapy, May, 2010.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-developerinfo}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Extensions/Plastimatch&amp;diff=63980</id>
		<title>Documentation/Nightly/Extensions/Plastimatch</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Extensions/Plastimatch&amp;diff=63980"/>
		<updated>2022-02-18T18:50:04Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: Fix tutorial links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-start|{{documentation/modulename}}}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
Acknowledgments:&lt;br /&gt;
This work is part of the National Alliance for Medical Image Computing (NAMIC), funded by ... &amp;lt;br&amp;gt;&lt;br /&gt;
Author:Greg Sharp&amp;lt;br&amp;gt;&lt;br /&gt;
Contributors: Jean-Christophe Fillion-Robin ({{collaborator|name|kitware}})&amp;lt;br&amp;gt;&lt;br /&gt;
Contact: Greg Sharp, &amp;lt;email&amp;gt;gcsharp@partners.org&amp;lt;/email&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Website: http://plastimatch.org/&amp;lt;br&amp;gt;&lt;br /&gt;
License: [http://forge.abcd.harvard.edu/gf/project/plastimatch/scmsvn/?action=browse&amp;amp;path=%2F*checkout*%2Fplastimatch%2Ftrunk%2Fsrc%2Fplastimatch%2FLICENSE.TXT&amp;amp;revision=2388 BSD]&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-row}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-logo-gallery&lt;br /&gt;
|{{collaborator|logo|namic}}|{{collaborator|longname|namic}}&lt;br /&gt;
}}&lt;br /&gt;
{{documentation/{{documentation/version}}/module-introduction-end}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Extension Description}}&lt;br /&gt;
Plastimatch is an open source software for image computation. Our main focus is high-performance volumetric registration of medical images, such as X-ray computed tomography (CT), magnetic resonance imaging (MRI), and positron emission tomography (PET). Software features include:&lt;br /&gt;
&lt;br /&gt;
*B-spline method for deformable image registration (GPU and multicore accelerated)&lt;br /&gt;
*Demons method for deformable image registration (GPU accelerated)&lt;br /&gt;
*ITK-based algorithms for translation, rigid, affine, demons, and B-spline registration&lt;br /&gt;
*Pipelined, multi-stage registration framework with seamless conversion between most algorithms and transform types&lt;br /&gt;
*Landmark-based deformable registration using thin-plate splines for global registration&lt;br /&gt;
*Landmark-based deformable registration using radial basis functions for local corrections&lt;br /&gt;
*Broad support for 3D image file formats (using ITK), including DICOM, Nifti, NRRD, MetaImage, and Analyze&lt;br /&gt;
*DICOM and DICOM-RT import and export&lt;br /&gt;
*XiO import and export&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Modules}}&lt;br /&gt;
&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmBSplineDeformableRegistration|Plastimatch Automatic deformable image registration]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmDICOMRTImport|Plastimatch DICOM-RT import]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmLANDWARP|Plastimatch LANDWARP Landmark]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Use Cases}}&lt;br /&gt;
[http://plastimatch.org/data_sources.html Sample data] to use with modules.&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:plastimatch_dicomrt_ss.png|DICOM-RT Structure Set&lt;br /&gt;
Image:plastimatch_dicomrt_dose.png|DICOM-RT Dose&lt;br /&gt;
Image:plastimatch_image_1.png|Before Registration&lt;br /&gt;
Image:plastimatch_image_2.png|After Registration&lt;br /&gt;
Image:before_reg.png|Before Registration&lt;br /&gt;
Image:after_reg.png|After Registration&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Tutorials}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;200&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
File:Plastimatch tutorial ppt.png|[https://sourceforge.net/projects/plastimatch/files/Sample%20Data/3D_Slicer_Plastimatch_Registration_2015_12_29.pdf/download Download tutorial]&lt;br /&gt;
File:Plastimatch tutorial data.png|[https://sourceforge.net/projects/plastimatch/files/Sample%20Data/rider-lung-images.tar.gz/download Download tutorial data]&lt;br /&gt;
File:3D Slicer Plastimatch Landmark Registration Tutorial.png|[https://sourceforge.net/projects/plastimatch/files/Sample%20Data/3D_Slicer_Plastimatch_Landmark_Registration_Tutorial.ppt/download Download tutorial]&lt;br /&gt;
File:Fixed.png|[https://sourceforge.net/projects/plastimatch/files/Sample%20Data/landwarp-tutorial-images.zip/download Download tutorial data]&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Similar Extensions}}&lt;br /&gt;
N/A&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|References}}&lt;br /&gt;
&lt;br /&gt;
*G Sharp, N Kandasamy, H Singh, M Folkert, &amp;quot;GPU-based streaming architectures for fast cone-beam CT image reconstruction and demons deformable registration,&amp;quot; Physics in Medicine and Biology, 52(19), pp 5771-83, 2007.&lt;br /&gt;
*V Boldea, G Sharp, SB Jiang, D Sarrut, &amp;quot;4D-CT lung motion estimation with deformable registration: Quantification of motion nonlinearity and hysteresis,&amp;quot; Medical Physics, 33(3), pp 1008-18, 2008.&lt;br /&gt;
*Z Wu, E Rietzel, V Boldea, D Sarrut, G Sharp, &amp;quot;Evaluation of deformable registration of patient lung 4DCT with sub-anatomical region segmentations,&amp;quot; Medical Physics, 35(2), pp 775-81, 2008.&lt;br /&gt;
*G Sharp et al. &amp;quot;Plastimatch - An open source software suite for radiotherapy image processing,&amp;quot; Proceedings of the XVIth International Conference on the use of Computers in Radiotherapy, May, 2010.&lt;br /&gt;
*N. Shusharina, G. Sharp &amp;quot;Landmark-based image registration with analytic regularization&amp;quot;, IEEE Trans. Med. Imag., submitted, 2011.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-developerinfo}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Build_Instructions/Configure&amp;diff=61270</id>
		<title>Documentation/Nightly/Developers/Build Instructions/Configure</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Build_Instructions/Configure&amp;diff=61270"/>
		<updated>2019-06-30T15:07:27Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== CONFIGURE and generate Slicer solution files ==&lt;br /&gt;
There are many ways of customizing Slicer's user interface or feature set. This section describes how a custom Slicer build can be configured at build-time. See an overview of various other options in [http://www.na-mic.org/Wiki/images/b/b0/Slicelets2016.pdf this presentation].&lt;br /&gt;
&lt;br /&gt;
You can configure and generate Slicer solution files using either &amp;lt;code&amp;gt;ccmake&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;cmake-gui&amp;lt;/code&amp;gt;. To streamline this process, you can also use the [https://github.com/KitwareMedical/SlicerCustomAppTemplate SlicerCustomAppTemplate] project maintained by Kitware.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;ol style=&amp;quot;list-style-type:none; border-left:thick solid red; padding-left:1em;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;li&amp;gt;While it is not enforced, we strongly recommend you to '''AVOID''' the use of '''SPACES''' for both the &amp;lt;code&amp;gt;source directory&amp;lt;/code&amp;gt; and the &amp;lt;code&amp;gt;build directory&amp;lt;/code&amp;gt;. We mean it.&lt;br /&gt;
  &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
=== Customizing application build ===&lt;br /&gt;
Customized editions of Slicer can be generated without changing Slicer source code, just by modifying CMake variables:&lt;br /&gt;
* SlicerApp_APPLICATION_NAME: Custom application name to be used, instead of default &amp;quot;Slicer&amp;quot;. The name is used in installation package name, window title bar, etc.&lt;br /&gt;
* Slicer_DISCLAIMER_AT_STARTUP: String that is displayed to the user after first startup of Slicer after installation (disclaimer, welcome message, etc).&lt;br /&gt;
* Slicer_DEFAULT_HOME_MODULE: Module name that is activated automatically on application start.&lt;br /&gt;
* Slicer_DEFAULT_FAVORITE_MODULES: Modules that will be added to the toolbar by default for easy access. List contains module names, separated by space character.&lt;br /&gt;
* Slicer_CLIMODULES_DISABLED: Built-in CLI modules that will be removed from the application. List contains module names, separated by semicolon character.&lt;br /&gt;
* Slicer_QTLOADABLEMODULES_DISABLED: Built-in Qt loadable modules that will be removed from the application. List contains module names, separated by semicolon character.&lt;br /&gt;
* Slicer_QTSCRIPTEDMODULES_DISABLED: Built-in scripted loadable modules that will be removed from the application. List contains module names, separated by semicolon character.&lt;br /&gt;
* Slicer_USE_PYTHONQT_WITH_OPENSSL: enable/disable building the application with SSL support (ON/OFF)&lt;br /&gt;
* Slicer_USE_SimpleITK: enable/disable SimpleITK support (ON/OFF)&lt;br /&gt;
* Slicer_BUILD_SimpleFilters: enable/disable building SimpleFilters. Requires SimpleITK. (ON/OFF)&lt;br /&gt;
* Slicer_BUILD_EMSegment: enable/disable building EM segmenter (ON/OFF)&lt;br /&gt;
* Slicer_USE_PYTHONQT_WITH_TCL: TCL support (ON/OFF)&lt;br /&gt;
* Slicer_EXTENSION_SOURCE_DIRS: Defines additional extensions that will be included in the application package as built-in modules. Full paths of extension source directories has to be specified, separated by semicolons.&lt;br /&gt;
&lt;br /&gt;
=== Per-platform instructions===&lt;br /&gt;
==== Windows ====&lt;br /&gt;
&lt;br /&gt;
'''Recommended''': run ''CMake (cmake-gui)'' from the Windows Start menu&lt;br /&gt;
* Set the build directory. Use a very short path, for example: &amp;lt;code&amp;gt;C:\S4&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;C:\S4D&amp;lt;/code&amp;gt;.&lt;br /&gt;
** Because Windows [http://msdn.microsoft.com/en-us/library/aa365247%28VS.85%29.aspx#maxpath doesn't support file path longer than 260 characters] and has a [http://massmail.spl.harvard.edu/public-archives/slicer-devel/2014/016113.html maximum command line length], please make sure that the total path name of your &amp;lt;code&amp;gt;Slicer-build&amp;lt;/code&amp;gt; directory is no longer than 50 characters.&lt;br /&gt;
** You cannot use the same build tree for both release or debug mode builds. If both build types are needed, then the same source directory can be used, but a separate build directory should be created and configured for each build type.&lt;br /&gt;
* Select your compiler: Visual Studio 14 2015 Win64&lt;br /&gt;
* &amp;lt;b&amp;gt;Do not configure yet.&amp;lt;/b&amp;gt;&lt;br /&gt;
* Add &amp;lt;code&amp;gt;Qt5_DIR&amp;lt;/code&amp;gt; variable pointing to Qt5 folder such as &amp;lt;code&amp;gt;C:\Qt\5.10.0\msvc2015_64\lib\cmake\Qt5&amp;lt;/code&amp;gt;: click ''Add entry'' button, set ''Name'' to ''Qt5_DIR'', ''Type'' to ''PATH'', and ''Value'' to the Qt5 folder.&lt;br /&gt;
* Configure&lt;br /&gt;
* Click generate then close cmake-gui.&lt;br /&gt;
* If building in release mode:&lt;br /&gt;
** Open the top-level Slicer.sln file in the build directory in Visual Studio&lt;br /&gt;
** Set active configuration to Release. Visual Studio will select Debug build configuration by default when you first open the solution in the Visual Studio GUI. If you build Slicer in release mode and accidentally forget to switch the build configuration to Release then the build will fail. Note: you can avoid this manual configuration mode selection by setting &amp;lt;code&amp;gt;CMAKE_CONFIGURATION_TYPES&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;Release&amp;lt;/code&amp;gt; in cmake-gui.&lt;br /&gt;
* If building in debug mode:&lt;br /&gt;
** Start Visual Studio using the Slicer launcher as described in [[Documentation/{{documentation/version}}/Developers/Tutorials/Debug_Instructions|Step-by-step debug instuctions]]&lt;br /&gt;
* Build the ALL_BUILD project&lt;br /&gt;
&lt;br /&gt;
'''Alternative option''': Configure and build using command-line or batch file&lt;br /&gt;
&lt;br /&gt;
Instead of using ''CMake (cmake-gui)'', it is also possible to configure by creating a .bat file that contains command-line instructions and run this .bat file each time a Slicer needs to be re-built. The examples below assume Slicer source code is in &amp;lt;code&amp;gt;C:\D\S4&amp;lt;/code&amp;gt; folder and Qt-5.10 is installed in default location.&lt;br /&gt;
&lt;br /&gt;
Visual Studio 2015 in Release mode:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir C:\D\S4R&lt;br /&gt;
cd /d C:\D\S4R&lt;br /&gt;
&amp;quot;C:\Program Files\CMake\bin\cmake.exe&amp;quot; -G &amp;quot;Visual Studio 14 2015 Win64&amp;quot; -DQt5_DIR:PATH=C:\Qt\5.10.0\msvc2015_64\lib\cmake\Qt5 C:\D\S4&lt;br /&gt;
&amp;quot;C:\Program Files\CMake\bin\cmake.exe&amp;quot; --build . --config Release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Visual Studio 2015 in Debug mode:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir C:\D\S4D&lt;br /&gt;
cd /d C:\D\S4D&lt;br /&gt;
&amp;quot;C:\Program Files\CMake\bin\cmake.exe&amp;quot; -G &amp;quot;Visual Studio 14 2015 Win64&amp;quot; -DQt5_DIR:PATH=C:\Qt\5.10.0\msvc2015_64\lib\cmake\Qt5 C:\D\S4&lt;br /&gt;
&amp;quot;C:\Program Files\CMake\bin\cmake.exe&amp;quot; --build . --config Debug&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Visual Studio 2017 with VS2015 toolset in Release mode:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir C:\D\S4R&lt;br /&gt;
cd /d C:\D\S4R&lt;br /&gt;
&amp;quot;C:\Program Files\CMake\bin\cmake.exe&amp;quot; -G &amp;quot;Visual Studio 15 2017 Win64&amp;quot; -T &amp;quot;v140&amp;quot; -DQt5_DIR:PATH=C:\Qt\5.10.0\msvc2015_64\lib\cmake\Qt5 C:\D\S4&lt;br /&gt;
&amp;quot;C:\Program Files\CMake\bin\cmake.exe&amp;quot; --build . --config Release&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Unix-like ====&lt;br /&gt;
*'''Recommended''':&lt;br /&gt;
** Configure using the following commands. By default '''CMAKE_BUILD_TYPE''' is set to '''Debug'''.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir Slicer-SuperBuild-Debug&lt;br /&gt;
cd Slicer-SuperBuild-Debug&lt;br /&gt;
cmake -DCMAKE_BUILD_TYPE:STRING=Debug -DQt5_DIR:PATH=/path/to/Qt5.11.0/5.11.0/gcc_64/lib/cmake/Qt5 ../Slicer&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
where you replace ''/path/to/QtSDK'' with the real path on your machine where QtSDK is located&lt;br /&gt;
&lt;br /&gt;
If '''using Qt from the system''', do not forget to add the following CMake variable to your configuration command line:&lt;br /&gt;
&amp;lt;pre&amp;gt;-DSlicer_USE_SYSTEM_QT:BOOL=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''Remarks''':&lt;br /&gt;
# Instead of &amp;lt;code&amp;gt;cmake&amp;lt;/code&amp;gt;, you can use &amp;lt;code&amp;gt;ccmake&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;cmake-gui&amp;lt;/code&amp;gt; to visually inspect and edit configure options.&lt;br /&gt;
# Using top-level directory name like &amp;lt;code&amp;gt;Slicer-SuperBuild-Release&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;Slicer-SuperBuild-Debug&amp;lt;/code&amp;gt; is recommended.&lt;br /&gt;
# [[Documentation/{{documentation/version}}/Developers/Tutorials/Debug_Instructions|Step-by-step debug instuctions]]&lt;br /&gt;
&lt;br /&gt;
* On Mac OS X 10.9 (Mavericks) / 10.10 (Yosemite) / 10.11 (El Capitan), also set the following variables (see [http://massmail.spl.harvard.edu/public-archives/slicer-devel/2014/thread.html#16440 discussion]):&lt;br /&gt;
{| border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
|- &lt;br /&gt;
| bgcolor=&amp;quot;#abcdef&amp;quot; height=&amp;quot;8&amp;quot; |  '''Variable'''&lt;br /&gt;
| bgcolor=&amp;quot;#abcdef&amp;quot; height=&amp;quot;8&amp;quot; |  '''Description'''&lt;br /&gt;
|-&lt;br /&gt;
| Slicer_USE_PYTHONQT_WITH_TCL || OFF&lt;br /&gt;
|-&lt;br /&gt;
| CMAKE_OSX_DEPLOYMENT_TARGET  || 10.9 or 10.10 or 10.11&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== General information ===&lt;br /&gt;
&lt;br /&gt;
Two projects are generated by either &amp;lt;code&amp;gt;cmake&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;ccmake&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;cmake-gui&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
One of them is in the top-level bin directory &amp;lt;code&amp;gt;Slicer-SuperBuild&amp;lt;/code&amp;gt; and the other one is in the subdirectory &amp;lt;code&amp;gt;Slicer-build&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Slicer-SuperBuild/Slicer-build&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# The first project in &amp;lt;code&amp;gt;Slicer-SuperBuild&amp;lt;/code&amp;gt; manages all the external dependencies of Slicer (VTK, ITK, Python, ...). To build Slicer for the first time, run make (or build the solution file in Visual Studio) in &amp;lt;code&amp;gt;Slicer-SuperBuild&amp;lt;/code&amp;gt;, which will update and build the external libraries and if successful will then build the subproject Slicer-build.&amp;lt;br&amp;gt;&lt;br /&gt;
# The second project in &amp;lt;code&amp;gt;Slicer-SuperBuild/Slicer-build&amp;lt;/code&amp;gt; is the &amp;quot;traditional&amp;quot; build directory of Slicer.  After local changes in Slicer (or after an svn update on the source directory of Slicer), only running make (or building the solution file in Visual Studio) in &amp;lt;code&amp;gt;Slicer-SuperBuild/Slicer-build&amp;lt;/code&amp;gt; is necessary (the external libraries are considered built and up to date). &amp;lt;br&amp;gt;&lt;br /&gt;
#'''Warning''': An significant amount of disk space is required to compile Slicer in Debug (&amp;gt;10GB on Windows)&lt;br /&gt;
&lt;br /&gt;
=== Workaround for if the firewall is blocking git protocol ===&lt;br /&gt;
* Some firewalls will block the git protocol. A possible workaround is to configure Slicer by disabling the option &amp;lt;code&amp;gt;Slicer_USE_GIT_PROTOCOL&amp;lt;/code&amp;gt;. Then the http protocol will be used instead. Consider also reading https://github.com/commontk/CTK/issues/33&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Factory&amp;diff=61267</id>
		<title>Documentation/Nightly/Developers/Factory</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Factory&amp;diff=61267"/>
		<updated>2019-06-28T13:20:04Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
The Slicer factory machine is maintained by [http://www.kitware.com Kitware] and produces dashboard builds of many software projects, including nightly, continuous, and packaged versions of Slicer and its approved extensions.  See the [http://slicer.cdash.org/index.php?project=Slicer4 Slicer4 dashboard].&lt;br /&gt;
&lt;br /&gt;
These builds are generated every day on three different operating systems: Windows 7, Mac OS X, and Linux.  Because it is not legal to run any version of Mac OS X on a virtual machine (unless its host also runs Mac OS X), the host OS is Mac OS X, and the Windows and Linux builds are run within this machine as virtual machines.&lt;br /&gt;
&lt;br /&gt;
'''Dashboard build scripts are located on GitHub: https://github.com/Slicer/DashboardScripts'''&lt;br /&gt;
&lt;br /&gt;
==Required factory components==&lt;br /&gt;
&lt;br /&gt;
See [[Documentation/{{documentation/version}}/Developers/Tutorials/DashboardSetup|dashboard prerequisites]].&lt;br /&gt;
&lt;br /&gt;
=Host(s)=&lt;br /&gt;
&lt;br /&gt;
== factory-south.kitware ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
The factory machine runs Mac OS X 10.11.6 (15G31), El Capitan&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
&lt;br /&gt;
The compiler is the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Apple LLVM version 8.0.0 (clang-800.0.42.1)&lt;br /&gt;
Target: x86_64-apple-darwin15.6.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The virtual machines are run using the [http://www.parallels.com/ Parallels Desktop 11].&lt;br /&gt;
* Note that Parallels Desktop supports [http://kb.parallels.com/en/115487 OpenGL 2.1 only] (not higher)&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (10.171.2.166).&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
* 2 x 2.4 GHz 6-Core Intel Xeon&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
* Chipset Model: ATI Radeon HD 5770&lt;br /&gt;
* Type: GPU&lt;br /&gt;
* Bus PCIe&lt;br /&gt;
* VRAM (total): 1024MB&lt;br /&gt;
* EFI Driver Version: 01.00.436&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
* 8 x 8GB = 64 GB&lt;br /&gt;
* Type: DDR3 ECC&lt;br /&gt;
* Speed: 1333 MHz&lt;br /&gt;
&lt;br /&gt;
== overload.kitware and metroplex.kitware ==&lt;br /&gt;
&lt;br /&gt;
[[File:Kitware build servers metroplex-and-overload.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
* overload: Windows 7 Professional 64-bit&lt;br /&gt;
* metroplex: Red Hat Enterprise Linux WS v7.0&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* Dell Precision R7910 Motherboard,BW&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
&lt;br /&gt;
* Dual Intel® Xeon® Processor E5-2630 v3 (8C, 2.4GHz, Turbo, HT, 20M, 85W)&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
&lt;br /&gt;
* NVIDIA® Quadro® K620 2GB (DP, DL-DVI-I) (1 DP to SL-DVI adapter)&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
&lt;br /&gt;
* 32GB (8x4GB) 2133MHz DDR4 RDIMM ECC&lt;br /&gt;
&lt;br /&gt;
==== Storage ====&lt;br /&gt;
&lt;br /&gt;
* 2 X Integrated Intel 4 port AHCI SATA chipset controllers (tot 8 X 6.0Gb/s) SW RAID 0,1,5,10&lt;br /&gt;
* 1 x 1TB Dell 4*Drive PCIe x16 M.2 Solid State Drive Card (boot)&lt;br /&gt;
&lt;br /&gt;
=== overload.kitware ===&lt;br /&gt;
&lt;br /&gt;
* Windows 7 Professional - Service Pack 1 (Build 7601)&lt;br /&gt;
* Compiler:&lt;br /&gt;
** VS2013 Community Edition&lt;br /&gt;
** VS2015 Pro Edition&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via RDP from Kitware internal network (192.168.113.173).&lt;br /&gt;
&lt;br /&gt;
=== metroplex.kitware ===&lt;br /&gt;
&lt;br /&gt;
* Red Hat Enterprise Linux Workstation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Product ID:     71&lt;br /&gt;
Version:        7.2&lt;br /&gt;
Arch:           x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Docker community edition&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH from Kitware internal network (192.168.113.208).&lt;br /&gt;
&lt;br /&gt;
=Maintenance=&lt;br /&gt;
&lt;br /&gt;
== CUDA Install notes ==&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo yum -y install kernel-devel&lt;br /&gt;
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm&lt;br /&gt;
&lt;br /&gt;
wget https://developer.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-rhel7-10-1-local-10.1.168-418.67-1.0-1.x86_64.rpm&lt;br /&gt;
sudo rpm -i cuda-repo-rhel7-10-1-local-10.1.168-418.67-1.0-1.x86_64.rpm&lt;br /&gt;
sudo yum clean all&lt;br /&gt;
sudo yum -y install cuda&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Refs:&lt;br /&gt;
* https://developer.nvidia.com/cuda-downloads?target_os=Linux&amp;amp;target_arch=x86_64&amp;amp;target_distro=CentOS&amp;amp;target_version=7&amp;amp;target_type=rpmlocal&lt;br /&gt;
* https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html&lt;br /&gt;
&lt;br /&gt;
=== Mac OS ===&lt;br /&gt;
&lt;br /&gt;
Beware.  Not tested.  I don't have a mac.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_mac-dmg&lt;br /&gt;
wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/patches/2/cuda_8.0.61.2_mac-dmg&lt;br /&gt;
&lt;br /&gt;
dmgFilePath=cuda_8.0.61_mac-dmg&lt;br /&gt;
MOUNTDEV=$(hdiutil mount $dmgFilePath | awk '/dev.disk/{print$1}')&lt;br /&gt;
MOUNTDIR=&amp;quot;$(mount | grep $MOUNTDEV | awk '{$1=$2=&amp;quot;&amp;quot;;sub(&amp;quot; [(].*&amp;quot;,&amp;quot;&amp;quot;);sub(&amp;quot;^  &amp;quot;,&amp;quot;&amp;quot;);print}')&amp;quot;&lt;br /&gt;
sudo installer -pkg &amp;quot;${MOUNTDIR}/&amp;quot;*.pkg -target /&lt;br /&gt;
hdiutil unmount &amp;quot;$MOUNTDIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
dmgFilePath=cuda_8.0.61.2_mac-dmg&lt;br /&gt;
MOUNTDEV=$(hdiutil mount $dmgFilePath | awk '/dev.disk/{print$1}')&lt;br /&gt;
MOUNTDIR=&amp;quot;$(mount | grep $MOUNTDEV | awk '{$1=$2=&amp;quot;&amp;quot;;sub(&amp;quot; [(].*&amp;quot;,&amp;quot;&amp;quot;);sub(&amp;quot;^  &amp;quot;,&amp;quot;&amp;quot;);print}')&amp;quot;&lt;br /&gt;
sudo installer -pkg &amp;quot;${MOUNTDIR}/&amp;quot;*.pkg -target /&lt;br /&gt;
hdiutil unmount &amp;quot;$MOUNTDIR&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Refs:&lt;br /&gt;
* https://developer.nvidia.com/cuda-80-ga2-download-archive&lt;br /&gt;
* https://docs.nvidia.com/cuda/archive/8.0/cuda-installation-guide-mac-os-x/index.html&lt;br /&gt;
* https://stackoverflow.com/questions/22934083/install-dmg-package-on-mac-os-from-terminal&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
According to the docs, the &amp;quot;-s&amp;quot; option should allow unattended install.  However, I was unable to get this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://developer.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.168_425.25_windows.exe&lt;br /&gt;
cuda_10.1.168_425.25_windows.exe -s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Refs:&lt;br /&gt;
* https://developer.nvidia.com/cuda-downloads?target_os=Windows&amp;amp;target_arch=x86_64&amp;amp;target_version=7&amp;amp;target_type=exelocal&lt;br /&gt;
* https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html&lt;br /&gt;
&lt;br /&gt;
== Maintenance Guides ==&lt;br /&gt;
&lt;br /&gt;
See https://github.com/Slicer/DashboardScripts#maintenance-guides&lt;br /&gt;
&lt;br /&gt;
== Check Virtual Machines (factory-south-ubuntu) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;factory-south-win7 VM is shutdown, build have been moved to overload.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== When ===&lt;br /&gt;
&lt;br /&gt;
Every day (or as soon as issues are suspected)&lt;br /&gt;
&lt;br /&gt;
=== What ===&lt;br /&gt;
&lt;br /&gt;
* Try to:&lt;br /&gt;
** SSH into factory-south-ubuntu&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
** RDP into factory-south-win7&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If failure:&lt;br /&gt;
** Connect to &amp;lt;code&amp;gt;factory.south&amp;lt;/code&amp;gt; and check the state of the virtual machines. &lt;br /&gt;
&lt;br /&gt;
* Are the virtual machine unresponsive ?&lt;br /&gt;
&lt;br /&gt;
* '''No''' -&amp;gt; No further action required&lt;br /&gt;
* '''Yes''' -&amp;gt; Read below&lt;br /&gt;
** Kill both VMs&lt;br /&gt;
** Restart the host (factory-south)&lt;br /&gt;
** Manually start the virtual machines&lt;br /&gt;
** If needed, manually restarts the nightly build (See below)&lt;br /&gt;
&lt;br /&gt;
== Manually restart the night builds ==&lt;br /&gt;
&lt;br /&gt;
If the factory machines were restarted after the regular Nightly startup time, the nightly scripts will have to be explicitly started.&lt;br /&gt;
&lt;br /&gt;
* Linux: Run &amp;lt;code&amp;gt;/home/kitware/Dashboards/DashboardScripts/factory-south-ubuntu.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX: Run &amp;lt;code&amp;gt;/Users/kitware/DashboardScripts/factory.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Windows: Open &amp;quot;Task Scheduled&amp;quot; -&amp;gt; slicer -&amp;gt; right click on &amp;quot;Nightly&amp;quot; -&amp;gt; Start&lt;br /&gt;
&lt;br /&gt;
== Nightly Build startup times ==&lt;br /&gt;
&lt;br /&gt;
* Linux: 11:10pm&lt;br /&gt;
&lt;br /&gt;
* MacOSx: 11:10pm&lt;br /&gt;
&lt;br /&gt;
* Windows: Midnight&lt;br /&gt;
&lt;br /&gt;
= Retired Hosts =&lt;br /&gt;
&lt;br /&gt;
== factory.kitware (RETIRED) ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
The factory machine runs Mac OS X v10.6.8, Snow Leopard.  &lt;br /&gt;
* CMake version: 3.9.0 (before 2017/07/04 was 3.5.0-rc3 with [https://github.com/Kitware/CMake/compare/master...jcfr:osx-framework this patch])&lt;br /&gt;
** Since CMake release &amp;gt;= 3.6 is compiled only for  &amp;gt;= 10.7, a custom build of cmake was done with &amp;lt;code&amp;gt;-DCMAKE_INSTALL_PREFIX:PATH=/Users/kitware/Dashboards/Support/CMake-3.9.0.app/Contents&amp;lt;/code&amp;gt;  &lt;br /&gt;
* Compiler llvm-3.1. Note that the default compiled shipped with XCode 4.2 is not used. See [http://slicer-devel.65872.n3.nabble.com/MacOSX-factory-build-Transitioning-from-hybrid-quot-llvm-g-quot-to-quot-clang-quot-Update-to-Qt-4-8-6-tt4032198.html#a4032199 here] for more details.&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
&lt;br /&gt;
* Nightly generation of HomebrewCasks: [[Documentation/Nightly/Developers/Factory/HomeBrewInstall|Installation aborted]] (newer system is required for &amp;lt;tt&amp;gt;homebrew/cask-repair&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (192.168.113.230).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The output of &amp;lt;pre&amp;gt;crontab -l&amp;lt;/pre&amp;gt; on the factory machine is as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
55 23 * * * cd /Users/kitware/DashboardScripts &amp;amp;&amp;amp; /usr/bin/cvs -q up -dAP&lt;br /&gt;
0 0 * * * /Users/kitware/DashboardScripts/factory.sh &amp;gt; /Users/kitware/Dashboards/Logs/factory.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 9 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_CTKAppLauncher_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_CTKAppLauncher_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 9 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicer4_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicer4_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 10 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicerextensions_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicerextensions_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 10 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicerextensions_411_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicerextensions_411_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first tab is a command to update the cvs repository storing all of Kitware's dashboard scripts.  The second is a bash script which runs all of the nightly builds done by the Mac OS X factory.  The rest correspond to all the continuous builds.  An example of an entry in the bash script is as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
open -a x11&lt;br /&gt;
export DISPLAY=:0.0 # just DISPLAY=:0.0 without export is not enough&lt;br /&gt;
export PATH=:/usr/local/git/bin:$PATH&lt;br /&gt;
&lt;br /&gt;
CTEST=/Applications/CMake-3.5.0-rc3.app/Contents/bin/ctest&lt;br /&gt;
LOG_DIR=/Users/kitware/Dashboards/Logs&lt;br /&gt;
DASHBOARD_SCRIPTS_DIR=/Users/kitware/DashboardScripts&lt;br /&gt;
&lt;br /&gt;
# Nightly build of CTKAppLauncher&lt;br /&gt;
&amp;quot;$CTEST&amp;quot; -S $DASHBOARD_SCRIPTS_DIR/factory-64bits_CTKAppLauncher_release_nightly.cmake -VV -O $LOG_DIR/factory-64bits_CTKAppLauncher_release_nightly.log&lt;br /&gt;
&lt;br /&gt;
# Nightly build of slicer&lt;br /&gt;
&amp;quot;$CTEST&amp;quot; -S $DASHBOARD_SCRIPTS_DIR/factory-64bits_slicer4_release_nightly.cmake -VV -O $LOG_DIR/factory-64bits_slicer4_release_nightly.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The virtual  machines are run using the Parallels tool.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Mac Pro (Mid 2010)&amp;quot; which has the 64-bit kernel enabled by default. See [http://support.apple.com/kb/HT3770 here] for details.&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
* 2 x 2.93 GHz 6-Core Intel Xeon&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
* Chipset Model: ATI Radeon HD 5770&lt;br /&gt;
* Type: GPU&lt;br /&gt;
* Bus PCIe&lt;br /&gt;
* VRAM (total): 1024MB&lt;br /&gt;
* EFI Driver Version: 01.00.436&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
* 8 x 4GB = 32GB&lt;br /&gt;
* Type: DDR3 ECC&lt;br /&gt;
* Speed: 1333 MHz&lt;br /&gt;
&lt;br /&gt;
== factory-south-win7.kitware (RETIRED VM) ==&lt;br /&gt;
&lt;br /&gt;
* Tasks are scheduled using the Windows Task Scheduler (Start-&amp;gt;All Programs-&amp;gt;Accessories-&amp;gt;System Tools-&amp;gt;Task Scheduler)&lt;br /&gt;
* On Windows, instead of bash, we use batch scripts comprised of commands to call ctest to run all the nightly scripts.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;This VM is shutdown, build have been moved to overload.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Windows 7 Ultimate N - Service Pack 1 (Build 7601) on an x86 platform.&lt;br /&gt;
* CMake version: 3.5.0-rc3&lt;br /&gt;
* Compiler: VS2013 Community Edition&lt;br /&gt;
* Processors: 6&lt;br /&gt;
* Memory: 16GB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, keep in mind the [[Documentation/{{documentation/version}}/Developers/Tutorials/DashboardSetup#Remarks remarks]] about building a dashboard on a Windows machine.  These all apply here.&lt;br /&gt;
&lt;br /&gt;
Remote access: Via Remote Desktop from Kitware internal network (10.171.2.245).&lt;br /&gt;
&lt;br /&gt;
== factory-south-ubuntu.kitware (RETIRED) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;This VM is shutdown, build have been moved to metroplex.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ubuntu 10.04&lt;br /&gt;
* CMake version: 3.9.0 (before 2017/07/04 was 3.5.0-rc3)&lt;br /&gt;
* GCC version: Ubuntu 4.4.3-4ubuntu5.1&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
* Processors: 5&lt;br /&gt;
* Memory: 10GB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsb_release -a&lt;br /&gt;
No LSB modules are available.&lt;br /&gt;
Distributor ID:	Ubuntu&lt;br /&gt;
Description:	Ubuntu 10.04.4 LTS&lt;br /&gt;
Release:	10.04&lt;br /&gt;
Codename:	lucid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These two compilers are available:&lt;br /&gt;
&lt;br /&gt;
=== gcc/g++ 4.4.3 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/cpp-4.4&lt;br /&gt;
/usr/bin/g++-4.4&lt;br /&gt;
/usr/bin/gcc-4.4&lt;br /&gt;
/usr/bin/gcov-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-cpp-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-g++-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-gcc-4.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the PATH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ gcc --version&lt;br /&gt;
gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3&lt;br /&gt;
$ g++ --version&lt;br /&gt;
g++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== gcc/g++ 4.6.4 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/cpp-4.6&lt;br /&gt;
/usr/bin/g++-4.6&lt;br /&gt;
/usr/bin/gcc-4.6&lt;br /&gt;
/usr/bin/gcov-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-cpp-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-g++-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-gcc-4.6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installed following these instructions:&lt;br /&gt;
* https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test?field.series_filter=lucid&lt;br /&gt;
* http://superuser.com/questions/310809/how-can-i-update-gcc-to-the-latest-version-in-ubuntu-10-04/394811#394811&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo add-apt-repository ppa:ubuntu-toolchain-r/test&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install gcc-4.6&lt;br /&gt;
sudo apt-get install g++-4.6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remote access ===&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (10.171.2.113).&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Factory&amp;diff=61260</id>
		<title>Documentation/Nightly/Developers/Factory</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Factory&amp;diff=61260"/>
		<updated>2019-06-26T20:49:04Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* Windows */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
The Slicer factory machine is maintained by [http://www.kitware.com Kitware] and produces dashboard builds of many software projects, including nightly, continuous, and packaged versions of Slicer and its approved extensions.  See the [http://slicer.cdash.org/index.php?project=Slicer4 Slicer4 dashboard].&lt;br /&gt;
&lt;br /&gt;
These builds are generated every day on three different operating systems: Windows 7, Mac OS X, and Linux.  Because it is not legal to run any version of Mac OS X on a virtual machine (unless its host also runs Mac OS X), the host OS is Mac OS X, and the Windows and Linux builds are run within this machine as virtual machines.&lt;br /&gt;
&lt;br /&gt;
'''Dashboard build scripts are located on GitHub: https://github.com/Slicer/DashboardScripts'''&lt;br /&gt;
&lt;br /&gt;
==Required factory components==&lt;br /&gt;
&lt;br /&gt;
See [[Documentation/{{documentation/version}}/Developers/Tutorials/DashboardSetup|dashboard prerequisites]].&lt;br /&gt;
&lt;br /&gt;
=Host(s)=&lt;br /&gt;
&lt;br /&gt;
== factory-south.kitware ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
The factory machine runs Mac OS X 10.11.6 (15G31), El Capitan&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
&lt;br /&gt;
The compiler is the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Apple LLVM version 8.0.0 (clang-800.0.42.1)&lt;br /&gt;
Target: x86_64-apple-darwin15.6.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The virtual machines are run using the [http://www.parallels.com/ Parallels Desktop 11].&lt;br /&gt;
* Note that Parallels Desktop supports [http://kb.parallels.com/en/115487 OpenGL 2.1 only] (not higher)&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (10.171.2.166).&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
* 2 x 2.4 GHz 6-Core Intel Xeon&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
* Chipset Model: ATI Radeon HD 5770&lt;br /&gt;
* Type: GPU&lt;br /&gt;
* Bus PCIe&lt;br /&gt;
* VRAM (total): 1024MB&lt;br /&gt;
* EFI Driver Version: 01.00.436&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
* 8 x 8GB = 64 GB&lt;br /&gt;
* Type: DDR3 ECC&lt;br /&gt;
* Speed: 1333 MHz&lt;br /&gt;
&lt;br /&gt;
== overload.kitware and metroplex.kitware ==&lt;br /&gt;
&lt;br /&gt;
[[File:Kitware build servers metroplex-and-overload.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
* overload: Windows 7 Professional 64-bit&lt;br /&gt;
* metroplex: Red Hat Enterprise Linux WS v7.0&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* Dell Precision R7910 Motherboard,BW&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
&lt;br /&gt;
* Dual Intel® Xeon® Processor E5-2630 v3 (8C, 2.4GHz, Turbo, HT, 20M, 85W)&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
&lt;br /&gt;
* NVIDIA® Quadro® K620 2GB (DP, DL-DVI-I) (1 DP to SL-DVI adapter)&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
&lt;br /&gt;
* 32GB (8x4GB) 2133MHz DDR4 RDIMM ECC&lt;br /&gt;
&lt;br /&gt;
==== Storage ====&lt;br /&gt;
&lt;br /&gt;
* 2 X Integrated Intel 4 port AHCI SATA chipset controllers (tot 8 X 6.0Gb/s) SW RAID 0,1,5,10&lt;br /&gt;
* 1 x 1TB Dell 4*Drive PCIe x16 M.2 Solid State Drive Card (boot)&lt;br /&gt;
&lt;br /&gt;
=== overload.kitware ===&lt;br /&gt;
&lt;br /&gt;
* Windows 7 Professional - Service Pack 1 (Build 7601)&lt;br /&gt;
* Compiler:&lt;br /&gt;
** VS2013 Community Edition&lt;br /&gt;
** VS2015 Pro Edition&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via RDP from Kitware internal network (192.168.113.173).&lt;br /&gt;
&lt;br /&gt;
=== metroplex.kitware ===&lt;br /&gt;
&lt;br /&gt;
* Red Hat Enterprise Linux Workstation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Product ID:     71&lt;br /&gt;
Version:        7.2&lt;br /&gt;
Arch:           x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Docker community edition&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH from Kitware internal network (192.168.113.208).&lt;br /&gt;
&lt;br /&gt;
=Maintenance=&lt;br /&gt;
&lt;br /&gt;
== CUDA Install notes ==&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo yum -y install kernel-devel&lt;br /&gt;
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm&lt;br /&gt;
&lt;br /&gt;
wget https://developer.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-rhel7-10-1-local-10.1.168-418.67-1.0-1.x86_64.rpm&lt;br /&gt;
sudo rpm -i cuda-repo-rhel7-10-1-local-10.1.168-418.67-1.0-1.x86_64.rpm&lt;br /&gt;
sudo yum clean all&lt;br /&gt;
sudo yum -y install cuda&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Refs:&lt;br /&gt;
* https://developer.nvidia.com/cuda-downloads?target_os=Linux&amp;amp;target_arch=x86_64&amp;amp;target_distro=CentOS&amp;amp;target_version=7&amp;amp;target_type=rpmlocal&lt;br /&gt;
* https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html&lt;br /&gt;
&lt;br /&gt;
=== Mac OS ===&lt;br /&gt;
&lt;br /&gt;
Beware.  Not tested.  I don't have a mac.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_mac-dmg&lt;br /&gt;
wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/patches/2/cuda_8.0.61.2_mac-dmg&lt;br /&gt;
&lt;br /&gt;
dmgFilePath=cuda_8.0.61_mac-dmg&lt;br /&gt;
MOUNTDEV=$(hdiutil mount $dmgFilePath | awk '/dev.disk/{print$1}')&lt;br /&gt;
MOUNTDIR=&amp;quot;$(mount | grep $MOUNTDEV | awk '{$1=$2=&amp;quot;&amp;quot;;sub(&amp;quot; [(].*&amp;quot;,&amp;quot;&amp;quot;);sub(&amp;quot;^  &amp;quot;,&amp;quot;&amp;quot;);print}')&amp;quot;&lt;br /&gt;
sudo installer -pkg &amp;quot;${MOUNTDIR}/&amp;quot;*.pkg -target /&lt;br /&gt;
hdiutil unmount &amp;quot;$MOUNTDIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
dmgFilePath=cuda_8.0.61.2_mac-dmg&lt;br /&gt;
MOUNTDEV=$(hdiutil mount $dmgFilePath | awk '/dev.disk/{print$1}')&lt;br /&gt;
MOUNTDIR=&amp;quot;$(mount | grep $MOUNTDEV | awk '{$1=$2=&amp;quot;&amp;quot;;sub(&amp;quot; [(].*&amp;quot;,&amp;quot;&amp;quot;);sub(&amp;quot;^  &amp;quot;,&amp;quot;&amp;quot;);print}')&amp;quot;&lt;br /&gt;
sudo installer -pkg &amp;quot;${MOUNTDIR}/&amp;quot;*.pkg -target /&lt;br /&gt;
hdiutil unmount &amp;quot;$MOUNTDIR&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Refs:&lt;br /&gt;
* https://developer.nvidia.com/cuda-80-ga2-download-archive&lt;br /&gt;
* https://docs.nvidia.com/cuda/archive/8.0/cuda-installation-guide-mac-os-x/index.html&lt;br /&gt;
* https://stackoverflow.com/questions/22934083/install-dmg-package-on-mac-os-from-terminal&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://developer.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.168_425.25_windows.exe&lt;br /&gt;
cuda_10.1.168_425.25_windows.exe -s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Refs:&lt;br /&gt;
* https://developer.nvidia.com/cuda-downloads?target_os=Windows&amp;amp;target_arch=x86_64&amp;amp;target_version=7&amp;amp;target_type=exelocal&lt;br /&gt;
* https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html&lt;br /&gt;
&lt;br /&gt;
== Maintenance Guides ==&lt;br /&gt;
&lt;br /&gt;
See https://github.com/Slicer/DashboardScripts#maintenance-guides&lt;br /&gt;
&lt;br /&gt;
== Check Virtual Machines (factory-south-ubuntu) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;factory-south-win7 VM is shutdown, build have been moved to overload.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== When ===&lt;br /&gt;
&lt;br /&gt;
Every day (or as soon as issues are suspected)&lt;br /&gt;
&lt;br /&gt;
=== What ===&lt;br /&gt;
&lt;br /&gt;
* Try to:&lt;br /&gt;
** SSH into factory-south-ubuntu&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
** RDP into factory-south-win7&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If failure:&lt;br /&gt;
** Connect to &amp;lt;code&amp;gt;factory.south&amp;lt;/code&amp;gt; and check the state of the virtual machines. &lt;br /&gt;
&lt;br /&gt;
* Are the virtual machine unresponsive ?&lt;br /&gt;
&lt;br /&gt;
* '''No''' -&amp;gt; No further action required&lt;br /&gt;
* '''Yes''' -&amp;gt; Read below&lt;br /&gt;
** Kill both VMs&lt;br /&gt;
** Restart the host (factory-south)&lt;br /&gt;
** Manually start the virtual machines&lt;br /&gt;
** If needed, manually restarts the nightly build (See below)&lt;br /&gt;
&lt;br /&gt;
== Manually restart the night builds ==&lt;br /&gt;
&lt;br /&gt;
If the factory machines were restarted after the regular Nightly startup time, the nightly scripts will have to be explicitly started.&lt;br /&gt;
&lt;br /&gt;
* Linux: Run &amp;lt;code&amp;gt;/home/kitware/Dashboards/DashboardScripts/factory-south-ubuntu.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX: Run &amp;lt;code&amp;gt;/Users/kitware/DashboardScripts/factory.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Windows: Open &amp;quot;Task Scheduled&amp;quot; -&amp;gt; slicer -&amp;gt; right click on &amp;quot;Nightly&amp;quot; -&amp;gt; Start&lt;br /&gt;
&lt;br /&gt;
== Nightly Build startup times ==&lt;br /&gt;
&lt;br /&gt;
* Linux: 11:10pm&lt;br /&gt;
&lt;br /&gt;
* MacOSx: 11:10pm&lt;br /&gt;
&lt;br /&gt;
* Windows: Midnight&lt;br /&gt;
&lt;br /&gt;
= Retired Hosts =&lt;br /&gt;
&lt;br /&gt;
== factory.kitware (RETIRED) ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
The factory machine runs Mac OS X v10.6.8, Snow Leopard.  &lt;br /&gt;
* CMake version: 3.9.0 (before 2017/07/04 was 3.5.0-rc3 with [https://github.com/Kitware/CMake/compare/master...jcfr:osx-framework this patch])&lt;br /&gt;
** Since CMake release &amp;gt;= 3.6 is compiled only for  &amp;gt;= 10.7, a custom build of cmake was done with &amp;lt;code&amp;gt;-DCMAKE_INSTALL_PREFIX:PATH=/Users/kitware/Dashboards/Support/CMake-3.9.0.app/Contents&amp;lt;/code&amp;gt;  &lt;br /&gt;
* Compiler llvm-3.1. Note that the default compiled shipped with XCode 4.2 is not used. See [http://slicer-devel.65872.n3.nabble.com/MacOSX-factory-build-Transitioning-from-hybrid-quot-llvm-g-quot-to-quot-clang-quot-Update-to-Qt-4-8-6-tt4032198.html#a4032199 here] for more details.&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
&lt;br /&gt;
* Nightly generation of HomebrewCasks: [[Documentation/Nightly/Developers/Factory/HomeBrewInstall|Installation aborted]] (newer system is required for &amp;lt;tt&amp;gt;homebrew/cask-repair&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (192.168.113.230).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The output of &amp;lt;pre&amp;gt;crontab -l&amp;lt;/pre&amp;gt; on the factory machine is as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
55 23 * * * cd /Users/kitware/DashboardScripts &amp;amp;&amp;amp; /usr/bin/cvs -q up -dAP&lt;br /&gt;
0 0 * * * /Users/kitware/DashboardScripts/factory.sh &amp;gt; /Users/kitware/Dashboards/Logs/factory.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 9 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_CTKAppLauncher_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_CTKAppLauncher_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 9 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicer4_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicer4_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 10 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicerextensions_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicerextensions_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 10 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicerextensions_411_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicerextensions_411_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first tab is a command to update the cvs repository storing all of Kitware's dashboard scripts.  The second is a bash script which runs all of the nightly builds done by the Mac OS X factory.  The rest correspond to all the continuous builds.  An example of an entry in the bash script is as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
open -a x11&lt;br /&gt;
export DISPLAY=:0.0 # just DISPLAY=:0.0 without export is not enough&lt;br /&gt;
export PATH=:/usr/local/git/bin:$PATH&lt;br /&gt;
&lt;br /&gt;
CTEST=/Applications/CMake-3.5.0-rc3.app/Contents/bin/ctest&lt;br /&gt;
LOG_DIR=/Users/kitware/Dashboards/Logs&lt;br /&gt;
DASHBOARD_SCRIPTS_DIR=/Users/kitware/DashboardScripts&lt;br /&gt;
&lt;br /&gt;
# Nightly build of CTKAppLauncher&lt;br /&gt;
&amp;quot;$CTEST&amp;quot; -S $DASHBOARD_SCRIPTS_DIR/factory-64bits_CTKAppLauncher_release_nightly.cmake -VV -O $LOG_DIR/factory-64bits_CTKAppLauncher_release_nightly.log&lt;br /&gt;
&lt;br /&gt;
# Nightly build of slicer&lt;br /&gt;
&amp;quot;$CTEST&amp;quot; -S $DASHBOARD_SCRIPTS_DIR/factory-64bits_slicer4_release_nightly.cmake -VV -O $LOG_DIR/factory-64bits_slicer4_release_nightly.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The virtual  machines are run using the Parallels tool.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Mac Pro (Mid 2010)&amp;quot; which has the 64-bit kernel enabled by default. See [http://support.apple.com/kb/HT3770 here] for details.&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
* 2 x 2.93 GHz 6-Core Intel Xeon&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
* Chipset Model: ATI Radeon HD 5770&lt;br /&gt;
* Type: GPU&lt;br /&gt;
* Bus PCIe&lt;br /&gt;
* VRAM (total): 1024MB&lt;br /&gt;
* EFI Driver Version: 01.00.436&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
* 8 x 4GB = 32GB&lt;br /&gt;
* Type: DDR3 ECC&lt;br /&gt;
* Speed: 1333 MHz&lt;br /&gt;
&lt;br /&gt;
== factory-south-win7.kitware (RETIRED VM) ==&lt;br /&gt;
&lt;br /&gt;
* Tasks are scheduled using the Windows Task Scheduler (Start-&amp;gt;All Programs-&amp;gt;Accessories-&amp;gt;System Tools-&amp;gt;Task Scheduler)&lt;br /&gt;
* On Windows, instead of bash, we use batch scripts comprised of commands to call ctest to run all the nightly scripts.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;This VM is shutdown, build have been moved to overload.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Windows 7 Ultimate N - Service Pack 1 (Build 7601) on an x86 platform.&lt;br /&gt;
* CMake version: 3.5.0-rc3&lt;br /&gt;
* Compiler: VS2013 Community Edition&lt;br /&gt;
* Processors: 6&lt;br /&gt;
* Memory: 16GB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, keep in mind the [[Documentation/{{documentation/version}}/Developers/Tutorials/DashboardSetup#Remarks remarks]] about building a dashboard on a Windows machine.  These all apply here.&lt;br /&gt;
&lt;br /&gt;
Remote access: Via Remote Desktop from Kitware internal network (10.171.2.245).&lt;br /&gt;
&lt;br /&gt;
== factory-south-ubuntu.kitware (RETIRED) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;This VM is shutdown, build have been moved to metroplex.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ubuntu 10.04&lt;br /&gt;
* CMake version: 3.9.0 (before 2017/07/04 was 3.5.0-rc3)&lt;br /&gt;
* GCC version: Ubuntu 4.4.3-4ubuntu5.1&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
* Processors: 5&lt;br /&gt;
* Memory: 10GB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsb_release -a&lt;br /&gt;
No LSB modules are available.&lt;br /&gt;
Distributor ID:	Ubuntu&lt;br /&gt;
Description:	Ubuntu 10.04.4 LTS&lt;br /&gt;
Release:	10.04&lt;br /&gt;
Codename:	lucid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These two compilers are available:&lt;br /&gt;
&lt;br /&gt;
=== gcc/g++ 4.4.3 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/cpp-4.4&lt;br /&gt;
/usr/bin/g++-4.4&lt;br /&gt;
/usr/bin/gcc-4.4&lt;br /&gt;
/usr/bin/gcov-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-cpp-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-g++-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-gcc-4.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the PATH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ gcc --version&lt;br /&gt;
gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3&lt;br /&gt;
$ g++ --version&lt;br /&gt;
g++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== gcc/g++ 4.6.4 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/cpp-4.6&lt;br /&gt;
/usr/bin/g++-4.6&lt;br /&gt;
/usr/bin/gcc-4.6&lt;br /&gt;
/usr/bin/gcov-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-cpp-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-g++-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-gcc-4.6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installed following these instructions:&lt;br /&gt;
* https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test?field.series_filter=lucid&lt;br /&gt;
* http://superuser.com/questions/310809/how-can-i-update-gcc-to-the-latest-version-in-ubuntu-10-04/394811#394811&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo add-apt-repository ppa:ubuntu-toolchain-r/test&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install gcc-4.6&lt;br /&gt;
sudo apt-get install g++-4.6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remote access ===&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (10.171.2.113).&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Factory&amp;diff=61259</id>
		<title>Documentation/Nightly/Developers/Factory</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Factory&amp;diff=61259"/>
		<updated>2019-06-26T20:44:30Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
The Slicer factory machine is maintained by [http://www.kitware.com Kitware] and produces dashboard builds of many software projects, including nightly, continuous, and packaged versions of Slicer and its approved extensions.  See the [http://slicer.cdash.org/index.php?project=Slicer4 Slicer4 dashboard].&lt;br /&gt;
&lt;br /&gt;
These builds are generated every day on three different operating systems: Windows 7, Mac OS X, and Linux.  Because it is not legal to run any version of Mac OS X on a virtual machine (unless its host also runs Mac OS X), the host OS is Mac OS X, and the Windows and Linux builds are run within this machine as virtual machines.&lt;br /&gt;
&lt;br /&gt;
'''Dashboard build scripts are located on GitHub: https://github.com/Slicer/DashboardScripts'''&lt;br /&gt;
&lt;br /&gt;
==Required factory components==&lt;br /&gt;
&lt;br /&gt;
See [[Documentation/{{documentation/version}}/Developers/Tutorials/DashboardSetup|dashboard prerequisites]].&lt;br /&gt;
&lt;br /&gt;
=Host(s)=&lt;br /&gt;
&lt;br /&gt;
== factory-south.kitware ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
The factory machine runs Mac OS X 10.11.6 (15G31), El Capitan&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
&lt;br /&gt;
The compiler is the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Apple LLVM version 8.0.0 (clang-800.0.42.1)&lt;br /&gt;
Target: x86_64-apple-darwin15.6.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The virtual machines are run using the [http://www.parallels.com/ Parallels Desktop 11].&lt;br /&gt;
* Note that Parallels Desktop supports [http://kb.parallels.com/en/115487 OpenGL 2.1 only] (not higher)&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (10.171.2.166).&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
* 2 x 2.4 GHz 6-Core Intel Xeon&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
* Chipset Model: ATI Radeon HD 5770&lt;br /&gt;
* Type: GPU&lt;br /&gt;
* Bus PCIe&lt;br /&gt;
* VRAM (total): 1024MB&lt;br /&gt;
* EFI Driver Version: 01.00.436&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
* 8 x 8GB = 64 GB&lt;br /&gt;
* Type: DDR3 ECC&lt;br /&gt;
* Speed: 1333 MHz&lt;br /&gt;
&lt;br /&gt;
== overload.kitware and metroplex.kitware ==&lt;br /&gt;
&lt;br /&gt;
[[File:Kitware build servers metroplex-and-overload.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
* overload: Windows 7 Professional 64-bit&lt;br /&gt;
* metroplex: Red Hat Enterprise Linux WS v7.0&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* Dell Precision R7910 Motherboard,BW&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
&lt;br /&gt;
* Dual Intel® Xeon® Processor E5-2630 v3 (8C, 2.4GHz, Turbo, HT, 20M, 85W)&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
&lt;br /&gt;
* NVIDIA® Quadro® K620 2GB (DP, DL-DVI-I) (1 DP to SL-DVI adapter)&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
&lt;br /&gt;
* 32GB (8x4GB) 2133MHz DDR4 RDIMM ECC&lt;br /&gt;
&lt;br /&gt;
==== Storage ====&lt;br /&gt;
&lt;br /&gt;
* 2 X Integrated Intel 4 port AHCI SATA chipset controllers (tot 8 X 6.0Gb/s) SW RAID 0,1,5,10&lt;br /&gt;
* 1 x 1TB Dell 4*Drive PCIe x16 M.2 Solid State Drive Card (boot)&lt;br /&gt;
&lt;br /&gt;
=== overload.kitware ===&lt;br /&gt;
&lt;br /&gt;
* Windows 7 Professional - Service Pack 1 (Build 7601)&lt;br /&gt;
* Compiler:&lt;br /&gt;
** VS2013 Community Edition&lt;br /&gt;
** VS2015 Pro Edition&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via RDP from Kitware internal network (192.168.113.173).&lt;br /&gt;
&lt;br /&gt;
=== metroplex.kitware ===&lt;br /&gt;
&lt;br /&gt;
* Red Hat Enterprise Linux Workstation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Product ID:     71&lt;br /&gt;
Version:        7.2&lt;br /&gt;
Arch:           x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Docker community edition&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH from Kitware internal network (192.168.113.208).&lt;br /&gt;
&lt;br /&gt;
=Maintenance=&lt;br /&gt;
&lt;br /&gt;
== CUDA Install notes ==&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo yum -y install kernel-devel&lt;br /&gt;
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm&lt;br /&gt;
&lt;br /&gt;
wget https://developer.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-rhel7-10-1-local-10.1.168-418.67-1.0-1.x86_64.rpm&lt;br /&gt;
sudo rpm -i cuda-repo-rhel7-10-1-local-10.1.168-418.67-1.0-1.x86_64.rpm&lt;br /&gt;
sudo yum clean all&lt;br /&gt;
sudo yum -y install cuda&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Refs:&lt;br /&gt;
* https://developer.nvidia.com/cuda-downloads?target_os=Linux&amp;amp;target_arch=x86_64&amp;amp;target_distro=CentOS&amp;amp;target_version=7&amp;amp;target_type=rpmlocal&lt;br /&gt;
* https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html&lt;br /&gt;
&lt;br /&gt;
=== Mac OS ===&lt;br /&gt;
&lt;br /&gt;
Beware.  Not tested.  I don't have a mac.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda_8.0.61_mac-dmg&lt;br /&gt;
wget https://developer.nvidia.com/compute/cuda/8.0/Prod2/patches/2/cuda_8.0.61.2_mac-dmg&lt;br /&gt;
&lt;br /&gt;
dmgFilePath=cuda_8.0.61_mac-dmg&lt;br /&gt;
MOUNTDEV=$(hdiutil mount $dmgFilePath | awk '/dev.disk/{print$1}')&lt;br /&gt;
MOUNTDIR=&amp;quot;$(mount | grep $MOUNTDEV | awk '{$1=$2=&amp;quot;&amp;quot;;sub(&amp;quot; [(].*&amp;quot;,&amp;quot;&amp;quot;);sub(&amp;quot;^  &amp;quot;,&amp;quot;&amp;quot;);print}')&amp;quot;&lt;br /&gt;
sudo installer -pkg &amp;quot;${MOUNTDIR}/&amp;quot;*.pkg -target /&lt;br /&gt;
hdiutil unmount &amp;quot;$MOUNTDIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
dmgFilePath=cuda_8.0.61.2_mac-dmg&lt;br /&gt;
MOUNTDEV=$(hdiutil mount $dmgFilePath | awk '/dev.disk/{print$1}')&lt;br /&gt;
MOUNTDIR=&amp;quot;$(mount | grep $MOUNTDEV | awk '{$1=$2=&amp;quot;&amp;quot;;sub(&amp;quot; [(].*&amp;quot;,&amp;quot;&amp;quot;);sub(&amp;quot;^  &amp;quot;,&amp;quot;&amp;quot;);print}')&amp;quot;&lt;br /&gt;
sudo installer -pkg &amp;quot;${MOUNTDIR}/&amp;quot;*.pkg -target /&lt;br /&gt;
hdiutil unmount &amp;quot;$MOUNTDIR&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Refs:&lt;br /&gt;
* https://developer.nvidia.com/cuda-80-ga2-download-archive&lt;br /&gt;
* https://docs.nvidia.com/cuda/archive/8.0/cuda-installation-guide-mac-os-x/index.html&lt;br /&gt;
* https://stackoverflow.com/questions/22934083/install-dmg-package-on-mac-os-from-terminal&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
== Maintenance Guides ==&lt;br /&gt;
&lt;br /&gt;
See https://github.com/Slicer/DashboardScripts#maintenance-guides&lt;br /&gt;
&lt;br /&gt;
== Check Virtual Machines (factory-south-ubuntu) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;factory-south-win7 VM is shutdown, build have been moved to overload.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== When ===&lt;br /&gt;
&lt;br /&gt;
Every day (or as soon as issues are suspected)&lt;br /&gt;
&lt;br /&gt;
=== What ===&lt;br /&gt;
&lt;br /&gt;
* Try to:&lt;br /&gt;
** SSH into factory-south-ubuntu&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
** RDP into factory-south-win7&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If failure:&lt;br /&gt;
** Connect to &amp;lt;code&amp;gt;factory.south&amp;lt;/code&amp;gt; and check the state of the virtual machines. &lt;br /&gt;
&lt;br /&gt;
* Are the virtual machine unresponsive ?&lt;br /&gt;
&lt;br /&gt;
* '''No''' -&amp;gt; No further action required&lt;br /&gt;
* '''Yes''' -&amp;gt; Read below&lt;br /&gt;
** Kill both VMs&lt;br /&gt;
** Restart the host (factory-south)&lt;br /&gt;
** Manually start the virtual machines&lt;br /&gt;
** If needed, manually restarts the nightly build (See below)&lt;br /&gt;
&lt;br /&gt;
== Manually restart the night builds ==&lt;br /&gt;
&lt;br /&gt;
If the factory machines were restarted after the regular Nightly startup time, the nightly scripts will have to be explicitly started.&lt;br /&gt;
&lt;br /&gt;
* Linux: Run &amp;lt;code&amp;gt;/home/kitware/Dashboards/DashboardScripts/factory-south-ubuntu.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX: Run &amp;lt;code&amp;gt;/Users/kitware/DashboardScripts/factory.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Windows: Open &amp;quot;Task Scheduled&amp;quot; -&amp;gt; slicer -&amp;gt; right click on &amp;quot;Nightly&amp;quot; -&amp;gt; Start&lt;br /&gt;
&lt;br /&gt;
== Nightly Build startup times ==&lt;br /&gt;
&lt;br /&gt;
* Linux: 11:10pm&lt;br /&gt;
&lt;br /&gt;
* MacOSx: 11:10pm&lt;br /&gt;
&lt;br /&gt;
* Windows: Midnight&lt;br /&gt;
&lt;br /&gt;
= Retired Hosts =&lt;br /&gt;
&lt;br /&gt;
== factory.kitware (RETIRED) ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
The factory machine runs Mac OS X v10.6.8, Snow Leopard.  &lt;br /&gt;
* CMake version: 3.9.0 (before 2017/07/04 was 3.5.0-rc3 with [https://github.com/Kitware/CMake/compare/master...jcfr:osx-framework this patch])&lt;br /&gt;
** Since CMake release &amp;gt;= 3.6 is compiled only for  &amp;gt;= 10.7, a custom build of cmake was done with &amp;lt;code&amp;gt;-DCMAKE_INSTALL_PREFIX:PATH=/Users/kitware/Dashboards/Support/CMake-3.9.0.app/Contents&amp;lt;/code&amp;gt;  &lt;br /&gt;
* Compiler llvm-3.1. Note that the default compiled shipped with XCode 4.2 is not used. See [http://slicer-devel.65872.n3.nabble.com/MacOSX-factory-build-Transitioning-from-hybrid-quot-llvm-g-quot-to-quot-clang-quot-Update-to-Qt-4-8-6-tt4032198.html#a4032199 here] for more details.&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
&lt;br /&gt;
* Nightly generation of HomebrewCasks: [[Documentation/Nightly/Developers/Factory/HomeBrewInstall|Installation aborted]] (newer system is required for &amp;lt;tt&amp;gt;homebrew/cask-repair&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (192.168.113.230).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The output of &amp;lt;pre&amp;gt;crontab -l&amp;lt;/pre&amp;gt; on the factory machine is as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
55 23 * * * cd /Users/kitware/DashboardScripts &amp;amp;&amp;amp; /usr/bin/cvs -q up -dAP&lt;br /&gt;
0 0 * * * /Users/kitware/DashboardScripts/factory.sh &amp;gt; /Users/kitware/Dashboards/Logs/factory.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 9 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_CTKAppLauncher_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_CTKAppLauncher_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 9 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicer4_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicer4_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 10 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicerextensions_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicerextensions_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 10 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicerextensions_411_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicerextensions_411_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first tab is a command to update the cvs repository storing all of Kitware's dashboard scripts.  The second is a bash script which runs all of the nightly builds done by the Mac OS X factory.  The rest correspond to all the continuous builds.  An example of an entry in the bash script is as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
open -a x11&lt;br /&gt;
export DISPLAY=:0.0 # just DISPLAY=:0.0 without export is not enough&lt;br /&gt;
export PATH=:/usr/local/git/bin:$PATH&lt;br /&gt;
&lt;br /&gt;
CTEST=/Applications/CMake-3.5.0-rc3.app/Contents/bin/ctest&lt;br /&gt;
LOG_DIR=/Users/kitware/Dashboards/Logs&lt;br /&gt;
DASHBOARD_SCRIPTS_DIR=/Users/kitware/DashboardScripts&lt;br /&gt;
&lt;br /&gt;
# Nightly build of CTKAppLauncher&lt;br /&gt;
&amp;quot;$CTEST&amp;quot; -S $DASHBOARD_SCRIPTS_DIR/factory-64bits_CTKAppLauncher_release_nightly.cmake -VV -O $LOG_DIR/factory-64bits_CTKAppLauncher_release_nightly.log&lt;br /&gt;
&lt;br /&gt;
# Nightly build of slicer&lt;br /&gt;
&amp;quot;$CTEST&amp;quot; -S $DASHBOARD_SCRIPTS_DIR/factory-64bits_slicer4_release_nightly.cmake -VV -O $LOG_DIR/factory-64bits_slicer4_release_nightly.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The virtual  machines are run using the Parallels tool.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Mac Pro (Mid 2010)&amp;quot; which has the 64-bit kernel enabled by default. See [http://support.apple.com/kb/HT3770 here] for details.&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
* 2 x 2.93 GHz 6-Core Intel Xeon&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
* Chipset Model: ATI Radeon HD 5770&lt;br /&gt;
* Type: GPU&lt;br /&gt;
* Bus PCIe&lt;br /&gt;
* VRAM (total): 1024MB&lt;br /&gt;
* EFI Driver Version: 01.00.436&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
* 8 x 4GB = 32GB&lt;br /&gt;
* Type: DDR3 ECC&lt;br /&gt;
* Speed: 1333 MHz&lt;br /&gt;
&lt;br /&gt;
== factory-south-win7.kitware (RETIRED VM) ==&lt;br /&gt;
&lt;br /&gt;
* Tasks are scheduled using the Windows Task Scheduler (Start-&amp;gt;All Programs-&amp;gt;Accessories-&amp;gt;System Tools-&amp;gt;Task Scheduler)&lt;br /&gt;
* On Windows, instead of bash, we use batch scripts comprised of commands to call ctest to run all the nightly scripts.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;This VM is shutdown, build have been moved to overload.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Windows 7 Ultimate N - Service Pack 1 (Build 7601) on an x86 platform.&lt;br /&gt;
* CMake version: 3.5.0-rc3&lt;br /&gt;
* Compiler: VS2013 Community Edition&lt;br /&gt;
* Processors: 6&lt;br /&gt;
* Memory: 16GB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, keep in mind the [[Documentation/{{documentation/version}}/Developers/Tutorials/DashboardSetup#Remarks remarks]] about building a dashboard on a Windows machine.  These all apply here.&lt;br /&gt;
&lt;br /&gt;
Remote access: Via Remote Desktop from Kitware internal network (10.171.2.245).&lt;br /&gt;
&lt;br /&gt;
== factory-south-ubuntu.kitware (RETIRED) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;This VM is shutdown, build have been moved to metroplex.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ubuntu 10.04&lt;br /&gt;
* CMake version: 3.9.0 (before 2017/07/04 was 3.5.0-rc3)&lt;br /&gt;
* GCC version: Ubuntu 4.4.3-4ubuntu5.1&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
* Processors: 5&lt;br /&gt;
* Memory: 10GB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsb_release -a&lt;br /&gt;
No LSB modules are available.&lt;br /&gt;
Distributor ID:	Ubuntu&lt;br /&gt;
Description:	Ubuntu 10.04.4 LTS&lt;br /&gt;
Release:	10.04&lt;br /&gt;
Codename:	lucid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These two compilers are available:&lt;br /&gt;
&lt;br /&gt;
=== gcc/g++ 4.4.3 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/cpp-4.4&lt;br /&gt;
/usr/bin/g++-4.4&lt;br /&gt;
/usr/bin/gcc-4.4&lt;br /&gt;
/usr/bin/gcov-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-cpp-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-g++-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-gcc-4.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the PATH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ gcc --version&lt;br /&gt;
gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3&lt;br /&gt;
$ g++ --version&lt;br /&gt;
g++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== gcc/g++ 4.6.4 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/cpp-4.6&lt;br /&gt;
/usr/bin/g++-4.6&lt;br /&gt;
/usr/bin/gcc-4.6&lt;br /&gt;
/usr/bin/gcov-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-cpp-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-g++-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-gcc-4.6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installed following these instructions:&lt;br /&gt;
* https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test?field.series_filter=lucid&lt;br /&gt;
* http://superuser.com/questions/310809/how-can-i-update-gcc-to-the-latest-version-in-ubuntu-10-04/394811#394811&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo add-apt-repository ppa:ubuntu-toolchain-r/test&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install gcc-4.6&lt;br /&gt;
sudo apt-get install g++-4.6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remote access ===&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (10.171.2.113).&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Factory&amp;diff=61258</id>
		<title>Documentation/Nightly/Developers/Factory</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Factory&amp;diff=61258"/>
		<updated>2019-06-26T20:20:56Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
The Slicer factory machine is maintained by [http://www.kitware.com Kitware] and produces dashboard builds of many software projects, including nightly, continuous, and packaged versions of Slicer and its approved extensions.  See the [http://slicer.cdash.org/index.php?project=Slicer4 Slicer4 dashboard].&lt;br /&gt;
&lt;br /&gt;
These builds are generated every day on three different operating systems: Windows 7, Mac OS X, and Linux.  Because it is not legal to run any version of Mac OS X on a virtual machine (unless its host also runs Mac OS X), the host OS is Mac OS X, and the Windows and Linux builds are run within this machine as virtual machines.&lt;br /&gt;
&lt;br /&gt;
'''Dashboard build scripts are located on GitHub: https://github.com/Slicer/DashboardScripts'''&lt;br /&gt;
&lt;br /&gt;
==Required factory components==&lt;br /&gt;
&lt;br /&gt;
See [[Documentation/{{documentation/version}}/Developers/Tutorials/DashboardSetup|dashboard prerequisites]].&lt;br /&gt;
&lt;br /&gt;
=Host(s)=&lt;br /&gt;
&lt;br /&gt;
== factory-south.kitware ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
The factory machine runs Mac OS X 10.11.6 (15G31), El Capitan&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
&lt;br /&gt;
The compiler is the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Apple LLVM version 8.0.0 (clang-800.0.42.1)&lt;br /&gt;
Target: x86_64-apple-darwin15.6.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The virtual machines are run using the [http://www.parallels.com/ Parallels Desktop 11].&lt;br /&gt;
* Note that Parallels Desktop supports [http://kb.parallels.com/en/115487 OpenGL 2.1 only] (not higher)&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (10.171.2.166).&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
* 2 x 2.4 GHz 6-Core Intel Xeon&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
* Chipset Model: ATI Radeon HD 5770&lt;br /&gt;
* Type: GPU&lt;br /&gt;
* Bus PCIe&lt;br /&gt;
* VRAM (total): 1024MB&lt;br /&gt;
* EFI Driver Version: 01.00.436&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
* 8 x 8GB = 64 GB&lt;br /&gt;
* Type: DDR3 ECC&lt;br /&gt;
* Speed: 1333 MHz&lt;br /&gt;
&lt;br /&gt;
== overload.kitware and metroplex.kitware ==&lt;br /&gt;
&lt;br /&gt;
[[File:Kitware build servers metroplex-and-overload.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
* overload: Windows 7 Professional 64-bit&lt;br /&gt;
* metroplex: Red Hat Enterprise Linux WS v7.0&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* Dell Precision R7910 Motherboard,BW&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
&lt;br /&gt;
* Dual Intel® Xeon® Processor E5-2630 v3 (8C, 2.4GHz, Turbo, HT, 20M, 85W)&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
&lt;br /&gt;
* NVIDIA® Quadro® K620 2GB (DP, DL-DVI-I) (1 DP to SL-DVI adapter)&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
&lt;br /&gt;
* 32GB (8x4GB) 2133MHz DDR4 RDIMM ECC&lt;br /&gt;
&lt;br /&gt;
==== Storage ====&lt;br /&gt;
&lt;br /&gt;
* 2 X Integrated Intel 4 port AHCI SATA chipset controllers (tot 8 X 6.0Gb/s) SW RAID 0,1,5,10&lt;br /&gt;
* 1 x 1TB Dell 4*Drive PCIe x16 M.2 Solid State Drive Card (boot)&lt;br /&gt;
&lt;br /&gt;
=== overload.kitware ===&lt;br /&gt;
&lt;br /&gt;
* Windows 7 Professional - Service Pack 1 (Build 7601)&lt;br /&gt;
* Compiler:&lt;br /&gt;
** VS2013 Community Edition&lt;br /&gt;
** VS2015 Pro Edition&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via RDP from Kitware internal network (192.168.113.173).&lt;br /&gt;
&lt;br /&gt;
=== metroplex.kitware ===&lt;br /&gt;
&lt;br /&gt;
* Red Hat Enterprise Linux Workstation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Product ID:     71&lt;br /&gt;
Version:        7.2&lt;br /&gt;
Arch:           x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Docker community edition&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH from Kitware internal network (192.168.113.208).&lt;br /&gt;
&lt;br /&gt;
=Maintenance=&lt;br /&gt;
&lt;br /&gt;
== CUDA Install notes ==&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo yum -y install kernel-devel&lt;br /&gt;
sudo yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm&lt;br /&gt;
&lt;br /&gt;
wget https://developer.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-rhel7-10-1-local-10.1.168-418.67-1.0-1.x86_64.rpm&lt;br /&gt;
sudo rpm -i cuda-repo-rhel7-10-1-local-10.1.168-418.67-1.0-1.x86_64.rpm&lt;br /&gt;
sudo yum clean all&lt;br /&gt;
sudo yum -y install cuda&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Maintenance Guides ==&lt;br /&gt;
&lt;br /&gt;
See https://github.com/Slicer/DashboardScripts#maintenance-guides&lt;br /&gt;
&lt;br /&gt;
== Check Virtual Machines (factory-south-ubuntu) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;factory-south-win7 VM is shutdown, build have been moved to overload.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== When ===&lt;br /&gt;
&lt;br /&gt;
Every day (or as soon as issues are suspected)&lt;br /&gt;
&lt;br /&gt;
=== What ===&lt;br /&gt;
&lt;br /&gt;
* Try to:&lt;br /&gt;
** SSH into factory-south-ubuntu&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
** RDP into factory-south-win7&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If failure:&lt;br /&gt;
** Connect to &amp;lt;code&amp;gt;factory.south&amp;lt;/code&amp;gt; and check the state of the virtual machines. &lt;br /&gt;
&lt;br /&gt;
* Are the virtual machine unresponsive ?&lt;br /&gt;
&lt;br /&gt;
* '''No''' -&amp;gt; No further action required&lt;br /&gt;
* '''Yes''' -&amp;gt; Read below&lt;br /&gt;
** Kill both VMs&lt;br /&gt;
** Restart the host (factory-south)&lt;br /&gt;
** Manually start the virtual machines&lt;br /&gt;
** If needed, manually restarts the nightly build (See below)&lt;br /&gt;
&lt;br /&gt;
== Manually restart the night builds ==&lt;br /&gt;
&lt;br /&gt;
If the factory machines were restarted after the regular Nightly startup time, the nightly scripts will have to be explicitly started.&lt;br /&gt;
&lt;br /&gt;
* Linux: Run &amp;lt;code&amp;gt;/home/kitware/Dashboards/DashboardScripts/factory-south-ubuntu.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX: Run &amp;lt;code&amp;gt;/Users/kitware/DashboardScripts/factory.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Windows: Open &amp;quot;Task Scheduled&amp;quot; -&amp;gt; slicer -&amp;gt; right click on &amp;quot;Nightly&amp;quot; -&amp;gt; Start&lt;br /&gt;
&lt;br /&gt;
== Nightly Build startup times ==&lt;br /&gt;
&lt;br /&gt;
* Linux: 11:10pm&lt;br /&gt;
&lt;br /&gt;
* MacOSx: 11:10pm&lt;br /&gt;
&lt;br /&gt;
* Windows: Midnight&lt;br /&gt;
&lt;br /&gt;
= Retired Hosts =&lt;br /&gt;
&lt;br /&gt;
== factory.kitware (RETIRED) ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
The factory machine runs Mac OS X v10.6.8, Snow Leopard.  &lt;br /&gt;
* CMake version: 3.9.0 (before 2017/07/04 was 3.5.0-rc3 with [https://github.com/Kitware/CMake/compare/master...jcfr:osx-framework this patch])&lt;br /&gt;
** Since CMake release &amp;gt;= 3.6 is compiled only for  &amp;gt;= 10.7, a custom build of cmake was done with &amp;lt;code&amp;gt;-DCMAKE_INSTALL_PREFIX:PATH=/Users/kitware/Dashboards/Support/CMake-3.9.0.app/Contents&amp;lt;/code&amp;gt;  &lt;br /&gt;
* Compiler llvm-3.1. Note that the default compiled shipped with XCode 4.2 is not used. See [http://slicer-devel.65872.n3.nabble.com/MacOSX-factory-build-Transitioning-from-hybrid-quot-llvm-g-quot-to-quot-clang-quot-Update-to-Qt-4-8-6-tt4032198.html#a4032199 here] for more details.&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
&lt;br /&gt;
* Nightly generation of HomebrewCasks: [[Documentation/Nightly/Developers/Factory/HomeBrewInstall|Installation aborted]] (newer system is required for &amp;lt;tt&amp;gt;homebrew/cask-repair&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (192.168.113.230).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The output of &amp;lt;pre&amp;gt;crontab -l&amp;lt;/pre&amp;gt; on the factory machine is as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
55 23 * * * cd /Users/kitware/DashboardScripts &amp;amp;&amp;amp; /usr/bin/cvs -q up -dAP&lt;br /&gt;
0 0 * * * /Users/kitware/DashboardScripts/factory.sh &amp;gt; /Users/kitware/Dashboards/Logs/factory.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 9 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_CTKAppLauncher_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_CTKAppLauncher_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 9 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicer4_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicer4_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 10 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicerextensions_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicerextensions_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 10 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicerextensions_411_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicerextensions_411_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first tab is a command to update the cvs repository storing all of Kitware's dashboard scripts.  The second is a bash script which runs all of the nightly builds done by the Mac OS X factory.  The rest correspond to all the continuous builds.  An example of an entry in the bash script is as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
open -a x11&lt;br /&gt;
export DISPLAY=:0.0 # just DISPLAY=:0.0 without export is not enough&lt;br /&gt;
export PATH=:/usr/local/git/bin:$PATH&lt;br /&gt;
&lt;br /&gt;
CTEST=/Applications/CMake-3.5.0-rc3.app/Contents/bin/ctest&lt;br /&gt;
LOG_DIR=/Users/kitware/Dashboards/Logs&lt;br /&gt;
DASHBOARD_SCRIPTS_DIR=/Users/kitware/DashboardScripts&lt;br /&gt;
&lt;br /&gt;
# Nightly build of CTKAppLauncher&lt;br /&gt;
&amp;quot;$CTEST&amp;quot; -S $DASHBOARD_SCRIPTS_DIR/factory-64bits_CTKAppLauncher_release_nightly.cmake -VV -O $LOG_DIR/factory-64bits_CTKAppLauncher_release_nightly.log&lt;br /&gt;
&lt;br /&gt;
# Nightly build of slicer&lt;br /&gt;
&amp;quot;$CTEST&amp;quot; -S $DASHBOARD_SCRIPTS_DIR/factory-64bits_slicer4_release_nightly.cmake -VV -O $LOG_DIR/factory-64bits_slicer4_release_nightly.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The virtual  machines are run using the Parallels tool.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Mac Pro (Mid 2010)&amp;quot; which has the 64-bit kernel enabled by default. See [http://support.apple.com/kb/HT3770 here] for details.&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
* 2 x 2.93 GHz 6-Core Intel Xeon&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
* Chipset Model: ATI Radeon HD 5770&lt;br /&gt;
* Type: GPU&lt;br /&gt;
* Bus PCIe&lt;br /&gt;
* VRAM (total): 1024MB&lt;br /&gt;
* EFI Driver Version: 01.00.436&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
* 8 x 4GB = 32GB&lt;br /&gt;
* Type: DDR3 ECC&lt;br /&gt;
* Speed: 1333 MHz&lt;br /&gt;
&lt;br /&gt;
== factory-south-win7.kitware (RETIRED VM) ==&lt;br /&gt;
&lt;br /&gt;
* Tasks are scheduled using the Windows Task Scheduler (Start-&amp;gt;All Programs-&amp;gt;Accessories-&amp;gt;System Tools-&amp;gt;Task Scheduler)&lt;br /&gt;
* On Windows, instead of bash, we use batch scripts comprised of commands to call ctest to run all the nightly scripts.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;This VM is shutdown, build have been moved to overload.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Windows 7 Ultimate N - Service Pack 1 (Build 7601) on an x86 platform.&lt;br /&gt;
* CMake version: 3.5.0-rc3&lt;br /&gt;
* Compiler: VS2013 Community Edition&lt;br /&gt;
* Processors: 6&lt;br /&gt;
* Memory: 16GB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, keep in mind the [[Documentation/{{documentation/version}}/Developers/Tutorials/DashboardSetup#Remarks remarks]] about building a dashboard on a Windows machine.  These all apply here.&lt;br /&gt;
&lt;br /&gt;
Remote access: Via Remote Desktop from Kitware internal network (10.171.2.245).&lt;br /&gt;
&lt;br /&gt;
== factory-south-ubuntu.kitware (RETIRED) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;This VM is shutdown, build have been moved to metroplex.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ubuntu 10.04&lt;br /&gt;
* CMake version: 3.9.0 (before 2017/07/04 was 3.5.0-rc3)&lt;br /&gt;
* GCC version: Ubuntu 4.4.3-4ubuntu5.1&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
* Processors: 5&lt;br /&gt;
* Memory: 10GB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsb_release -a&lt;br /&gt;
No LSB modules are available.&lt;br /&gt;
Distributor ID:	Ubuntu&lt;br /&gt;
Description:	Ubuntu 10.04.4 LTS&lt;br /&gt;
Release:	10.04&lt;br /&gt;
Codename:	lucid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These two compilers are available:&lt;br /&gt;
&lt;br /&gt;
=== gcc/g++ 4.4.3 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/cpp-4.4&lt;br /&gt;
/usr/bin/g++-4.4&lt;br /&gt;
/usr/bin/gcc-4.4&lt;br /&gt;
/usr/bin/gcov-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-cpp-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-g++-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-gcc-4.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the PATH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ gcc --version&lt;br /&gt;
gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3&lt;br /&gt;
$ g++ --version&lt;br /&gt;
g++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== gcc/g++ 4.6.4 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/cpp-4.6&lt;br /&gt;
/usr/bin/g++-4.6&lt;br /&gt;
/usr/bin/gcc-4.6&lt;br /&gt;
/usr/bin/gcov-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-cpp-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-g++-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-gcc-4.6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installed following these instructions:&lt;br /&gt;
* https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test?field.series_filter=lucid&lt;br /&gt;
* http://superuser.com/questions/310809/how-can-i-update-gcc-to-the-latest-version-in-ubuntu-10-04/394811#394811&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo add-apt-repository ppa:ubuntu-toolchain-r/test&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install gcc-4.6&lt;br /&gt;
sudo apt-get install g++-4.6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remote access ===&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (10.171.2.113).&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Factory&amp;diff=61257</id>
		<title>Documentation/Nightly/Developers/Factory</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Factory&amp;diff=61257"/>
		<updated>2019-06-26T17:58:04Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
The Slicer factory machine is maintained by [http://www.kitware.com Kitware] and produces dashboard builds of many software projects, including nightly, continuous, and packaged versions of Slicer and its approved extensions.  See the [http://slicer.cdash.org/index.php?project=Slicer4 Slicer4 dashboard].&lt;br /&gt;
&lt;br /&gt;
These builds are generated every day on three different operating systems: Windows 7, Mac OS X, and Linux.  Because it is not legal to run any version of Mac OS X on a virtual machine (unless its host also runs Mac OS X), the host OS is Mac OS X, and the Windows and Linux builds are run within this machine as virtual machines.&lt;br /&gt;
&lt;br /&gt;
'''Dashboard build scripts are located on GitHub: https://github.com/Slicer/DashboardScripts'''&lt;br /&gt;
&lt;br /&gt;
==Required factory components==&lt;br /&gt;
&lt;br /&gt;
See [[Documentation/{{documentation/version}}/Developers/Tutorials/DashboardSetup|dashboard prerequisites]].&lt;br /&gt;
&lt;br /&gt;
=Host(s)=&lt;br /&gt;
&lt;br /&gt;
== factory-south.kitware ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
The factory machine runs Mac OS X 10.11.6 (15G31), El Capitan&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
&lt;br /&gt;
The compiler is the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Apple LLVM version 8.0.0 (clang-800.0.42.1)&lt;br /&gt;
Target: x86_64-apple-darwin15.6.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The virtual machines are run using the [http://www.parallels.com/ Parallels Desktop 11].&lt;br /&gt;
* Note that Parallels Desktop supports [http://kb.parallels.com/en/115487 OpenGL 2.1 only] (not higher)&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (10.171.2.166).&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
* 2 x 2.4 GHz 6-Core Intel Xeon&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
* Chipset Model: ATI Radeon HD 5770&lt;br /&gt;
* Type: GPU&lt;br /&gt;
* Bus PCIe&lt;br /&gt;
* VRAM (total): 1024MB&lt;br /&gt;
* EFI Driver Version: 01.00.436&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
* 8 x 8GB = 64 GB&lt;br /&gt;
* Type: DDR3 ECC&lt;br /&gt;
* Speed: 1333 MHz&lt;br /&gt;
&lt;br /&gt;
== overload.kitware and metroplex.kitware ==&lt;br /&gt;
&lt;br /&gt;
[[File:Kitware build servers metroplex-and-overload.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
* overload: Windows 7 Professional 64-bit&lt;br /&gt;
* metroplex: Red Hat Enterprise Linux WS v7.0&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* Dell Precision R7910 Motherboard,BW&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
&lt;br /&gt;
* Dual Intel® Xeon® Processor E5-2630 v3 (8C, 2.4GHz, Turbo, HT, 20M, 85W)&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
&lt;br /&gt;
* NVIDIA® Quadro® K620 2GB (DP, DL-DVI-I) (1 DP to SL-DVI adapter)&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
&lt;br /&gt;
* 32GB (8x4GB) 2133MHz DDR4 RDIMM ECC&lt;br /&gt;
&lt;br /&gt;
==== Storage ====&lt;br /&gt;
&lt;br /&gt;
* 2 X Integrated Intel 4 port AHCI SATA chipset controllers (tot 8 X 6.0Gb/s) SW RAID 0,1,5,10&lt;br /&gt;
* 1 x 1TB Dell 4*Drive PCIe x16 M.2 Solid State Drive Card (boot)&lt;br /&gt;
&lt;br /&gt;
=== overload.kitware ===&lt;br /&gt;
&lt;br /&gt;
* Windows 7 Professional - Service Pack 1 (Build 7601)&lt;br /&gt;
* Compiler:&lt;br /&gt;
** VS2013 Community Edition&lt;br /&gt;
** VS2015 Pro Edition&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via RDP from Kitware internal network (192.168.113.173).&lt;br /&gt;
&lt;br /&gt;
=== metroplex.kitware ===&lt;br /&gt;
&lt;br /&gt;
* Red Hat Enterprise Linux Workstation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Product ID:     71&lt;br /&gt;
Version:        7.2&lt;br /&gt;
Arch:           x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Docker community edition&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH from Kitware internal network (192.168.113.208).&lt;br /&gt;
&lt;br /&gt;
=Maintenance=&lt;br /&gt;
&lt;br /&gt;
== CUDA Install notes ==&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
wget https://developer.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-rhel7-10-1-local-10.1.168-418.67-1.0-1.x86_64.rpm&lt;br /&gt;
sudo rpm -i cuda-repo-rhel7-10-1-local-10.1.168-418.67-1.0-1.x86_64.rpm&lt;br /&gt;
sudo yum clean all&lt;br /&gt;
sudo yum install cuda&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Maintenance Guides ==&lt;br /&gt;
&lt;br /&gt;
See https://github.com/Slicer/DashboardScripts#maintenance-guides&lt;br /&gt;
&lt;br /&gt;
== Check Virtual Machines (factory-south-ubuntu) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;factory-south-win7 VM is shutdown, build have been moved to overload.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== When ===&lt;br /&gt;
&lt;br /&gt;
Every day (or as soon as issues are suspected)&lt;br /&gt;
&lt;br /&gt;
=== What ===&lt;br /&gt;
&lt;br /&gt;
* Try to:&lt;br /&gt;
** SSH into factory-south-ubuntu&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
** RDP into factory-south-win7&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If failure:&lt;br /&gt;
** Connect to &amp;lt;code&amp;gt;factory.south&amp;lt;/code&amp;gt; and check the state of the virtual machines. &lt;br /&gt;
&lt;br /&gt;
* Are the virtual machine unresponsive ?&lt;br /&gt;
&lt;br /&gt;
* '''No''' -&amp;gt; No further action required&lt;br /&gt;
* '''Yes''' -&amp;gt; Read below&lt;br /&gt;
** Kill both VMs&lt;br /&gt;
** Restart the host (factory-south)&lt;br /&gt;
** Manually start the virtual machines&lt;br /&gt;
** If needed, manually restarts the nightly build (See below)&lt;br /&gt;
&lt;br /&gt;
== Manually restart the night builds ==&lt;br /&gt;
&lt;br /&gt;
If the factory machines were restarted after the regular Nightly startup time, the nightly scripts will have to be explicitly started.&lt;br /&gt;
&lt;br /&gt;
* Linux: Run &amp;lt;code&amp;gt;/home/kitware/Dashboards/DashboardScripts/factory-south-ubuntu.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX: Run &amp;lt;code&amp;gt;/Users/kitware/DashboardScripts/factory.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Windows: Open &amp;quot;Task Scheduled&amp;quot; -&amp;gt; slicer -&amp;gt; right click on &amp;quot;Nightly&amp;quot; -&amp;gt; Start&lt;br /&gt;
&lt;br /&gt;
== Nightly Build startup times ==&lt;br /&gt;
&lt;br /&gt;
* Linux: 11:10pm&lt;br /&gt;
&lt;br /&gt;
* MacOSx: 11:10pm&lt;br /&gt;
&lt;br /&gt;
* Windows: Midnight&lt;br /&gt;
&lt;br /&gt;
= Retired Hosts =&lt;br /&gt;
&lt;br /&gt;
== factory.kitware (RETIRED) ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
The factory machine runs Mac OS X v10.6.8, Snow Leopard.  &lt;br /&gt;
* CMake version: 3.9.0 (before 2017/07/04 was 3.5.0-rc3 with [https://github.com/Kitware/CMake/compare/master...jcfr:osx-framework this patch])&lt;br /&gt;
** Since CMake release &amp;gt;= 3.6 is compiled only for  &amp;gt;= 10.7, a custom build of cmake was done with &amp;lt;code&amp;gt;-DCMAKE_INSTALL_PREFIX:PATH=/Users/kitware/Dashboards/Support/CMake-3.9.0.app/Contents&amp;lt;/code&amp;gt;  &lt;br /&gt;
* Compiler llvm-3.1. Note that the default compiled shipped with XCode 4.2 is not used. See [http://slicer-devel.65872.n3.nabble.com/MacOSX-factory-build-Transitioning-from-hybrid-quot-llvm-g-quot-to-quot-clang-quot-Update-to-Qt-4-8-6-tt4032198.html#a4032199 here] for more details.&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
&lt;br /&gt;
* Nightly generation of HomebrewCasks: [[Documentation/Nightly/Developers/Factory/HomeBrewInstall|Installation aborted]] (newer system is required for &amp;lt;tt&amp;gt;homebrew/cask-repair&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (192.168.113.230).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The output of &amp;lt;pre&amp;gt;crontab -l&amp;lt;/pre&amp;gt; on the factory machine is as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
55 23 * * * cd /Users/kitware/DashboardScripts &amp;amp;&amp;amp; /usr/bin/cvs -q up -dAP&lt;br /&gt;
0 0 * * * /Users/kitware/DashboardScripts/factory.sh &amp;gt; /Users/kitware/Dashboards/Logs/factory.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 9 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_CTKAppLauncher_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_CTKAppLauncher_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 9 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicer4_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicer4_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 10 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicerextensions_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicerextensions_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 10 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicerextensions_411_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicerextensions_411_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first tab is a command to update the cvs repository storing all of Kitware's dashboard scripts.  The second is a bash script which runs all of the nightly builds done by the Mac OS X factory.  The rest correspond to all the continuous builds.  An example of an entry in the bash script is as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
open -a x11&lt;br /&gt;
export DISPLAY=:0.0 # just DISPLAY=:0.0 without export is not enough&lt;br /&gt;
export PATH=:/usr/local/git/bin:$PATH&lt;br /&gt;
&lt;br /&gt;
CTEST=/Applications/CMake-3.5.0-rc3.app/Contents/bin/ctest&lt;br /&gt;
LOG_DIR=/Users/kitware/Dashboards/Logs&lt;br /&gt;
DASHBOARD_SCRIPTS_DIR=/Users/kitware/DashboardScripts&lt;br /&gt;
&lt;br /&gt;
# Nightly build of CTKAppLauncher&lt;br /&gt;
&amp;quot;$CTEST&amp;quot; -S $DASHBOARD_SCRIPTS_DIR/factory-64bits_CTKAppLauncher_release_nightly.cmake -VV -O $LOG_DIR/factory-64bits_CTKAppLauncher_release_nightly.log&lt;br /&gt;
&lt;br /&gt;
# Nightly build of slicer&lt;br /&gt;
&amp;quot;$CTEST&amp;quot; -S $DASHBOARD_SCRIPTS_DIR/factory-64bits_slicer4_release_nightly.cmake -VV -O $LOG_DIR/factory-64bits_slicer4_release_nightly.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The virtual  machines are run using the Parallels tool.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Mac Pro (Mid 2010)&amp;quot; which has the 64-bit kernel enabled by default. See [http://support.apple.com/kb/HT3770 here] for details.&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
* 2 x 2.93 GHz 6-Core Intel Xeon&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
* Chipset Model: ATI Radeon HD 5770&lt;br /&gt;
* Type: GPU&lt;br /&gt;
* Bus PCIe&lt;br /&gt;
* VRAM (total): 1024MB&lt;br /&gt;
* EFI Driver Version: 01.00.436&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
* 8 x 4GB = 32GB&lt;br /&gt;
* Type: DDR3 ECC&lt;br /&gt;
* Speed: 1333 MHz&lt;br /&gt;
&lt;br /&gt;
== factory-south-win7.kitware (RETIRED VM) ==&lt;br /&gt;
&lt;br /&gt;
* Tasks are scheduled using the Windows Task Scheduler (Start-&amp;gt;All Programs-&amp;gt;Accessories-&amp;gt;System Tools-&amp;gt;Task Scheduler)&lt;br /&gt;
* On Windows, instead of bash, we use batch scripts comprised of commands to call ctest to run all the nightly scripts.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;This VM is shutdown, build have been moved to overload.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Windows 7 Ultimate N - Service Pack 1 (Build 7601) on an x86 platform.&lt;br /&gt;
* CMake version: 3.5.0-rc3&lt;br /&gt;
* Compiler: VS2013 Community Edition&lt;br /&gt;
* Processors: 6&lt;br /&gt;
* Memory: 16GB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, keep in mind the [[Documentation/{{documentation/version}}/Developers/Tutorials/DashboardSetup#Remarks remarks]] about building a dashboard on a Windows machine.  These all apply here.&lt;br /&gt;
&lt;br /&gt;
Remote access: Via Remote Desktop from Kitware internal network (10.171.2.245).&lt;br /&gt;
&lt;br /&gt;
== factory-south-ubuntu.kitware (RETIRED) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;This VM is shutdown, build have been moved to metroplex.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ubuntu 10.04&lt;br /&gt;
* CMake version: 3.9.0 (before 2017/07/04 was 3.5.0-rc3)&lt;br /&gt;
* GCC version: Ubuntu 4.4.3-4ubuntu5.1&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
* Processors: 5&lt;br /&gt;
* Memory: 10GB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsb_release -a&lt;br /&gt;
No LSB modules are available.&lt;br /&gt;
Distributor ID:	Ubuntu&lt;br /&gt;
Description:	Ubuntu 10.04.4 LTS&lt;br /&gt;
Release:	10.04&lt;br /&gt;
Codename:	lucid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These two compilers are available:&lt;br /&gt;
&lt;br /&gt;
=== gcc/g++ 4.4.3 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/cpp-4.4&lt;br /&gt;
/usr/bin/g++-4.4&lt;br /&gt;
/usr/bin/gcc-4.4&lt;br /&gt;
/usr/bin/gcov-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-cpp-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-g++-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-gcc-4.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the PATH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ gcc --version&lt;br /&gt;
gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3&lt;br /&gt;
$ g++ --version&lt;br /&gt;
g++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== gcc/g++ 4.6.4 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/cpp-4.6&lt;br /&gt;
/usr/bin/g++-4.6&lt;br /&gt;
/usr/bin/gcc-4.6&lt;br /&gt;
/usr/bin/gcov-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-cpp-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-g++-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-gcc-4.6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installed following these instructions:&lt;br /&gt;
* https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test?field.series_filter=lucid&lt;br /&gt;
* http://superuser.com/questions/310809/how-can-i-update-gcc-to-the-latest-version-in-ubuntu-10-04/394811#394811&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo add-apt-repository ppa:ubuntu-toolchain-r/test&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install gcc-4.6&lt;br /&gt;
sudo apt-get install g++-4.6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remote access ===&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (10.171.2.113).&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Factory&amp;diff=61256</id>
		<title>Documentation/Nightly/Developers/Factory</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/Factory&amp;diff=61256"/>
		<updated>2019-06-26T17:35:19Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
=Overview=&lt;br /&gt;
&lt;br /&gt;
The Slicer factory machine is maintained by [http://www.kitware.com Kitware] and produces dashboard builds of many software projects, including nightly, continuous, and packaged versions of Slicer and its approved extensions.  See the [http://slicer.cdash.org/index.php?project=Slicer4 Slicer4 dashboard].&lt;br /&gt;
&lt;br /&gt;
These builds are generated every day on three different operating systems: Windows 7, Mac OS X, and Linux.  Because it is not legal to run any version of Mac OS X on a virtual machine (unless its host also runs Mac OS X), the host OS is Mac OS X, and the Windows and Linux builds are run within this machine as virtual machines.&lt;br /&gt;
&lt;br /&gt;
'''Dashboard build scripts are located on GitHub: https://github.com/Slicer/DashboardScripts'''&lt;br /&gt;
&lt;br /&gt;
==Required factory components==&lt;br /&gt;
&lt;br /&gt;
See [[Documentation/{{documentation/version}}/Developers/Tutorials/DashboardSetup|dashboard prerequisites]].&lt;br /&gt;
&lt;br /&gt;
=Host(s)=&lt;br /&gt;
&lt;br /&gt;
== factory-south.kitware ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
The factory machine runs Mac OS X 10.11.6 (15G31), El Capitan&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
&lt;br /&gt;
The compiler is the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Apple LLVM version 8.0.0 (clang-800.0.42.1)&lt;br /&gt;
Target: x86_64-apple-darwin15.6.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The virtual machines are run using the [http://www.parallels.com/ Parallels Desktop 11].&lt;br /&gt;
* Note that Parallels Desktop supports [http://kb.parallels.com/en/115487 OpenGL 2.1 only] (not higher)&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (10.171.2.166).&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
* 2 x 2.4 GHz 6-Core Intel Xeon&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
* Chipset Model: ATI Radeon HD 5770&lt;br /&gt;
* Type: GPU&lt;br /&gt;
* Bus PCIe&lt;br /&gt;
* VRAM (total): 1024MB&lt;br /&gt;
* EFI Driver Version: 01.00.436&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
* 8 x 8GB = 64 GB&lt;br /&gt;
* Type: DDR3 ECC&lt;br /&gt;
* Speed: 1333 MHz&lt;br /&gt;
&lt;br /&gt;
== overload.kitware and metroplex.kitware ==&lt;br /&gt;
&lt;br /&gt;
[[File:Kitware build servers metroplex-and-overload.jpg|600px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
&lt;br /&gt;
* overload: Windows 7 Professional 64-bit&lt;br /&gt;
* metroplex: Red Hat Enterprise Linux WS v7.0&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* Dell Precision R7910 Motherboard,BW&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
&lt;br /&gt;
* Dual Intel® Xeon® Processor E5-2630 v3 (8C, 2.4GHz, Turbo, HT, 20M, 85W)&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
&lt;br /&gt;
* NVIDIA® Quadro® K620 2GB (DP, DL-DVI-I) (1 DP to SL-DVI adapter)&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
&lt;br /&gt;
* 32GB (8x4GB) 2133MHz DDR4 RDIMM ECC&lt;br /&gt;
&lt;br /&gt;
==== Storage ====&lt;br /&gt;
&lt;br /&gt;
* 2 X Integrated Intel 4 port AHCI SATA chipset controllers (tot 8 X 6.0Gb/s) SW RAID 0,1,5,10&lt;br /&gt;
* 1 x 1TB Dell 4*Drive PCIe x16 M.2 Solid State Drive Card (boot)&lt;br /&gt;
&lt;br /&gt;
=== overload.kitware ===&lt;br /&gt;
&lt;br /&gt;
* Windows 7 Professional - Service Pack 1 (Build 7601)&lt;br /&gt;
* Compiler:&lt;br /&gt;
** VS2013 Community Edition&lt;br /&gt;
** VS2015 Pro Edition&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via RDP from Kitware internal network (192.168.113.173).&lt;br /&gt;
&lt;br /&gt;
=== metroplex.kitware ===&lt;br /&gt;
&lt;br /&gt;
* Red Hat Enterprise Linux Workstation&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Product ID:     71&lt;br /&gt;
Version:        7.2&lt;br /&gt;
Arch:           x86_64&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Docker community edition&lt;br /&gt;
&lt;br /&gt;
==== Remote access ====&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH from Kitware internal network (192.168.113.208).&lt;br /&gt;
&lt;br /&gt;
=Maintenance=&lt;br /&gt;
&lt;br /&gt;
== Maintenance Guides ==&lt;br /&gt;
&lt;br /&gt;
See https://github.com/Slicer/DashboardScripts#maintenance-guides&lt;br /&gt;
&lt;br /&gt;
== Check Virtual Machines (factory-south-ubuntu) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;factory-south-win7 VM is shutdown, build have been moved to overload.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== When ===&lt;br /&gt;
&lt;br /&gt;
Every day (or as soon as issues are suspected)&lt;br /&gt;
&lt;br /&gt;
=== What ===&lt;br /&gt;
&lt;br /&gt;
* Try to:&lt;br /&gt;
** SSH into factory-south-ubuntu&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
** RDP into factory-south-win7&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If failure:&lt;br /&gt;
** Connect to &amp;lt;code&amp;gt;factory.south&amp;lt;/code&amp;gt; and check the state of the virtual machines. &lt;br /&gt;
&lt;br /&gt;
* Are the virtual machine unresponsive ?&lt;br /&gt;
&lt;br /&gt;
* '''No''' -&amp;gt; No further action required&lt;br /&gt;
* '''Yes''' -&amp;gt; Read below&lt;br /&gt;
** Kill both VMs&lt;br /&gt;
** Restart the host (factory-south)&lt;br /&gt;
** Manually start the virtual machines&lt;br /&gt;
** If needed, manually restarts the nightly build (See below)&lt;br /&gt;
&lt;br /&gt;
== Manually restart the night builds ==&lt;br /&gt;
&lt;br /&gt;
If the factory machines were restarted after the regular Nightly startup time, the nightly scripts will have to be explicitly started.&lt;br /&gt;
&lt;br /&gt;
* Linux: Run &amp;lt;code&amp;gt;/home/kitware/Dashboards/DashboardScripts/factory-south-ubuntu.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX: Run &amp;lt;code&amp;gt;/Users/kitware/DashboardScripts/factory.sh&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Windows: Open &amp;quot;Task Scheduled&amp;quot; -&amp;gt; slicer -&amp;gt; right click on &amp;quot;Nightly&amp;quot; -&amp;gt; Start&lt;br /&gt;
&lt;br /&gt;
== Nightly Build startup times ==&lt;br /&gt;
&lt;br /&gt;
* Linux: 11:10pm&lt;br /&gt;
&lt;br /&gt;
* MacOSx: 11:10pm&lt;br /&gt;
&lt;br /&gt;
* Windows: Midnight&lt;br /&gt;
&lt;br /&gt;
= Retired Hosts =&lt;br /&gt;
&lt;br /&gt;
== factory.kitware (RETIRED) ==&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
The factory machine runs Mac OS X v10.6.8, Snow Leopard.  &lt;br /&gt;
* CMake version: 3.9.0 (before 2017/07/04 was 3.5.0-rc3 with [https://github.com/Kitware/CMake/compare/master...jcfr:osx-framework this patch])&lt;br /&gt;
** Since CMake release &amp;gt;= 3.6 is compiled only for  &amp;gt;= 10.7, a custom build of cmake was done with &amp;lt;code&amp;gt;-DCMAKE_INSTALL_PREFIX:PATH=/Users/kitware/Dashboards/Support/CMake-3.9.0.app/Contents&amp;lt;/code&amp;gt;  &lt;br /&gt;
* Compiler llvm-3.1. Note that the default compiled shipped with XCode 4.2 is not used. See [http://slicer-devel.65872.n3.nabble.com/MacOSX-factory-build-Transitioning-from-hybrid-quot-llvm-g-quot-to-quot-clang-quot-Update-to-Qt-4-8-6-tt4032198.html#a4032199 here] for more details.&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
&lt;br /&gt;
* Nightly generation of HomebrewCasks: [[Documentation/Nightly/Developers/Factory/HomeBrewInstall|Installation aborted]] (newer system is required for &amp;lt;tt&amp;gt;homebrew/cask-repair&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (192.168.113.230).&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The output of &amp;lt;pre&amp;gt;crontab -l&amp;lt;/pre&amp;gt; on the factory machine is as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
55 23 * * * cd /Users/kitware/DashboardScripts &amp;amp;&amp;amp; /usr/bin/cvs -q up -dAP&lt;br /&gt;
0 0 * * * /Users/kitware/DashboardScripts/factory.sh &amp;gt; /Users/kitware/Dashboards/Logs/factory.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 9 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_CTKAppLauncher_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_CTKAppLauncher_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 9 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicer4_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicer4_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 10 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicerextensions_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicerextensions_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
0 10 * * * /Applications/CMake\ 2.8-8.app/Contents/bin/ctest -V -VV -S /Users/kitware/DashboardScripts/factory-64bits_slicerextensions_411_release_continuous.cmake &amp;gt; /Users/kitware/Dashboards/Logs/factory-64bits_slicerextensions_411_release_continuous.log 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first tab is a command to update the cvs repository storing all of Kitware's dashboard scripts.  The second is a bash script which runs all of the nightly builds done by the Mac OS X factory.  The rest correspond to all the continuous builds.  An example of an entry in the bash script is as follows:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
open -a x11&lt;br /&gt;
export DISPLAY=:0.0 # just DISPLAY=:0.0 without export is not enough&lt;br /&gt;
export PATH=:/usr/local/git/bin:$PATH&lt;br /&gt;
&lt;br /&gt;
CTEST=/Applications/CMake-3.5.0-rc3.app/Contents/bin/ctest&lt;br /&gt;
LOG_DIR=/Users/kitware/Dashboards/Logs&lt;br /&gt;
DASHBOARD_SCRIPTS_DIR=/Users/kitware/DashboardScripts&lt;br /&gt;
&lt;br /&gt;
# Nightly build of CTKAppLauncher&lt;br /&gt;
&amp;quot;$CTEST&amp;quot; -S $DASHBOARD_SCRIPTS_DIR/factory-64bits_CTKAppLauncher_release_nightly.cmake -VV -O $LOG_DIR/factory-64bits_CTKAppLauncher_release_nightly.log&lt;br /&gt;
&lt;br /&gt;
# Nightly build of slicer&lt;br /&gt;
&amp;quot;$CTEST&amp;quot; -S $DASHBOARD_SCRIPTS_DIR/factory-64bits_slicer4_release_nightly.cmake -VV -O $LOG_DIR/factory-64bits_slicer4_release_nightly.log&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
The virtual  machines are run using the Parallels tool.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Mac Pro (Mid 2010)&amp;quot; which has the 64-bit kernel enabled by default. See [http://support.apple.com/kb/HT3770 here] for details.&lt;br /&gt;
&lt;br /&gt;
==== Processor ====&lt;br /&gt;
* 2 x 2.93 GHz 6-Core Intel Xeon&lt;br /&gt;
&lt;br /&gt;
==== Graphics Card ====&lt;br /&gt;
* Chipset Model: ATI Radeon HD 5770&lt;br /&gt;
* Type: GPU&lt;br /&gt;
* Bus PCIe&lt;br /&gt;
* VRAM (total): 1024MB&lt;br /&gt;
* EFI Driver Version: 01.00.436&lt;br /&gt;
&lt;br /&gt;
==== Memory ====&lt;br /&gt;
* 8 x 4GB = 32GB&lt;br /&gt;
* Type: DDR3 ECC&lt;br /&gt;
* Speed: 1333 MHz&lt;br /&gt;
&lt;br /&gt;
== factory-south-win7.kitware (RETIRED VM) ==&lt;br /&gt;
&lt;br /&gt;
* Tasks are scheduled using the Windows Task Scheduler (Start-&amp;gt;All Programs-&amp;gt;Accessories-&amp;gt;System Tools-&amp;gt;Task Scheduler)&lt;br /&gt;
* On Windows, instead of bash, we use batch scripts comprised of commands to call ctest to run all the nightly scripts.  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;This VM is shutdown, build have been moved to overload.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Windows 7 Ultimate N - Service Pack 1 (Build 7601) on an x86 platform.&lt;br /&gt;
* CMake version: 3.5.0-rc3&lt;br /&gt;
* Compiler: VS2013 Community Edition&lt;br /&gt;
* Processors: 6&lt;br /&gt;
* Memory: 16GB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, keep in mind the [[Documentation/{{documentation/version}}/Developers/Tutorials/DashboardSetup#Remarks remarks]] about building a dashboard on a Windows machine.  These all apply here.&lt;br /&gt;
&lt;br /&gt;
Remote access: Via Remote Desktop from Kitware internal network (10.171.2.245).&lt;br /&gt;
&lt;br /&gt;
== factory-south-ubuntu.kitware (RETIRED) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;This VM is shutdown, build have been moved to metroplex.kitware&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Ubuntu 10.04&lt;br /&gt;
* CMake version: 3.9.0 (before 2017/07/04 was 3.5.0-rc3)&lt;br /&gt;
* GCC version: Ubuntu 4.4.3-4ubuntu5.1&lt;br /&gt;
* Tasks scheduled using [http://en.wikipedia.org/wiki/Cron cron]&lt;br /&gt;
* Processors: 5&lt;br /&gt;
* Memory: 10GB&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ lsb_release -a&lt;br /&gt;
No LSB modules are available.&lt;br /&gt;
Distributor ID:	Ubuntu&lt;br /&gt;
Description:	Ubuntu 10.04.4 LTS&lt;br /&gt;
Release:	10.04&lt;br /&gt;
Codename:	lucid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These two compilers are available:&lt;br /&gt;
&lt;br /&gt;
=== gcc/g++ 4.4.3 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/cpp-4.4&lt;br /&gt;
/usr/bin/g++-4.4&lt;br /&gt;
/usr/bin/gcc-4.4&lt;br /&gt;
/usr/bin/gcov-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-cpp-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-g++-4.4&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-gcc-4.4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the PATH:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ gcc --version&lt;br /&gt;
gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3&lt;br /&gt;
$ g++ --version&lt;br /&gt;
g++ (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== gcc/g++ 4.6.4 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/usr/bin/cpp-4.6&lt;br /&gt;
/usr/bin/g++-4.6&lt;br /&gt;
/usr/bin/gcc-4.6&lt;br /&gt;
/usr/bin/gcov-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-cpp-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-g++-4.6&lt;br /&gt;
/usr/bin/x86_64-linux-gnu-gcc-4.6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Installed following these instructions:&lt;br /&gt;
* https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test?field.series_filter=lucid&lt;br /&gt;
* http://superuser.com/questions/310809/how-can-i-update-gcc-to-the-latest-version-in-ubuntu-10-04/394811#394811&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo add-apt-repository ppa:ubuntu-toolchain-r/test&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get update&lt;br /&gt;
sudo apt-get install gcc-4.6&lt;br /&gt;
sudo apt-get install g++-4.6&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Remote access ===&lt;br /&gt;
&lt;br /&gt;
Remote access: Via SSH or VNC from Kitware internal network (10.171.2.113).&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/ModuleExtensionListing/Extensions_by_category&amp;diff=61246</id>
		<title>Documentation/Nightly/ModuleExtensionListing/Extensions by category</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/ModuleExtensionListing/Extensions_by_category&amp;diff=61246"/>
		<updated>2019-06-25T19:12:47Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* Extensions by category */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
* [[#Extensions_by_category|Extensions by category]]&lt;br /&gt;
= Extensions by category =&lt;br /&gt;
33 categories:&lt;br /&gt;
* [[#Extensions_by_category_Astronomy|Astronomy]]&lt;br /&gt;
* [[#Extensions_by_category_Cardiac|Cardiac]]&lt;br /&gt;
* [[#Extensions_by_category_Cardiac_MRI_toolkit|Cardiac MRI toolkit]]&lt;br /&gt;
* [[#Extensions_by_category_Chest_Imaging_Platform|Chest Imaging Platform]]&lt;br /&gt;
* [[#Extensions_by_category_Converters|Converters]]&lt;br /&gt;
* [[#Extensions_by_category_Developer_Tools|Developer Tools]]&lt;br /&gt;
* [[#Extensions_by_category_DICOM|DICOM]]&lt;br /&gt;
* [[#Extensions_by_category_Diffusion|Diffusion]]&lt;br /&gt;
* [[#Extensions_by_category_Digital_Pathology|Digital Pathology]]&lt;br /&gt;
* [[#Extensions_by_category_Editor_Effects|Editor Effects]]&lt;br /&gt;
* [[#Extensions_by_category_Examples|Examples]]&lt;br /&gt;
* [[#Extensions_by_category_Exporter|Exporter]]&lt;br /&gt;
* [[#Extensions_by_category_Filtering|Filtering]]&lt;br /&gt;
* [[#Extensions_by_category_IGT|IGT]]&lt;br /&gt;
* [[#Extensions_by_category_Informatics|Informatics]]&lt;br /&gt;
* [[#Extensions_by_category_Libraries|Libraries]]&lt;br /&gt;
* [[#Extensions_by_category_Machine_Learning|Machine Learning]]&lt;br /&gt;
* [[#Extensions_by_category_Mesh_Generation|Mesh Generation]]&lt;br /&gt;
* [[#Extensions_by_category_Microscopy|Microscopy]]&lt;br /&gt;
* [[#Extensions_by_category_Nuclear_Medicine|Nuclear Medicine]]&lt;br /&gt;
* [[#Extensions_by_category_Quantification|Quantification]]&lt;br /&gt;
* [[#Extensions_by_category_Radiotherapy|Radiotherapy]]&lt;br /&gt;
* [[#Extensions_by_category_Registration|Registration]]&lt;br /&gt;
* [[#Extensions_by_category_Remote|Remote]]&lt;br /&gt;
* [[#Extensions_by_category_Scoliosis|Scoliosis]]&lt;br /&gt;
* [[#Extensions_by_category_Segmentation|Segmentation]]&lt;br /&gt;
* [[#Extensions_by_category_Sequences|Sequences]]&lt;br /&gt;
* [[#Extensions_by_category_Shape_Analysis|Shape Analysis]]&lt;br /&gt;
* [[#Extensions_by_category_Tractography|Tractography]]&lt;br /&gt;
* [[#Extensions_by_category_Training|Training]]&lt;br /&gt;
* [[#Extensions_by_category_Vascular_Modeling_Toolkit|Vascular Modeling Toolkit]]&lt;br /&gt;
* [[#Extensions_by_category_Virtual_Reality|Virtual Reality]]&lt;br /&gt;
* [[#Extensions_by_category_Web_System_Tools|Web System Tools]]&lt;br /&gt;
* [[#Extensions_by_category_Wizards|Wizards]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Astronomy'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Astronomy ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/SlicerAstro|SlicerAstro]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Cardiac'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Cardiac ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/SlicerHeart|SlicerHeart]]&lt;br /&gt;
* [http://brainsia.github.io/CardiacAgatstonMeasures/ CardiacAgatstonMeasures]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Cardiac_MRI_toolkit'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Cardiac MRI toolkit ==&lt;br /&gt;
* [http://capulet.med.utah.edu/namic/cmrslicer/ Cardiac_MRI_Toolkit]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Chest_Imaging_Platform'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Chest Imaging Platform ==&lt;br /&gt;
* [http://www.chestimagingplatform.org Chest_Imaging_Platform]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Converters'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Converters ==&lt;br /&gt;
* [http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/PETDICOM PETDICOMExtension]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Developer_Tools'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Developer Tools ==&lt;br /&gt;
* [https://github.com/gregsharp/Slicer-CUDAProbe CUDA Probe]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/DeveloperToolsForExtensions|DeveloperToolsForExtensions]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/DebuggingTools|DebuggingTools]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/ImageMaker|ImageMaker]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/MatlabBridge|MatlabBridge]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_DICOM'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== DICOM ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/DCMQI|DCMQI]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Diffusion'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Diffusion ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/SlicerDMRI|SlicerDMRI]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/ResampleDTIlogEuclidean|ResampleDTIlogEuclidean]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Digital_Pathology'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Digital Pathology ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/SlicerPathology|SlicerPathology]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Editor_Effects'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Editor Effects ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/WindowLevelEffect|WindowLevelEffect]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Examples'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Examples ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/OpenCVExample|OpenCVExample]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Exporter'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Exporter ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/SlicerToKiwiExporter|SlicerToKiwiExporter]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Filtering'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Filtering ==&lt;br /&gt;
* [https://kitwaremedical.github.io/SlicerITKUltrasoundDoc/ SlicerITKUltrasound]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_IGT'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== IGT ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/GyroGuide|GyroGuide]]&lt;br /&gt;
* [http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/TrackerStabilizer TrackerStabilizer]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/CornerAnnotation|CornerAnnotation]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/SliceTracker|SliceTracker]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/PercutaneousApproachAnalysis|PercutaneousApproachAnalysis]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/NeedleFinder|NeedleFinder]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/SlicerIGT|SlicerIGT]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/iGyne|iGyne]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/ResectionPlanner|ResectionPlanner]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Informatics'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Informatics ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/CurveMaker|CurveMaker]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/LongitudinalPETCT|LongitudinalPETCT]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/mpReview|mpReview]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/TCIABrowser|TCIABrowser]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/SlicerProstate|SlicerProstate]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/QuantitativeReporting|QuantitativeReporting]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Libraries'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Libraries ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/SlicerOpenCV|SlicerOpenCV]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Machine_Learning'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Machine Learning ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/DeepInfer|DeepInfer]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Mesh_Generation'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mesh Generation ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/CBC_3D_I2MConversion|CBC_3D_I2MConversion]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/CleaverExtension|CleaverExtension]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Microscopy'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Microscopy ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/IASEM|IASEM]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Nuclear_Medicine'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Nuclear Medicine ==&lt;br /&gt;
* [http://gti-fing.github.io/SlicerPetSpectAnalysis PetSpectAnalysis]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Quantification'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Quantification ==&lt;br /&gt;
* [http://slicer.org/slicerWiki/index.php/Documentation/Nightly/Modules/DSC_MRI_Analysis DSCMRIAnalysis]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/ModelToModelDistance|ModelToModelDistance]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/T1Mapping|T1Mapping]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/ShapeQuantifier|ShapeQuantifier]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/DiceComputation|DiceComputation]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/PETLiverUptakeMeasurement|PETLiverUptakeMeasurement]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/PET-IndiC|PET-IndiC]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/PkModeling|PkModeling]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/ShapeVariationAnalyzer|ShapeVariationAnalyzer]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Radiotherapy'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Radiotherapy ==&lt;br /&gt;
* [http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Modules/FilmDosimetry FilmDosimetryAnalysis]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/MarginCalculator|MarginCalculator]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/SlicerRT|SlicerRT]]&lt;br /&gt;
* [http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Modules/GelDosimetry GelDosimetryAnalysis]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Registration'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Registration ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/ScatteredTransform|ScatteredTransform]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/CMFreg|CMFreg]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/PBNRR|PBNRR]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/MultiLevelRegistration|MultiLevelRegistration]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Remote'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/XNATSlicer|XNATSlicer]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Scoliosis'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Scoliosis ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/Scoliosis|Scoliosis]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Segmentation'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Segmentation ==&lt;br /&gt;
* [http://publish.uwo.ca/~dchen285/GraphCutSegment/GraphCutSegment.html GraphCutSegment]&lt;br /&gt;
* [http://www.nitrc.org/projects/abc ABC]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/ROBEXBrainExtraction|ROBEXBrainExtraction]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/SwissSkullStripper|SwissSkullStripper]]&lt;br /&gt;
* [http://wiki.slicer.org/slicerWiki/index.php/Documentation/Nightly/Modules/CarreraSliceInteractiveSegmenter CarreraSlice]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/SkullStripper|SkullStripper]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/PETTumorSegmentation|PETTumorSegmentation]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/LAScarSegmenter|LAScarSegmenter]]&lt;br /&gt;
* [https://github.com/lassoan/SlicerSegmentEditorExtraEffects SegmentEditorExtraEffects]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/OpenCAD|OpenCAD]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/IntensitySegmenter|IntensitySegmenter]]&lt;br /&gt;
* [https://github.com/Tomnl/Slicer-Wasp Wasp]&lt;br /&gt;
* [http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/AirwaySegmentation AirwaySegmentation]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/SobolevSegmenter|SobolevSegmenter]]&lt;br /&gt;
* [https://www.slicer.org/slicerWiki/index.php/Documentation/4.3/Modules/FastGrowCut FastGrowCutEffect]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/VolumeClip|VolumeClip]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Sequences'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Sequences ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/Sequences|Sequences]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Shape_Analysis'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Shape Analysis ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/MeshToLabelMap|MeshToLabelMap]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/Q3DC|Q3DC]]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/EasyClip|EasyClip]]&lt;br /&gt;
* [http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/PickAndPaint PickAndPaintExtension]&lt;br /&gt;
* [http://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/MeshStatistics MeshStatisticsExtension]&lt;br /&gt;
* [https://www.slicer.org/wiki/Documentation/Nightly/Extensions/SpharmPdm SPHARM-PDM]&lt;br /&gt;
* [[Documentation/Nightly/Extensions/SkeletalRepresentation|SkeletalRepresentation]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Tractography'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tractography ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/UKFTractography|UKFTractography]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Training'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Training ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/PerkTutor|PerkTutor]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Vascular_Modeling_Toolkit'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Vascular Modeling Toolkit ==&lt;br /&gt;
* [http://slicer.vmtk.org/ VMTK]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Virtual_Reality'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
==Virtual Reality==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/SlicerVirtualReality|SlicerVirtualReality]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Web_System_Tools'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Web System Tools ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/DatabaseInteractor|DatabaseInteractor]]&lt;br /&gt;
&amp;lt;span id='Extensions_by_category_Wizards'&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
== Wizards ==&lt;br /&gt;
* [[Documentation/Nightly/Extensions/ChangeTracker|ChangeTracker]]&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/ModulesAndEvents&amp;diff=44567</id>
		<title>Documentation/Labs/ModulesAndEvents</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/ModulesAndEvents&amp;diff=44567"/>
		<updated>2016-01-06T16:23:56Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page keeps track of Greg's notes on how to hook up module events&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
* Getting things working in Slicer can be hairy&lt;br /&gt;
* There is not always the right kind of documentation for what you want to do.&lt;br /&gt;
* The goal of this page is to take some notes on this process for eventual inclusion in the developer documentation.&lt;br /&gt;
* This is intermediate-level documentation&lt;br /&gt;
* Scope is limited to C++ development&lt;br /&gt;
&lt;br /&gt;
== MRML nodes ==&lt;br /&gt;
&lt;br /&gt;
* MRML nodes are used to store persistent state.  You need to use MRML nodes if you want to save and restore slicer scenes.&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
* MRML nodes can emit events.  Logics don't emit events ?&lt;br /&gt;
* Either MRML nodes or logic classes can receive events.&lt;br /&gt;
* To receive an event, define a function called ProcessMRMLEvents(). This function receives all requested events as an (object, event id) pair. The event id might or might not be unique.&lt;br /&gt;
** If I make my own events, how to I ensure they are unique?&lt;br /&gt;
&lt;br /&gt;
== Logic classes ==&lt;br /&gt;
&lt;br /&gt;
* Logic classes implement processes.  They serve purposes such as:&lt;br /&gt;
** Implement helper logic for widget classes, so that all business logic can be performed without the need of a GUI&lt;br /&gt;
** Implement filter-type logic, which manipulates MRML nodes without need for persistent state&lt;br /&gt;
* There may be multiple logic classes associated with a single MRML node&lt;br /&gt;
&lt;br /&gt;
== Widget classes ==&lt;br /&gt;
&lt;br /&gt;
* What is the difference between qvtkConnect and qvtkReconnect??&lt;br /&gt;
&lt;br /&gt;
== Parameter nodes ==&lt;br /&gt;
&lt;br /&gt;
* These should be a serializable copy of the widget state&lt;br /&gt;
&lt;br /&gt;
== MRML nodes and multithreading ==&lt;br /&gt;
&lt;br /&gt;
* Slicer is implemented as a single threaded process&lt;br /&gt;
* Therefore, there is no need to implement transaction logic to ensure atomicity when modifying multiple MRML nodes&lt;br /&gt;
&lt;br /&gt;
== Best practices for hookup (?) ==&lt;br /&gt;
&lt;br /&gt;
Between parameter node and widget&lt;br /&gt;
* signal from UI element received by module widget&lt;br /&gt;
* module widget updates module MRML parameter node (directly, or via module logic) function call&lt;br /&gt;
** the widget normally gets modified events from parameter node, and calls updateWidgetFromMRML()&lt;br /&gt;
** DisableModifiedEventOn()/Off() can be used to prevent MRML parameter node from emitting modified events back to widget&lt;br /&gt;
&lt;br /&gt;
From observed node (Markup Node) to observing MRML node (Beam Node) and back to widget&lt;br /&gt;
* Note: you can observe without referencing and vice versa&lt;br /&gt;
* Markup Node fires Modified event (or custom event)&lt;br /&gt;
* Beam node receives event in ProcessMRMLEvents()&lt;br /&gt;
** Should Nodes receive events or should this be logic&lt;br /&gt;
* Beam node fires event using Modified() (or InvokeEvent())&lt;br /&gt;
* module logic receives event&lt;br /&gt;
* module logic fires event to module widget&lt;br /&gt;
* module widget updates UI&lt;br /&gt;
** Use blockSignals() to prevent UI element from emitting signals&lt;br /&gt;
* module widget updates parameter node (if needed)&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/ModulesAndEvents&amp;diff=44566</id>
		<title>Documentation/Labs/ModulesAndEvents</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/ModulesAndEvents&amp;diff=44566"/>
		<updated>2016-01-06T15:43:04Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page keeps track of Greg's notes on how to hook up module events&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
* Getting things working in Slicer can be hairy&lt;br /&gt;
* There is not always the right kind of documentation for what you want to do.&lt;br /&gt;
* The goal of this page is to take some notes on this process for eventual inclusion in the developer documentation.&lt;br /&gt;
* This is intermediate-level documentation&lt;br /&gt;
* Scope is limited to C++ development&lt;br /&gt;
&lt;br /&gt;
== MRML nodes ==&lt;br /&gt;
&lt;br /&gt;
* MRML nodes are used to store persistent state.  You need to use MRML nodes if you want to save and restore slicer scenes.&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
* MRML nodes can emit events.  Logics don't emit events ?&lt;br /&gt;
* Either MRML nodes or logic classes can receive events.&lt;br /&gt;
* To receive an event, define a function called ProcessMRMLEvents(). This function receives all requested events as an (object, event id) pair. The event id might or might not be unique.&lt;br /&gt;
** If I make my own events, how to I ensure they are unique?&lt;br /&gt;
&lt;br /&gt;
== Logic classes ==&lt;br /&gt;
&lt;br /&gt;
* Logic classes implement processes.  They serve purposes such as:&lt;br /&gt;
** Implement helper logic for widget classes, so that all business logic can be performed without the need of a GUI&lt;br /&gt;
** Implement filter-type logic, which manipulates MRML nodes without need for persistent state&lt;br /&gt;
* There may be multiple logic classes associated with a single MRML node&lt;br /&gt;
&lt;br /&gt;
== Widget classes ==&lt;br /&gt;
&lt;br /&gt;
* What is the difference between qvtkConnect and qvtkReconnect??&lt;br /&gt;
&lt;br /&gt;
== MRML nodes and multithreading ==&lt;br /&gt;
&lt;br /&gt;
* Slicer is implemented as a single threaded process&lt;br /&gt;
* Therefore, there is no need to implement transaction logic to ensure atomicity when modifying multiple MRML nodes&lt;br /&gt;
&lt;br /&gt;
== Best practices for hookup (?) ==&lt;br /&gt;
&lt;br /&gt;
* signal from UI element received by module widget&lt;br /&gt;
* module widget updates module MRML node via module logic function call (no events)&lt;br /&gt;
* module MRML node updates custom MRML node via logic function call (no events)&lt;br /&gt;
* custom MRML node fires Modified event (or custom event)&lt;br /&gt;
* widget logic (or widget MRML?) receives event&lt;br /&gt;
* widget logic updates widget MRML (if needed)&lt;br /&gt;
* widget logic (or widget MRML?) fires event to module widget&lt;br /&gt;
* module widget updates UI&lt;br /&gt;
** How does this not re-fire the above loop?&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/ModulesAndEvents&amp;diff=44565</id>
		<title>Documentation/Labs/ModulesAndEvents</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/ModulesAndEvents&amp;diff=44565"/>
		<updated>2016-01-06T15:27:17Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page keeps track of Greg's notes on how to hook up module events&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
* Getting things working in Slicer can be hairy&lt;br /&gt;
* There is not always the right kind of documentation for what you want to do.&lt;br /&gt;
* The goal of this page is to take some notes on this process for eventual inclusion in the developer documentation.&lt;br /&gt;
* This is intermediate-level documentation&lt;br /&gt;
* Scope is limited to C++ development&lt;br /&gt;
&lt;br /&gt;
== MRML nodes ==&lt;br /&gt;
&lt;br /&gt;
* MRML nodes are used to store persistent state.  You need to use MRML nodes if you want to save and restore slicer scenes.&lt;br /&gt;
* MRML nodes can emit events.  To emit an event, do ??&lt;br /&gt;
* MRML nodes can receive events.  To receive an event, define a function called ProcessMRMLEvents(). This function receives all requested events as an (object, event id) pair. The event id might or might not be unique.&lt;br /&gt;
&lt;br /&gt;
== Logic classes ==&lt;br /&gt;
&lt;br /&gt;
* Logic classes implement processes.  They serve purposes such as:&lt;br /&gt;
** Implement helper logic for widget classes, so that all business logic can be performed without the need of a GUI&lt;br /&gt;
** Implement filter-type logic, which manipulates MRML nodes without need for persistent state&lt;br /&gt;
* There may be multiple logic classes associated with a single MRML node&lt;br /&gt;
&lt;br /&gt;
== Widget classes ==&lt;br /&gt;
&lt;br /&gt;
* What is the difference between qvtkConnect and qvtkReconnect??&lt;br /&gt;
&lt;br /&gt;
== MRML nodes and multithreading ==&lt;br /&gt;
&lt;br /&gt;
* Slicer is implemented as a single threaded process&lt;br /&gt;
* Therefore, there is no need to implement transaction logic to ensure atomicity when modifying multiple MRML nodes&lt;br /&gt;
&lt;br /&gt;
== Best practices for hookup (?) ==&lt;br /&gt;
&lt;br /&gt;
* signal from UI element received by module widget&lt;br /&gt;
* module widget updates module MRML node via module logic function call (no events)&lt;br /&gt;
* module MRML node updates custom MRML node via logic function call (no events)&lt;br /&gt;
* custom MRML node fires Modified event (or custom event)&lt;br /&gt;
* widget logic (or widget MRML?) receives event&lt;br /&gt;
* widget logic updates widget MRML (if needed)&lt;br /&gt;
* widget logic (or widget MRML?) fires event to module widget&lt;br /&gt;
* module widget updates UI&lt;br /&gt;
** How does this not re-fire the above loop?&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs/ModulesAndEvents&amp;diff=44564</id>
		<title>Documentation/Labs/ModulesAndEvents</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs/ModulesAndEvents&amp;diff=44564"/>
		<updated>2016-01-06T15:14:41Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: Created page with &amp;quot;This page keeps track of Greg's notes on how to hook up module events  __TOC__  == Motivation ==  * Getting things working in Slicer can be hairy * There is not always the rig...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page keeps track of Greg's notes on how to hook up module events&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Motivation ==&lt;br /&gt;
&lt;br /&gt;
* Getting things working in Slicer can be hairy&lt;br /&gt;
* There is not always the right kind of documentation for what you want to do.&lt;br /&gt;
* The goal of this page is to take some notes on this process for eventual inclusion in the developer documentation.&lt;br /&gt;
* Scope is limited to C++ development&lt;br /&gt;
&lt;br /&gt;
== MRML nodes ==&lt;br /&gt;
&lt;br /&gt;
* MRML nodes are used to store persistent state.  You need to use MRML nodes if you want to save and restore slicer scenes.&lt;br /&gt;
* MRML nodes can emit events.  To emit an event, do ??&lt;br /&gt;
* MRML nodes can receive events.  To receive an event, define a function called ProcessMRMLEvents(). This function receives all requested events as an (object, event id) pair. The event id might or might not be unique.&lt;br /&gt;
&lt;br /&gt;
== Logic classes ==&lt;br /&gt;
&lt;br /&gt;
* Logic classes implement processes.  They serve purposes such as:&lt;br /&gt;
** Implement helper logic for widget classes, so that all business logic can be performed without the need of a GUI&lt;br /&gt;
** Implement filter-type logic, which manipulates MRML nodes without need for persistent state&lt;br /&gt;
* There may be multiple logic classes associated with a single MRML node&lt;br /&gt;
&lt;br /&gt;
== MRML nodes and multithreading ==&lt;br /&gt;
&lt;br /&gt;
* Slicer is implemented as a single threaded process&lt;br /&gt;
* Therefore, there is no need to implement transaction logic to ensure atomicity when modifying multiple MRML nodes&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Labs&amp;diff=44563</id>
		<title>Documentation/Labs</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Labs&amp;diff=44563"/>
		<updated>2016-01-06T14:59:04Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: Add documentation notes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the place where we will keep track of our experiments and projects.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
= On-going =&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/Segmentations|Segmentations]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/DeprecatedModules|DeprecatedModules extension]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/StartupTimeImprovement|Slicer startup time improvement]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/FHSCompliantDirectoryStructure|FHS compliant directory structure]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/FiberTractMeasurementAndVisualization|Fiber Tract measurement and visualization]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/VTKWidgets|VTK Widgets improvements]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/CLIInfrastructureCleanupAndRefactoring|CLI infrastructure cleanup and refactoring]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/SlicerConfigAndUseSlicerTweaks|SlicerConfig and UseSlicer Tweaks]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/UpgradingCompilerInfrastructure|Upgrading Compiler Infrastructure]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/ViewInfrastructureImprovements| View Infrastructure Improvements]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/CDash Improvements|CDash Improvements]]&lt;br /&gt;
&lt;br /&gt;
== Libraries ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/Qt5|Migration to Qt5]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/OpenCV|Integration with OpenCV]]&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/CallingPythonMethodsFromCpp|Calling Python methods from Cpp]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/IPython|IPython]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/Pip|Pip]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/PythonCondaBuild|Python conda build]]&lt;br /&gt;
&lt;br /&gt;
== Compilers &amp;amp; IDE ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/Ninja|Ninja]]&lt;br /&gt;
&lt;br /&gt;
== Virtual Machines ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/GPU Virtualization|GPU Virtualization]]&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/DocumentationImprovments|Documentation Improvements (Wiki, website, ...)]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/ModulesAndEvents|Intermediate documentation for developers]]&lt;br /&gt;
&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/IPythonSlicerTutorials|IPython Slicer Tutorials]]&lt;br /&gt;
&lt;br /&gt;
== Source code management ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/TransitionToGit|Transition to Git]]&lt;br /&gt;
&lt;br /&gt;
== Extension ==&lt;br /&gt;
&lt;br /&gt;
* [[{{FULLPAGENAME}}/ExtensionsFrameworkRoadmap|Extensions Framework Roadmap]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/CustomSlicerGenerator|Custom Slicer Generator]]&lt;br /&gt;
&lt;br /&gt;
== Functionalities ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/Video Support|Video support]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/FlyThroughNavigation|Fly-through Navigation]]&lt;br /&gt;
&lt;br /&gt;
= Completed =&lt;br /&gt;
&lt;br /&gt;
* [[Slicer4:Developers|Developer Projects]]&lt;br /&gt;
&lt;br /&gt;
== Extension ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/EasyExtensionContribution|Easy Extension Contribution]] - See [[Documentation/Nightly/Developers/ExtensionWizard|ExtensionWizard]]&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/CMake-ified Python|CMake-ified Python]] - See [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=21911 r21911], [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=21912 r21912], [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=21913 r21913]&lt;br /&gt;
* [[{{FULLPAGENAME}}/NonlinearTransforms|Full support for non-linear transforms]]&lt;br /&gt;
&lt;br /&gt;
== Libraries ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/ITKv4|ITKv4]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/Qt484|Qt484]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/VTK6|VTK6]]&lt;br /&gt;
&lt;br /&gt;
== Python ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/DevelopmentWithGit|Development with Git]] - See [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=21863 r21863], [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=21867 r21867], [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=21869 r21869], [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=21879 r21879], [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=21891 r21891]&lt;br /&gt;
* [[{{FULLPAGENAME}}/PythonObserverCallbacks|Python observer callbacks]]&lt;br /&gt;
&lt;br /&gt;
== Compilers &amp;amp; IDE ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/VS2012|VS2012]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/NUMPY171|Support for Numpy 1.7.1]]&lt;br /&gt;
&lt;br /&gt;
== Modules ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/SimpleFilters|Simple Filters]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/Editor|Editor]]&lt;br /&gt;
&lt;br /&gt;
== Tutorials testing ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/TutorialTesting/4.3-Release|4.3 Release]]&lt;br /&gt;
&lt;br /&gt;
== Debug ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/BRAINS_and_ITKv4_issue|BRAINS and ITKv4 issue]]&lt;br /&gt;
&lt;br /&gt;
== Internals ==&lt;br /&gt;
* [[{{FULLPAGENAME}}/MultiDimensional Data Management|MultiDimensional Data Management]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/DICOMExport|DICOM Export]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/SliceViewAnnotations|Slice View Annotations]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/SubjectHierarchy|Subject hierarchy module and plugins]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/I18N|Internationalization]]&lt;br /&gt;
* [[{{FULLPAGENAME}}/Units|Units]]&lt;br /&gt;
* [https://github.com/TubeTK/SlicerExecutionModel/wiki/SlicerExecutionModel-Parameter-Serialization SlicerExecutionModel Parameter Serialization]&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/ScriptRepository&amp;diff=44158</id>
		<title>Documentation/Nightly/ScriptRepository</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/ScriptRepository&amp;diff=44158"/>
		<updated>2015-11-20T20:33:34Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Community-contributed modules=&lt;br /&gt;
&lt;br /&gt;
Usage: save the .py file to a directory, add the directory to the additional module paths in the Slicer application settings (choose in the menu: Edit / Application settings, click Modules, click &amp;gt;&amp;gt; next to Additional module paths, click Add, and choose the .py file's location).&lt;br /&gt;
&lt;br /&gt;
==Filters==&lt;br /&gt;
* [https://raw.github.com/pieper/VolumeMasker/master/VolumeMasker.py VolumeMasker.py]: Update a target volume with the results of setting all input volume voxels to 0 except for those that correspond to a selected label value in an input label map (Used for example in the volume rendering in [https://www.youtube.com/watch?v=dfu2gugHLHs this video).&lt;br /&gt;
&lt;br /&gt;
==DICOM==&lt;br /&gt;
* [https://gist.github.com/pieper/6186477 dicom header browser] to easily scroll through dicom files using dcmdump.&lt;br /&gt;
* [https://subversion.assembla.com/svn/slicerrt/trunk/SlicerRt/src/BatchProcessing SlicerRT batch processing] to batch convert RT structure sets to labelmap NRRD files.&lt;br /&gt;
&lt;br /&gt;
==Informatics==&lt;br /&gt;
* [https://subversion.assembla.com/svn/slicerrt/trunk/SlicerRt/sandbox/MarkupsInfoModule/MarkupsInfo.py MarkupsInfo.py]: Compute the total length between all the points of a markup list.&lt;br /&gt;
* [https://subversion.assembla.com/svn/slicerrt/trunk/SlicerRt/sandbox/LineProfile/LineProfile.py LineProfile.py]: Compute intensity profile in a volume along a line.&lt;br /&gt;
&lt;br /&gt;
=Community-contributed examples=&lt;br /&gt;
&lt;br /&gt;
Usage: Copy-paste the shown code lines or linked .py file contents into Python console in Slicer.&lt;br /&gt;
&lt;br /&gt;
==Capture==&lt;br /&gt;
* Get a MRML node in the scene based on the node name and call methods of that object. For the MRHead sample data:&lt;br /&gt;
  vol=slicer.util.getNode('MR*')&lt;br /&gt;
  vol.GetImageData().GetDimensions()&lt;br /&gt;
* Capture the full Slicer screen and save it into a file&lt;br /&gt;
  img = qt.QPixmap.grabWidget(slicer.util.mainWindow()).toImage()&lt;br /&gt;
  img.save('c:/tmp/test.png')&lt;br /&gt;
* [https://subversion.assembla.com/svn/slicerrt/trunk/SlicerRt/sandbox/CaptureRotationVideo/CaptureRotationVideo.py CaptureRotationVideo.py]: Capture a video of the scene rotating in the 3D view&lt;br /&gt;
&lt;br /&gt;
==Launching Slicer==&lt;br /&gt;
* How to open an .mrb file with Slicer at the command line?&lt;br /&gt;
  Slicer.exe --python-code &amp;quot;slicer.util.loadScene( 'f:/2013-08-23-Scene.mrb' )&amp;quot;&lt;br /&gt;
* How to run a script in the Slicer environment in batch mode (without showing any graphical user interface)?&lt;br /&gt;
  Slicer.exe --python-code &amp;quot;doSomething; doSomethingElse; etc.&amp;quot; --testing --no-splash --no-main-window&lt;br /&gt;
&lt;br /&gt;
==DICOM==&lt;br /&gt;
* How to access tags of DICOM images imported into Slicer? For example, to print the first patient's first study's first series' &amp;quot;0020,0032&amp;quot; field:&lt;br /&gt;
  db=slicer.dicomDatabase&lt;br /&gt;
  patientList=db.patients()&lt;br /&gt;
  studyList=db.studiesForPatient(patientList[0])&lt;br /&gt;
  seriesList=db.seriesForStudy(studyList[0])&lt;br /&gt;
  fileList=db.filesForSeries(seriesList[0])&lt;br /&gt;
  print db.fileValue(fileList[0],'0020,0032')&lt;br /&gt;
&lt;br /&gt;
* How to access tag of a volume loaded from DICOM? For example, get the patient position stored in a volume:&lt;br /&gt;
  volumeName='2: ENT IMRT'&lt;br /&gt;
  n=slicer.util.getNode(volumeName)&lt;br /&gt;
  instUids=n.GetAttribute('DICOM.instanceUIDs').split()&lt;br /&gt;
  filename=slicer.dicomDatabase.fileForInstance(instUids[0])&lt;br /&gt;
  print slicer.dicomDatabase.fileValue(filename,'0018,5100')&lt;br /&gt;
&lt;br /&gt;
* How to access tag of an item in the Subject Hierachy tree? For example, get the content time tag of a structure set:&lt;br /&gt;
  rtStructName = '3: RTSTRUCT: PROS'&lt;br /&gt;
  rtStructNode = slicer.util.getNode(rtStructName)&lt;br /&gt;
  rtStructSubjectHierarchyNode = slicer.vtkMRMLSubjectHierarchyNode.GetAssociatedSubjectHierarchyNode(rtStructNode)&lt;br /&gt;
  ctSliceInstanceUids = rtStructSubjectHierarchyNode.GetAttribute('DICOM.ReferencedInstanceUIDs').split()&lt;br /&gt;
  filename = slicer.dicomDatabase.fileForInstance(ctSliceInstanceUids[0])&lt;br /&gt;
  print slicer.dicomDatabase.fileValue(filename,'0008,0033')&lt;br /&gt;
&lt;br /&gt;
==Toolbar functions==&lt;br /&gt;
* How to turn on slice intersections in the crosshair menu on the toolbar:&lt;br /&gt;
  viewNodes = slicer.mrmlScene.GetNodesByClass('vtkMRMLSliceCompositeNode')&lt;br /&gt;
  viewNodes.UnRegister(slicer.mrmlScene)&lt;br /&gt;
  viewNodes.InitTraversal()&lt;br /&gt;
  viewNode = viewNodes.GetNextItemAsObject()&lt;br /&gt;
  while viewNode:&lt;br /&gt;
    viewNode.SetSliceIntersectionVisibility(1)&lt;br /&gt;
    viewNode = viewNodes.GetNextItemAsObject()&lt;br /&gt;
&lt;br /&gt;
How to find similar functions? For this one I searched for &amp;quot;slice intersections&amp;quot; text in the whole slicer source code, found that the function is implemented in Base\QTGUI\qSlicerViewersToolBar.cxx, then translated the qSlicerViewersToolBarPrivate::setSliceIntersectionVisible(bool visible) method to Python.&lt;br /&gt;
&lt;br /&gt;
==Manipulating objects in the slice viewer==&lt;br /&gt;
* How to define/edit a circular region of interest in a slice viewer?&lt;br /&gt;
&lt;br /&gt;
Drop two markup points on a slice view and copy-paste the code below into the Python console. After this, as you move the markups you’ll see a circle following the markups.&lt;br /&gt;
&lt;br /&gt;
  # Update the sphere from the fiducial points&lt;br /&gt;
  def UpdateSphere(param1, param2):  &lt;br /&gt;
    centerPointCoord = [0.0, 0.0, 0.0]&lt;br /&gt;
    markups.GetNthFiducialPosition(0,centerPointCoord)&lt;br /&gt;
    circumferencePointCoord = [0.0, 0.0, 0.0]&lt;br /&gt;
    markups.GetNthFiducialPosition(1,circumferencePointCoord)&lt;br /&gt;
    sphere.SetCenter(centerPointCoord)&lt;br /&gt;
    radius=math.sqrt((centerPointCoord[0]-circumferencePointCoord[0])**2+(centerPointCoord[1]-circumferencePointCoord[1])**2+(centerPointCoord[2]-circumferencePointCoord[2])**2)&lt;br /&gt;
    sphere.SetRadius(radius)&lt;br /&gt;
    sphere.SetPhiResolution(30)&lt;br /&gt;
    sphere.SetThetaResolution(30)&lt;br /&gt;
    sphere.Update()&lt;br /&gt;
  &lt;br /&gt;
  # Get a reference to the markup&lt;br /&gt;
  markups=slicer.util.getNode('F')&lt;br /&gt;
  # Create the sphere that will intersect the slice viewer&lt;br /&gt;
  sphere = vtk.vtkSphereSource()&lt;br /&gt;
  # Initial positioning of the sphere&lt;br /&gt;
  UpdateSphere(0,0)&lt;br /&gt;
  # Create model node and add to scene&lt;br /&gt;
  model = slicer.vtkMRMLModelNode()&lt;br /&gt;
  model.SetAndObservePolyData(sphere.GetOutput())&lt;br /&gt;
  modelDisplay = slicer.vtkMRMLModelDisplayNode()&lt;br /&gt;
  modelDisplay.SetSliceIntersectionVisibility(True) # Show in slice view&lt;br /&gt;
  modelDisplay.SetVisibility(False) # Hide in 3D view&lt;br /&gt;
  slicer.mrmlScene.AddNode(modelDisplay)&lt;br /&gt;
  model.SetAndObserveDisplayNodeID(modelDisplay.GetID())&lt;br /&gt;
  modelDisplay.SetInputPolyData(model.GetPolyData())&lt;br /&gt;
  slicer.mrmlScene.AddNode(model) &lt;br /&gt;
  # Call UpdateSphere whenever the fiducials are changed&lt;br /&gt;
  markups.AddObserver(&amp;quot;ModifiedEvent&amp;quot;, UpdateSphere, 2)&lt;br /&gt;
&lt;br /&gt;
== Add a texture mapped plane to the scene as a model ==&lt;br /&gt;
Note that model textures are not exposed in the GUI and are not saved in the scene&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# use dummy image data here&lt;br /&gt;
e = vtk.vtkImageEllipsoidSource()&lt;br /&gt;
&lt;br /&gt;
scene = slicer.mrmlScene&lt;br /&gt;
&lt;br /&gt;
# Create model node&lt;br /&gt;
model = slicer.vtkMRMLModelNode()&lt;br /&gt;
model.SetScene(scene)&lt;br /&gt;
model.SetName(scene.GenerateUniqueName(&amp;quot;2DImageModel&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
planeSource = vtk.vtkPlaneSource()&lt;br /&gt;
model.SetAndObservePolyData(planeSource.GetOutput())&lt;br /&gt;
&lt;br /&gt;
# Create display node&lt;br /&gt;
modelDisplay = slicer.vtkMRMLModelDisplayNode()&lt;br /&gt;
modelDisplay.SetColor(1,1,0) # yellow&lt;br /&gt;
modelDisplay.SetBackfaceCulling(0)&lt;br /&gt;
modelDisplay.SetScene(scene)&lt;br /&gt;
scene.AddNode(modelDisplay)&lt;br /&gt;
model.SetAndObserveDisplayNodeID(modelDisplay.GetID())&lt;br /&gt;
&lt;br /&gt;
# Add to scene&lt;br /&gt;
modelDisplay.SetAndObserveTextureImageData(e.GetOutput())&lt;br /&gt;
scene.AddNode(model) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
transform = slicer.vtkMRMLLinearTransformNode()&lt;br /&gt;
scene.AddNode(transform) &lt;br /&gt;
model.SetAndObserveTransformNodeID(transform.GetID())&lt;br /&gt;
&lt;br /&gt;
vTransform = vtk.vtkTransform()&lt;br /&gt;
vTransform.Scale(50,50,50)&lt;br /&gt;
vTransform.RotateX(30)&lt;br /&gt;
transform.SetAndObserveMatrixTransformToParent(vTransform.GetMatrix())&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Export a model to Blender, including color ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
plyFilePath = &amp;quot;/tmp/fibers.ply&amp;quot;&lt;br /&gt;
&lt;br /&gt;
lineDisplayNode = getNode(&amp;quot;*LineDisplay*&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
tuber = vtk.vtkTubeFilter()&lt;br /&gt;
tuber.SetInput(lineDisplayNode.GetOutputPolyData())&lt;br /&gt;
&lt;br /&gt;
tubes = tuber.GetOutput()&lt;br /&gt;
tubes.Update()&lt;br /&gt;
scalars = tubes.GetPointData().GetArray(0)&lt;br /&gt;
scalars.SetName(&amp;quot;scalars&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
triangles = vtk.vtkTriangleFilter()&lt;br /&gt;
triangles.SetInput(tubes)&lt;br /&gt;
&lt;br /&gt;
colorNode = lineDisplayNode.GetColorNode()&lt;br /&gt;
lookupTable = vtk.vtkLookupTable()&lt;br /&gt;
lookupTable.DeepCopy(colorNode.GetLookupTable())&lt;br /&gt;
lookupTable.SetTableRange(0,1)&lt;br /&gt;
&lt;br /&gt;
plyWriter = vtk.vtkPLYWriter()&lt;br /&gt;
plyWriter.SetInput(triangles.GetOutput())&lt;br /&gt;
plyWriter.SetLookupTable(lookupTable)&lt;br /&gt;
plyWriter.SetArrayName(&amp;quot;scalars&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
plyWriter.SetFileName(plyFilePath)&lt;br /&gt;
plyWriter.Write()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Clone a volume ==&lt;br /&gt;
This example shows how to clone the MRHead sample volume, including its pixel data and display settings.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sourceVolumeNode = slicer.util.getNode('MRHead')&lt;br /&gt;
volumesLogic = slicer.modules.volumes.logic()&lt;br /&gt;
clonedVolumeNode = volumesLogic.CloneVolume(slicer.mrmlScene, sourceVolumeNode, 'Cloned volume')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Create a new volume ==&lt;br /&gt;
This example shows how to create a new empty volume.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
imageSize=[512, 512, 512]&lt;br /&gt;
imageSpacing=[1.0, 1.0, 1.0]&lt;br /&gt;
voxelType=vtk.VTK_UNSIGNED_CHAR&lt;br /&gt;
# Create an empty image volume&lt;br /&gt;
imageData=vtk.vtkImageData()&lt;br /&gt;
imageData.SetDimensions(imageSize)&lt;br /&gt;
imageData.AllocateScalars(voxelType, 1)&lt;br /&gt;
thresholder=vtk.vtkImageThreshold()&lt;br /&gt;
thresholder.SetInputData(imageData)&lt;br /&gt;
thresholder.SetInValue(0)&lt;br /&gt;
thresholder.SetOutValue(0)&lt;br /&gt;
# Create volume node&lt;br /&gt;
volumeNode=slicer.vtkMRMLScalarVolumeNode()&lt;br /&gt;
volumeNode.SetSpacing(imageSpacing)&lt;br /&gt;
volumeNode.SetImageDataConnection(thresholder.GetOutputPort())&lt;br /&gt;
# Add volume to scene&lt;br /&gt;
slicer.mrmlScene.AddNode(volumeNode)&lt;br /&gt;
displayNode=slicer.vtkMRMLScalarVolumeDisplayNode()&lt;br /&gt;
slicer.mrmlScene.AddNode(displayNode)&lt;br /&gt;
colorNode = slicer.util.getNode('Grey')&lt;br /&gt;
displayNode.SetAndObserveColorNodeID(colorNode.GetID())&lt;br /&gt;
volumeNode.SetAndObserveDisplayNodeID(displayNode.GetID())&lt;br /&gt;
volumeNode.CreateDefaultStorageNode()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Modify voxels in a volume ==&lt;br /&gt;
This example shows how to change voxels values of the MRHead sample volume.&lt;br /&gt;
The values will be computed by function f(r,a,s,) = (r-10)*(r-10)+(a+15)*(a+15)+s*s.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
volumeNode=slicer.util.getNode('MRHead')&lt;br /&gt;
ijkToRas = vtk.vtkMatrix4x4()&lt;br /&gt;
volumeNode.GetIJKToRASMatrix(ijkToRas)&lt;br /&gt;
imageData=volumeNode.GetImageData()&lt;br /&gt;
extent = imageData.GetExtent()&lt;br /&gt;
for k in xrange(extent[4], extent[5]+1):&lt;br /&gt;
  for j in xrange(extent[2], extent[3]+1):&lt;br /&gt;
    for i in xrange(extent[0], extent[1]+1):&lt;br /&gt;
      position_Ijk=[i, j, k, 1]&lt;br /&gt;
      position_Ras=ijkToRas.MultiplyPoint(position_Ijk)&lt;br /&gt;
      r=position_Ras[0]&lt;br /&gt;
      a=position_Ras[1]&lt;br /&gt;
      s=position_Ras[2]      &lt;br /&gt;
      functionValue=(r-10)*(r-10)+(a+15)*(a+15)+s*s&lt;br /&gt;
      imageData.SetScalarComponentFromDouble(i,j,k,0,functionValue)&lt;br /&gt;
imageData.SetScalarComponentFromFloat(distortionVectorPosition_Ijk[0], distortionVectorPosition_Ijk[1], distortionVectorPosition_Ijk[2], 0, fillValue)&lt;br /&gt;
imageData.Modified()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Manipulate a Slice View ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
lm = slicer.app.layoutManager()&lt;br /&gt;
red = lm.sliceWidget('Red')&lt;br /&gt;
redLogic = red.sliceLogic()&lt;br /&gt;
# Print current slice offset position&lt;br /&gt;
print redLogic.GetSliceOffset()&lt;br /&gt;
# Change slice position&lt;br /&gt;
redLogic.SetSliceOffset(20)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Show a volume in the Slice Views ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
volumeNode = slicer.util.getNode('YourVolumeNode')&lt;br /&gt;
applicationLogic = slicer.app.applicationLogic()&lt;br /&gt;
selectionNode = applicationLogic.GetSelectionNode()&lt;br /&gt;
selectionNode.SetSecondaryVolumeID(volumeNode.GetID())&lt;br /&gt;
applicationLogic.PropagateForegroundVolumeSelection(0) &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
n =  slicer.util.getNode('YourVolumeNode')&lt;br /&gt;
for color in ['Red', 'Yellow', 'Green']:&lt;br /&gt;
    slicer.app.layoutManager().sliceWidget(color).sliceLogic().GetSliceCompositeNode().SetForegroundVolumeID(n.GetID())&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Center the 3D View on the Scene ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
layoutManager = slicer.app.layoutManager()&lt;br /&gt;
threeDWidget = layoutManager.threeDWidget(0)&lt;br /&gt;
threeDView = threeDWidget.threeDView()&lt;br /&gt;
threeDView.resetFocalPoint()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Display text in a 3D view or slice view ==&lt;br /&gt;
&lt;br /&gt;
The easiest way to show information overlaid on a viewer is to use corner annotations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
view=slicer.app.layoutManager().threeDWidget(0).threeDView()&lt;br /&gt;
# Set text to &amp;quot;Something&amp;quot;&lt;br /&gt;
view.cornerAnnotation().SetText(vtk.vtkCornerAnnotation.UpperRight,&amp;quot;Something&amp;quot;)&lt;br /&gt;
# Set color to red&lt;br /&gt;
view.cornerAnnotation().GetTextProperty().SetColor(1,0,0)&lt;br /&gt;
# Update the view&lt;br /&gt;
view.forceRender()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Turning off interpolation ==&lt;br /&gt;
&lt;br /&gt;
You can turn off interpolation for newly loaded volumes with this script from Steve Pieper.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def NoInterpolate(caller,event):&lt;br /&gt;
  for node in slicer.util.getNodes('*').values():&lt;br /&gt;
    if node.IsA('vtkMRMLScalarVolumeDisplayNode'):&lt;br /&gt;
      node.SetInterpolate(0)&lt;br /&gt;
	&lt;br /&gt;
slicer.mrmlScene.AddObserver(slicer.mrmlScene.NodeAddedEvent, NoInterpolate)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The below link explains how to put this in your startup script.&lt;br /&gt;
&lt;br /&gt;
http://www.na-mic.org/Wiki/index.php/AHM2012-Slicer-Python#Refining_the_code_and_UI_with_slicerrc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Customize viewer layout ==&lt;br /&gt;
&lt;br /&gt;
Show a custom layout of a 3D view on top of the red slice view:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
customLayout = (&amp;quot;&amp;lt;layout type=\&amp;quot;vertical\&amp;quot; split=\&amp;quot;true\&amp;quot; &amp;gt;&amp;quot;&lt;br /&gt;
  &amp;quot; &amp;lt;item&amp;gt;&amp;quot;&lt;br /&gt;
  &amp;quot;  &amp;lt;view class=\&amp;quot;vtkMRMLViewNode\&amp;quot; singletontag=\&amp;quot;1\&amp;quot;&amp;gt;&amp;quot;&lt;br /&gt;
  &amp;quot;    &amp;lt;property name=\&amp;quot;viewlabel\&amp;quot; action=\&amp;quot;default\&amp;quot;&amp;gt;1&amp;lt;/property&amp;gt;&amp;quot;&lt;br /&gt;
  &amp;quot;  &amp;lt;/view&amp;gt;&amp;quot;&lt;br /&gt;
  &amp;quot; &amp;lt;/item&amp;gt;&amp;quot;&lt;br /&gt;
  &amp;quot; &amp;lt;item&amp;gt;&amp;quot;&lt;br /&gt;
  &amp;quot;  &amp;lt;view class=\&amp;quot;vtkMRMLSliceNode\&amp;quot; singletontag=\&amp;quot;Red\&amp;quot;&amp;gt;&amp;quot;&lt;br /&gt;
  &amp;quot;   &amp;lt;property name=\&amp;quot;orientation\&amp;quot; action=\&amp;quot;default\&amp;quot;&amp;gt;Axial&amp;lt;/property&amp;gt;&amp;quot;&lt;br /&gt;
  &amp;quot;   &amp;lt;property name=\&amp;quot;viewlabel\&amp;quot; action=\&amp;quot;default\&amp;quot;&amp;gt;R&amp;lt;/property&amp;gt;&amp;quot;&lt;br /&gt;
  &amp;quot;   &amp;lt;property name=\&amp;quot;viewcolor\&amp;quot; action=\&amp;quot;default\&amp;quot;&amp;gt;#F34A33&amp;lt;/property&amp;gt;&amp;quot;&lt;br /&gt;
  &amp;quot;  &amp;lt;/view&amp;gt;&amp;quot;&lt;br /&gt;
  &amp;quot; &amp;lt;/item&amp;gt;&amp;quot;&lt;br /&gt;
  &amp;quot;&amp;lt;/layout&amp;gt;&amp;quot;)&lt;br /&gt;
  &lt;br /&gt;
customLayoutId=501&lt;br /&gt;
&lt;br /&gt;
layoutManager = slicer.app.layoutManager()&lt;br /&gt;
layoutManager.layoutLogic().GetLayoutNode().AddLayoutDescription(customLayoutId, customLayout)                                         &lt;br /&gt;
layoutManager.setLayout(customLayoutId)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See description of standard layouts (that can be used as examples) here:&lt;br /&gt;
https://github.com/Slicer/Slicer/blob/master/Libs/MRML/Logic/vtkMRMLLayoutLogic.cxx&lt;br /&gt;
&lt;br /&gt;
== Running an ITK filter in Python using SimpleITK ==&lt;br /&gt;
Open the &amp;quot;Sample Data&amp;quot; module and download &amp;quot;MR Head&amp;quot;, then paste the following snippet in Python interactor:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
inputImage = sitkUtils.PullFromSlicer('MRHead')&lt;br /&gt;
filter = sitk.SignedMaurerDistanceMapImageFilter()&lt;br /&gt;
outputImage = filter.Execute(inputImage)&lt;br /&gt;
sitkUtils.PushToSlicer(outputImage,'outputImage')&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
More information:&lt;br /&gt;
* See the SimpleITK documentation for SimpleITK examples: http://www.itk.org/SimpleITKDoxygen/html/examples.html&lt;br /&gt;
* sitkUtils in Slicer is used for pushing and pulling images from Slicer to SimpleITK: https://github.com/Slicer/Slicer/blob/master/Base/Python/sitkUtils.py&lt;br /&gt;
&lt;br /&gt;
== Get current mouse coordinates in a slice view ==&lt;br /&gt;
&lt;br /&gt;
You can get 3D (RAS) coordinates of the current mouse cursor from the crosshair singleton node as shown in the example below:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
def onMouseMoved(observer,eventid):  &lt;br /&gt;
  ras=[0,0,0]&lt;br /&gt;
  crosshairNode.GetCursorPositionRAS(ras)&lt;br /&gt;
  print(ras)&lt;br /&gt;
&lt;br /&gt;
crosshairNode=slicer.util.getNode('Crosshair') &lt;br /&gt;
crosshairNode.AddObserver(slicer.vtkMRMLCrosshairNode.CursorPositionModifiedEvent, onMouseMoved)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/MRML&amp;diff=43125</id>
		<title>Documentation/Nightly/Developers/MRML</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/MRML&amp;diff=43125"/>
		<updated>2015-10-29T17:57:48Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Slicer MRML Overview =&lt;br /&gt;
&lt;br /&gt;
* MRML Library provides API for managing medical image data types (Volumes, Models, Transforms, Fiducials, Cameras, etc) and their visualization.&lt;br /&gt;
* Each data type is represented by a special MRML node. &lt;br /&gt;
* MRML Scene is a collection of MRML nodes.&lt;br /&gt;
* Slicer MRML data model is implemented independent of the visualization and algorithmic components of the system. &lt;br /&gt;
* Other Slicer components ([[Documentation/{{documentation/version}}/Developers/Logics|Logic]] and Qt Widget) observe changes in MRML scene and individual nodes and process change MRML events.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;For historical references, these [http://www.na-mic.org/Wiki/images/e/e3/Slicer_3-alpha-2006-04-03.ppt slides] described the MRML architecture as it was implemented in Slicer3. Some of the concepts still apply.&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= MRML Scene =&lt;br /&gt;
&lt;br /&gt;
* MRML Scene manages MRML nodes : add, delete, find, find by type, etc.&lt;br /&gt;
* MRML Scene provides persistence of MRML nodes (reading/writing to/from XML file).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* MRML Scene provides Undo/Redo mechanism that restores a previous state of the scene and individual nodes.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= MRML Nodes =&lt;br /&gt;
 &lt;br /&gt;
* MRML nodes are designed to store the state of the Slicer application, both raw data and visualization, and storage parameters. A set of core MRML nodes that store the state of core Slicer modules is listed [{{doxygen-class-url|vtkMRMLNode}} here].&lt;br /&gt;
&lt;br /&gt;
* MRML nodes are organized into C++ class hierarchies, all derived from [http://slicer.org/doc/html/classvtkMRMLNode.html#details vtkMRMLNode] class. For example, [{{doxygen-class-url|vtkMRMLTransformableNode}}#details vtkMRMLTransformableNode] is the parent class of Volume, Model, Fiducial, and Transformation nodes; [{{doxygen-class-url|vtkMRMLVolumeNode}}#details vtkMRMLVolumeNode] is a parent of [{{doxygen-class-url|vtkMRMLScalarVolumeNode}}#details vtkMRMLScalarVolumeNode] and [{{doxygen-class-url|vtkMRMLVectorVolumeNode}}#details vtkMRMLVectorVolumeNode].&lt;br /&gt;
&lt;br /&gt;
* All MRML nodes have to implement certain standard API: ReadAttributes, WriteAttributes, Copy, etc.&lt;br /&gt;
&lt;br /&gt;
* The same data can be visualized in various ways and can be stored in different formats. Therefore, information is stored separately in three node types:&lt;br /&gt;
** Data node: store the raw data (such as [{{doxygen-class-url|vtkMRMLScalarVolumeNode}}#details vtkMRMLScalarVolumeNode] stores the voxel of a volume, spacing, position, orientation).&lt;br /&gt;
** Display nodes: describes how the data should be visualized (there can be multiple display nodes for the same raw data, e.g., one for volume rendering and one for displaying as an image slice)&lt;br /&gt;
** Storage node: describes how the data should be stored persistently on disk (file format, file name)&lt;br /&gt;
&lt;br /&gt;
* When a data node is created, it is also necessary to create the corresponding display and storage nodes to allow proper visualization and saving to file. This is where [[Documentation/Nightly/Developers/Logics|MRMLLogic]] can be helpful in providing function allowing to create a node and is associated display and data node if needed. Note also that in some cases, Slicer detects if the display and storage node is missing and tries to create a default nodes, but the developers should not rely on this error-recovery mechanism.&lt;br /&gt;
&lt;br /&gt;
= MRML node attributes =&lt;br /&gt;
&lt;br /&gt;
MRML nodes can store custom attributes as (attribute name; attribute value) pairs.&lt;br /&gt;
&lt;br /&gt;
To avoid name clashes custom modules that adds attributes to nodes should prefix the attribute name with the module's name and the '.' character. Example: the DoseVolumeHistogram module can use attribute names such as &amp;lt;code&amp;gt;DoseVolumeHistogram.StructureSetName&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DoseVolumeHistogram.Unit&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;DoseVolumeHistogram.LineStyle&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
= MRML Node References =&lt;br /&gt;
&lt;br /&gt;
There are two mechanism for specifying that nodes are related: hierarchy nodes and node references.  The node reference is the simpler of the two methods.  MRML nodes can reference and observe other MRML nodes using the node reference API.  The framework will automatically take care of (1) read/write/copy of node references, (2) updating references on scene import, and (3) adding and deleting nodes.  A node may reference multiple nodes, each performing a distinct role, and each addressed by a unique string.&lt;br /&gt;
&lt;br /&gt;
Data node can optionally implement interfaces like [{{doxygen-class-url|vtkMRMLDisplayableNode}} Displayable], [{{doxygen-class-url|vtkMRMLStorableNode}} Storable] and [{{doxygen-class-url|vtkMRMLTransformableNode}} Transformable]. Each one of these interfaces have its own requirements. For example, a transformable node will expected to be associated with a transform node. Such association are done by creating [[Documentation/{{documentation/version}}/Developers/MRML/NodeReferences|MRML References]].&lt;br /&gt;
&lt;br /&gt;
For more details, see [[Documentation/{{documentation/version}}/Developers/MRML/NodeReferences|here]].&lt;br /&gt;
&lt;br /&gt;
= MRML Events and Observers =&lt;br /&gt;
&lt;br /&gt;
*Changes in MRML scene and individual nodes propagate to other observing nodes, GUI and Logic objects via vtk events and command-observer mechanism.&lt;br /&gt;
*Use vtk AddObserver() and InvokeEvent() methods. vtkSetMacro generates ModifiedEvent.&lt;br /&gt;
*The command-observer mechanism for MRML is implemented using  helper vtkObserverManager, class, MRML Observer macros, and ProcessMRMLEvents method.&lt;br /&gt;
*Observers should store a registered pointer to a MRML node to prevent callbacks on a deleted object. &lt;br /&gt;
{|&lt;br /&gt;
|[[Image: Slicer3_MRML_Observ.jpg|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*MRML observer macros are defined in Libs/MRML/vtkMRMLNode.h&lt;br /&gt;
*vtkSetMRMLObjectMacro - registers MRML node with another vtk object (another MRML node, Logic or GUI). No observers added.&lt;br /&gt;
*vtkSetAndObserveMRMLObjectMacro - registers MRML node and adds an observer for vtkCommand::ModifyEvent. &lt;br /&gt;
*vtkSetAndObserveMRMLObjectEventsMacro - registers MRML node and adds an observer for a specified set of events. &lt;br /&gt;
*SetAndObserveMRMLScene[Events]() method is used in GUI and Logic to observe Modify, NewScene, NodeAdded, etc. events.&lt;br /&gt;
*ProcessMRMLEvents method should be implemented in MRML nodes, Logic, and GUI classes in order to process events from the observed nodes.&lt;br /&gt;
&lt;br /&gt;
= Creating Custom MRML Node Classes=&lt;br /&gt;
&lt;br /&gt;
*Custom MRML nodes provide persistent storage for the module parameters. &lt;br /&gt;
*Custom MRML nodes should be registered with the MRML scene using RegisterNodeClass() so they can be saved and restored from a scene file. &lt;br /&gt;
*Classes should implement the following methods: &lt;br /&gt;
*CreateNodeInstance() – similar to VTK New() method only not static. &lt;br /&gt;
*GetNodeTagName() – return a unique XML tag for this node. &lt;br /&gt;
*ReadXMLAttributes() – reads node attributes from XML file as name-value pairs. &lt;br /&gt;
*WriteXML() – writes node attributes to output stream (as in interpolate=&amp;quot;1&amp;quot; ).&lt;br /&gt;
*Copy() – copies node attributes. &lt;br /&gt;
&lt;br /&gt;
*If the node has references to other nodes the following additional methods should be implemented: &lt;br /&gt;
 –UpdateReferenceID() - updates the stored reference to another node. &lt;br /&gt;
 –UpdateScene()- updates other nodes in the scene depending on this node or updates this node if it depends on other nodes when the scene is read in. &lt;br /&gt;
   This method is called automatically by XML parser after all nodes are created. &lt;br /&gt;
*An example of a custom MRML node implementation: vtkMRMLGradientAnisotropicDiffusionFilterNode in Modules/GradientAnisotropicDiffusionFilter directory. &lt;br /&gt;
*To add node to the MRML scene: &lt;br /&gt;
 –In the code: use standard vtk New() and add node to the scene using vtkMRMLScene::AddNode(vtkMRMLNode *)&lt;br /&gt;
 –By user request: use vtkSlicerNodeSelectorWidget that creates a new node from the module’s UI.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
= Undo/Redo Mechanism =&lt;br /&gt;
&lt;br /&gt;
*Undo/Redo is based on saving and restoring the state of MRML nodes in the Scene. &lt;br /&gt;
*MRML scene can save snapshot of all nodes into a special Undo and Redo stacks. &lt;br /&gt;
*The Undo and Redo stacks store copies of nodes that have changed from the previous snapshot. The node that have not changed are stored by a reference (pointer). &lt;br /&gt;
*When an Undo is called on the scene, the current state of Undo stack is copied into the current scene and also into Redo stack. &lt;br /&gt;
*  All Undoable operations must store their data as MRML nodes&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image: Slicer3_MRML_Undo.jpg|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Developer controls at what point the snapshot is saved by calling SaveStateForUndo method on the MRML scene. &lt;br /&gt;
–SaveStateForUndo() - saves the state of all nodes in the scene &lt;br /&gt;
&amp;lt;br /&amp;gt;–SetActiveScene(vtkMRMLScene *) - saves the state of the specified node. &lt;br /&gt;
&amp;lt;br /&amp;gt;–SetActiveScene(vtkCollection*) - saves the state of the specified collection of nodes. &lt;br /&gt;
*SaveStateForUndo() should be called in GUI/Logic classes before changing the state of MRML nodes. This is usually done in the ProcessGUIEvents method that processes events from the user interactions with GUI widgets. &lt;br /&gt;
*SaveStateForUndo() should not be called while processing transient events such as continuous events sent by KW UI while dragging a slider (for example vtkKWScale::ScaleValueStartChangingEvent). &lt;br /&gt;
&lt;br /&gt;
The following methods on the MRML scene are used to manage Undo/Redo stacks:&lt;br /&gt;
&lt;br /&gt;
* vtkMRMLScene::Undo() – restore the previously saved state of the MRML scene.&lt;br /&gt;
* vtkMRMLScene::Redo() – restore the previously undone state of the MRML scene.&lt;br /&gt;
* vtkMRMLScene::SetUndoOff() – ignore following SaveStateForUndo calls (usefull when making multiple changes to the scene/nodes that does not need to be undone). &lt;br /&gt;
* vtkMRMLScene::SetUndoOn() – enable following SaveStateForUndo calls.&lt;br /&gt;
* vtkMRMLScene::ClearUndoStack() – clears the undo history.&lt;br /&gt;
* vtkMRMLScene::ClearRedoStack() – clears the redo history.&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= MRML Hierarchy Node =&lt;br /&gt;
&lt;br /&gt;
{{Incomplete}}&lt;br /&gt;
&lt;br /&gt;
This section is an attempt to describe the [http://slicer.org/doc/html/classvtkMRMLHierarchyNode.html vtkMRMLHierarchyNode].&lt;br /&gt;
&lt;br /&gt;
[[File:HierarchyNodesDiagram.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
H = hierarchy node, D = display node, M = model node&lt;br /&gt;
&lt;br /&gt;
= Other Useful References =&lt;br /&gt;
&lt;br /&gt;
== MRML API Documentation ==&lt;br /&gt;
&lt;br /&gt;
The detailed documentation of MRML API can be found in [http://slicer.org/doc/html/classes.html Slicer {{documentation/version}} Doxygen pages]&lt;br /&gt;
&lt;br /&gt;
== Slice view pipeline ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:SliceView.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
VTK/MRML pipeline for the 2D slice views: [[File:SliceView.pptx]].&lt;br /&gt;
&lt;br /&gt;
Another view of the ScalarVolumeDisplayNode pipeline:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:Screen Shot 2014-02-11 at 4.00.31 PM.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes: the MapToWindowLevelColors has no lookup table set, so it maps the scalar volume data to 0,255 with no &amp;quot;color&amp;quot; operation.  This is controlled by the Window/Level settings of the volume display node.  The MapToColors applies the current lookup table to go from 0-255 to full RGBA.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
See Data Model notes in [http://wiki.na-mic.org/Wiki/index.php/AHM_2006:ProjectsSlicerDataModel AHM 2006 Programming week project].&lt;br /&gt;
&lt;br /&gt;
== Path-based MRML proposal ==&lt;br /&gt;
&lt;br /&gt;
Mike's proposal for a [[Slicer3:MRML3_Path|path-based MRML3 representation]], based on extending the Coordinate Space Manager ideas to the entire MRML3 tree&lt;br /&gt;
&lt;br /&gt;
== Slicer Daemon ==&lt;br /&gt;
&lt;br /&gt;
The goal of the [[Slicer3:Slicer_Daemon|Slicer Daemon]] project is to allow remote editing of the MRML data model by external programs over a socket.&lt;br /&gt;
&lt;br /&gt;
== EventBroker Discussion ==&lt;br /&gt;
&lt;br /&gt;
The [[Slicer3:EventBroker|Event Broker]] is a proposal to improve the way events are managed inside slicer.&lt;br /&gt;
&lt;br /&gt;
= Slicer 2.6 MRML =&lt;br /&gt;
&lt;br /&gt;
== Data Represented in MRML in Slicer 2.6 ==&lt;br /&gt;
&lt;br /&gt;
* Volumes&lt;br /&gt;
** IJK-&amp;gt;RAS (VTK-&amp;gt;RAS)&lt;br /&gt;
** Scalar Types&lt;br /&gt;
** Multicomponent (RGB, Displacement Vector)&lt;br /&gt;
** Tensor Volumes&lt;br /&gt;
** Label Maps&lt;br /&gt;
** Reference to Lookup Table&lt;br /&gt;
&lt;br /&gt;
* Models&lt;br /&gt;
** vtkPolyData&lt;br /&gt;
*** Named Field Data (scalars, vectors, labels) at points and cells (FreeSurferReaders)&lt;br /&gt;
*** Polylines with tensor point data (DTMRI Module)&lt;br /&gt;
** Color, Clipping State, Visibility, Scalar Visibility, LookupTable&lt;br /&gt;
&lt;br /&gt;
* Transforms&lt;br /&gt;
** Matrix4x4&lt;br /&gt;
&lt;br /&gt;
* Lookup Tables&lt;br /&gt;
** vtkLookupTable info&lt;br /&gt;
&lt;br /&gt;
* Fiducials&lt;br /&gt;
** Position, Quaternion&lt;br /&gt;
** Name, Selection State, Type (endoscopic, normal)&lt;br /&gt;
** Glyph Size, Text Size&lt;br /&gt;
&lt;br /&gt;
* Fiducial Lists&lt;br /&gt;
** Name, Slze, Color, Selection State&lt;br /&gt;
&lt;br /&gt;
* Colors&lt;br /&gt;
** Name, Label#, Diffuse/Ambient/Specular&lt;br /&gt;
&lt;br /&gt;
* Model Groups&lt;br /&gt;
&lt;br /&gt;
* Application State (not to be carried to Slicer3 MRML)&lt;br /&gt;
* Locator (not to be carried to Slicer3 MRML)&lt;br /&gt;
* Module Specific Parameters (not to be carried to Slicer3 MRML)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Operations On MRML Scene ==&lt;br /&gt;
&lt;br /&gt;
* Load from File&lt;br /&gt;
* Save to File&lt;br /&gt;
* Traverse Nodes in Tree&lt;br /&gt;
* Insert Node&lt;br /&gt;
* Delete Node&lt;br /&gt;
* Register Tree Observer&lt;br /&gt;
* Update MRML&lt;br /&gt;
* Get Transformations (e.g. IJK to World through transform tree)&lt;br /&gt;
&lt;br /&gt;
* Data Type Specific Operations&lt;br /&gt;
** Get/Set Node MetaData&lt;br /&gt;
** Get/Set Data (e.g. as vtkImageData)&lt;br /&gt;
&lt;br /&gt;
== General References on XML ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/XML:_Managing_Data_Exchange A wikibook on XML] &lt;br /&gt;
&lt;br /&gt;
The [http://en.wikibooks.org/wiki/XML:_Managing_Data_Exchange/The_many-to-many_relationship#ID.2FIDRE section on ID/IDREF implementations], which are similar to what we use in MRML.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{:Documentation/{{documentation/version}}/Developers/FAQ/MRML|MRML}}&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Extensions/SlicerRT&amp;diff=42505</id>
		<title>Documentation/Nightly/Extensions/SlicerRT</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Extensions/SlicerRT&amp;diff=42505"/>
		<updated>2015-08-20T23:26:54Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
[[File:LogoCco.png|Cancer Care Ontario]]&lt;br /&gt;
[[File:Logo-SparKit.png|SparKit]]&lt;br /&gt;
[[File:LogoOCAIRO.jpg|SparKit]]&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
Authors: &amp;lt;b&amp;gt;Csaba Pinter&amp;lt;/b&amp;gt; (PerkLab, Queen's University), &amp;lt;b&amp;gt;Andras Lasso&amp;lt;/b&amp;gt; (PerkLab, Queen's University), &amp;lt;b&amp;gt;Kevin Wang&amp;lt;/b&amp;gt; (Radiation Medicine Program, Princess Margaret Hospital, University Health Network Toronto)&amp;lt;br&amp;gt;&lt;br /&gt;
Contributors: Greg Sharp (Massachusetts General Hospital), Steve Pieper (Isomics)&amp;lt;br&amp;gt;&lt;br /&gt;
Contacts:&lt;br /&gt;
* Csaba Pinter, &amp;lt;email&amp;gt;csaba.pinter@queensu.ca&amp;lt;/email&amp;gt;&lt;br /&gt;
* Andras Lasso, &amp;lt;email&amp;gt;lasso@cs.queensu.ca&amp;lt;/email&amp;gt;&lt;br /&gt;
* Mailing list, &amp;lt;email&amp;gt;slicerrt@alerts.assembla.com&amp;lt;/email&amp;gt; (need to register to [http://www.assembla.com Assembla] using the email address from which the email is sent)&lt;br /&gt;
* [[Documentation/SlicerRT/HowToReportAnError|How to report an error]]&lt;br /&gt;
Website: [http://slicerrt.github.io slicerrt.org]&amp;lt;br&amp;gt;&lt;br /&gt;
License: [http://www.slicer.org/pages/LicenseText Slicer license]&amp;lt;br&amp;gt;&lt;br /&gt;
'''Download/install:''' install 3D Slicer, start 3D Slicer, open the Extension Manager, install the SlicerRT extension (see more details [http://slicerrt.github.io/Download.html on the download page])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; margin-left:12px;&amp;quot;&amp;gt;&lt;br /&gt;
importScript('http://www.ohloh.net/p/641228/widgets/project_basic_stats.js');&lt;br /&gt;
&amp;lt;wiki:gadget url=&amp;quot;http://www.ohloh.net/p/641228/widgets/project_search_code.xml&amp;quot; height=&amp;quot;195&amp;quot; border=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Extension Description}}&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
[[Image:SlicerRT_Logo_3.0_128x128.png]]&lt;br /&gt;
|&lt;br /&gt;
* SlicerRT is one of the themes of the SparKit (Software Platform and Adaptive Radiotherapy Kit) project with the goal of making 3D Slicer a powerful radiotherapy research platform.&amp;lt;br&amp;gt;SparKit is a project funded by Cancer Care Ontarioand the Ontario Consortium for Adaptive Interventions in Radiation Oncology (OCAIRO) to provide free, open-source toolset for radiotherapy and related image-guided interventions.&lt;br /&gt;
&lt;br /&gt;
* The SlicerRT extension incorporates [[Documentation/{{documentation/version}}/Extensions/Plastimatch|Plastimatch]] modules and algorithms.&lt;br /&gt;
&lt;br /&gt;
* Additional information for users can be found on the [[Documentation/SlicerRT/UsersGuide|User's guide]] page &amp;lt;br&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Modules}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/DicomRtImport|DICOM-RT import]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/Segmentations|Segmentations]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/DoseVolumeHistogram|Dose volume histogram]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/DoseAccumulation|Dose accumulation]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/DoseComparison|Dose comparison]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/Isodose|Isodose line and surface display]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/SegmentComparison|Segment comparison]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/SegmentMorphology|Segment morphology]]&lt;br /&gt;
*[https://subversion.assembla.com/svn/slicerrt/trunk/SlicerRt/src/BatchProcessing/ Batch processing scripts] (currently only one is available for command-line conversion of RTSS to volume nodes)&lt;br /&gt;
&lt;br /&gt;
* Modules from [[Documentation/{{documentation/version}}/Extensions/Plastimatch|Plastimatch]]&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/PlmBSplineDeformableRegistration|Plastimatch Automatic deformable image registration]]&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/PlmLANDWARP|Plastimatch LANDWARP Landmark]] [[image:UnderConstruction.png|tumb|10px]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/PlmSyntheticImageGeneration|Plastimatch Synthetic Image Generation]] (Greg Sharp)[[image:UnderConstruction.png|tumb|10px]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Former SlicerRT modules integrated to Slicer core&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/SubjectHierarchy|Subject hierarchy]]&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/DeformationFieldVisualizer|Transform visualizer]]&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/DicomRtExport|DICOM-RT export]], as [http://www.slicer.org/slicerWiki/index.php/Documentation/Labs/DICOMExport improved DICOM export function]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* Experimental modules&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/ExternalBeamPlanning|External beam planning]] [[image:UnderConstruction.png|tumb|10px]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
| [[File:SlicerRt_Montage.jpg|512px|SlicerRT highlights]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Use Cases}}&lt;br /&gt;
* Comparison of dose maps and dose volume histograms from various treatment planning systems&lt;br /&gt;
* Evaluation of the effect of different adaptive techniques (IGRT, image-based non-rigid patient motion compensation, etc.)&lt;br /&gt;
** Calculate couch shift parameters for patient setup correction in IGRT&lt;br /&gt;
* Dose accumulation with motion compensation&lt;br /&gt;
* Testing of treatment planning algorithms&lt;br /&gt;
* Calculation of PTV margin&lt;br /&gt;
* Proton dose calculation&lt;br /&gt;
* Gel dosimetry analysis&lt;br /&gt;
* Treatment plan similarity measurement in the cloud&lt;br /&gt;
* Batch structure set conversion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Tutorials}}&lt;br /&gt;
* '''World Congress 2015 tutorial''' (recommended)&lt;br /&gt;
** Tutorial presentation: [https://subversion.assembla.com/svn/slicerrt/trunk/SlicerRt/doc/tutorials/SlicerRT_WorldCongress_TutorialIGRT.pptx pptx] [https://subversion.assembla.com/svn/slicerrt/trunk/SlicerRt/doc/tutorials/SlicerRT_WorldCongress_TutorialIGRT.pdf pdf]&lt;br /&gt;
** Dataset: [http://slicer.kitware.com/midas3/download/item/205391/WC2015_Gel_Slicelet_Dataset.zip download] from MIDAS&lt;br /&gt;
* Summer NA-MIC week 2013 tutorial&lt;br /&gt;
** Tutorial presentation: [http://wiki.na-mic.org/Wiki/images/b/b0/SlicerRT_TutorialContestSummer2013.pdf download] from Slicer wiki&lt;br /&gt;
** Sample data: [http://slicer.kitware.com/midas3/download/folder/1345/SlicerRtTutorial_Namic2013June.zip download] from MIDAS&lt;br /&gt;
* ECR 2013 - Medical University Vienna workshop&lt;br /&gt;
** Workshop material: [http://www.na-mic.org/Wiki/index.php/File:Pinter_MedUni2013_Workshop.pdf download] from NA-MIC.org&lt;br /&gt;
* RSNA 2012 tutorial&lt;br /&gt;
** Tutorial description: [http://www.donotlink.com/bEo SlicerRT wiki: Slicer tutorials at RSNA 2012]&lt;br /&gt;
&amp;lt;!-- Original link: https://www.assembla.com/spaces/slicerrt/wiki/20121127_Slicer_tutorials_at_RSNA_2012 --&amp;gt;&lt;br /&gt;
** Sample data: [http://slicer.kitware.com/midas3/folder/859 download] SlicerRT ART dose verification data from Midas server&lt;br /&gt;
* Summer NA-MIC week 2012 tutorial&lt;br /&gt;
** Tutorial presentation: [http://www.donotlink.com/bEp download] from the SlicerRT website&lt;br /&gt;
&amp;lt;!-- Original link: https://www.assembla.com/spaces/slicerrt/documents/aAuMq81Eqr4ztvacwqjQXA/download/aAuMq81Eqr4ztvacwqjQXA --&amp;gt;&lt;br /&gt;
** Sample data: [http://www.donotlink.com/bEq download] from the SlicerRT website&lt;br /&gt;
&amp;lt;!-- Original link: https://www.assembla.com/spaces/slicerrt/documents/bMuwgYTKur4yP-acwqjQWU/download/bMuwgYTKur4yP-acwqjQWU --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Similar Extensions}}&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/Plastimatch|Plastimatch]]: SlicerRT and Plastimatch are complementary software libraries. Plastimatch focuses on delivering new computational methods radiotherapy, while SlicerRT aims for providing an easy-to-use interface for a wide range of stable, well-tested radiotherapy related features. SlicerRT uses Plastimatch internally for certain operations.&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Modules/GelDosimetry|Gel Dosimetry]]: Slicelet facilitating a streamlined workflow to perform gel dosimetry analysis for commissioning linacs and evaluating new dose calculation procedures&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|References}}&lt;br /&gt;
==How to cite==&lt;br /&gt;
Please cite the following paper when referring to SlicerRt in your publication:&amp;lt;br&amp;gt;&lt;br /&gt;
C. Pinter, A. Lasso, A. Wang, D. Jaffray and G. Fichtinger, [http://perk.cs.queensu.ca/sites/perk.cs.queensu.ca/files/Pinter2012_0.pdf &amp;quot;SlicerRT – Radiation therapy research toolkit for 3D Slicer&amp;quot;], Med. Phys., 39(10) pp. 6332-6338, 2012&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ARTICLE{Pinter2012,&lt;br /&gt;
  author = {Pinter, C. and Lasso, A. and Wang, A. and Jaffray, D. and Fichtinger, G.},&lt;br /&gt;
  title = {SlicerRT – Radiation therapy research toolkit for 3D Slicer},&lt;br /&gt;
  journal = {Med. Phys.},&lt;br /&gt;
  year = {2012},&lt;br /&gt;
  volume = {39},&lt;br /&gt;
  number = {10},&lt;br /&gt;
  pages = {6332-6338},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Information for Developers}}&lt;br /&gt;
* [http://www.donotlink.com/bEr SlicerRT developers wiki page]&lt;br /&gt;
&amp;lt;!-- Original link: https://www.assembla.com/spaces/slicerrt/wiki/SlicerRt_developers_page --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Extensions/SlicerRT&amp;diff=42504</id>
		<title>Documentation/Nightly/Extensions/SlicerRT</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Extensions/SlicerRT&amp;diff=42504"/>
		<updated>2015-08-20T23:24:58Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
[[File:LogoCco.png|Cancer Care Ontario]]&lt;br /&gt;
[[File:Logo-SparKit.png|SparKit]]&lt;br /&gt;
[[File:LogoOCAIRO.jpg|SparKit]]&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
Authors: &amp;lt;b&amp;gt;Csaba Pinter&amp;lt;/b&amp;gt; (PerkLab, Queen's University), &amp;lt;b&amp;gt;Andras Lasso&amp;lt;/b&amp;gt; (PerkLab, Queen's University), &amp;lt;b&amp;gt;Kevin Wang&amp;lt;/b&amp;gt; (Radiation Medicine Program, Princess Margaret Hospital, University Health Network Toronto)&amp;lt;br&amp;gt;&lt;br /&gt;
Contributors: Greg Sharp (Massachusetts General Hospital), Steve Pieper (Isomics)&amp;lt;br&amp;gt;&lt;br /&gt;
Contacts:&lt;br /&gt;
* Csaba Pinter, &amp;lt;email&amp;gt;csaba.pinter@queensu.ca&amp;lt;/email&amp;gt;&lt;br /&gt;
* Andras Lasso, &amp;lt;email&amp;gt;lasso@cs.queensu.ca&amp;lt;/email&amp;gt;&lt;br /&gt;
* Mailing list, &amp;lt;email&amp;gt;slicerrt@alerts.assembla.com&amp;lt;/email&amp;gt; (need to register to [http://www.assembla.com Assembla] using the email address from which the email is sent)&lt;br /&gt;
* [[Documentation/SlicerRT/HowToReportAnError|How to report an error]]&lt;br /&gt;
Website: [http://slicerrt.github.io slicerrt.org]&amp;lt;br&amp;gt;&lt;br /&gt;
License: [http://www.slicer.org/pages/LicenseText Slicer license]&amp;lt;br&amp;gt;&lt;br /&gt;
'''Download/install:''' install 3D Slicer, start 3D Slicer, open the Extension Manager, install the SlicerRT extension (see more details [http://slicerrt.github.io/Download.html on the download page])&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; margin-left:12px;&amp;quot;&amp;gt;&lt;br /&gt;
importScript('http://www.ohloh.net/p/641228/widgets/project_basic_stats.js');&lt;br /&gt;
&amp;lt;wiki:gadget url=&amp;quot;http://www.ohloh.net/p/641228/widgets/project_search_code.xml&amp;quot; height=&amp;quot;195&amp;quot; border=&amp;quot;1&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Extension Description}}&lt;br /&gt;
{|&lt;br /&gt;
|&lt;br /&gt;
[[Image:SlicerRT_Logo_3.0_128x128.png]]&lt;br /&gt;
|&lt;br /&gt;
* SlicerRT is one of the themes of the SparKit (Software Platform and Adaptive Radiotherapy Kit) project with the goal of making 3D Slicer a powerful radiotherapy research platform.&amp;lt;br&amp;gt;SparKit is a project funded by Cancer Care Ontarioand the Ontario Consortium for Adaptive Interventions in Radiation Oncology (OCAIRO) to provide free, open-source toolset for radiotherapy and related image-guided interventions.&lt;br /&gt;
&lt;br /&gt;
* The SlicerRT extension incorporates [[Documentation/{{documentation/version}}/Extensions/Plastimatch|Plastimatch]] modules and algorithms.&lt;br /&gt;
&lt;br /&gt;
* Additional information for users can be found on the [[Documentation/SlicerRT/UsersGuide|User's guide]] page &amp;lt;br&amp;gt;&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Modules}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/DicomRtImport|DICOM-RT import]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/Segmentations|Segmentations]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/DoseVolumeHistogram|Dose volume histogram]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/DoseAccumulation|Dose accumulation]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/DoseComparison|Dose comparison]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/Isodose|Isodose line and surface display]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/SegmentComparison|Segment comparison]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/SegmentMorphology|Segment morphology]]&lt;br /&gt;
*[https://subversion.assembla.com/svn/slicerrt/trunk/SlicerRt/src/BatchProcessing/ Batch processing scripts] (currently only one is available for command-line conversion of RTSS to volume nodes)&lt;br /&gt;
&lt;br /&gt;
* Modules from [[Documentation/{{documentation/version}}/Extensions/Plastimatch|Plastimatch]]&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/PlmBSplineDeformableRegistration|Plastimatch Automatic deformable image registration]]&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/PlmLANDWARP|Plastimatch LANDWARP Landmark]] [[image:UnderConstruction.png|tumb|10px]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/PlmSyntheticImageGeneration|Plastimatch Synthetic Image Generation]] (Greg Sharp)[[image:UnderConstruction.png|tumb|10px]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Former SlicerRT modules integrated to Slicer core&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/SubjectHierarchy|Subject hierarchy]]&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/DeformationFieldVisualizer|Transform visualizer]]&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/DicomRtExport|DICOM-RT export]], as [http://www.slicer.org/slicerWiki/index.php/Documentation/Labs/DICOMExport improved DICOM export function]&lt;br /&gt;
&lt;br /&gt;
* Experimental modules&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/ExternalBeamPlanning|External beam planning]] [[image:UnderConstruction.png|tumb|10px]]&lt;br /&gt;
&lt;br /&gt;
| [[File:SlicerRt_Montage.jpg|512px|SlicerRT highlights]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Use Cases}}&lt;br /&gt;
* Comparison of dose maps and dose volume histograms from various treatment planning systems&lt;br /&gt;
* Evaluation of the effect of different adaptive techniques (IGRT, image-based non-rigid patient motion compensation, etc.)&lt;br /&gt;
** Calculate couch shift parameters for patient setup correction in IGRT&lt;br /&gt;
* Dose accumulation with motion compensation&lt;br /&gt;
* Testing of treatment planning algorithms&lt;br /&gt;
* Calculation of PTV margin&lt;br /&gt;
* Proton dose calculation&lt;br /&gt;
* Gel dosimetry analysis&lt;br /&gt;
* Treatment plan similarity measurement in the cloud&lt;br /&gt;
* Batch structure set conversion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Tutorials}}&lt;br /&gt;
* '''World Congress 2015 tutorial''' (recommended)&lt;br /&gt;
** Tutorial presentation: [https://subversion.assembla.com/svn/slicerrt/trunk/SlicerRt/doc/tutorials/SlicerRT_WorldCongress_TutorialIGRT.pptx pptx] [https://subversion.assembla.com/svn/slicerrt/trunk/SlicerRt/doc/tutorials/SlicerRT_WorldCongress_TutorialIGRT.pdf pdf]&lt;br /&gt;
** Dataset: [http://slicer.kitware.com/midas3/download/item/205391/WC2015_Gel_Slicelet_Dataset.zip download] from MIDAS&lt;br /&gt;
* Summer NA-MIC week 2013 tutorial&lt;br /&gt;
** Tutorial presentation: [http://wiki.na-mic.org/Wiki/images/b/b0/SlicerRT_TutorialContestSummer2013.pdf download] from Slicer wiki&lt;br /&gt;
** Sample data: [http://slicer.kitware.com/midas3/download/folder/1345/SlicerRtTutorial_Namic2013June.zip download] from MIDAS&lt;br /&gt;
* ECR 2013 - Medical University Vienna workshop&lt;br /&gt;
** Workshop material: [http://www.na-mic.org/Wiki/index.php/File:Pinter_MedUni2013_Workshop.pdf download] from NA-MIC.org&lt;br /&gt;
* RSNA 2012 tutorial&lt;br /&gt;
** Tutorial description: [http://www.donotlink.com/bEo SlicerRT wiki: Slicer tutorials at RSNA 2012]&lt;br /&gt;
&amp;lt;!-- Original link: https://www.assembla.com/spaces/slicerrt/wiki/20121127_Slicer_tutorials_at_RSNA_2012 --&amp;gt;&lt;br /&gt;
** Sample data: [http://slicer.kitware.com/midas3/folder/859 download] SlicerRT ART dose verification data from Midas server&lt;br /&gt;
* Summer NA-MIC week 2012 tutorial&lt;br /&gt;
** Tutorial presentation: [http://www.donotlink.com/bEp download] from the SlicerRT website&lt;br /&gt;
&amp;lt;!-- Original link: https://www.assembla.com/spaces/slicerrt/documents/aAuMq81Eqr4ztvacwqjQXA/download/aAuMq81Eqr4ztvacwqjQXA --&amp;gt;&lt;br /&gt;
** Sample data: [http://www.donotlink.com/bEq download] from the SlicerRT website&lt;br /&gt;
&amp;lt;!-- Original link: https://www.assembla.com/spaces/slicerrt/documents/bMuwgYTKur4yP-acwqjQWU/download/bMuwgYTKur4yP-acwqjQWU --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Similar Extensions}}&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Extensions/Plastimatch|Plastimatch]]: SlicerRT and Plastimatch are complementary software libraries. Plastimatch focuses on delivering new computational methods radiotherapy, while SlicerRT aims for providing an easy-to-use interface for a wide range of stable, well-tested radiotherapy related features. SlicerRT uses Plastimatch internally for certain operations.&lt;br /&gt;
* [[Documentation/{{documentation/version}}/Modules/GelDosimetry|Gel Dosimetry]]: Slicelet facilitating a streamlined workflow to perform gel dosimetry analysis for commissioning linacs and evaluating new dose calculation procedures&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|References}}&lt;br /&gt;
==How to cite==&lt;br /&gt;
Please cite the following paper when referring to SlicerRt in your publication:&amp;lt;br&amp;gt;&lt;br /&gt;
C. Pinter, A. Lasso, A. Wang, D. Jaffray and G. Fichtinger, [http://perk.cs.queensu.ca/sites/perk.cs.queensu.ca/files/Pinter2012_0.pdf &amp;quot;SlicerRT – Radiation therapy research toolkit for 3D Slicer&amp;quot;], Med. Phys., 39(10) pp. 6332-6338, 2012&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
@ARTICLE{Pinter2012,&lt;br /&gt;
  author = {Pinter, C. and Lasso, A. and Wang, A. and Jaffray, D. and Fichtinger, G.},&lt;br /&gt;
  title = {SlicerRT – Radiation therapy research toolkit for 3D Slicer},&lt;br /&gt;
  journal = {Med. Phys.},&lt;br /&gt;
  year = {2012},&lt;br /&gt;
  volume = {39},&lt;br /&gt;
  number = {10},&lt;br /&gt;
  pages = {6332-6338},&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Information for Developers}}&lt;br /&gt;
* [http://www.donotlink.com/bEr SlicerRT developers wiki page]&lt;br /&gt;
&amp;lt;!-- Original link: https://www.assembla.com/spaces/slicerrt/wiki/SlicerRt_developers_page --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Talk:Main_Page&amp;diff=37967</id>
		<title>Talk:Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Talk:Main_Page&amp;diff=37967"/>
		<updated>2014-05-14T22:34:02Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: Blanked the page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/MRML&amp;diff=37498</id>
		<title>Documentation/Nightly/Developers/MRML</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/Nightly/Developers/MRML&amp;diff=37498"/>
		<updated>2014-03-21T13:29:42Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* MRML Nodes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{documentation/versioncheck}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
= Slicer MRML Overview =&lt;br /&gt;
&lt;br /&gt;
*MRML Library provides API for managing medical image data types (Volumes, Models, Transforms, Fiducials, Cameras, etc) and their visualization. &lt;br /&gt;
*Each data type is represented by a special MRML node. &lt;br /&gt;
*MRML Scene is a collection of MRML nodes. &lt;br /&gt;
*Slicer MRML data model is implemented independent of the visualization and algorithmic components of the system. &lt;br /&gt;
*Other Slicer components (Logic and GUI) observe changes in MRML scene and individual nodes and process change MRML events.&lt;br /&gt;
&lt;br /&gt;
For more details on MRML architecture see [http://www.na-mic.org/Wiki/images/e/e3/Slicer_3-alpha-2006-04-03.ppt Architecture Slides].&lt;br /&gt;
&lt;br /&gt;
= MRML Scene =&lt;br /&gt;
&lt;br /&gt;
*MRML Scene manages MRML nodes : add, delete, find, find by type, etc.&lt;br /&gt;
*MRML Scene provides persistence of MRML nodes (reading/writing to/from XML file). &lt;br /&gt;
*MRML  Scene provides Undo/Redo mechanism that restores a previous state of the scene and individual nodes.&lt;br /&gt;
&lt;br /&gt;
= MRML Nodes =&lt;br /&gt;
 &lt;br /&gt;
*The MRML nodes are designed to store the state of the Slicer application, both raw data and visualization parameters.&lt;br /&gt;
&lt;br /&gt;
The following is a set of core MRML nodes that store the state of core Slicer modules:&lt;br /&gt;
&lt;br /&gt;
* vtkMRMLCameraNode&lt;br /&gt;
* vtkMRMLClipModelsNode&lt;br /&gt;
* vtkMRMLSliceCompositeNode&lt;br /&gt;
* vtkMRMLSliceNode&lt;br /&gt;
* vtkMRMLColorNode&lt;br /&gt;
* vtkMRMLTransformNode&lt;br /&gt;
* vtkMRMLLinearTransformNode&lt;br /&gt;
* vtkMRMLTransformableNode&lt;br /&gt;
* vtkMRMLFiducialListNode&lt;br /&gt;
* vtkMRMLModelNode&lt;br /&gt;
* vtkMRMLModelDisplayNode&lt;br /&gt;
* vtkMRMLStorageNode&lt;br /&gt;
* vtkMRMLModelStorageNode&lt;br /&gt;
* vtkMRMLVolumeNode&lt;br /&gt;
* vtkMRMLScalarVolumeNode&lt;br /&gt;
* vtkMRMLVectorVolumeNode&lt;br /&gt;
* vtkMRMLTensorVolumeNode&lt;br /&gt;
* vtkMRMLDiffusionTensorVolumeNode&lt;br /&gt;
* vtkMRMLDiffusionWeightedVolumeNode&lt;br /&gt;
* vtkMRMLVolumeDisplayNode&lt;br /&gt;
* vtkMRMLVectorVolumeDisplayNode&lt;br /&gt;
* vtkMRMLDiffusionTensorVolumeDisplayNode&lt;br /&gt;
* vtkMRMLDiffusionWeightedVolumeDisplayNode&lt;br /&gt;
* vtkMRMLVolumeHeaderlessStorageNode&lt;br /&gt;
* vtkMRMLVolumeArchetypeStorageNode&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; &lt;br /&gt;
*MRML nodes are organized into C++ class hierarchies, all derived from vtkMRMLNode class. &lt;br /&gt;
*For example vtkMRMLTransformableNode is the parent class of Volume, Model, Fiducial, and Transformation nodes; vtkVolumeNode is a parent of vtkMRMLScalarVolumeNode and vtkMRMLVectorVolumeNode&lt;br /&gt;
*All MRML nodes have to implement certain standard API: ReadAttributes, WriteAttributes, Copy, etc.&lt;br /&gt;
{|&lt;br /&gt;
|[[Image: Slicer3_MRML_Node_Hier.jpg|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= MRML node attributes =&lt;br /&gt;
&lt;br /&gt;
MRML nodes can store custom attributes as (attribute name; attribute value) pairs.&lt;br /&gt;
&lt;br /&gt;
To avoid name clashes custom modules that adds attributes to nodes should prefix the attribute name with the module's name and the '.' character. Example: the DoseVolumeHistogram module can use attribute names such as DoseVolumeHistogram.StructureSetName, DoseVolumeHistogram.Unit, DoseVolumeHistogram.LineStyle.&lt;br /&gt;
&lt;br /&gt;
= References to MRML Nodes =&lt;br /&gt;
&lt;br /&gt;
See [[Documentation/{{documentation/version}}/Developers/MRMLNodeReferences|MRMLNodeReferences]]&lt;br /&gt;
&lt;br /&gt;
*Some MRML nodes have references to other nodes. &lt;br /&gt;
*Transformable Node has a reference to a Transformation node. Transformation node has a reference to its parent Transformation node. &lt;br /&gt;
*References are stored by node ID.&lt;br /&gt;
*Use vtkSetReferenceStringMacro to set reference ID (it registers reference with the scene).&lt;br /&gt;
*Access methods should check if the referenced node is still in the MRML scene using its ID.&lt;br /&gt;
{|&lt;br /&gt;
|[[Image: Slicer3_MRML_Trans_Ref.jpg|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= MRML Events and Observers =&lt;br /&gt;
&lt;br /&gt;
*Changes in MRML scene and individual nodes propagate to other observing nodes, GUI and Logic objects via vtk events and command-observer mechanism.&lt;br /&gt;
*Use vtk AddObserver() and InvokeEvent() methods. vtkSetMacro generates ModifiedEvent.&lt;br /&gt;
*The command-observer mechanism for MRML is implemented using  helper vtkObserverManager, class, MRML Observer macros, and ProcessMRMLEvents method.&lt;br /&gt;
*Observers should store a registered pointer to a MRML node to prevent callbacks on a deleted object. &lt;br /&gt;
{|&lt;br /&gt;
|[[Image: Slicer3_MRML_Observ.jpg|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*MRML observer macros are defined in Libs/MRML/vtkMRMLNode.h&lt;br /&gt;
*vtkSetMRMLObjectMacro - registers MRML node with another vtk object (another MRML node, Logic or GUI). No observers added.&lt;br /&gt;
*vtkSetAndObserveMRMLObjectMacro - registers MRML node and adds an observer for vtkCommand::ModifyEvent. &lt;br /&gt;
*vtkSetAndObserveMRMLObjectEventsMacro - registers MRML node and adds an observer for a specified set of events. &lt;br /&gt;
*SetAndObserveMRMLScene[Events]() method is used in GUI and Logic to observe Modify, NewScene, NodeAdded, etc. events.&lt;br /&gt;
*ProcessMRMLEvents method should be implemented in MRML nodes, Logic, and GUI classes in order to process events from the observed nodes.&lt;br /&gt;
&lt;br /&gt;
= Creating Custom MRML Node Classes=&lt;br /&gt;
&lt;br /&gt;
*Custom MRML nodes provide persistent storage for the module parameters. &lt;br /&gt;
*Custom MRML nodes should be registered with the MRML scene using RegisterNodeClass() so they can be saved and restored from a scene file. &lt;br /&gt;
*Classes should implement the following methods: &lt;br /&gt;
*CreateNodeInstance() – similar to VTK New() method only not static. &lt;br /&gt;
*GetNodeTagName() – return a unique XML tag for this node. &lt;br /&gt;
*ReadXMLAttributes() – reads node attributes from XML file as name-value pairs. &lt;br /&gt;
*WriteXML() – writes node attributes to output stream (as in interpolate=&amp;quot;1&amp;quot; ).&lt;br /&gt;
*Copy() – copies node attributes. &lt;br /&gt;
&lt;br /&gt;
*If the node has references to other nodes the following additional methods should be implemented: &lt;br /&gt;
 –UpdateReferenceID() - updates the stored reference to another node. &lt;br /&gt;
 –UpdateScene()- updates other nodes in the scene depending on this node or updates this node if it depends on other nodes when the scene is read in. &lt;br /&gt;
   This method is called automatically by XML parser after all nodes are created. &lt;br /&gt;
*An example of a custom MRML node implementation: vtkMRMLGradientAnisotropicDiffusionFilterNode in Modules/GradientAnisotropicDiffusionFilter directory. &lt;br /&gt;
*To add node to the MRML scene: &lt;br /&gt;
 –In the code: use standard vtk New() and add node to the scene using vtkMRMLScene::AddNode(vtkMRMLNode *)&lt;br /&gt;
 –By user request: use vtkSlicerNodeSelectorWidget that creates a new node from the module’s UI.&lt;br /&gt;
&lt;br /&gt;
= FAQ =&lt;br /&gt;
== How to add into the scene==&lt;br /&gt;
* Generic pattern &lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 vtkMRML???Node* nodeToAdd = vtkMRML???Node::New();&lt;br /&gt;
 ...&lt;br /&gt;
 mrmlScene-&amp;gt;AddNode(nodeToAdd);&lt;br /&gt;
 nodeToAdd-&amp;gt;Delete();&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
* Add a polydata to the scene&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 vtkNew&amp;lt;vtkMRMLModelNode&amp;gt; modelNode;&lt;br /&gt;
 modelNode-&amp;gt;SetPolyData(polyData);&lt;br /&gt;
 mrmlScene-&amp;gt;AddNode(modelNode.GetPointer());&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
* Load a polyData from file&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 vtkSlicerModelsLogic* modelsLogic = ...;&lt;br /&gt;
 //modelsLogic-&amp;gt;SetMRMLScene(mrmlScene);&lt;br /&gt;
 modelsLogic-&amp;gt;AddModel(polyDataFileName);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
==Views==&lt;br /&gt;
* Change the volumes in the 2D views ([https://github.com/fedorov/ChangeTrackerPy/blob/master/Wizard/Helper.py#L82 source])&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
 appLogic = slicer.app.applicationLogic()&lt;br /&gt;
 selectionNode = appLogic.GetSelectionNode()&lt;br /&gt;
 selectionNode.SetReferenceActiveVolumeID(bg)&lt;br /&gt;
 selectionNode.SetReferenceSecondaryVolumeID(fg)&lt;br /&gt;
 appLogic.PropagateVolumeSelection()&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Undo/Redo Mechanism =&lt;br /&gt;
&lt;br /&gt;
*Undo/Redo is based on saving and restoring the state of MRML nodes in the Scene. &lt;br /&gt;
*MRML scene can save snapshot of all nodes into a special Undo and Redo stacks. &lt;br /&gt;
*The Undo and Redo stacks store copies of nodes that have changed from the previous snapshot. The node that have not changed are stored by a reference (pointer). &lt;br /&gt;
*When an Undo is called on the scene, the current state of Undo stack is copied into the current scene and also into Redo stack. &lt;br /&gt;
*  All Undoable operations must store their data as MRML nodes&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image: Slicer3_MRML_Undo.jpg|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Developer controls at what point the snapshot is saved by calling SaveStateForUndo method on the MRML scene. &lt;br /&gt;
–SaveStateForUndo() - saves the state of all nodes in the scene &lt;br /&gt;
&amp;lt;br /&amp;gt;–SetActiveScene(vtkMRMLScene *) - saves the state of the specified node. &lt;br /&gt;
&amp;lt;br /&amp;gt;–SetActiveScene(vtkCollection*) - saves the state of the specified collection of nodes. &lt;br /&gt;
*SaveStateForUndo() should be called in GUI/Logic classes before changing the state of MRML nodes. This is usually done in the ProcessGUIEvents method that processes events from the user interactions with GUI widgets. &lt;br /&gt;
*SaveStateForUndo() should not be called while processing transient events such as continuous events sent by KW UI while dragging a slider (for example vtkKWScale::ScaleValueStartChangingEvent). &lt;br /&gt;
&lt;br /&gt;
The following methods on the MRML scene are used to manage Undo/Redo stacks:&lt;br /&gt;
&lt;br /&gt;
* vtkMRMLScene::Undo() – restore the previously saved state of the MRML scene.&lt;br /&gt;
* vtkMRMLScene::Redo() – restore the previously undone state of the MRML scene.&lt;br /&gt;
* vtkMRMLScene::SetUndoOff() – ignore following SaveStateForUndo calls (usefull when making multiple changes to the scene/nodes that does not need to be undone). &lt;br /&gt;
* vtkMRMLScene::SetUndoOn() – enable following SaveStateForUndo calls.&lt;br /&gt;
* vtkMRMLScene::ClearUndoStack() – clears the undo history.&lt;br /&gt;
* vtkMRMLScene::ClearRedoStack() – clears the redo history.&lt;br /&gt;
&lt;br /&gt;
= Other Useful References =&lt;br /&gt;
&lt;br /&gt;
== MRML API Documentation ==&lt;br /&gt;
&lt;br /&gt;
The detailed documentation of MRML API can be found in [http://slicer.org/doc/html/classes.html Slicer {{documentation/version}} Doxygen pages]&lt;br /&gt;
&lt;br /&gt;
== Slice view pipeline ==&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:SliceView.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
VTK/MRML pipeline for the 2D slice views: [[File:SliceView.pptx]].&lt;br /&gt;
&lt;br /&gt;
Another view of the ScalarVolumeDisplayNode pipeline:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:Screen Shot 2014-02-11 at 4.00.31 PM.png|thumb|400px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Notes: the MapToWindowLevelColors has no lookup table set, so it maps the scalar volume data to 0,255 with no &amp;quot;color&amp;quot; operation.  This is controlled by the Window/Level settings of the volume display node.  The MapToColors applies the current lookup table to go from 0-255 to full RGBA.&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
&lt;br /&gt;
See Data Model notes in [http://wiki.na-mic.org/Wiki/index.php/AHM_2006:ProjectsSlicerDataModel AHM 2006 Programming week project].&lt;br /&gt;
&lt;br /&gt;
== Path-based MRML proposal ==&lt;br /&gt;
&lt;br /&gt;
Mike's proposal for a [[Slicer3:MRML3_Path|path-based MRML3 representation]], based on extending the Coordinate Space Manager ideas to the entire MRML3 tree&lt;br /&gt;
&lt;br /&gt;
== Slicer Daemon ==&lt;br /&gt;
&lt;br /&gt;
The goal of the [[Slicer3:Slicer_Daemon|Slicer Daemon]] project is to allow remote editing of the MRML data model by external programs over a socket.&lt;br /&gt;
&lt;br /&gt;
== EventBroker Discussion ==&lt;br /&gt;
&lt;br /&gt;
The [[Slicer3:EventBroker|Event Broker]] is a proposal to improve the way events are managed inside slicer.&lt;br /&gt;
&lt;br /&gt;
= Slicer 2.6 MRML =&lt;br /&gt;
&lt;br /&gt;
== Data Represented in MRML in Slicer 2.6 ==&lt;br /&gt;
&lt;br /&gt;
* Volumes&lt;br /&gt;
** IJK-&amp;gt;RAS (VTK-&amp;gt;RAS)&lt;br /&gt;
** Scalar Types&lt;br /&gt;
** Multicomponent (RGB, Displacement Vector)&lt;br /&gt;
** Tensor Volumes&lt;br /&gt;
** Label Maps&lt;br /&gt;
** Reference to Lookup Table&lt;br /&gt;
&lt;br /&gt;
* Models&lt;br /&gt;
** vtkPolyData&lt;br /&gt;
*** Named Field Data (scalars, vectors, labels) at points and cells (FreeSurferReaders)&lt;br /&gt;
*** Polylines with tensor point data (DTMRI Module)&lt;br /&gt;
** Color, Clipping State, Visibility, Scalar Visibility, LookupTable&lt;br /&gt;
&lt;br /&gt;
* Transforms&lt;br /&gt;
** Matrix4x4&lt;br /&gt;
&lt;br /&gt;
* Lookup Tables&lt;br /&gt;
** vtkLookupTable info&lt;br /&gt;
&lt;br /&gt;
* Fiducials&lt;br /&gt;
** Position, Quaternion&lt;br /&gt;
** Name, Selection State, Type (endoscopic, normal)&lt;br /&gt;
** Glyph Size, Text Size&lt;br /&gt;
&lt;br /&gt;
* Fiducial Lists&lt;br /&gt;
** Name, Slze, Color, Selection State&lt;br /&gt;
&lt;br /&gt;
* Colors&lt;br /&gt;
** Name, Label#, Diffuse/Ambient/Specular&lt;br /&gt;
&lt;br /&gt;
* Model Groups&lt;br /&gt;
&lt;br /&gt;
* Application State (not to be carried to Slicer3 MRML)&lt;br /&gt;
* Locator (not to be carried to Slicer3 MRML)&lt;br /&gt;
* Module Specific Parameters (not to be carried to Slicer3 MRML)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Operations On MRML Scene ==&lt;br /&gt;
&lt;br /&gt;
* Load from File&lt;br /&gt;
* Save to File&lt;br /&gt;
* Traverse Nodes in Tree&lt;br /&gt;
* Insert Node&lt;br /&gt;
* Delete Node&lt;br /&gt;
* Register Tree Observer&lt;br /&gt;
* Update MRML&lt;br /&gt;
* Get Transformations (e.g. IJK to World through transform tree)&lt;br /&gt;
&lt;br /&gt;
* Data Type Specific Operations&lt;br /&gt;
** Get/Set Node MetaData&lt;br /&gt;
** Get/Set Data (e.g. as vtkImageData)&lt;br /&gt;
&lt;br /&gt;
== General References on XML ==&lt;br /&gt;
&lt;br /&gt;
[http://en.wikibooks.org/wiki/XML:_Managing_Data_Exchange A wikibook on XML] &lt;br /&gt;
&lt;br /&gt;
The [http://en.wikibooks.org/wiki/XML:_Managing_Data_Exchange/The_many-to-many_relationship#ID.2FIDRE section on ID/IDREF implementations], which are similar to what we use in MRML.&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:VisualBlog&amp;diff=37344</id>
		<title>Slicer4:VisualBlog</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:VisualBlog&amp;diff=37344"/>
		<updated>2014-02-20T15:54:41Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the Slicer 4 visual blog. Please click [[Slicer3:VisualBlog| here]] if you are looking for the old Slicer 3 visual blog.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;2014&amp;quot; widths=&amp;quot;200px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:2014AppleVisualization.png| Multiplanar and volume rendered view of a [http://forge.abcd.harvard.edu/gf/download/frsrelease/85/2945/GrannySmith.zip CT scan of a Granny Smith apple].  In plane resolution is 0.33 mm, and 1.25 mm slice thickness.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;2013&amp;quot; widths=&amp;quot;200px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:ShapeModelSequenceBrowsing3dOnly.gif| The [[Documentation/Nightly/Extensions/MultidimData|Multidimensional data extension]] allows creating, editing, and visualizing multidimensional data sets in 3D Slicer. Browsing, replaying 4D volumes, reviewing deforming 3D models, replaying tracked ultrasound, tool navigation data in 3D, applying time-varying transforms are now all possible.&lt;br /&gt;
Image:UKFTractography_CC.jpg|[http://wiki.slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/UKFTractography UKFTractography] is a module for computing tractography of DWI images using an unscented Kalman filter.  Because of its 2-tensor algorithm, it is able to model fiber crossings and capture many more fibers than a single tensor algorithm.&lt;br /&gt;
Image:SlicerIGT-VisualBlog2013.png| Some applications of the SlicerIGT extension for image-guided and navigated medical interventions. For more information see the [http://www.slicerigt.org Slicer IGT website].&lt;br /&gt;
Image:SPV1.png|[http://wiki.slicer.org/slicerWiki/index.php/Documentation/Nightly/Extensions/ShapePopulationViewer ShapePopulationViewer] is an external tool that allows the user to dynamically interact with multiple surfaces at the same time : an interesting tool for shape visualisation and comparison. It now is available as a Slicer Extension.&lt;br /&gt;
Image:SlicerRT_0.13_SubjectHierarchy_ProstateEclipseLoaded.png|[http://www.na-mic.org/Wiki/index.php/2014_Winter_Project_Week:SubjectHierarchy The Subject hierarchy module and mechanism] organizes and handles loaded data in the RT extension package, providing processing and analysis features through plugins. It aspires to be a convenient central organizing point for many of the operations that 3D Slicer and its extensions perform.&lt;br /&gt;
Image:DownloadFile 2.jpg|[[Documentation/4.3/Modules/DataStore|The Data Store]] allows a user to easily upload and download MRB files. &lt;br /&gt;
Image:SlicerRT ContourRepresentations.png|[[Documentation/4.3/Modules/Contours|The Contours module]] manages contours in the RT extension package.&lt;br /&gt;
Image:MultiVolume-4.3.0-update.png| [[Documentation/4.3/Modules/MultiVolumeExplorer|MultiVolumeExplorer module]] has been updated to include the capability to plot multivolume pixel values from 2 multivolumes at the same time. This feature is particularly helpful while visualizing the results of model fits, such as those produced by the updated [[Documentation/4.3/Modules/PkModeling|PkModeling extension]].&lt;br /&gt;
Image:MatlabBridgeLogo.png| A new extension allows to run matlab scripts without having to recompile Slicer. For more information see [[Documentation/Nightly/Extensions/MatlabBridge|'''here''']]&lt;br /&gt;
Image:ExtensionManagerScreen Shot 2013-05-23 at 9.40.23 PM.png| Extension Manager, the slicer multiplatform Appstore is open for business and free.&lt;br /&gt;
Image:ScreenshotLobeSegmentation.png| Semi-automatic lobe segmentation for regional lung disease analysis as part of the Chest Imaging Platform funded by NHLBI 1R01HL116931&lt;br /&gt;
Image:CMRToolkit.png|The [http://capulet.med.utah.edu/namic/cmrslicer  Cardiac MR Extension] provides tools for segmentation and analysis of heart tissue and structure for treatment and diagnosis of Atrial Fibrillation.&lt;br /&gt;
Image:CarreraSliceBlogEntry.png| [https://www.slicer.org/slicerWiki/index.php/Documentation/Nightly/Modules/CarreraSliceInteractiveSegmenter CarreraSlice]  is an interactive segmentation tool. It combines a fast implementation of the GrowCut algorithm for the 'initialization' phase with KSlice, an interactive algorithm based on Level Sets, for the 'refinement' stage.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;2012&amp;quot; widths=&amp;quot;200px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:BoxChart.png| A box plot&lt;br /&gt;
Image:2012-09-07-FetalBrain.png| Fetal brain development. The visualization is using volume rendering and the Multivolume modules in Slicer 4. Click [[media:FetalBrainGowth.mov|'''here''']] for the full movie (~24mb). Data downloaded from [http://biomedic.doc.ic.ac.uk/brain-development/index.php?n=Main.Fetal Imperial College].&lt;br /&gt;
Image:Screen Shot 2012-09-05 at 10.01.35 AM.png|Leveraging multi viewer layout to arrange 6 slices in the 3D viewer&lt;br /&gt;
Image:ComplexQueryWithImage.jpg|Visualization of complex query &amp;quot;motor system + mass + straight gyrus&amp;quot; using the faceted query module&lt;br /&gt;
Image:Screen Shot 2012-05-30 at 8.03.23 AM.png| Fibers colored by their mean orientation is now available in the Tractography Display module&lt;br /&gt;
Image:SlicerRT-0.2_screenshot.png|[https://www.assembla.com/spaces/slicerrt/milestones/1089853-slicerrt-0-2-release SlicerRT 0.2] has been released! [https://www.assembla.com/spaces/slicerrt/ SlicerRT] is 3D Slicer with extensions for radiotherapy research, which is developed by SparKit project with the contributions from Slicer community.&lt;br /&gt;
Image:Screen Shot 2012-04-11 at 8.07.36 AM.png|The new extension manager&lt;br /&gt;
Image:Screen Shot 2012-04-11 at 8.11.59 AM.png|Up to date download statistics&lt;br /&gt;
Image:Screen Shot 2012-04-05 at 11.35.08 AM.png|A combination of ROI cropping of streamlines, fiducial based seeding and labelmap seeding allows to assess the deformation of streamlines which are due to tumor based deformations.&lt;br /&gt;
Image:2012-03-05-downloadpage.png|New download page which highlights the operating system of the downloading system.&lt;br /&gt;
Image:2012-03-04-Welcome.png|New look for the Welcome module and the &amp;quot;Load/Save&amp;quot; toolbar&lt;br /&gt;
Image:2012-03-04-DWI2FBT.png|Step one of the DWI to Full-brain tractography wizard&lt;br /&gt;
Image:2012-03-04-SliceViewerControllers.png|Improved 2-stage user interface for the Slice Viewer Controllers&lt;br /&gt;
Image:2012-03-04-DicomWidget.png|Updated Dicom Module&lt;br /&gt;
Image:2012-03-04-CoreModuleIcons.png|Updated Icons for the Core Modules&lt;br /&gt;
Image:2012-03-04-CompareViews.png|Updated CompareViewers and Viewer Controler Module&lt;br /&gt;
Image:Screen Shot 2012-02-23 at 7.53.51 AM.png|MultiVolumeExplorer with support for charting. See [[Documentation/Snapshot/Modules/MultiVolumeExplorer|here]] for more information.&lt;br /&gt;
Image:Screen Shot 2012-02-09 at 10.11.08 AM.png|[[Documentation/4.0/Modules/LabelStatistics|Label Statistics]] with charting and visualization&lt;br /&gt;
Image:3D Slicer 4.0.1.2012-02-03 180.png|Image Quantification with Label Statistics, Charting, and Volume Rendering&lt;br /&gt;
Image:Slicer2011-gource.png|Frame from a movie of slicer code activity in 2011.  See '''[http://boggs.bwh.harvard.edu/slicer/slicer4-2011-gource.x264.mp4 the full movie here]'''.  Made with [http://code.google.com/p/gource/ gource].  Inspired by a [http://vimeo.com/33989053 an ITKv4 gource movie]&lt;br /&gt;
Image:AnEarlyChartView.png|A ChartView using QWebView and jqPlot with plots defined in MRML&lt;br /&gt;
Image:ALaterChartView.png|A ChartView using QWebView and jqPlot with plots defined in MRML&lt;br /&gt;
Image:ABarChartView.png|A bar chart tie MRML to a QWebView&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;2011&amp;quot; widths=&amp;quot;200px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:Prostate multiparametric visualization Slicer4.png|Compareviewers&lt;br /&gt;
Image:Slicer4_ChangeTracker_Ad.png|ChangeTracker visualization of analysis results&lt;br /&gt;
Image:Slicer4-SceneViewGUI.jpeg|Sceneview Module&lt;br /&gt;
Image:Selection 142.png|Dicom widget&lt;br /&gt;
Image:3D Slicer 4.0.gamma-2011-10-20 141.png|Endoscopy module&lt;br /&gt;
Image:VolumeRendering-CTA-2011.png|Volumerendering of a CT angiogram&lt;br /&gt;
Image:Tumor-Volume-Rendering-PostGad-2011.png|Volumerendering of a subvolume of a post Gadolinium T1 weighted image of a GBM. Note the relation of surrounding vessels to the tumor.&lt;br /&gt;
Image:2011-11-12-CroppingWholeBrainTractography-detail.png|Note the deformation of the corpus callosum fibers&lt;br /&gt;
Image:2011-11-12-CroppingWholeBrainTractography.png|Using an ROI to crop streamlines from a whole brain tractography. The streamlines display color by orientation, the ellipsoids are displaying fractional anisotropy.&lt;br /&gt;
Image:Screen Shot 2011-11-02 at 1.52.42 PM.png|Annotation module 2011-11&lt;br /&gt;
Image:MainGUI-2011-11.png|Main Gui with pop-up slice controllers&lt;br /&gt;
Image:DataProbe-2011-11.png|The Data Probe&lt;br /&gt;
Image:ModelsModule-2011-11.png|Models organized in a hierarchy&lt;br /&gt;
Image:Conventional-Widescreen-10-2011.png|New Look Oct 2011&lt;br /&gt;
Image:QSlicerVolumeRenderingModule-DualView.png|Dual camera, dual 3D viewer&lt;br /&gt;
Image:4.0-Main-GUI-Facelift.png|After the facelift for the GUI&lt;br /&gt;
Image:QSlicerModelsModule.png|New models module appearance&lt;br /&gt;
Image:SlicerWithVolumeRendering.png|Slicer4 with Volume Rendering&lt;br /&gt;
Image:Slicer4-AnnotationGUI.jpg|Slicer4 Annotation Module&lt;br /&gt;
Image:SlicerWithDTI.png|Glyph display on cross-sections&lt;br /&gt;
Image:FirstCompareViewInSlicer4-2011.png| First CompareView in Slicer4 2011&lt;br /&gt;
Image:2011-01-24-Annotation.png| Slicer 4 Annotation Module 2011-01-24&lt;br /&gt;
Image:2011-01-24-Annotation.png| Slicer 4 Annotation Module 2011-01-24&lt;br /&gt;
Image:LiveUltrasoundModule-Slicer4.jpg| Slicer 4 Live ultrasound module for IGT spine procedures&lt;br /&gt;
Image:LiveUltrasoundModule-Slicer4_2.jpg| Slicer 4 Live ultrasound module for IGT prostate procedures&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;2010&amp;quot; widths=&amp;quot;200px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:2010-SlicerAM QtAnnotation.png| Slicer 4 Annotation Module&lt;br /&gt;
Image:SlicerQT-2009-12-10.png|Slicer with Qt only&lt;br /&gt;
Image:QSlicerROIModule.png| ROI Module&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:2014AppleVisualization.png&amp;diff=37343</id>
		<title>File:2014AppleVisualization.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:2014AppleVisualization.png&amp;diff=37343"/>
		<updated>2014-02-20T15:48:36Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Developer_Meetings/20130702&amp;diff=33704</id>
		<title>Developer Meetings/20130702</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Developer_Meetings/20130702&amp;diff=33704"/>
		<updated>2013-07-01T19:40:20Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* To discuss */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
== To discuss ==&lt;br /&gt;
* Release plans&lt;br /&gt;
** Need to have a version for upcoming training events [http://www.na-mic.org/Wiki/index.php/Events starting in September]&lt;br /&gt;
** Need time to test and update documentation&lt;br /&gt;
* Triage of [http://www.na-mic.org/Bug/roadmap_page.php the 4.3 release roadmap]&lt;br /&gt;
*  [http://www.na-mic.org/Bug/view.php?id=3200 #3200]: Option to make non-interpolated views as default&lt;br /&gt;
** Sorry I won't make the hangout.  Viewing individual pixels is generally useful for technical work, such as medical physics.  It is a common feature in commercial programs, and we eventually will want in Slicer, but not terribly urgent.  -Greg&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.2/Extensions/SlicerRT&amp;diff=29040</id>
		<title>Documentation/4.2/Extensions/SlicerRT</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.2/Extensions/SlicerRT&amp;diff=29040"/>
		<updated>2012-11-06T02:48:22Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-header}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/module-section|Introduction and Acknowledgements}}&lt;br /&gt;
Authors: Csaba Pinter (PerkLab, Queen's University), Andras Lasso (PerkLab, Queen's University), Kevin Wang (Radiation Medicine Program, Princess Margaret Hospital, University Health Network Toronto)&amp;lt;br&amp;gt;&lt;br /&gt;
Contact: Andras Lasso, &amp;lt;email&amp;gt;lasso@cs.queensu.ca&amp;lt;/email&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
Website: https://www.assembla.com/spaces/slicerrt&amp;lt;br&amp;gt;&lt;br /&gt;
License: [http://www.slicer.org/pages/LicenseText Slicer license]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Extension Description}}&lt;br /&gt;
SlicerRT is one of the themes of the SparKit (Software Platform and Adaptive Radiotherapy Kit) project with the goal of making 3D Slicer a powerful radiotherapy research platform.&lt;br /&gt;
SparKit is a project funded by Cancer Care Ontarioand the Ontario Consortium for Adaptive Interventions in Radiation Oncology (OCAIRO) to provide free, open-source toolset for radiotherapy and related image-guided interventions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Modules}}&lt;br /&gt;
&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/DicomRtImport|DICOM-RT import]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/Contours|Contours]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/DoseVolumeHistogram|Dose volume histogram]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/DoseAccumulation|Dose accumulation]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/DoseComparison|Dose comparison]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/Isodose|Isodose line and surface display]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Plastimatch}}&lt;br /&gt;
&lt;br /&gt;
Plastimatch is an open source software with focus is high-performance volumetric registration of medical images.  Plastimatch extensions are delivered together with SlicerRt.&lt;br /&gt;
&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmBSplineDeformableRegistration|Deformable image registration]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmDICOMRTImport|Plastimatch DICOM-RT import]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmDICOMRTExport|Plastimatch DICOM-RT export]] [[image:UnderConstruction.png|tumb|10px]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmLANDWARP|Landmark-based deformable image registration]]&lt;br /&gt;
*[[Documentation/{{documentation/version}}/Modules/PlmXFORMWARP|Image warping]] [[image:UnderConstruction.png|tumb|10px]]&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/PlmDoseComparison|Plastimatch Dose Comparison]] (Greg Sharp)[[image:UnderConstruction.png|tumb|10px]]&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/PlmDoseVolumeHistogram|Plastimatch Dose Volume Histogram]] (Greg Sharp)[[image:UnderConstruction.png|tumb|10px]]&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/PlmSyntheticImageGeneration|Plastimatch Synthetic Image Generation]] (Greg Sharp)[[image:UnderConstruction.png|tumb|10px]]&lt;br /&gt;
**[[Documentation/{{documentation/version}}/Modules/PlmThreshBox|Plastimatch Threshold in a box]] (Greg Sharp)[[image:UnderConstruction.png|tumb|10px]]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Use Cases}}&lt;br /&gt;
* Comparison of dose maps and dose volume histograms from various treatment planning systems&lt;br /&gt;
* Evaluation the effect of image-based non-rigid patient motion compensation&lt;br /&gt;
* Dose accumulation with motion compensation&lt;br /&gt;
&lt;br /&gt;
{|align=&amp;quot;center&amp;quot;&lt;br /&gt;
|[[image:SlicerRtDvh.png|thumb|450px| Dose volume histogram computation using SlicerRT]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Tutorials}}&lt;br /&gt;
* Tutorial presentation: [https://www.assembla.com/spaces/slicerrt/documents/aAuMq81Eqr4ztvacwqjQXA/download/aAuMq81Eqr4ztvacwqjQXA available on the SlicerRT website]&lt;br /&gt;
* Sample data: [https://www.assembla.com/spaces/slicerrt/documents/bMuwgYTKur4yP-acwqjQWU/download/bMuwgYTKur4yP-acwqjQWU available on the SlicerRT website]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|References}}&lt;br /&gt;
* [https://www.assembla.com/spaces/slicerrt/wiki/SlicerRt_users_guide SlicerRT users guide pages]&lt;br /&gt;
* [https://plastimatch.org/contents.html Plastimatch documentation]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-section|Information for Developers}}&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-developerinfo}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;br /&gt;
{{documentation/{{documentation/version}}/extension-footer}}&lt;br /&gt;
&amp;lt;!-- ---------------------------- --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Developer_Meetings/20121002&amp;diff=27709</id>
		<title>Developer Meetings/20121002</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Developer_Meetings/20121002&amp;diff=27709"/>
		<updated>2012-08-03T22:00:21Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* To discuss */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Attendees: &lt;br /&gt;
&lt;br /&gt;
== To discuss ==&lt;br /&gt;
&lt;br /&gt;
* Create a 'developer sandbox' extension index&lt;br /&gt;
** Support continuous builds so developers can test &lt;br /&gt;
*** cross-platform builds&lt;br /&gt;
*** extension installation issues&lt;br /&gt;
** Support nightly builds so new experimental extensions can be delivered to users&lt;br /&gt;
** https://gist.github.com/3171634&lt;br /&gt;
* Support of new data types implemented in extensions&lt;br /&gt;
** Andrey: I would like to know how feasible/difficult it is to have a new type of MRML node that will be possible to add as a new item to &amp;quot;Add data&amp;quot;/&amp;quot;Save data&amp;quot; dialog. Is this extensible from an extension? We need to have this capability to provide consistent user experience (this is also Ron's request/strong suggestion for Reporting module)&lt;br /&gt;
* Greg: Why is Slicer extension documentation hosted on github, instead of slicer.org?&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Developer_Meetings/20120529&amp;diff=26468</id>
		<title>Developer Meetings/20120529</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Developer_Meetings/20120529&amp;diff=26468"/>
		<updated>2012-05-29T19:52:30Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* To discuss */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Attendees: &lt;br /&gt;
&lt;br /&gt;
== To discuss ==&lt;br /&gt;
&lt;br /&gt;
* Plastimatch extension building (sorry, I'll be a little late, such as 4:20, -Greg)&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Developer_Meetings/20120529&amp;diff=26467</id>
		<title>Developer Meetings/20120529</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Developer_Meetings/20120529&amp;diff=26467"/>
		<updated>2012-05-29T19:29:04Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* To discuss */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Attendees: &lt;br /&gt;
&lt;br /&gt;
== To discuss ==&lt;br /&gt;
&lt;br /&gt;
* Plastimatch extension building&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/Developers/Build_Instructions/Prerequisites/Qt&amp;diff=25655</id>
		<title>Documentation/4.0/Developers/Build Instructions/Prerequisites/Qt</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/Developers/Build_Instructions/Prerequisites/Qt&amp;diff=25655"/>
		<updated>2012-04-12T12:38:09Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Binary vs build-from-source ? =&lt;br /&gt;
&lt;br /&gt;
If you build Slicer on ...&lt;br /&gt;
&lt;br /&gt;
== Linux  ==&lt;br /&gt;
&lt;br /&gt;
* Using [[#Download_links|binary]] works great for both '''Debug''' and '''Release''' build of Slicer. See [[#Download_links]] and [[#Installation_instruction]]&lt;br /&gt;
&lt;br /&gt;
== Mac  ==&lt;br /&gt;
&lt;br /&gt;
* Using [[#Download_links|binary]] works great for both '''Debug''' and '''Release''' build of Slicer. See [[#Download_links]] and [[#Installation_instruction]]&lt;br /&gt;
&lt;br /&gt;
== Windows  ==&lt;br /&gt;
&lt;br /&gt;
=== Debug (32 and 64-bit) or Release (64-bit) ===&lt;br /&gt;
&lt;br /&gt;
* You have to build Qt from source. See [[#Download_links]] and [[#Installation_instruction]]&lt;br /&gt;
&lt;br /&gt;
* '''Details''': Using the Qt Designer on Windows requires that the Slicer plugins are [http://doc.trolltech.com/4.6/deployment-plugins.html#debugging-plugins|compiled in the same mode as Qt]. If Qt was compiled in Release mode (default), Slicer would have to be compiled in Release mode as well. However if Qt is compiled in Debug mode only, Slicer has to be compiled in Debug too. When Qt is in &amp;quot;Release and Debug&amp;quot; mode only the Release version of Designer.exe is generated, Slicer would have to be compiled in Release. So for developers, the &amp;lt;b&amp;gt;Debug mode is recommended&amp;lt;/b&amp;gt;, this is why we detail the compilation of Qt below.&lt;br /&gt;
&lt;br /&gt;
=== Release (32-bit) ===&lt;br /&gt;
&lt;br /&gt;
* Using [[#Download_links|binary]] works great for 32-bit Release build of Slicer. See [[#Download_links]] and [[#Installation_instruction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Download Qt: Source and Binaries =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ambox&lt;br /&gt;
| type  = warning&lt;br /&gt;
| text  = While it is not enforced, we strongly advise you to '''USE''' the recommended version of Qt. We mean it.&amp;lt;br&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;That said, if you feel like experimenting, nothing prevent you from building against a difference version.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download links ==&lt;br /&gt;
&lt;br /&gt;
The following table list the link allowing to download either the '''recommended''' source code or binary of Qt.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;margin-left: 20px;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#FFFFCC&amp;quot;&lt;br /&gt;
!rowspan=&amp;quot;3&amp;quot;|&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;2&amp;quot;|Linux&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Mac&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Windows&lt;br /&gt;
|- bgcolor=&amp;quot;#FFFFCC&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;1&amp;quot;|&amp;lt;del&amp;gt;Tiger&amp;lt;/del&amp;gt;&lt;br /&gt;
!colspan=&amp;quot;1&amp;quot;|Leopard, SnowLeopard&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|VS2008&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|VS2010&lt;br /&gt;
|- bgcolor=&amp;quot;#FFFFCC&amp;quot;&lt;br /&gt;
!|32bits&lt;br /&gt;
!|64bits&lt;br /&gt;
!|&amp;lt;del&amp;gt;32bits&amp;lt;/del&amp;gt;&lt;br /&gt;
!|64bits&lt;br /&gt;
!|32bits&lt;br /&gt;
!|64bits&lt;br /&gt;
!|32bits&lt;br /&gt;
!|64bits&lt;br /&gt;
|-&lt;br /&gt;
! bgcolor=&amp;quot;#FFFFCC&amp;quot; | [http://get.qt.nokia.com/qt/source/ Qt source link]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.tar.gz 4.7.4] &lt;br /&gt;
|style=&amp;quot;background-color:#C0C0C0;&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| &amp;lt;del&amp;gt;[http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.tar.gz 4.7.4]&amp;lt;/del&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.tar.gz 4.7.4]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.zip 4.7.4]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.zip 4.7.4]&lt;br /&gt;
|-&lt;br /&gt;
! bgcolor=&amp;quot;#FFFFCC&amp;quot; | [http://get.qt.nokia.com/qt/source/  Qt binary link]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [http://sw.nokia.com/id/8ea74da4-fec1-4277-8b26-c58cc82e204b/Qt_SDK_Lin32_offline SDK-1.2]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [http://sw.nokia.com/id/14b2039c-0e1f-4774-a4f2-9aa60b6d5313/Qt_SDK_Lin64_offline SDK-1.2]&lt;br /&gt;
|style=&amp;quot;background-color:#C0C0C0;&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| &amp;lt;del&amp;gt;[http://get.qt.nokia.com/qt/source/qt-mac-carbon-opensource-4.7.0.dmg carbon_4.7.0]&amp;lt;/del&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [ftp://ftp.qt.nokia.com/qt/source/qt-mac-opensource-4.7.4-debug-libs.dmg cocoa_4.7.4] &lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-win-opensource-4.7.4-vs2008.exe 4.7.4]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-win-opensource-4.7.4-vs2008.exe 4.7.4]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation instruction ==&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
See [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites/Qt/Instal_QtSDK1.2_Offline_Linux_64|Qt installation guide (4.7.4, Linux, 64-bit, Offline)]]&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Qt version specific issues ==&lt;br /&gt;
&lt;br /&gt;
=== All ===&lt;br /&gt;
&lt;br /&gt;
* '''Qt 4.6.x''' on windows (and possibly in linux/mac): No image base64 support in QLabel/QTooltips (work around exists though)&lt;br /&gt;
* '''Qt 4.8''' does not work with PythonQt in slicer4 - suggested version is 4.7.4&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
* NA&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
&lt;br /&gt;
* '''Qt 4.6''': hard to compile - TBD: Be more specific&lt;br /&gt;
* '''Qt 4.7''': click outside of popup (http://na-mic.org/Mantis/view.php?id=1241) - Is it fixed in Qt 4.8 ?&lt;br /&gt;
* '''Qt 4.7.3''': http://na-mic.org/Mantis/view.php?id=1388 - Fixed in Qt 4.7.4&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* NA&lt;br /&gt;
&lt;br /&gt;
== How to change the minimum required version ? ==&lt;br /&gt;
&lt;br /&gt;
* It's indeed possible to use a different version, just be aware that moving forward in time, things may not work as expected. Even worse Slicer may simply fail to compile.&lt;br /&gt;
&lt;br /&gt;
* By configuring Slicer using &amp;lt;code&amp;gt;-DSlicer_REQUIRED_QT_VERSION:STRING=4.7.0&amp;lt;/code&amp;gt;, you will be able to change the minimum required version.&lt;br /&gt;
&lt;br /&gt;
* See [https://github.com/Slicer/Slicer/commit/898bb14e 898bb14e], [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=19698 r19698], [http://massmail.spl.harvard.edu/public-archives/slicer-devel/2012/008130.html Mailing list]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Build instructions =&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{mbox&lt;br /&gt;
| text = Please, make sure that your IDE/compiler is '''properly installed''' and that all associated '''ServicePack''' are also installed. See [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites|Prerequisites]].&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
TODO: Add a section specific to debian based platform.&lt;br /&gt;
*Downloading the binaries of Qt works fine with Linux, you do not have to compile Qt manually. &lt;br /&gt;
** Note: You need to install the libQtWebkit-devel package too.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Your Qt must be OpenGL enabled.  On debian, install: &amp;lt;code&amp;gt;libgl1-mesa-glx libglu1-mesa-glx&amp;lt;/code&amp;gt;&lt;br /&gt;
* Consider installing the following optional packages (&amp;lt;code&amp;gt;libxt-dev libxrender-dev libxrandr-dev libxinerama-dev libxcursor-dev libfontconfig-dev libglib2.0-dev&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir qt-everywhere-opensource-build-4.7.4&lt;br /&gt;
tar xvfz qt-everywhere-opensource-src-4.7.4.tar.gz&lt;br /&gt;
cd qt-everywhere-opensource-src-4.7.4&lt;br /&gt;
./configure -prefix ../qt-everywhere-opensource-build-4.7.4 -debug-and-release -opensource -confirm-license -no-qt3support -webkit -nomake examples -nomake demos&lt;br /&gt;
make -j8&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- Note: On a 64 bit system, you may have to add &amp;lt;code&amp;gt;-arch x86_64&amp;lt;/code&amp;gt; to the Qt configure command line (?) --&amp;gt;&lt;br /&gt;
Note: Adapt &amp;lt;code&amp;gt;-j8&amp;lt;/code&amp;gt; with the number of core on your machine, a dual core should probably not do more than &amp;lt;code&amp;gt;-j3&amp;lt;/code&amp;gt;, an 8 core machine can resonably go as much as &amp;lt;code&amp;gt;-j12&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Mac  ==&lt;br /&gt;
&lt;br /&gt;
Similar to Linux configuration. Note that &amp;lt;code&amp;gt;-arch x86_64&amp;lt;/code&amp;gt; has been added.&lt;br /&gt;
&lt;br /&gt;
For earlier versions of Xcode and Mac OS X&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir qt-everywhere-opensource-build-4.7.4&lt;br /&gt;
tar xvfz qt-everywhere-opensource-src-4.7.4.tar.gz&lt;br /&gt;
cd qt-everywhere-opensource-src-4.7.4&lt;br /&gt;
./configure -prefix ../qt-everywhere-opensource-build-4.7.4 -debug-and-release -opensource -confirm-license -no-qt3support -webkit -arch x86_64 -nomake examples -nomake demos -sdk /Developer/SDKs/MacOSX10.5.sdk/&lt;br /&gt;
make -j8&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the latest Xcode versions (4.3) and Lion (10.7) the Developer directories have moved.  The command is now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure -prefix ../qt-everywhere-opensource-build-4.7.4 -debug-and-release -opensource -confirm-license -no-qt3support -arch x86_64 -nomake examples -nomake demos -webkit -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consider reading: http://doc.qt.nokia.com/4.7/developing-on-mac.html)&lt;br /&gt;
&lt;br /&gt;
* Note:&lt;br /&gt;
** If building against SDK 10.6 or 10.7, you will probably get link errors similar to what's described in [https://trac.macports.org/ticket/30346] and [http://qt-project.org/forums/viewthread/15933]. The solution is probably to disable the &amp;lt;code&amp;gt;corewlan&amp;lt;/code&amp;gt; module but didn't figure out to do that properly.&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
# Use a windows extracter to unzip the [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites/Qt#Download_links|Qt archive]], don't use cygwin unzip it.&lt;br /&gt;
# launch the msvc2008 command prompt (MSVC08-&amp;gt;Tools-&amp;gt;Visual Studio 2008 CommandPrompt) (or: launch cmd.exe and run &amp;lt;code&amp;gt;vcvars32.bat&amp;lt;/code&amp;gt;) Note: Start x64 prompt from Start menu (don't start from inside visual studio or it will be an x86 32 bit shell).  Menu item is &amp;quot;Visual Studio 2008 x64 Win64 Command Prompt&amp;quot;&lt;br /&gt;
# build with &amp;lt;code&amp;gt;configure.exe -platform win32-msvc2008 -debug -nomake examples -nomake demos&amp;lt;/code&amp;gt; &lt;br /&gt;
#* When asked, choose open source license type (o), then accept the license (y)&lt;br /&gt;
#* Note: the option &amp;lt;code&amp;gt;-prefix&amp;lt;/code&amp;gt; doesn't work on Windows.&lt;br /&gt;
#* Note: According to [http://qt.nokia.com/doc/4.7/supported-platforms.html] Qt does not support msvc2008 on windows xp.  However, running &amp;lt;code&amp;gt;configure.exe&amp;lt;/code&amp;gt; with no &amp;lt;code&amp;gt;-platform&amp;lt;/code&amp;gt; argument seems to work. If you run configure with the &amp;lt;code&amp;gt;-platform&amp;lt;/code&amp;gt; argument first by mistake, and if &amp;lt;code&amp;gt;configure -clean&amp;lt;/code&amp;gt; doesn't work, then you may need to start from a fresh extraction from the .zip archive before running &amp;lt;code&amp;gt;configure.exe&amp;lt;/code&amp;gt; again with no &amp;lt;code&amp;gt;-platform&amp;lt;/code&amp;gt;, unless you can run &amp;lt;code&amp;gt;nmake&amp;lt;/code&amp;gt; with the config clean target.&lt;br /&gt;
#* Note: for Microsoft Visual Studio 2010 users, Qt 4.6.3 is hard to configure with MSVC2010, use Qt 4.7.x instead. Build with &amp;lt;code&amp;gt;set QMAKESPEC=win32-msvc2010&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;configure -platform win32-msvc2010  -debug&amp;lt;/code&amp;gt;&lt;br /&gt;
# run &amp;lt;code&amp;gt;nmake&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Note: building with webkit support requires that &amp;lt;i&amp;gt;src/3rdparty/webkit/WebCore/tmp/moc/{debug,release}_shared/mocinclude.tmp&amp;lt;/i&amp;gt; be removed. else you will get linker errors like &amp;lt;code&amp;gt;QNetworkReplyHandler.obj : error LNK2001: unresolved external symbol &amp;quot;public: virtual struct QMetaObject const * __thiscall WebCore::FormDataIODevice::metaObject(void)const (?metaObject@FormDataIODevice@WebCore@@UBEPBUQMetaObject@@XZ)&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Note: If you encounter the following error &amp;lt;code&amp;gt;api\qscriptextensionplugin.h(43): Error: Undefined interface,&amp;lt;/code&amp;gt;, delete the files &amp;lt;i&amp;gt;\src\script\tmp\moc\debug_shared\mocinclude.tmp&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;\src\script\tmp\moc\release_shared\mocinclude.tmp&amp;lt;/i&amp;gt; and restart nmake. For more info, please see [http://bugreports.qt.nokia.com/browse/QTBUG-6470 QTBug 6470]].&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/Developers/Build_Instructions/Prerequisites&amp;diff=25419</id>
		<title>Documentation/4.0/Developers/Build Instructions/Prerequisites</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/Developers/Build_Instructions/Prerequisites&amp;diff=25419"/>
		<updated>2012-04-11T03:13:41Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* Debian squeeze */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please check that the following tools are installed on your machine.&lt;br /&gt;
&lt;br /&gt;
= Required tools and libraries = &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{mbox&lt;br /&gt;
| type = protection&lt;br /&gt;
| text = Qt libraries are '''required'''. Consider reading [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites/Qt|Qt requirements]].&lt;br /&gt;
| image= [[{{tool|logo|qt}}|x40px]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux  ==&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu ===&lt;br /&gt;
*Ubuntu users, just type the following line in a terminal&lt;br /&gt;
 sudo apt-get install subversion gcc g++ libX11-dev libXt-dev libgl1-mesa-dev libosmesa6-dev libglu1-mesa-dev git cmake cmake-curses-gui&lt;br /&gt;
&lt;br /&gt;
* libXt-devel (libXt-dev)&lt;br /&gt;
* opengl/mesa (libgl1-mesa-dev and libosmesa6-dev)&lt;br /&gt;
* glu (libglu1-mesa-dev)&lt;br /&gt;
* &amp;lt;del&amp;gt;libX11-devel (libX11-dev  on Ubuntu 7.04)&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debian squeeze ===&lt;br /&gt;
 sudo apt-get install gcc libX11-dev libXt-dev libgl1-mesa-dev libosmesa6-dev libglu1-mesa-dev git &amp;lt;del&amp;gt;cmake&amp;lt;/del&amp;gt; &amp;lt;del&amp;gt;cmake-curses-gui&amp;lt;/del&amp;gt; &amp;lt;del&amp;gt;libqt4-dev&amp;lt;/del&amp;gt; subversion make g++&lt;br /&gt;
* Debian squeeze has cmake 2.8.2 and Qt 4.6.3.  You will need to install newer versions of these packages.&lt;br /&gt;
&lt;br /&gt;
=== Debian testing (wheezy) ===&lt;br /&gt;
 sudo apt-get install gcc libX11-dev libXt-dev libgl1-mesa-dev libosmesa6-dev libglu1-mesa-dev git cmake cmake-curses-gui libqt4-dev subversion make g++&lt;br /&gt;
&lt;br /&gt;
=== CentOS ===&lt;br /&gt;
*CentOS user type:&lt;br /&gt;
 yum install gcc-c++ libX11-devel libXt-devel make libXext-devel&lt;br /&gt;
&lt;br /&gt;
=== Generic (''need to confirm'') ===&lt;br /&gt;
*[[{{tool|logo|cmake}}|x16px]] [{{tool|download|cmake}} CMake] &amp;gt;= 2.8.4&lt;br /&gt;
*[[{{tool|logo|git}}|x16px]] [{{tool|download|git}} Git] &amp;gt;= 1.6.5&lt;br /&gt;
* ''An easy way to get all of the packages needed to build Slicer is to install all of the packages needed to build paraview (another vtk-based program)&lt;br /&gt;
** sudo apt-get install aptitude&lt;br /&gt;
** sudo aptitude build-dep paraview&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-c++&lt;br /&gt;
* libX11&lt;br /&gt;
&lt;br /&gt;
== Mac ==&lt;br /&gt;
* Mac Os X &amp;gt;= 10.5 (Leopard)&lt;br /&gt;
*[[{{tool|logo|cmake}}|x16px]] [{{tool|download|cmake}} CMake] &amp;gt;= 2.8.6&lt;br /&gt;
*[[{{tool|logo|git}}|x16px]] [{{tool|download|git}} Git] &amp;gt;= 1.6.5&lt;br /&gt;
* XCode (for the SDK libs)&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
*[[{{tool|logo|cmake}}|x16px]]  [{{tool|download|cmake}}  CMake] &amp;gt;= 2.8.4&lt;br /&gt;
** '''Windows7''': Custom build of [https://qshare.queensu.ca/Users01/lasso/public/cmake-2.8.7.12957-win32-x86.exe CMake 2.8.7] by Andras Lasso. Waiting CMake 2.8.8 is released, this solves issue [http://cmake.org/Bug/view.php?id=12957 #12957]. Consider also reading [[Documentation/{{documentation/version}}/Developers/Build_Instructions#A_tool_returned_an_error_code_from_.22Performing_configure_step_for_....22|this page]] for further details.&lt;br /&gt;
*[[{{tool|logo|git}}|x16px]]  [{{tool|download|git}}  Git] &amp;gt;= 1.6.5. &lt;br /&gt;
** [https://code.google.com/p/msysgit/downloads/list?can=3 ''Git-1.7.9-preview20120201.exe''] recommended. &lt;br /&gt;
** Use of [http://code.google.com/p/tortoisegit/ TortoiseGit] is optional.&lt;br /&gt;
** {{note}}For convenience, you could update the PATH variable so that ''git'' can be automatically discovered when configuring Slicer. If not, you will have to specify the GIT_EXECUTABLE at configure time.&lt;br /&gt;
* SVN (e.g. [http://www.sliksvn.com/en/download SlikSvn] or [http://www.cygwin.com cygwin's svn client])&lt;br /&gt;
* IDE&lt;br /&gt;
** '''Tested/Recommended''': [https://www.microsoft.com/visualstudio/en-us/products/2008-editions Microsoft Visual Studio 9 2008] (Any edition).&lt;br /&gt;
*** Make sure to install:&lt;br /&gt;
**** SP1. Click [http://www.microsoft.com/download/en/details.aspx?id=10986 here] to download SP1 and click [http://massmail.spl.harvard.edu/public-archives/slicer-devel/2012/008206.html here] to understand the motivation.&lt;br /&gt;
** '''Experimental''': The plan is to support [https://www.microsoft.com/visualstudio/en-us/products/2010-editions Microsoft Visual Studio 2010] (Any edition).&lt;br /&gt;
*** Make sure to install:&lt;br /&gt;
**** SP1. Click [http://www.microsoft.com/download/en/details.aspx?id=23691 here] to download SP1 and click [http://developer.qt.nokia.com/faq/answer/why_do_all_qt_4.7_applications_crash_when_using_windows_7_x64_w_vs_2010 here] to understand the motivation.&lt;br /&gt;
**** SP1 Compiler update. Click [https://www.microsoft.com/download/en/details.aspx?id=4422 here] to download and [http://slicer-devel.65872.n3.nabble.com/Windows-7-64Bits-Slicer-4-Build-with-VC-2010-problem-tt3730524.html#a3731661 here] to understand the motivation.&lt;br /&gt;
&amp;lt;!-- JC: This links shouldn't be here: 1) Since this the developer section, it's assumed Visual Studio is installed. 2) The Dll are distributed within Slicer package --&amp;gt;&lt;br /&gt;
&amp;lt;!-- *** Optional: &amp;quot;Microsoft Visual C++ 2010 SP1 Redistributable Package&amp;quot;. Click [http://www.microsoft.com/download/en/details.aspx?id=13523 here for x64] download, or [http://www.microsoft.com/download/en/details.aspx?id=13523 here for x86] download.  [http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=29 x86 (32bit) for VS 2008] --&amp;gt;&lt;br /&gt;
** '''Un-tested''': Cygwin suite (building with cygwin gcc not supported, but the cygwin shell environment can be used to run git, svn, etc).&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/Developers/Build_Instructions/Prerequisites&amp;diff=25418</id>
		<title>Documentation/4.0/Developers/Build Instructions/Prerequisites</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/Developers/Build_Instructions/Prerequisites&amp;diff=25418"/>
		<updated>2012-04-11T03:13:19Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* Debian Squeeze */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please check that the following tools are installed on your machine.&lt;br /&gt;
&lt;br /&gt;
= Required tools and libraries = &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{mbox&lt;br /&gt;
| type = protection&lt;br /&gt;
| text = Qt libraries are '''required'''. Consider reading [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites/Qt|Qt requirements]].&lt;br /&gt;
| image= [[{{tool|logo|qt}}|x40px]]&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux  ==&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu ===&lt;br /&gt;
*Ubuntu users, just type the following line in a terminal&lt;br /&gt;
 sudo apt-get install subversion gcc g++ libX11-dev libXt-dev libgl1-mesa-dev libosmesa6-dev libglu1-mesa-dev git cmake cmake-curses-gui&lt;br /&gt;
&lt;br /&gt;
* libXt-devel (libXt-dev)&lt;br /&gt;
* opengl/mesa (libgl1-mesa-dev and libosmesa6-dev)&lt;br /&gt;
* glu (libglu1-mesa-dev)&lt;br /&gt;
* &amp;lt;del&amp;gt;libX11-devel (libX11-dev  on Ubuntu 7.04)&amp;lt;/del&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debian squeeze ===&lt;br /&gt;
 sudo apt-get install gcc libX11-dev libXt-dev libgl1-mesa-dev libosmesa6-dev libglu1-mesa-dev git &amp;lt;del&amp;gt;cmake&amp;lt;/del&amp;gt; &amp;lt;del&amp;gt;cmake-curses-gui&amp;lt;/del&amp;gt; &amp;lt;del&amp;gt;libqt4-dev&amp;lt;/del&amp;gt; subversion make g++&lt;br /&gt;
* Debian squeeze has cmake and Qt 4.6.3.  You will need to install newer versions of these packages.&lt;br /&gt;
&lt;br /&gt;
=== Debian testing (wheezy) ===&lt;br /&gt;
 sudo apt-get install gcc libX11-dev libXt-dev libgl1-mesa-dev libosmesa6-dev libglu1-mesa-dev git cmake cmake-curses-gui libqt4-dev subversion make g++&lt;br /&gt;
&lt;br /&gt;
=== CentOS ===&lt;br /&gt;
*CentOS user type:&lt;br /&gt;
 yum install gcc-c++ libX11-devel libXt-devel make libXext-devel&lt;br /&gt;
&lt;br /&gt;
=== Generic (''need to confirm'') ===&lt;br /&gt;
*[[{{tool|logo|cmake}}|x16px]] [{{tool|download|cmake}} CMake] &amp;gt;= 2.8.4&lt;br /&gt;
*[[{{tool|logo|git}}|x16px]] [{{tool|download|git}} Git] &amp;gt;= 1.6.5&lt;br /&gt;
* ''An easy way to get all of the packages needed to build Slicer is to install all of the packages needed to build paraview (another vtk-based program)&lt;br /&gt;
** sudo apt-get install aptitude&lt;br /&gt;
** sudo aptitude build-dep paraview&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-c++&lt;br /&gt;
* libX11&lt;br /&gt;
&lt;br /&gt;
== Mac ==&lt;br /&gt;
* Mac Os X &amp;gt;= 10.5 (Leopard)&lt;br /&gt;
*[[{{tool|logo|cmake}}|x16px]] [{{tool|download|cmake}} CMake] &amp;gt;= 2.8.6&lt;br /&gt;
*[[{{tool|logo|git}}|x16px]] [{{tool|download|git}} Git] &amp;gt;= 1.6.5&lt;br /&gt;
* XCode (for the SDK libs)&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
*[[{{tool|logo|cmake}}|x16px]]  [{{tool|download|cmake}}  CMake] &amp;gt;= 2.8.4&lt;br /&gt;
** '''Windows7''': Custom build of [https://qshare.queensu.ca/Users01/lasso/public/cmake-2.8.7.12957-win32-x86.exe CMake 2.8.7] by Andras Lasso. Waiting CMake 2.8.8 is released, this solves issue [http://cmake.org/Bug/view.php?id=12957 #12957]. Consider also reading [[Documentation/{{documentation/version}}/Developers/Build_Instructions#A_tool_returned_an_error_code_from_.22Performing_configure_step_for_....22|this page]] for further details.&lt;br /&gt;
*[[{{tool|logo|git}}|x16px]]  [{{tool|download|git}}  Git] &amp;gt;= 1.6.5. &lt;br /&gt;
** [https://code.google.com/p/msysgit/downloads/list?can=3 ''Git-1.7.9-preview20120201.exe''] recommended. &lt;br /&gt;
** Use of [http://code.google.com/p/tortoisegit/ TortoiseGit] is optional.&lt;br /&gt;
** {{note}}For convenience, you could update the PATH variable so that ''git'' can be automatically discovered when configuring Slicer. If not, you will have to specify the GIT_EXECUTABLE at configure time.&lt;br /&gt;
* SVN (e.g. [http://www.sliksvn.com/en/download SlikSvn] or [http://www.cygwin.com cygwin's svn client])&lt;br /&gt;
* IDE&lt;br /&gt;
** '''Tested/Recommended''': [https://www.microsoft.com/visualstudio/en-us/products/2008-editions Microsoft Visual Studio 9 2008] (Any edition).&lt;br /&gt;
*** Make sure to install:&lt;br /&gt;
**** SP1. Click [http://www.microsoft.com/download/en/details.aspx?id=10986 here] to download SP1 and click [http://massmail.spl.harvard.edu/public-archives/slicer-devel/2012/008206.html here] to understand the motivation.&lt;br /&gt;
** '''Experimental''': The plan is to support [https://www.microsoft.com/visualstudio/en-us/products/2010-editions Microsoft Visual Studio 2010] (Any edition).&lt;br /&gt;
*** Make sure to install:&lt;br /&gt;
**** SP1. Click [http://www.microsoft.com/download/en/details.aspx?id=23691 here] to download SP1 and click [http://developer.qt.nokia.com/faq/answer/why_do_all_qt_4.7_applications_crash_when_using_windows_7_x64_w_vs_2010 here] to understand the motivation.&lt;br /&gt;
**** SP1 Compiler update. Click [https://www.microsoft.com/download/en/details.aspx?id=4422 here] to download and [http://slicer-devel.65872.n3.nabble.com/Windows-7-64Bits-Slicer-4-Build-with-VC-2010-problem-tt3730524.html#a3731661 here] to understand the motivation.&lt;br /&gt;
&amp;lt;!-- JC: This links shouldn't be here: 1) Since this the developer section, it's assumed Visual Studio is installed. 2) The Dll are distributed within Slicer package --&amp;gt;&lt;br /&gt;
&amp;lt;!-- *** Optional: &amp;quot;Microsoft Visual C++ 2010 SP1 Redistributable Package&amp;quot;. Click [http://www.microsoft.com/download/en/details.aspx?id=13523 here for x64] download, or [http://www.microsoft.com/download/en/details.aspx?id=13523 here for x86] download.  [http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=29 x86 (32bit) for VS 2008] --&amp;gt;&lt;br /&gt;
** '''Un-tested''': Cygwin suite (building with cygwin gcc not supported, but the cygwin shell environment can be used to run git, svn, etc).&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/Developers/Build_Instructions/Prerequisites/Qt&amp;diff=25416</id>
		<title>Documentation/4.0/Developers/Build Instructions/Prerequisites/Qt</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/Developers/Build_Instructions/Prerequisites/Qt&amp;diff=25416"/>
		<updated>2012-04-10T19:05:35Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Binary vs build-from-source ? =&lt;br /&gt;
&lt;br /&gt;
If you build Slicer on ...&lt;br /&gt;
&lt;br /&gt;
== Linux  ==&lt;br /&gt;
&lt;br /&gt;
* Using [[#Download_links|binary]] works great for both '''Debug''' and '''Release''' build of Slicer. See [[#Download_links]] and [[#Installation_instruction]]&lt;br /&gt;
&lt;br /&gt;
== Mac  ==&lt;br /&gt;
&lt;br /&gt;
* Using [[#Download_links|binary]] works great for both '''Debug''' and '''Release''' build of Slicer. See [[#Download_links]] and [[#Installation_instruction]]&lt;br /&gt;
&lt;br /&gt;
== Windows  ==&lt;br /&gt;
&lt;br /&gt;
=== Debug (32 and 64-bit) or Release (64-bit) ===&lt;br /&gt;
&lt;br /&gt;
* You have to build Qt from source. See [[#Download_links]] and [[#Installation_instruction]]&lt;br /&gt;
&lt;br /&gt;
* '''Details''': Using the Qt Designer on Windows requires that the Slicer plugins are [http://doc.trolltech.com/4.6/deployment-plugins.html#debugging-plugins|compiled in the same mode as Qt]. If Qt was compiled in Release mode (default), Slicer would have to be compiled in Release mode as well. However if Qt is compiled in Debug mode only, Slicer has to be compiled in Debug too. When Qt is in &amp;quot;Release and Debug&amp;quot; mode only the Release version of Designer.exe is generated, Slicer would have to be compiled in Release. So for developers, the &amp;lt;b&amp;gt;Debug mode is recommended&amp;lt;/b&amp;gt;, this is why we detail the compilation of Qt below.&lt;br /&gt;
&lt;br /&gt;
=== Release (32-bit) ===&lt;br /&gt;
&lt;br /&gt;
* Using [[#Download_links|binary]] works great for 32-bit Release build of Slicer. See [[#Download_links]] and [[#Installation_instruction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Download Qt: Source and Binaries =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ambox&lt;br /&gt;
| type  = warning&lt;br /&gt;
| text  = While it is not enforced, we strongly advise you to '''USE''' the recommended version of Qt. We mean it.&amp;lt;br&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;That said, if you feel like experimenting, nothing prevent you from building against a difference version.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download links ==&lt;br /&gt;
&lt;br /&gt;
The following table list the link allowing to download either the '''recommended''' source code or binary of Qt.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;margin-left: 20px;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#FFFFCC&amp;quot;&lt;br /&gt;
!rowspan=&amp;quot;3&amp;quot;|&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;2&amp;quot;|Linux&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Mac&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Windows&lt;br /&gt;
|- bgcolor=&amp;quot;#FFFFCC&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;1&amp;quot;|&amp;lt;del&amp;gt;Tiger&amp;lt;/del&amp;gt;&lt;br /&gt;
!colspan=&amp;quot;1&amp;quot;|Leopard, SnowLeopard&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|VS2008&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|VS2010&lt;br /&gt;
|- bgcolor=&amp;quot;#FFFFCC&amp;quot;&lt;br /&gt;
!|32bits&lt;br /&gt;
!|64bits&lt;br /&gt;
!|&amp;lt;del&amp;gt;32bits&amp;lt;/del&amp;gt;&lt;br /&gt;
!|64bits&lt;br /&gt;
!|32bits&lt;br /&gt;
!|64bits&lt;br /&gt;
!|32bits&lt;br /&gt;
!|64bits&lt;br /&gt;
|-&lt;br /&gt;
! bgcolor=&amp;quot;#FFFFCC&amp;quot; | [http://get.qt.nokia.com/qt/source/ Qt source link]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.tar.gz 4.7.4] &lt;br /&gt;
|style=&amp;quot;background-color:#C0C0C0;&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| &amp;lt;del&amp;gt;[http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.tar.gz 4.7.4]&amp;lt;/del&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.tar.gz 4.7.4]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.zip 4.7.4]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.zip 4.7.4]&lt;br /&gt;
|-&lt;br /&gt;
! bgcolor=&amp;quot;#FFFFCC&amp;quot; | [http://get.qt.nokia.com/qt/source/  Qt binary link]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [http://sw.nokia.com/id/8ea74da4-fec1-4277-8b26-c58cc82e204b/Qt_SDK_Lin32_offline SDK-1.2]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [http://sw.nokia.com/id/14b2039c-0e1f-4774-a4f2-9aa60b6d5313/Qt_SDK_Lin64_offline SDK-1.2]&lt;br /&gt;
|style=&amp;quot;background-color:#C0C0C0;&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| &amp;lt;del&amp;gt;[http://get.qt.nokia.com/qt/source/qt-mac-carbon-opensource-4.7.0.dmg carbon_4.7.0]&amp;lt;/del&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [ftp://ftp.qt.nokia.com/qt/source/qt-mac-opensource-4.7.4-debug-libs.dmg cocoa_4.7.4] &lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-win-opensource-4.7.4-vs2008.exe 4.7.4]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-win-opensource-4.7.4-vs2008.exe 4.7.4]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation instruction ==&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
See [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites/Qt/Instal_QtSDK1.2_Offline_Linux_64|Qt installation guide (4.7.4, Linux, 64-bit, Offline)]]&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Qt version specific issues ==&lt;br /&gt;
&lt;br /&gt;
=== All ===&lt;br /&gt;
&lt;br /&gt;
* '''Qt 4.6.x''' on windows (and possibly in linux/mac): No image base64 support in QLabel/QTooltips (work around exists though)&lt;br /&gt;
* '''Qt 4.8''' does not work with PythonQt in slicer4 - suggested version is 4.7.4&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
* NA&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
&lt;br /&gt;
* '''Qt 4.6''': hard to compile - TBD: Be more specific&lt;br /&gt;
* '''Qt 4.7''': click outside of popup (http://na-mic.org/Mantis/view.php?id=1241) - Is it fixed in Qt 4.8 ?&lt;br /&gt;
* '''Qt 4.7.3''': http://na-mic.org/Mantis/view.php?id=1388 - Fixed in Qt 4.7.4&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* NA&lt;br /&gt;
&lt;br /&gt;
== How to change the minimum required version ? ==&lt;br /&gt;
&lt;br /&gt;
* It's indeed possible to use a different version, just be aware that moving forward in time, things may not work as expected. Even worse Slicer may simply fail to compile.&lt;br /&gt;
&lt;br /&gt;
* By configuring Slicer using &amp;lt;code&amp;gt;-DSlicer_REQUIRED_QT_VERSION:STRING=4.7.0&amp;lt;/code&amp;gt;, you will be able to change the minimum required version.&lt;br /&gt;
&lt;br /&gt;
* See [https://github.com/Slicer/Slicer/commit/898bb14e 898bb14e], [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=19698 r19698], [http://massmail.spl.harvard.edu/public-archives/slicer-devel/2012/008130.html Mailing list]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Build instructions =&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{mbox&lt;br /&gt;
| text = Please, make sure that your IDE/compiler is '''properly installed''' and that all associated '''ServicePack''' are also installed. See [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites|Prerequisites]].&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
TODO: Add a section specific to debian based platform.&lt;br /&gt;
*Downloading the binaries of Qt works fine with Linux, you do not have to compile Qt manually. &lt;br /&gt;
** Note: You need to install the libQtWebkit-devel package too.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consider installing the following optional packages (&amp;lt;code&amp;gt;libxt-dev libxrender-dev libxrandr-dev libxinerama-dev libxcursor-dev libfontconfig-dev libglib2.0-dev&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir qt-everywhere-opensource-build-4.7.4&lt;br /&gt;
tar xvfz qt-everywhere-opensource-src-4.7.4.tar.gz&lt;br /&gt;
cd qt-everywhere-opensource-src-4.7.4&lt;br /&gt;
./configure -prefix ../qt-everywhere-opensource-build-4.7.4 -debug-and-release -opensource -confirm-license -no-qt3support -webkit -nomake examples -nomake demos&lt;br /&gt;
make -j8&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- Note: On a 64 bit system, you may have to add &amp;lt;code&amp;gt;-arch x86_64&amp;lt;/code&amp;gt; to the Qt configure command line (?) --&amp;gt;&lt;br /&gt;
Note: Adapt &amp;lt;code&amp;gt;-j8&amp;lt;/code&amp;gt; with the number of core on your machine, a dual core should probably not do more than &amp;lt;code&amp;gt;-j3&amp;lt;/code&amp;gt;, an 8 core machine can resonably go as much as &amp;lt;code&amp;gt;-j12&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Mac  ==&lt;br /&gt;
&lt;br /&gt;
Similar to Linux configuration. Note that &amp;lt;code&amp;gt;-arch x86_64&amp;lt;/code&amp;gt; has been added.&lt;br /&gt;
&lt;br /&gt;
For earlier versions of Xcode and Mac OS X&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir qt-everywhere-opensource-build-4.7.4&lt;br /&gt;
tar xvfz qt-everywhere-opensource-src-4.7.4.tar.gz&lt;br /&gt;
cd qt-everywhere-opensource-src-4.7.4&lt;br /&gt;
./configure -prefix ../qt-everywhere-opensource-build-4.7.4 -debug-and-release -opensource -confirm-license -no-qt3support -webkit -arch x86_64 -nomake examples -nomake demos -sdk /Developer/SDKs/MacOSX10.5.sdk/&lt;br /&gt;
make -j8&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the latest Xcode versions (4.3) and Lion (10.7) the Developer directories have moved.  The command is now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure -prefix ../qt-everywhere-opensource-build-4.7.4 -debug-and-release -opensource -confirm-license -no-qt3support -arch x86_64 -nomake examples -nomake demos -webkit -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consider reading: http://doc.qt.nokia.com/4.7/developing-on-mac.html)&lt;br /&gt;
&lt;br /&gt;
* Note:&lt;br /&gt;
** If building against SDK 10.6 or 10.7, you will probably get link errors similar to what's described in [https://trac.macports.org/ticket/30346] and [http://qt-project.org/forums/viewthread/15933]. The solution is probably to disable the &amp;lt;code&amp;gt;corewlan&amp;lt;/code&amp;gt; module but didn't figure out to do that properly.&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
# Use a windows extracter to unzip the [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites/Qt#Download_links|Qt archive]], don't use cygwin unzip it.&lt;br /&gt;
# launch the msvc2008 command prompt (MSVC08-&amp;gt;Tools-&amp;gt;Visual Studio 2008 CommandPrompt) (or: launch cmd.exe and run &amp;lt;code&amp;gt;vcvars32.bat&amp;lt;/code&amp;gt;) Note: Start x64 prompt from Start menu (don't start from inside visual studio or it will be an x86 32 bit shell).  Menu item is &amp;quot;Visual Studio 2008 x64 Win64 Command Prompt&amp;quot;&lt;br /&gt;
# build with &amp;lt;code&amp;gt;configure.exe -platform win32-msvc2008 -debug -nomake examples -nomake demos&amp;lt;/code&amp;gt; &lt;br /&gt;
#* When asked, choose open source license type (o), then accept the license (y)&lt;br /&gt;
#* Note: the option &amp;lt;code&amp;gt;-prefix&amp;lt;/code&amp;gt; doesn't work on Windows.&lt;br /&gt;
#* Note: According to [http://qt.nokia.com/doc/4.7/supported-platforms.html] Qt does not support msvc2008 on windows xp.  However, running &amp;lt;code&amp;gt;configure.exe&amp;lt;/code&amp;gt; with no &amp;lt;code&amp;gt;-platform&amp;lt;/code&amp;gt; argument seems to work. If you run configure with the &amp;lt;code&amp;gt;-platform&amp;lt;/code&amp;gt; argument first by mistake, and if &amp;lt;code&amp;gt;configure -clean&amp;lt;/code&amp;gt; doesn't work, then you may need to start from a fresh extraction from the .zip archive before running &amp;lt;code&amp;gt;configure.exe&amp;lt;/code&amp;gt; again with no &amp;lt;code&amp;gt;-platform&amp;lt;/code&amp;gt;, unless you can run &amp;lt;code&amp;gt;nmake&amp;lt;/code&amp;gt; with the config clean target.&lt;br /&gt;
#* Note: for Microsoft Visual Studio 2010 users, Qt 4.6.3 is hard to configure with MSVC2010, use Qt 4.7.x instead. Build with &amp;lt;code&amp;gt;set QMAKESPEC=win32-msvc2010&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;configure -platform win32-msvc2010  -debug&amp;lt;/code&amp;gt;&lt;br /&gt;
# run &amp;lt;code&amp;gt;nmake&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Note: building with webkit support requires that &amp;lt;i&amp;gt;src/3rdparty/webkit/WebCore/tmp/moc/{debug,release}_shared/mocinclude.tmp&amp;lt;/i&amp;gt; be removed. else you will get linker errors like &amp;lt;code&amp;gt;QNetworkReplyHandler.obj : error LNK2001: unresolved external symbol &amp;quot;public: virtual struct QMetaObject const * __thiscall WebCore::FormDataIODevice::metaObject(void)const (?metaObject@FormDataIODevice@WebCore@@UBEPBUQMetaObject@@XZ)&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Note: If you encounter the following error &amp;lt;code&amp;gt;api\qscriptextensionplugin.h(43): Error: Undefined interface,&amp;lt;/code&amp;gt;, delete the files &amp;lt;i&amp;gt;\src\script\tmp\moc\debug_shared\mocinclude.tmp&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;\src\script\tmp\moc\release_shared\mocinclude.tmp&amp;lt;/i&amp;gt; and restart nmake. For more info, please see [http://bugreports.qt.nokia.com/browse/QTBUG-6470 QTBug 6470]].&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/Developers/Build_Instructions/Prerequisites/Qt&amp;diff=25415</id>
		<title>Documentation/4.0/Developers/Build Instructions/Prerequisites/Qt</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/Developers/Build_Instructions/Prerequisites/Qt&amp;diff=25415"/>
		<updated>2012-04-10T19:04:51Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* Linux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Binary vs build-from-source ? =&lt;br /&gt;
&lt;br /&gt;
If you build Slicer on ...&lt;br /&gt;
&lt;br /&gt;
== Linux  ==&lt;br /&gt;
&lt;br /&gt;
* Using [[#Download_links|binary]] works great for both '''Debug''' and '''Release''' build of Slicer. See [[#Download_links]] and [[#Installation_instruction]]&lt;br /&gt;
&lt;br /&gt;
== Mac  ==&lt;br /&gt;
&lt;br /&gt;
* Using [[#Download_links|binary]] works great for both '''Debug''' and '''Release''' build of Slicer. See [[#Download_links]] and [[#Installation_instruction]]&lt;br /&gt;
&lt;br /&gt;
== Windows  ==&lt;br /&gt;
&lt;br /&gt;
=== Debug (32 and 64-bit) or Release (64-bit) ===&lt;br /&gt;
&lt;br /&gt;
* You have to build Qt from source. See [[#Download_links]] and [[#Installation_instruction]]&lt;br /&gt;
&lt;br /&gt;
* '''Details''': Using the Qt Designer on Windows requires that the Slicer plugins are [http://doc.trolltech.com/4.6/deployment-plugins.html#debugging-plugins|compiled in the same mode as Qt]. If Qt was compiled in Release mode (default), Slicer would have to be compiled in Release mode as well. However if Qt is compiled in Debug mode only, Slicer has to be compiled in Debug too. When Qt is in &amp;quot;Release and Debug&amp;quot; mode only the Release version of Designer.exe is generated, Slicer would have to be compiled in Release. So for developers, the &amp;lt;b&amp;gt;Debug mode is recommended&amp;lt;/b&amp;gt;, this is why we detail the compilation of Qt below.&lt;br /&gt;
&lt;br /&gt;
=== Release (32-bit) ===&lt;br /&gt;
&lt;br /&gt;
* Using [[#Download_links|binary]] works great for 32-bit Release build of Slicer. See [[#Download_links]] and [[#Installation_instruction]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Download Qt: Source and Binaries =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{ambox&lt;br /&gt;
| type  = warning&lt;br /&gt;
| text  = While it is not enforced, we strongly advise you to '''USE''' the recommended version of Qt. We mean it.&amp;lt;br&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;-1&amp;quot;&amp;gt;That said, if you feel like experimenting, nothing prevent you from building against a difference version.&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Download links ==&lt;br /&gt;
&lt;br /&gt;
The following table list the link allowing to download either the '''recommended''' source code or binary of Qt.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;margin-left: 20px;&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#FFFFCC&amp;quot;&lt;br /&gt;
!rowspan=&amp;quot;3&amp;quot;|&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;2&amp;quot;|Linux&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|Mac&lt;br /&gt;
!colspan=&amp;quot;4&amp;quot;|Windows&lt;br /&gt;
|- bgcolor=&amp;quot;#FFFFCC&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;1&amp;quot;|&amp;lt;del&amp;gt;Tiger&amp;lt;/del&amp;gt;&lt;br /&gt;
!colspan=&amp;quot;1&amp;quot;|Leopard, SnowLeopard&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|VS2008&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|VS2010&lt;br /&gt;
|- bgcolor=&amp;quot;#FFFFCC&amp;quot;&lt;br /&gt;
!|32bits&lt;br /&gt;
!|64bits&lt;br /&gt;
!|&amp;lt;del&amp;gt;32bits&amp;lt;/del&amp;gt;&lt;br /&gt;
!|64bits&lt;br /&gt;
!|32bits&lt;br /&gt;
!|64bits&lt;br /&gt;
!|32bits&lt;br /&gt;
!|64bits&lt;br /&gt;
|-&lt;br /&gt;
! bgcolor=&amp;quot;#FFFFCC&amp;quot; | [http://get.qt.nokia.com/qt/source/ Qt source link]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.tar.gz 4.7.4] &lt;br /&gt;
|style=&amp;quot;background-color:#C0C0C0;&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| &amp;lt;del&amp;gt;[http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.tar.gz 4.7.4]&amp;lt;/del&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.tar.gz 4.7.4]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.zip 4.7.4]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-everywhere-opensource-src-4.7.4.zip 4.7.4]&lt;br /&gt;
|-&lt;br /&gt;
! bgcolor=&amp;quot;#FFFFCC&amp;quot; | [http://get.qt.nokia.com/qt/source/  Qt binary link]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [http://sw.nokia.com/id/8ea74da4-fec1-4277-8b26-c58cc82e204b/Qt_SDK_Lin32_offline SDK-1.2]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [http://sw.nokia.com/id/14b2039c-0e1f-4774-a4f2-9aa60b6d5313/Qt_SDK_Lin64_offline SDK-1.2]&lt;br /&gt;
|style=&amp;quot;background-color:#C0C0C0;&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| &amp;lt;del&amp;gt;[http://get.qt.nokia.com/qt/source/qt-mac-carbon-opensource-4.7.0.dmg carbon_4.7.0]&amp;lt;/del&amp;gt;&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [ftp://ftp.qt.nokia.com/qt/source/qt-mac-opensource-4.7.4-debug-libs.dmg cocoa_4.7.4] &lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-win-opensource-4.7.4-vs2008.exe 4.7.4]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| -&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| [http://get.qt.nokia.com/qt/source/qt-win-opensource-4.7.4-vs2008.exe 4.7.4]&lt;br /&gt;
|align=&amp;quot;center&amp;quot; colspan=&amp;quot;1&amp;quot;| -&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Installation instruction ==&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
See [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites/Qt/Instal_QtSDK1.2_Offline_Linux_64|Qt installation guide (4.7.4, Linux, 64-bit, Offline)]]&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Qt version specific issues ==&lt;br /&gt;
&lt;br /&gt;
=== All ===&lt;br /&gt;
&lt;br /&gt;
* '''Qt 4.6.x''' on windows (and possibly in linux/mac): No image base64 support in QLabel/QTooltips (work around exists though)&lt;br /&gt;
* '''Qt 4.8''' does not work with PythonQt in slicer4 - suggested version is 4.7.4&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
* NA&lt;br /&gt;
&lt;br /&gt;
=== Mac ===&lt;br /&gt;
&lt;br /&gt;
* '''Qt 4.6''': hard to compile - TBD: Be more specific&lt;br /&gt;
* '''Qt 4.7''': click outside of popup (http://na-mic.org/Mantis/view.php?id=1241) - Is it fixed in Qt 4.8 ?&lt;br /&gt;
* '''Qt 4.7.3''': http://na-mic.org/Mantis/view.php?id=1388 - Fixed in Qt 4.7.4&lt;br /&gt;
&lt;br /&gt;
=== Windows ===&lt;br /&gt;
&lt;br /&gt;
* NA&lt;br /&gt;
&lt;br /&gt;
== How to change the minimum required version ? ==&lt;br /&gt;
&lt;br /&gt;
* It's indeed possible to use a different version, just be aware that moving forward in time, things may not work as expected. Even worse Slicer may simply fail to compile.&lt;br /&gt;
&lt;br /&gt;
* By configuring Slicer using &amp;lt;code&amp;gt;-DSlicer_REQUIRED_QT_VERSION:STRING=4.7.0&amp;lt;/code&amp;gt;, you will be able to change the minimum required version.&lt;br /&gt;
&lt;br /&gt;
* See [https://github.com/Slicer/Slicer/commit/898bb14e 898bb14e], [http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&amp;amp;revision=19698 r19698], [http://massmail.spl.harvard.edu/public-archives/slicer-devel/2012/008130.html Mailing list]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Build instructions =&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{{mbox&lt;br /&gt;
| text = Please, make sure that your IDE/compiler is '''properly installed''' and that all associated '''ServicePack''' are also installed. See [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites|Prerequisites]].&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Linux ==&lt;br /&gt;
&amp;lt;!-- &lt;br /&gt;
TODO: Add a section specific to debian based platform.&lt;br /&gt;
*Downloading the binaries of Qt works fine with Linux, you do not have to compile Qt manually. &lt;br /&gt;
** Note: You need to install the libQtWebkit-devel package too.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Qt must be compiled with OpenGL.  Consider installing &amp;lt;code&amp;gt;libglu1-mesa-dev&amp;lt;/code&amp;gt;&lt;br /&gt;
* Consider installing the following optional packages (&amp;lt;code&amp;gt;libxt-dev libxrender-dev libxrandr-dev libxinerama-dev libxcursor-dev libfontconfig-dev libglib2.0-dev&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir qt-everywhere-opensource-build-4.7.4&lt;br /&gt;
tar xvfz qt-everywhere-opensource-src-4.7.4.tar.gz&lt;br /&gt;
cd qt-everywhere-opensource-src-4.7.4&lt;br /&gt;
./configure -prefix ../qt-everywhere-opensource-build-4.7.4 -debug-and-release -opensource -confirm-license -no-qt3support -webkit -nomake examples -nomake demos&lt;br /&gt;
make -j8&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;!-- Note: On a 64 bit system, you may have to add &amp;lt;code&amp;gt;-arch x86_64&amp;lt;/code&amp;gt; to the Qt configure command line (?) --&amp;gt;&lt;br /&gt;
Note: Adapt &amp;lt;code&amp;gt;-j8&amp;lt;/code&amp;gt; with the number of core on your machine, a dual core should probably not do more than &amp;lt;code&amp;gt;-j3&amp;lt;/code&amp;gt;, an 8 core machine can resonably go as much as &amp;lt;code&amp;gt;-j12&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Mac  ==&lt;br /&gt;
&lt;br /&gt;
Similar to Linux configuration. Note that &amp;lt;code&amp;gt;-arch x86_64&amp;lt;/code&amp;gt; has been added.&lt;br /&gt;
&lt;br /&gt;
For earlier versions of Xcode and Mac OS X&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
mkdir qt-everywhere-opensource-build-4.7.4&lt;br /&gt;
tar xvfz qt-everywhere-opensource-src-4.7.4.tar.gz&lt;br /&gt;
cd qt-everywhere-opensource-src-4.7.4&lt;br /&gt;
./configure -prefix ../qt-everywhere-opensource-build-4.7.4 -debug-and-release -opensource -confirm-license -no-qt3support -webkit -arch x86_64 -nomake examples -nomake demos -sdk /Developer/SDKs/MacOSX10.5.sdk/&lt;br /&gt;
make -j8&lt;br /&gt;
make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
On the latest Xcode versions (4.3) and Lion (10.7) the Developer directories have moved.  The command is now:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
./configure -prefix ../qt-everywhere-opensource-build-4.7.4 -debug-and-release -opensource -confirm-license -no-qt3support -arch x86_64 -nomake examples -nomake demos -webkit -sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Consider reading: http://doc.qt.nokia.com/4.7/developing-on-mac.html)&lt;br /&gt;
&lt;br /&gt;
* Note:&lt;br /&gt;
** If building against SDK 10.6 or 10.7, you will probably get link errors similar to what's described in [https://trac.macports.org/ticket/30346] and [http://qt-project.org/forums/viewthread/15933]. The solution is probably to disable the &amp;lt;code&amp;gt;corewlan&amp;lt;/code&amp;gt; module but didn't figure out to do that properly.&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
&lt;br /&gt;
# Use a windows extracter to unzip the [[Documentation/{{documentation/version}}/Developers/Build_Instructions/Prerequisites/Qt#Download_links|Qt archive]], don't use cygwin unzip it.&lt;br /&gt;
# launch the msvc2008 command prompt (MSVC08-&amp;gt;Tools-&amp;gt;Visual Studio 2008 CommandPrompt) (or: launch cmd.exe and run &amp;lt;code&amp;gt;vcvars32.bat&amp;lt;/code&amp;gt;) Note: Start x64 prompt from Start menu (don't start from inside visual studio or it will be an x86 32 bit shell).  Menu item is &amp;quot;Visual Studio 2008 x64 Win64 Command Prompt&amp;quot;&lt;br /&gt;
# build with &amp;lt;code&amp;gt;configure.exe -platform win32-msvc2008 -debug -nomake examples -nomake demos&amp;lt;/code&amp;gt; &lt;br /&gt;
#* When asked, choose open source license type (o), then accept the license (y)&lt;br /&gt;
#* Note: the option &amp;lt;code&amp;gt;-prefix&amp;lt;/code&amp;gt; doesn't work on Windows.&lt;br /&gt;
#* Note: According to [http://qt.nokia.com/doc/4.7/supported-platforms.html] Qt does not support msvc2008 on windows xp.  However, running &amp;lt;code&amp;gt;configure.exe&amp;lt;/code&amp;gt; with no &amp;lt;code&amp;gt;-platform&amp;lt;/code&amp;gt; argument seems to work. If you run configure with the &amp;lt;code&amp;gt;-platform&amp;lt;/code&amp;gt; argument first by mistake, and if &amp;lt;code&amp;gt;configure -clean&amp;lt;/code&amp;gt; doesn't work, then you may need to start from a fresh extraction from the .zip archive before running &amp;lt;code&amp;gt;configure.exe&amp;lt;/code&amp;gt; again with no &amp;lt;code&amp;gt;-platform&amp;lt;/code&amp;gt;, unless you can run &amp;lt;code&amp;gt;nmake&amp;lt;/code&amp;gt; with the config clean target.&lt;br /&gt;
#* Note: for Microsoft Visual Studio 2010 users, Qt 4.6.3 is hard to configure with MSVC2010, use Qt 4.7.x instead. Build with &amp;lt;code&amp;gt;set QMAKESPEC=win32-msvc2010&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;configure -platform win32-msvc2010  -debug&amp;lt;/code&amp;gt;&lt;br /&gt;
# run &amp;lt;code&amp;gt;nmake&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Note: building with webkit support requires that &amp;lt;i&amp;gt;src/3rdparty/webkit/WebCore/tmp/moc/{debug,release}_shared/mocinclude.tmp&amp;lt;/i&amp;gt; be removed. else you will get linker errors like &amp;lt;code&amp;gt;QNetworkReplyHandler.obj : error LNK2001: unresolved external symbol &amp;quot;public: virtual struct QMetaObject const * __thiscall WebCore::FormDataIODevice::metaObject(void)const (?metaObject@FormDataIODevice@WebCore@@UBEPBUQMetaObject@@XZ)&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Note: If you encounter the following error &amp;lt;code&amp;gt;api\qscriptextensionplugin.h(43): Error: Undefined interface,&amp;lt;/code&amp;gt;, delete the files &amp;lt;i&amp;gt;\src\script\tmp\moc\debug_shared\mocinclude.tmp&amp;lt;/i&amp;gt; and &amp;lt;i&amp;gt;\src\script\tmp\moc\release_shared\mocinclude.tmp&amp;lt;/i&amp;gt; and restart nmake. For more info, please see [http://bugreports.qt.nokia.com/browse/QTBUG-6470 QTBug 6470]].&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25213</id>
		<title>Documentation/4.0/SlicerApplication/StructureSets</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25213"/>
		<updated>2012-03-27T22:52:00Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* How to git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
These are Greg's development notes.  Beware of inaccurate and misleading information below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;structure set&amp;quot; is used in RT to denote a set of structures (labels) which are attached to an image.  &lt;br /&gt;
The goal of this project is to improve Slicer so it can handle overlapping structures.  &lt;br /&gt;
The following is a rough list of required functionality:&lt;br /&gt;
&lt;br /&gt;
# Identify structureset images at load time&lt;br /&gt;
# Load structureset images&lt;br /&gt;
# Display overlapping contours in structure set&lt;br /&gt;
# Editor can switch between labelmap and structureset representation&lt;br /&gt;
# Modify editor GUI to make easier selecting current structure&lt;br /&gt;
# Save structureset images&lt;br /&gt;
&lt;br /&gt;
=How to git=&lt;br /&gt;
# Basic tutorials&lt;br /&gt;
## http://www.slicer.org/slicerWiki/index.php/Slicer3:git-svn&lt;br /&gt;
## http://git.or.cz/course/svn.html&lt;br /&gt;
# My code is located here&lt;br /&gt;
## https://github.com/gregsharp/Slicer/tree/gcstest&lt;br /&gt;
# It is a fork of SlicerRT&lt;br /&gt;
## https://github.com/SlicerRt/Slicer&lt;br /&gt;
# Or perhaps Slicer&lt;br /&gt;
## https://github.com/Slicer/Slicer&lt;br /&gt;
# Update like this:&lt;br /&gt;
## git pull git@github.com:gregsharp/Slicer.git gcstest&lt;br /&gt;
## Or, because I created an alias, like this:&lt;br /&gt;
## git pull gcs gcstest&lt;br /&gt;
## The alias is made like this:&lt;br /&gt;
## git remote add gcs git@github.com:gregsharp/Slicer.git&lt;br /&gt;
# My code is branched off of SlicerRT&lt;br /&gt;
## To rebase onto main slicer trunk, do this:&lt;br /&gt;
## git remote add slicer https://github.com/Slicer/Slicer.git&lt;br /&gt;
## git pull --rebase slicer master&lt;br /&gt;
## However, this doesn't work because my fork contains all of SlicerRT, which conflicts with slicer&lt;br /&gt;
# So I make a new fork, based on slicer itself&lt;br /&gt;
## git clone git://github.com/Slicer/Slicer.git Slicer-gcs&lt;br /&gt;
## git remote add gcs-slicer git@github.com:gregsharp/gcs-slicer.git&lt;br /&gt;
## git push gcs-slicer master&lt;br /&gt;
## But this doesn't work &amp;quot;ERROR: Repository not found.&amp;quot;&lt;br /&gt;
# Eventually I had to give up, and delete the repository&lt;br /&gt;
## The changes were to this file: Libs/MRML/Core/vtkMRMLVolumeArchetypeStorageNode.cxx&lt;br /&gt;
&lt;br /&gt;
=Notes=&lt;br /&gt;
&lt;br /&gt;
# Identifying structureset images&lt;br /&gt;
## For now, I just assume that any vector image is a structureset image&lt;br /&gt;
# Loading structureset images&lt;br /&gt;
## Images, when loaded, are sent to vtkMRMLVolumeArchetypeStorageNode::ReadData(), which decides whether the file has a scalar or vector image&lt;br /&gt;
## The type of the MRML node created is vtkMRMLVectorVolumeNode&lt;br /&gt;
## Ref: Libs/MRML/Core/vtkMRMLVolumeArchetypeStorageNode.cxx&lt;br /&gt;
## A vtkMRMLVectorVolumeDisplayNode is attached to the storage node&lt;br /&gt;
# Is an image a labelmap?&lt;br /&gt;
## This is apparently a function of the XML file, not the image&lt;br /&gt;
## vtkMRMLScalarVolumeNode::SetLabelMap()&lt;br /&gt;
# Labelmap display&lt;br /&gt;
## ??&lt;br /&gt;
## ??&lt;br /&gt;
# Displaying overlapping contours&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25212</id>
		<title>Documentation/4.0/SlicerApplication/StructureSets</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25212"/>
		<updated>2012-03-27T22:39:55Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* How to git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
These are Greg's development notes.  Beware of inaccurate and misleading information below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;structure set&amp;quot; is used in RT to denote a set of structures (labels) which are attached to an image.  &lt;br /&gt;
The goal of this project is to improve Slicer so it can handle overlapping structures.  &lt;br /&gt;
The following is a rough list of required functionality:&lt;br /&gt;
&lt;br /&gt;
# Identify structureset images at load time&lt;br /&gt;
# Load structureset images&lt;br /&gt;
# Display overlapping contours in structure set&lt;br /&gt;
# Editor can switch between labelmap and structureset representation&lt;br /&gt;
# Modify editor GUI to make easier selecting current structure&lt;br /&gt;
# Save structureset images&lt;br /&gt;
&lt;br /&gt;
=How to git=&lt;br /&gt;
# Basic tutorials&lt;br /&gt;
## http://www.slicer.org/slicerWiki/index.php/Slicer3:git-svn&lt;br /&gt;
## http://git.or.cz/course/svn.html&lt;br /&gt;
# My code is located here&lt;br /&gt;
## https://github.com/gregsharp/Slicer/tree/gcstest&lt;br /&gt;
# It is a fork of SlicerRT&lt;br /&gt;
## https://github.com/SlicerRt/Slicer&lt;br /&gt;
# Or perhaps Slicer&lt;br /&gt;
## https://github.com/Slicer/Slicer&lt;br /&gt;
# Update like this:&lt;br /&gt;
## git pull git@github.com:gregsharp/Slicer.git gcstest&lt;br /&gt;
## Or, because I created an alias, like this:&lt;br /&gt;
## git pull gcs gcstest&lt;br /&gt;
## The alias is made like this:&lt;br /&gt;
## git remote add gcs git@github.com:gregsharp/Slicer.git&lt;br /&gt;
# My code is branched off of SlicerRT&lt;br /&gt;
## To rebase onto main slicer trunk, do this:&lt;br /&gt;
## git remote add slicer https://github.com/Slicer/Slicer.git&lt;br /&gt;
## git pull --rebase slicer master&lt;br /&gt;
## However, this doesn't work because my fork contains all of SlicerRT, which conflicts with slicer&lt;br /&gt;
# So I make a new fork, based on slicer itself&lt;br /&gt;
## git clone git://github.com/Slicer/Slicer.git Slicer-gcs&lt;br /&gt;
## git remote add gcs-slicer git@github.com:gregsharp/gcs-slicer.git&lt;br /&gt;
## git push gcs-slicer master&lt;br /&gt;
## But this doesn't work &amp;quot;ERROR: Repository not found.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Notes=&lt;br /&gt;
&lt;br /&gt;
# Identifying structureset images&lt;br /&gt;
## For now, I just assume that any vector image is a structureset image&lt;br /&gt;
# Loading structureset images&lt;br /&gt;
## Images, when loaded, are sent to vtkMRMLVolumeArchetypeStorageNode::ReadData(), which decides whether the file has a scalar or vector image&lt;br /&gt;
## The type of the MRML node created is vtkMRMLVectorVolumeNode&lt;br /&gt;
## Ref: Libs/MRML/Core/vtkMRMLVolumeArchetypeStorageNode.cxx&lt;br /&gt;
## A vtkMRMLVectorVolumeDisplayNode is attached to the storage node&lt;br /&gt;
# Is an image a labelmap?&lt;br /&gt;
## This is apparently a function of the XML file, not the image&lt;br /&gt;
## vtkMRMLScalarVolumeNode::SetLabelMap()&lt;br /&gt;
# Labelmap display&lt;br /&gt;
## ??&lt;br /&gt;
## ??&lt;br /&gt;
# Displaying overlapping contours&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25211</id>
		<title>Documentation/4.0/SlicerApplication/StructureSets</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25211"/>
		<updated>2012-03-27T22:36:54Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* How to git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
These are Greg's development notes.  Beware of inaccurate and misleading information below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;structure set&amp;quot; is used in RT to denote a set of structures (labels) which are attached to an image.  &lt;br /&gt;
The goal of this project is to improve Slicer so it can handle overlapping structures.  &lt;br /&gt;
The following is a rough list of required functionality:&lt;br /&gt;
&lt;br /&gt;
# Identify structureset images at load time&lt;br /&gt;
# Load structureset images&lt;br /&gt;
# Display overlapping contours in structure set&lt;br /&gt;
# Editor can switch between labelmap and structureset representation&lt;br /&gt;
# Modify editor GUI to make easier selecting current structure&lt;br /&gt;
# Save structureset images&lt;br /&gt;
&lt;br /&gt;
=How to git=&lt;br /&gt;
# Basic tutorials&lt;br /&gt;
## http://www.slicer.org/slicerWiki/index.php/Slicer3:git-svn&lt;br /&gt;
## http://git.or.cz/course/svn.html&lt;br /&gt;
# My code is located here&lt;br /&gt;
## https://github.com/gregsharp/Slicer/tree/gcstest&lt;br /&gt;
# It is a fork of SlicerRT&lt;br /&gt;
## https://github.com/SlicerRt/Slicer&lt;br /&gt;
# Or perhaps Slicer&lt;br /&gt;
## https://github.com/Slicer/Slicer&lt;br /&gt;
# Update like this:&lt;br /&gt;
## git pull git@github.com:gregsharp/Slicer.git gcstest&lt;br /&gt;
## Or, because I created an alias, like this:&lt;br /&gt;
## git pull gcs gcstest&lt;br /&gt;
## The alias is made like this:&lt;br /&gt;
## git remote add gcs git@github.com:gregsharp/Slicer.git&lt;br /&gt;
# My code is branched off of SlicerRT&lt;br /&gt;
## To rebase onto main slicer trunk, do this:&lt;br /&gt;
## git remote add slicer https://github.com/Slicer/Slicer.git&lt;br /&gt;
## git pull --rebase slicer master&lt;br /&gt;
## However, this doesn't work because my fork contains all of SlicerRT, which conflicts with slicer&lt;br /&gt;
# So I make a new fork, based on slicer itself&lt;br /&gt;
## git clone git://github.com/Slicer/Slicer.git Slicer-gcs&lt;br /&gt;
##&lt;br /&gt;
&lt;br /&gt;
=Notes=&lt;br /&gt;
&lt;br /&gt;
# Identifying structureset images&lt;br /&gt;
## For now, I just assume that any vector image is a structureset image&lt;br /&gt;
# Loading structureset images&lt;br /&gt;
## Images, when loaded, are sent to vtkMRMLVolumeArchetypeStorageNode::ReadData(), which decides whether the file has a scalar or vector image&lt;br /&gt;
## The type of the MRML node created is vtkMRMLVectorVolumeNode&lt;br /&gt;
## Ref: Libs/MRML/Core/vtkMRMLVolumeArchetypeStorageNode.cxx&lt;br /&gt;
## A vtkMRMLVectorVolumeDisplayNode is attached to the storage node&lt;br /&gt;
# Is an image a labelmap?&lt;br /&gt;
## This is apparently a function of the XML file, not the image&lt;br /&gt;
## vtkMRMLScalarVolumeNode::SetLabelMap()&lt;br /&gt;
# Labelmap display&lt;br /&gt;
## ??&lt;br /&gt;
## ??&lt;br /&gt;
# Displaying overlapping contours&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25210</id>
		<title>Documentation/4.0/SlicerApplication/StructureSets</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25210"/>
		<updated>2012-03-27T21:37:27Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
These are Greg's development notes.  Beware of inaccurate and misleading information below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;structure set&amp;quot; is used in RT to denote a set of structures (labels) which are attached to an image.  &lt;br /&gt;
The goal of this project is to improve Slicer so it can handle overlapping structures.  &lt;br /&gt;
The following is a rough list of required functionality:&lt;br /&gt;
&lt;br /&gt;
# Identify structureset images at load time&lt;br /&gt;
# Load structureset images&lt;br /&gt;
# Display overlapping contours in structure set&lt;br /&gt;
# Editor can switch between labelmap and structureset representation&lt;br /&gt;
# Modify editor GUI to make easier selecting current structure&lt;br /&gt;
# Save structureset images&lt;br /&gt;
&lt;br /&gt;
=How to git=&lt;br /&gt;
# Basic tutorials&lt;br /&gt;
## http://www.slicer.org/slicerWiki/index.php/Slicer3:git-svn&lt;br /&gt;
## http://git.or.cz/course/svn.html&lt;br /&gt;
# My code is located here&lt;br /&gt;
## https://github.com/gregsharp/Slicer/tree/gcstest&lt;br /&gt;
# It is a fork of SlicerRT&lt;br /&gt;
## https://github.com/SlicerRt/Slicer&lt;br /&gt;
# Or perhaps Slicer&lt;br /&gt;
## https://github.com/Slicer/Slicer&lt;br /&gt;
# Update like this:&lt;br /&gt;
## git pull git@github.com:gregsharp/Slicer.git gcstest&lt;br /&gt;
## Or, because I created an alias, like this:&lt;br /&gt;
## git pull gcs gcstest&lt;br /&gt;
## The alias is made like this:&lt;br /&gt;
## git remote add gcs git@github.com:gregsharp/Slicer.git&lt;br /&gt;
# My code is branched off of SlicerRT&lt;br /&gt;
## To rebase onto main slicer trunk, do this:&lt;br /&gt;
&lt;br /&gt;
=Notes=&lt;br /&gt;
&lt;br /&gt;
# Identifying structureset images&lt;br /&gt;
## For now, I just assume that any vector image is a structureset image&lt;br /&gt;
# Loading structureset images&lt;br /&gt;
## Images, when loaded, are sent to vtkMRMLVolumeArchetypeStorageNode::ReadData(), which decides whether the file has a scalar or vector image&lt;br /&gt;
## The type of the MRML node created is vtkMRMLVectorVolumeNode&lt;br /&gt;
## Ref: Libs/MRML/Core/vtkMRMLVolumeArchetypeStorageNode.cxx&lt;br /&gt;
## A vtkMRMLVectorVolumeDisplayNode is attached to the storage node&lt;br /&gt;
# Is an image a labelmap?&lt;br /&gt;
## This is apparently a function of the XML file, not the image&lt;br /&gt;
## vtkMRMLScalarVolumeNode::SetLabelMap()&lt;br /&gt;
# Labelmap display&lt;br /&gt;
## ??&lt;br /&gt;
## ??&lt;br /&gt;
# Displaying overlapping contours&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25209</id>
		<title>Documentation/4.0/SlicerApplication/StructureSets</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25209"/>
		<updated>2012-03-27T21:36:44Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* How to git */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
These are Greg's development notes.  Beware of inaccurate and misleading information below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;structure set&amp;quot; is used in RT to denote a set of structures (labels) which are attached to an image.  &lt;br /&gt;
The goal of this project is to improve Slicer so it can handle overlapping structures.  &lt;br /&gt;
The following is a rough list of required functionality:&lt;br /&gt;
&lt;br /&gt;
# Identify structureset images at load time&lt;br /&gt;
# Load structureset images&lt;br /&gt;
# Display overlapping contours in structure set&lt;br /&gt;
# Editor can switch between labelmap and structureset representation&lt;br /&gt;
# Modify editor GUI to make easier selecting current structure&lt;br /&gt;
# Save structureset images&lt;br /&gt;
&lt;br /&gt;
=How to git=&lt;br /&gt;
# Basic tutorials&lt;br /&gt;
## http://www.slicer.org/slicerWiki/index.php/Slicer3:git-svn&lt;br /&gt;
## http://git.or.cz/course/svn.html&lt;br /&gt;
# My code is located here&lt;br /&gt;
## https://github.com/gregsharp/Slicer/tree/gcstest&lt;br /&gt;
# It is a fork of SlicerRT&lt;br /&gt;
## https://github.com/SlicerRt/Slicer&lt;br /&gt;
# Or perhaps Slicer&lt;br /&gt;
## https://github.com/Slicer/Slicer&lt;br /&gt;
# Update like this:&lt;br /&gt;
## git pull git@github.com:gregsharp/Slicer.git gcstest&lt;br /&gt;
## Or, because I created an alias, like this:&lt;br /&gt;
## git pull gcs gcstest&lt;br /&gt;
## The alias is made like this:&lt;br /&gt;
## git remote add gcs git@github.com:gregsharp/Slicer.git&lt;br /&gt;
# My code is branched off of SlicerRT&lt;br /&gt;
## To rebase onto main slicer trunk, do this:&lt;br /&gt;
&lt;br /&gt;
=Notes=&lt;br /&gt;
&lt;br /&gt;
# Identifying structureset images&lt;br /&gt;
## For now, I just assume that any vector image is a structureset image&lt;br /&gt;
&lt;br /&gt;
# Loading structureset images&lt;br /&gt;
## Images, when loaded, are sent to vtkMRMLVolumeArchetypeStorageNode::ReadData(), which decides whether the file has a scalar or vector image&lt;br /&gt;
## The type of the MRML node created is vtkMRMLVectorVolumeNode&lt;br /&gt;
## Ref: Libs/MRML/Core/vtkMRMLVolumeArchetypeStorageNode.cxx&lt;br /&gt;
## A vtkMRMLVectorVolumeDisplayNode is attached to the storage node&lt;br /&gt;
&lt;br /&gt;
# Is an image a labelmap?&lt;br /&gt;
## This is apparently a function of the XML file, not the image&lt;br /&gt;
## vtkMRMLScalarVolumeNode::SetLabelMap()&lt;br /&gt;
&lt;br /&gt;
# Labelmap display&lt;br /&gt;
## ??&lt;br /&gt;
## ??&lt;br /&gt;
&lt;br /&gt;
# Displaying overlapping contours&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25208</id>
		<title>Documentation/4.0/SlicerApplication/StructureSets</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25208"/>
		<updated>2012-03-27T21:29:35Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
These are Greg's development notes.  Beware of inaccurate and misleading information below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;structure set&amp;quot; is used in RT to denote a set of structures (labels) which are attached to an image.  &lt;br /&gt;
The goal of this project is to improve Slicer so it can handle overlapping structures.  &lt;br /&gt;
The following is a rough list of required functionality:&lt;br /&gt;
&lt;br /&gt;
# Identify structureset images at load time&lt;br /&gt;
# Load structureset images&lt;br /&gt;
# Display overlapping contours in structure set&lt;br /&gt;
# Editor can switch between labelmap and structureset representation&lt;br /&gt;
# Modify editor GUI to make easier selecting current structure&lt;br /&gt;
# Save structureset images&lt;br /&gt;
&lt;br /&gt;
=How to git=&lt;br /&gt;
# Basic tutorials&lt;br /&gt;
## http://www.slicer.org/slicerWiki/index.php/Slicer3:git-svn&lt;br /&gt;
## http://git.or.cz/course/svn.html&lt;br /&gt;
# My code is located here&lt;br /&gt;
## https://github.com/gregsharp/Slicer/tree/gcstest&lt;br /&gt;
# Update like this:&lt;br /&gt;
## git pull git@github.com:gregsharp/Slicer.git gcstest&lt;br /&gt;
## Or, because I created an alias, like this:&lt;br /&gt;
## git pull gcs gcstest&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Notes=&lt;br /&gt;
&lt;br /&gt;
# Identifying structureset images&lt;br /&gt;
## For now, I just assume that any vector image is a structureset image&lt;br /&gt;
&lt;br /&gt;
# Loading structureset images&lt;br /&gt;
## Images, when loaded, are sent to vtkMRMLVolumeArchetypeStorageNode::ReadData(), which decides whether the file has a scalar or vector image&lt;br /&gt;
## The type of the MRML node created is vtkMRMLVectorVolumeNode&lt;br /&gt;
## Ref: Libs/MRML/Core/vtkMRMLVolumeArchetypeStorageNode.cxx&lt;br /&gt;
## A vtkMRMLVectorVolumeDisplayNode is attached to the storage node&lt;br /&gt;
&lt;br /&gt;
# Is an image a labelmap?&lt;br /&gt;
## This is apparently a function of the XML file, not the image&lt;br /&gt;
## vtkMRMLScalarVolumeNode::SetLabelMap()&lt;br /&gt;
&lt;br /&gt;
# Labelmap display&lt;br /&gt;
## ??&lt;br /&gt;
## ??&lt;br /&gt;
&lt;br /&gt;
# Displaying overlapping contours&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25207</id>
		<title>Documentation/4.0/SlicerApplication/StructureSets</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25207"/>
		<updated>2012-03-27T21:24:16Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
These are Greg's development notes.  Beware of inaccurate and misleading information below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;structure set&amp;quot; is used in RT to denote a set of structures (labels) which are attached to an image.  &lt;br /&gt;
The goal of this project is to improve Slicer so it can handle overlapping structures.  &lt;br /&gt;
The following is a rough list of required functionality:&lt;br /&gt;
&lt;br /&gt;
# Identify structureset images at load time&lt;br /&gt;
# Load structureset images&lt;br /&gt;
# Display overlapping contours in structure set&lt;br /&gt;
# Editor can switch between labelmap and structureset representation&lt;br /&gt;
# Modify editor GUI to make easier selecting current structure&lt;br /&gt;
# Save structureset images&lt;br /&gt;
&lt;br /&gt;
=Notes=&lt;br /&gt;
&lt;br /&gt;
# Identifying structureset images&lt;br /&gt;
## For now, I just assume that any vector image is a structureset image&lt;br /&gt;
&lt;br /&gt;
# Loading structureset images&lt;br /&gt;
## Images, when loaded, are sent to vtkMRMLVolumeArchetypeStorageNode::ReadData(), which decides whether the file has a scalar or vector image&lt;br /&gt;
## The type of the MRML node created is vtkMRMLVectorVolumeNode&lt;br /&gt;
## Ref: Libs/MRML/Core/vtkMRMLVolumeArchetypeStorageNode.cxx&lt;br /&gt;
## A vtkMRMLVectorVolumeDisplayNode is attached to the storage node&lt;br /&gt;
&lt;br /&gt;
# Is an image a labelmap?&lt;br /&gt;
## This is apparently a function of the XML file, not the image&lt;br /&gt;
## vtkMRMLScalarVolumeNode::SetLabelMap()&lt;br /&gt;
&lt;br /&gt;
# Labelmap display&lt;br /&gt;
## ??&lt;br /&gt;
## ??&lt;br /&gt;
&lt;br /&gt;
# Displaying overlapping contours&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25206</id>
		<title>Documentation/4.0/SlicerApplication/StructureSets</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25206"/>
		<updated>2012-03-27T21:24:04Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
These are Greg's development notes.  Beware of inaccurate and misleading information below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;structure set&amp;quot; is used in RT to denote a set of structures (labels) which are attached to an image.  &lt;br /&gt;
The goal of this project is to improve Slicer so it can handle overlapping structures.  &lt;br /&gt;
The following is a rough list of required functionality:&lt;br /&gt;
&lt;br /&gt;
# Identify structureset images at load time&lt;br /&gt;
# Load structureset images&lt;br /&gt;
# Display overlapping contours in structure set&lt;br /&gt;
# Editor can switch between labelmap and structureset representation&lt;br /&gt;
# Modify editor GUI to make easier selecting current structure&lt;br /&gt;
# Save structureset images&lt;br /&gt;
&lt;br /&gt;
=Notes=&lt;br /&gt;
&lt;br /&gt;
# Identifying structureset images&lt;br /&gt;
## For now, I just assume that any vector image is a structureset image&lt;br /&gt;
&lt;br /&gt;
# Loading structureset images&lt;br /&gt;
## Images, when loaded, are sent to vtkMRMLVolumeArchetypeStorageNode::ReadData(), which decides whether the file has a scalar or vector image&lt;br /&gt;
## The type of the MRML node created is vtkMRMLVectorVolumeNode&lt;br /&gt;
## Ref: Libs/MRML/Core/vtkMRMLVolumeArchetypeStorageNode.cxx&lt;br /&gt;
## A vtkMRMLVectorVolumeDisplayNode is attached to the storage node&lt;br /&gt;
&lt;br /&gt;
# Is an image a labelmap?&lt;br /&gt;
## This is apparently a function of the XML file, not the image&lt;br /&gt;
## vtkMRMLScalarVolumeNode::SetLabelMap()&lt;br /&gt;
&lt;br /&gt;
# Labelmap display&lt;br /&gt;
## This is apparently a function of the XML file, not the image&lt;br /&gt;
## vtkMRMLScalarVolumeNode::SetLabelMap()&lt;br /&gt;
&lt;br /&gt;
# Displaying overlapping contours&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25205</id>
		<title>Documentation/4.0/SlicerApplication/StructureSets</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25205"/>
		<updated>2012-03-27T21:19:52Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
These are Greg's development notes.  Beware of inaccurate and misleading information below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;structure set&amp;quot; is used in RT to denote a set of structures (labels) which are attached to an image.  &lt;br /&gt;
The goal of this project is to improve Slicer so it can handle overlapping structures.  &lt;br /&gt;
The following is a rough list of required functionality:&lt;br /&gt;
&lt;br /&gt;
# Identify structureset images at load time&lt;br /&gt;
# Load structureset images&lt;br /&gt;
# Display overlapping contours in structure set&lt;br /&gt;
# Editor can switch between labelmap and structureset representation&lt;br /&gt;
# Modify editor GUI to make easier selecting current structure&lt;br /&gt;
# Save structureset images&lt;br /&gt;
&lt;br /&gt;
=Notes=&lt;br /&gt;
&lt;br /&gt;
* Identifying structureset images&lt;br /&gt;
** For now, I just assume that any vector image is a structureset image&lt;br /&gt;
&lt;br /&gt;
* Loading structureset images&lt;br /&gt;
** Images, when loaded, are sent to vtkMRMLVolumeArchetypeStorageNode::ReadData(), which decides whether the file has a scalar or vector image&lt;br /&gt;
** The type of the MRML node created is vtkMRMLVectorVolumeNode&lt;br /&gt;
** Ref: Libs/MRML/Core/vtkMRMLVolumeArchetypeStorageNode.cxx&lt;br /&gt;
** A vtkMRMLVectorVolumeDisplayNode is attached to the storage node&lt;br /&gt;
&lt;br /&gt;
# Is an image a labelmap?&lt;br /&gt;
## This is apparently a function of the XML file, not the image&lt;br /&gt;
## vtkMRMLScalarVolumeNode::SetLabelMap()&lt;br /&gt;
&lt;br /&gt;
* Displaying overlapping contours&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25204</id>
		<title>Documentation/4.0/SlicerApplication/StructureSets</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/SlicerApplication/StructureSets&amp;diff=25204"/>
		<updated>2012-03-27T21:13:14Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: Created page with '__NOTOC__ These are Greg's development notes.  Beware of inaccurate and misleading information below.   =Introduction=  The term &amp;quot;structure set&amp;quot; is used in RT to denote a set of …'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
These are Greg's development notes.  Beware of inaccurate and misleading information below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
The term &amp;quot;structure set&amp;quot; is used in RT to denote a set of structures (labels) which are attached to an image.  &lt;br /&gt;
The goal of this project is to improve Slicer so it can handle overlapping structures.  &lt;br /&gt;
The following is a rough list of required functionality:&lt;br /&gt;
&lt;br /&gt;
# Identify structureset images at load time&lt;br /&gt;
# Load structureset images&lt;br /&gt;
# Display overlapping contours in structure set&lt;br /&gt;
# Editor can switch between labelmap and structureset representation&lt;br /&gt;
# Modify editor GUI to make easier selecting current structure&lt;br /&gt;
# Save structureset images&lt;br /&gt;
&lt;br /&gt;
=Notes=&lt;br /&gt;
&lt;br /&gt;
* Identifying structureset images&lt;br /&gt;
** For now, I just assume that any vector image is a structureset image&lt;br /&gt;
&lt;br /&gt;
* Loading structureset images&lt;br /&gt;
** Images, when loaded, are sent to vtkMRMLVolumeArchetypeStorageNode::ReadData(), which decides whether the file has a scalar or vector image&lt;br /&gt;
** The type of the MRML node created is vtkMRMLVectorVolumeNode&lt;br /&gt;
** Ref: Libs/MRML/Core/vtkMRMLVolumeArchetypeStorageNode.cxx&lt;br /&gt;
** A vtkMRMLVectorVolumeDisplayNode is attached to the storage node&lt;br /&gt;
&lt;br /&gt;
* Displaying overlapping contours&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Slicer4:Developers&amp;diff=25203</id>
		<title>Slicer4:Developers</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Slicer4:Developers&amp;diff=25203"/>
		<updated>2012-03-27T21:01:10Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: /* Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''Slicer 4 is now at the stage where developers can begin to port their modules from Slicer3 to Slicer4. If you are working on extensions, you should continue to use Slicer 3 as your target platform. If you are not sure, ask us.''&lt;br /&gt;
&lt;br /&gt;
For now, refer to [http://www.na-mic.org/Wiki/images/5/51/2010_Project_Week_Slicer.ppt the 3D Slicer Status Presentation from the June 2010 Project Week] for planning and transition information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Work on 3D Slicer version 4 has begun in June of 2010. It is expected that Slicer4 will be released in 2011.  Please see the [[Slicer4|Slicer4 Description Page]] for detailed information on the current plans.&lt;br /&gt;
&lt;br /&gt;
*For information about older versions of Slicer, see [[Developers|here]].&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
*This page of for scientist who write source code, if you want to use a pre-compiled version of Slicer, please go to the [http://www.slicer.org/pages/Special:SlicerDownloads download page].&lt;br /&gt;
*Slicer 4 will include a number of fundamental changes to the infrastructure:&lt;br /&gt;
**Qt widgets will replace KWW widgets&lt;br /&gt;
**CMAKE superbuild will replace getbuildtest&lt;br /&gt;
&lt;br /&gt;
=Developers Documentation=&lt;br /&gt;
&lt;br /&gt;
*[[Slicer4:QtPort/Tutorials|Tutorial on how to write code with Slicer 4 Qt on your computer]]   ('''Julien Finet''', Jean-Christophe Fillion-Robin)&lt;br /&gt;
&lt;br /&gt;
=Projects=&lt;br /&gt;
(please add your new project to the top of the table)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{|width=&amp;quot;800px&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#ddf&amp;quot; width=&amp;quot;55%&amp;quot;|'''Slicer4 Projects'''&lt;br /&gt;
|bgcolor=&amp;quot;#ddf&amp;quot; valign=&amp;quot;top&amp;quot;|'''Key People'''&amp;lt;br/&amp;gt;Bold names are responsible for an aspect of the project.&lt;br /&gt;
|-&lt;br /&gt;
|[[Documentation/4.0/SlicerApplication/StructureSets|Slicer 4 for overlapping structures]]&lt;br /&gt;
||'''Greg Sharp'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Documentation/4.0/SlicerApplication/ExtensionManagerName|Naming the new extension manager]]&lt;br /&gt;
||'''Ron Kikinis''', Steve Pieper&lt;br /&gt;
|-&lt;br /&gt;
|[[Documentation/4.0/SlicerApplication/KeyboardShortcuts|Keyboard ShortCuts]]&lt;br /&gt;
||'''Jean-Christophe Fillion-Robin''', Steve Pieper, Julien Finet&lt;br /&gt;
|-&lt;br /&gt;
|[[Slicer4:DownloadPageMockup|Mockup for the slicer 4 download page]]&lt;br /&gt;
||Ron Kikinis, Mike Halle&lt;br /&gt;
|-&lt;br /&gt;
|[[Slicer4:Documentation-Slicer4|Documentation for Slicer 4]]&lt;br /&gt;
||'''Jean-Christophe Fillion-Robin''', Wendy Plesniak, Julien Finet&lt;br /&gt;
|-&lt;br /&gt;
|[[Slicer4:Internationalization_of_Slicer|Internationalization of Slicer]]&lt;br /&gt;
||'''Jean-Christophe Fillion-Robin'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Slicer4:ArchitectureDesign|Architecture design (CTK,MRML,Logic,Qt)]]&lt;br /&gt;
||'''Steve Pieper''', Julien Finet, Jean-Christophe Fillion-Robin&lt;br /&gt;
|-&lt;br /&gt;
|[[Slicer4:Build_Instructions|Slicer4 build instructions]]&lt;br /&gt;
||'''Jean-Christophe Fillion-Robin''', Julien Finet&lt;br /&gt;
|-&lt;br /&gt;
|[[Slicer4:MultiVolumeContainer|MultiVolumeContainers: Infrastructure for RGB, RT labelmaps, DCE, Recist, &amp;quot;What changed&amp;quot;]]&lt;br /&gt;
||'''Ron Kikinis'''&lt;br /&gt;
|-&lt;br /&gt;
|[[Slicer4:VectorImageVisualization|Infrastructure for multi-volumes]]&lt;br /&gt;
||'''Demian Wassermann''', Lauren Odonnell, CF Westin&lt;br /&gt;
|-&lt;br /&gt;
|[[Slicer4:WikipediaNotes|Updating the Wikipedia pages for Slicer]]&lt;br /&gt;
||'''Ann Adams''', Ron Kikinis, Steve Pieper&lt;br /&gt;
|-&lt;br /&gt;
|[[Slicer4:Diffusion|Porting Diffusion from Slicer 3 to 4]]&lt;br /&gt;
||'''Demian Wassermann''', Alex Yarmanovich, Steve Pieper&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:DownloadPackage|Slicer 4 download package]]&lt;br /&gt;
||'''Jean-Christophe Fillion-Robin''', Stephen Aylward, Steve Pieper&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:VolumeRenderingPorting|Porting Volume Rendering from Slicer 3 to 4]]&lt;br /&gt;
||'''Julien Finet''', Alex Yarmanovich, Curtis Lisle&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:CMAKESuperbuild|CMAKE superbuild]]&lt;br /&gt;
||'''Jean-Christophe Fillion-Robin''', Stephen Aylward&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:Download Data|Download Data Appearance]]&lt;br /&gt;
||'''Ron Kikinis''', Zach Mullen, Julien Jomier&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:DisplayModule|Slicer 4 Display Module]]&lt;br /&gt;
||'''Wendy Plesniak''', Ron Kikinis&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:VTKWidgets|Slicer 4 VTK Widgets tuning]]&lt;br /&gt;
||'''Will Schroeder''', Jean-Christophe Fillion-Robin&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:ViewerDesign| Slicer 4 Viewer Presentation Layer Design &amp;amp; Guidelines ]]&lt;br /&gt;
||'''Wendy Plesniak''', Ron Kikinis, Julien Jomier, Jim Miller, Stephen Aylward&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:UIDesign|Slicer 4 UI design]]&lt;br /&gt;
||'''Wendy Plesniak'''&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:SceneViewsModule|Slicer 4 SceneViews Module]]&lt;br /&gt;
||'''Nicole Aucoin'''&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:EMSegment|EM Segmenter]]&lt;br /&gt;
||'''Kilian Pohl''', Daniel Haehn, Dominique Belhachemi&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:Annotation|Annotation]]&lt;br /&gt;
||'''Nicole Aucoin''', Daniel Haehn, Kilian Pohl&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:QtPort|Porting Slicer from kww to Qt]]&lt;br /&gt;
||'''Julien Finet''', Jean-Christophe Fillion-Robin, Steve Pieper, Stephen Aylward&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Extensions=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{|width=&amp;quot;800px&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#ddf&amp;quot; width=&amp;quot;60%&amp;quot;|'''Slicer4 Extensions'''&lt;br /&gt;
|bgcolor=&amp;quot;#ddf&amp;quot; valign=&amp;quot;top&amp;quot;|'''Key People'''&amp;lt;br/&amp;gt;Bold names are responsible for an aspect of the project.&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:VMTK|VMTK]]&lt;br /&gt;
||'''Daniel Haehn'''&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:DTI-EM-Clustering|DTI EM Clustering]]&lt;br /&gt;
||'''Mahnaz Maddah''', Jim Miller&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Quick Links for Developers =&lt;br /&gt;
This section centrally locates many existing (and developing) wiki pages useful to Slicer4 developers.&lt;br /&gt;
&lt;br /&gt;
== Slicer 4 Quick links to the Source code ==&lt;br /&gt;
The Slicer4 git repository:&lt;br /&gt;
&lt;br /&gt;
*'''Put link here'''&lt;br /&gt;
&lt;br /&gt;
{|width=&amp;quot;800px&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;background:#ddf&amp;quot; width=&amp;quot;60%&amp;quot;|'''General Slicer4 Quick Links'''&lt;br /&gt;
|style=&amp;quot;background:#ddf&amp;quot; width=&amp;quot;40%&amp;quot;|'''Debugging Slicer4 Quick Links'''&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:Build_Instructions|Slicer4 build instructions]]&lt;br /&gt;
||[http://slicer.cdash.org/index.php?project=Slicer4 Slicer4 Dashboard]&lt;br /&gt;
|-&lt;br /&gt;
||Use [http://viewvc.slicer.org ViewVC to browse the repository]&lt;br /&gt;
||[http://na-mic.org/Mantis/main_page.php Slicer Bug Tracker]&lt;br /&gt;
|-&lt;br /&gt;
||[http://www.na-mic.org/Wiki/index.php/Engineering:SandBox Instructions for NA-MIC svn]&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
||[http://slicer.org/doc/html/ Doxygen documentation for Slicer4].&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
||The [[Slicer4:VisualBlog|Slicer4 VisualBlog]] shows screenshots of slicer developments.&lt;br /&gt;
||&lt;br /&gt;
|-&lt;br /&gt;
||Developers should follow the [[Slicer4:Style|Slicer 4 Coding Style]].&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
||[[Slicer4:QtPort/Tutorials|QtPort Tutorials]]&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Developers' Mailing List ==&lt;br /&gt;
Discussion of Slicer 3 and Slicer 4 takes place on the slicer-devel at massmail.spl.harvard.edu list. To join developer's mailing list, send a request to: slicer-devel-request at massmail.spl.harvard.edu  with the keyword '''''subscribe''''' as the subject.  Or access the [http://massmail.spl.harvard.edu/mailman/listinfo/slicer-devel slicer-devel archives and web administration interface].&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/Developers/Tutorials/ExternalModuleWriting&amp;diff=20002</id>
		<title>Documentation/4.0/Developers/Tutorials/ExternalModuleWriting</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/Developers/Tutorials/ExternalModuleWriting&amp;diff=20002"/>
		<updated>2011-05-14T17:20:24Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Slicer4:QtPort|QtSlicer]]/[[Slicer4:QtPort/Tutorials|Tutorials]]&amp;amp;larr;&lt;br /&gt;
&lt;br /&gt;
This tutorial describes how to make a (Slicer4 / QT) loadable module that is compiled outside of the slicer build tree.&lt;br /&gt;
&lt;br /&gt;
* Create the skeleton code&lt;br /&gt;
  $ export SD=$HOME/build/slicer-4/Slicer4&lt;br /&gt;
  $ python ${SD}/Scripts/ModuleWizard.py \&lt;br /&gt;
       --template ${SD}/QTModules/ModuleTemplate \&lt;br /&gt;
       --target MY_MODULE_NAME \&lt;br /&gt;
       MY_MODULE_NAME&lt;br /&gt;
* Setting up your CMakeLists.txt&lt;br /&gt;
** [http://forge.abcd.harvard.edu/gf/project/plastimatch/scmsvn/?action=browse&amp;amp;path=%2F%2Acheckout%2A%2Fplastimatch%2Ftrunk%2Fcmake%2FFindSlicer.cmake Download FindSlicer.cmake]&lt;br /&gt;
** Edit CMakeLists.txt, and make it (1) detect Slicer, (2) load the Slicer &amp;quot;Use file&amp;quot;, and (3) add your module subdirectory.&lt;br /&gt;
  find_package (Slicer QUIET)&lt;br /&gt;
  if (SLICER_FOUND)&lt;br /&gt;
    include (&amp;quot;${Slicer_USE_FILE}&amp;quot;)&lt;br /&gt;
    if (SLICER_IS_SLICER4)&lt;br /&gt;
      add_subdirectory (MY_MODULE_NAME)&lt;br /&gt;
    endif ()&lt;br /&gt;
  endif ()&lt;br /&gt;
* You might need to undo some of Slicer's settings.  If you don't think you need this, then you probably don't.  But if you need it, you can do something like this:&lt;br /&gt;
  if (Slicer_USE_FILE)&lt;br /&gt;
    get_directory_property (OLD_INCLUDE_DIR INCLUDE_DIRECTORIES)&lt;br /&gt;
    set_directory_properties (PROPERTIES INCLUDE_DIRECTORIES &amp;quot;&amp;quot;)&lt;br /&gt;
    set (OLD_CFLAGS ${CMAKE_C_FLAGS})&lt;br /&gt;
    set (OLD_CXXFLAGS ${CMAKE_CXX_FLAGS})&lt;br /&gt;
 &lt;br /&gt;
    include (&amp;quot;${Slicer_USE_FILE}&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
    get_directory_property (SLICER_INCLUDE_DIRS INCLUDE_DIRECTORIES)&lt;br /&gt;
    set_directory_properties (PROPERTIES INCLUDE_DIRECTORIES&lt;br /&gt;
      &amp;quot;${OLD_INCLUDE_DIR}&amp;quot;)&lt;br /&gt;
    set (CMAKE_C_FLAGS &amp;quot;${OLD_CFLAGS}&amp;quot; CACHE STRING &amp;quot;CMake CXX Flags&amp;quot; FORCE)&lt;br /&gt;
    set (CMAKE_CXX_FLAGS &amp;quot;${OLD_CXXFLAGS}&amp;quot; CACHE STRING &amp;quot;CMake CXX Flags&amp;quot; FORCE)&lt;br /&gt;
  endif ()&lt;br /&gt;
* You might need to copy over TestingMacros.h, it depends how you set up your include directories above.&lt;br /&gt;
  $ cp ${SD}/TestingMacros.h MY_MODULE_NAME&lt;br /&gt;
* Compile your module.  At this point, it will compile.  You may see some warnings from CMake&lt;br /&gt;
 CMake Warning at /home/gsharp/build/slicer-4/Slicer4/CMake/vtkMacroKitPythonWrap.cmake:86 (ADD_LIBRARY):&lt;br /&gt;
  Cannot generate a safe runtime search path for target&lt;br /&gt;
  vtkSlicerMY_MODULE_NAMEModuleLogicPython because files in some directories&lt;br /&gt;
  may conflict with libraries in implicit directories:&lt;br /&gt;
 &lt;br /&gt;
    runtime library [libpython2.6.so.1.0] in /usr/lib may be hidden by files in:&lt;br /&gt;
      /home/gsharp/build/slicer-4/Slicer4-Build/python-build/lib&lt;br /&gt;
 &lt;br /&gt;
  Some of these libraries may not be found correctly.&lt;br /&gt;
 Call Stack (most recent call first):&lt;br /&gt;
  /home/gsharp/build/slicer-4/Slicer4/CMake/SlicerMacroPythonWrapModuleLibrary.cmake:66 (vtkMacroKitPythonWrap)&lt;br /&gt;
  /home/gsharp/build/slicer-4/Slicer4/CMake/SlicerMacroBuildModuleLogic.cmake:76 (SlicerMacroPythonWrapModuleLibrary)&lt;br /&gt;
  src/slicer/QTModules/MY_MODULE_NAME/Logic/CMakeLists.txt:28 (SlicerMacroBuildModuleLogic)&lt;br /&gt;
These warnings are benign.  Anyone know how to turn them off?&lt;br /&gt;
* The above setup will put the shared libraries directly into the slicer build directory.  I guess this isn't what you want, but now is a good time to test that everything is working.  Make sure the files are there. &lt;br /&gt;
&lt;br /&gt;
On unix:&lt;br /&gt;
&lt;br /&gt;
  $ cd ${SLICER_BUILD}/Slicer-build&lt;br /&gt;
  $ find . -name &amp;quot;*MY*&amp;quot; -print&lt;br /&gt;
  ./bin/MY_MODULE_NAMECxxTests&lt;br /&gt;
  ./bin/libvtkSlicerMY_MODULE_NAMEModuleLogicPythonD.so&lt;br /&gt;
  ./bin/vtkSlicerMY_MODULE_NAMEModuleLogicPython.so&lt;br /&gt;
  ./bin/Python/slicer/modulelogic/vtkSlicerMY_MODULE_NAMEModuleLogic.py&lt;br /&gt;
  ./bin/Python/slicer/modulelogic/vtkSlicerMY_MODULE_NAMEModuleLogic.pyc&lt;br /&gt;
  ./lib/Slicer3/QTLoadableModules/libvtkSlicerMY_MODULE_NAMEModuleLogic.so&lt;br /&gt;
  ./lib/Slicer3/QTLoadableModules/libqSlicerMY_MODULE_NAMEModule.so&lt;br /&gt;
&lt;br /&gt;
When you fire up slicer, you should see the module.  For me, it looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:ExternalModuleWriting_screenshot.png]]&lt;br /&gt;
&lt;br /&gt;
* It is possible (with some work), to tell your program to build the module in your own directory instead of Slicer's.  However, there is not yet any way to tell slicer to look in your own directory.  So we leave the tutorial and await further developments.&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=File:ExternalModuleWriting_screenshot.png&amp;diff=20001</id>
		<title>File:ExternalModuleWriting screenshot.png</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=File:ExternalModuleWriting_screenshot.png&amp;diff=20001"/>
		<updated>2011-05-14T16:01:34Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
	<entry>
		<id>https://www.slicer.org/w/index.php?title=Documentation/4.0/Developers/Tutorials/ExternalModuleWriting&amp;diff=20000</id>
		<title>Documentation/4.0/Developers/Tutorials/ExternalModuleWriting</title>
		<link rel="alternate" type="text/html" href="https://www.slicer.org/w/index.php?title=Documentation/4.0/Developers/Tutorials/ExternalModuleWriting&amp;diff=20000"/>
		<updated>2011-05-14T16:01:03Z</updated>

		<summary type="html">&lt;p&gt;Gregsharp: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Slicer4:QtPort|QtSlicer]]/[[Slicer4:QtPort/Tutorials|Tutorials]]&amp;amp;larr;&lt;br /&gt;
&lt;br /&gt;
This tutorial describes how to make a (Slicer4 / QT) loadable module that is compiled outside of the slicer build tree.&lt;br /&gt;
&lt;br /&gt;
* Create the skeleton code&lt;br /&gt;
  $ export SD=$HOME/build/slicer-4/Slicer4&lt;br /&gt;
  $ python ${SD}/Scripts/ModuleWizard.py \&lt;br /&gt;
       --template ${SD}/QTModules/ModuleTemplate \&lt;br /&gt;
       --target MY_MODULE_NAME \&lt;br /&gt;
       MY_MODULE_NAME&lt;br /&gt;
* Setting up your CMakeLists.txt&lt;br /&gt;
** [http://forge.abcd.harvard.edu/gf/project/plastimatch/scmsvn/?action=browse&amp;amp;path=%2F%2Acheckout%2A%2Fplastimatch%2Ftrunk%2Fcmake%2FFindSlicer.cmake Download FindSlicer.cmake]&lt;br /&gt;
** Edit CMakeLists.txt, and make it (1) detect Slicer, (2) load the Slicer &amp;quot;Use file&amp;quot;, and (3) add your module subdirectory.&lt;br /&gt;
  find_package (Slicer QUIET)&lt;br /&gt;
  if (SLICER_FOUND)&lt;br /&gt;
    include (&amp;quot;${Slicer_USE_FILE}&amp;quot;)&lt;br /&gt;
    if (SLICER_IS_SLICER4)&lt;br /&gt;
      add_subdirectory (MY_MODULE_NAME)&lt;br /&gt;
    endif ()&lt;br /&gt;
  endif ()&lt;br /&gt;
* You might need to undo some of Slicer's settings.  If you don't think you need this, then you probably don't.  But if you need it, you can do something like this:&lt;br /&gt;
  if (Slicer_USE_FILE)&lt;br /&gt;
    get_directory_property (OLD_INCLUDE_DIR INCLUDE_DIRECTORIES)&lt;br /&gt;
    set_directory_properties (PROPERTIES INCLUDE_DIRECTORIES &amp;quot;&amp;quot;)&lt;br /&gt;
    set (OLD_CFLAGS ${CMAKE_C_FLAGS})&lt;br /&gt;
    set (OLD_CXXFLAGS ${CMAKE_CXX_FLAGS})&lt;br /&gt;
 &lt;br /&gt;
    include (&amp;quot;${Slicer_USE_FILE}&amp;quot;)&lt;br /&gt;
 &lt;br /&gt;
    get_directory_property (SLICER_INCLUDE_DIRS INCLUDE_DIRECTORIES)&lt;br /&gt;
    set_directory_properties (PROPERTIES INCLUDE_DIRECTORIES&lt;br /&gt;
      &amp;quot;${OLD_INCLUDE_DIR}&amp;quot;)&lt;br /&gt;
    set (CMAKE_C_FLAGS &amp;quot;${OLD_CFLAGS}&amp;quot; CACHE STRING &amp;quot;CMake CXX Flags&amp;quot; FORCE)&lt;br /&gt;
    set (CMAKE_CXX_FLAGS &amp;quot;${OLD_CXXFLAGS}&amp;quot; CACHE STRING &amp;quot;CMake CXX Flags&amp;quot; FORCE)&lt;br /&gt;
  endif ()&lt;br /&gt;
* You might need to copy over TestingMacros.h, it depends how you set up your include directories above.&lt;br /&gt;
  $ cp ${SD}/TestingMacros.h MY_MODULE_NAME&lt;br /&gt;
* Compile your module.  At this point, it will compile.  You may see some warnings from CMake&lt;br /&gt;
 CMake Warning at /home/gsharp/build/slicer-4/Slicer4/CMake/vtkMacroKitPythonWrap.cmake:86 (ADD_LIBRARY):&lt;br /&gt;
  Cannot generate a safe runtime search path for target&lt;br /&gt;
  vtkSlicerMY_MODULE_NAMEModuleLogicPython because files in some directories&lt;br /&gt;
  may conflict with libraries in implicit directories:&lt;br /&gt;
 &lt;br /&gt;
    runtime library [libpython2.6.so.1.0] in /usr/lib may be hidden by files in:&lt;br /&gt;
      /home/gsharp/build/slicer-4/Slicer4-Build/python-build/lib&lt;br /&gt;
 &lt;br /&gt;
  Some of these libraries may not be found correctly.&lt;br /&gt;
 Call Stack (most recent call first):&lt;br /&gt;
  /home/gsharp/build/slicer-4/Slicer4/CMake/SlicerMacroPythonWrapModuleLibrary.cmake:66 (vtkMacroKitPythonWrap)&lt;br /&gt;
  /home/gsharp/build/slicer-4/Slicer4/CMake/SlicerMacroBuildModuleLogic.cmake:76 (SlicerMacroPythonWrapModuleLibrary)&lt;br /&gt;
  src/slicer/QTModules/MY_MODULE_NAME/Logic/CMakeLists.txt:28 (SlicerMacroBuildModuleLogic)&lt;br /&gt;
These warnings are benign.  Anyone know how to turn them off?&lt;br /&gt;
* The above setup will put the shared libraries directly into the slicer build directory.  I guess this isn't what you want, but now is a good time to test that everything is working.  Make sure the files are there. &lt;br /&gt;
&lt;br /&gt;
On unix:&lt;br /&gt;
&lt;br /&gt;
  $ cd ${SLICER_BUILD}/Slicer-build&lt;br /&gt;
  $ find . -name &amp;quot;*MY*&amp;quot; -print&lt;br /&gt;
  ./bin/MY_MODULE_NAMECxxTests&lt;br /&gt;
  ./bin/libvtkSlicerMY_MODULE_NAMEModuleLogicPythonD.so&lt;br /&gt;
  ./bin/vtkSlicerMY_MODULE_NAMEModuleLogicPython.so&lt;br /&gt;
  ./bin/Python/slicer/modulelogic/vtkSlicerMY_MODULE_NAMEModuleLogic.py&lt;br /&gt;
  ./bin/Python/slicer/modulelogic/vtkSlicerMY_MODULE_NAMEModuleLogic.pyc&lt;br /&gt;
  ./lib/Slicer3/QTLoadableModules/libvtkSlicerMY_MODULE_NAMEModuleLogic.so&lt;br /&gt;
  ./lib/Slicer3/QTLoadableModules/libqSlicerMY_MODULE_NAMEModule.so&lt;br /&gt;
&lt;br /&gt;
When you fire up slicer, you should see the module.  For me, it looks like this:&lt;br /&gt;
&lt;br /&gt;
[[File:ExternalModuleWriting_screenshot.png]]&lt;/div&gt;</summary>
		<author><name>Gregsharp</name></author>
		
	</entry>
</feed>