<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.na-mic.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Blezek</id>
	<title>NAMIC Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.na-mic.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Blezek"/>
	<link rel="alternate" type="text/html" href="https://www.na-mic.org/wiki/Special:Contributions/Blezek"/>
	<updated>2026-04-03T23:14:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2016_Winter_Project_Week/Dinner&amp;diff=91707</id>
		<title>2016 Winter Project Week/Dinner</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2016_Winter_Project_Week/Dinner&amp;diff=91707"/>
		<updated>2016-01-05T18:49:23Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
==Dinner Specs==&lt;br /&gt;
&lt;br /&gt;
*Date and Time: Thursday, January 7th, 6pm&lt;br /&gt;
*Location: Desi Dhaba, 401 Massachusetts Ave, Cambridge (about 10 minute walk from Project Week)&lt;br /&gt;
*Food: Indian. (Veg and non-veg options, naan, rice)&lt;br /&gt;
*Cost: $25 to be paid in cash when you get to the restaurant (for BWH attendees, this is reimbursable)&lt;br /&gt;
*Drinks: tap water is included in this price. Beyond that each person pays individually for their drinks - alcohol or otherwise&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Disclaimer&amp;lt;/b&amp;gt;: We went yesterday (Monday) and they were not serving alcohol. - Adam Rankin&lt;br /&gt;
&lt;br /&gt;
==RSVPs==&lt;br /&gt;
#Tina Kapur&lt;br /&gt;
#Ron Kikinis&lt;br /&gt;
#Steve Pieper&lt;br /&gt;
# Andrey Fedorov&lt;br /&gt;
# Sonia Pujol&lt;br /&gt;
#Hans Meine&lt;br /&gt;
#Michael Onken&lt;br /&gt;
# Junichi Tokuda&lt;br /&gt;
# Dan Blezek&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2012_Winter_Project_Week_SimpleITK_and_Slicer4&amp;diff=73234</id>
		<title>2012 Winter Project Week SimpleITK and Slicer4</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2012_Winter_Project_Week_SimpleITK_and_Slicer4&amp;diff=73234"/>
		<updated>2012-01-10T17:38:00Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[https://github.com/dblezek/SimpleITK-MICCAI-2011-Tutorial/blob/master/Presentation/SimpleITK-MICCAI-2011.pdf?raw=true Download Presentation]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dblezek/SimpleITK-MICCAI-2011-Tutorial Github repo for MICCAI Tutorial]&lt;br /&gt;
&lt;br /&gt;
 [[AHM_2012#Agenda|Back to AHM Schedule]]&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2012_Winter_Project_Week_SimpleITK_and_Slicer4&amp;diff=73233</id>
		<title>2012 Winter Project Week SimpleITK and Slicer4</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2012_Winter_Project_Week_SimpleITK_and_Slicer4&amp;diff=73233"/>
		<updated>2012-01-10T17:33:02Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; [[AHM_2012#Agenda|Back to AHM Schedule]]&lt;br /&gt;
&lt;br /&gt;
[https://github.com/dblezek/SimpleITK-MICCAI-2011-Tutorial/blob/master/Presentation/SimpleITK-MICCAI-2011.pdf?raw=true Download Presentation]&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Project_Week_Breakout_Session:_XNAT_for_Programmers&amp;diff=39718</id>
		<title>2009 Project Week Breakout Session: XNAT for Programmers</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Project_Week_Breakout_Session:_XNAT_for_Programmers&amp;diff=39718"/>
		<updated>2009-06-25T19:10:04Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
This breakout session will provide background and tutorials for programmers.  The content will focus primarily on developing intereoperability between external applications (e.g. slicer, batchmake) and XNAT data repositories.  We will also cover to a lesser degree contributing to the actual XNAT codebase.&lt;br /&gt;
&lt;br /&gt;
= Who should attend =&lt;br /&gt;
Programmers who want their tools to talk to XNAT repositories.  Programmers who want to contribute to the XNAT codebase. People who have Dan's keys and would please kindly return them.&lt;br /&gt;
&lt;br /&gt;
= Topics =&lt;br /&gt;
&lt;br /&gt;
* Interoperating with XNAT&lt;br /&gt;
** The XNAT Web Services API&lt;br /&gt;
** Examples: Slicer (Wendy [[media:ProjectWeek-06-25-09-Slicer3FetchMI.ppt| Slides]]), GWE (Marco), XNAT File System (Dan Blezek [[media:Xnatfs_Overview.pdf‎|slides]] or [http://files.getdropbox.com/u/1363248/Summer%20Project%20Week%202009/xnatfs%20Overview.html online])&lt;br /&gt;
&lt;br /&gt;
* Building on the XNAT platform&lt;br /&gt;
** XNAT Architecture&lt;br /&gt;
** Methods for extending XNAT&lt;br /&gt;
** Our wish list: protocol validation, UI improvements, search, etc.&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=File:Xnatfs_Overview.pdf&amp;diff=39716</id>
		<title>File:Xnatfs Overview.pdf</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=File:Xnatfs_Overview.pdf&amp;diff=39716"/>
		<updated>2009-06-25T19:05:27Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Project_Week_Breakout_Session:_XNAT_for_Programmers&amp;diff=39681</id>
		<title>2009 Project Week Breakout Session: XNAT for Programmers</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Project_Week_Breakout_Session:_XNAT_for_Programmers&amp;diff=39681"/>
		<updated>2009-06-25T16:58:48Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
This breakout session will provide background and tutorials for programmers.  The content will focus primarily on developing intereoperability between external applications (e.g. slicer, batchmake) and XNAT data repositories.  We will also cover to a lesser degree contributing to the actual XNAT codebase.&lt;br /&gt;
&lt;br /&gt;
= Who should attend =&lt;br /&gt;
Programmers who want their tools to talk to XNAT repositories.  Programmers who want to contribute to the XNAT codebase. People who have Dan's keys and would please kindly return them.&lt;br /&gt;
&lt;br /&gt;
= Topics =&lt;br /&gt;
&lt;br /&gt;
* Interoperating with XNAT&lt;br /&gt;
** The XNAT Web Services API&lt;br /&gt;
** Examples: Slicer (Wendy [[media:ProjectWeek-06-25-09-Slicer3FetchMI.ppt| Slides]]), GWE (Marco), XNAT File System (Dan Blezek)&lt;br /&gt;
&lt;br /&gt;
* Building on the XNAT platform&lt;br /&gt;
** XNAT Architecture&lt;br /&gt;
** Methods for extending XNAT&lt;br /&gt;
** Our wish list: protocol validation, UI improvements, search, etc.&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Summer_Project_Week&amp;diff=36203</id>
		<title>2009 Summer Project Week</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Summer_Project_Week&amp;diff=36203"/>
		<updated>2009-04-13T15:30:28Z</updated>

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

		<summary type="html">&lt;p&gt;Blezek: uploaded a new version of &amp;quot;Image:Test.nhdr&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=File:Test.raw&amp;diff=32213</id>
		<title>File:Test.raw</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=File:Test.raw&amp;diff=32213"/>
		<updated>2008-11-19T02:21:09Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=File:Test.nhdr&amp;diff=32212</id>
		<title>File:Test.nhdr</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=File:Test.nhdr&amp;diff=32212"/>
		<updated>2008-11-19T02:19:27Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Engineering:Subversion_Repository&amp;diff=29566</id>
		<title>Engineering:Subversion Repository</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Engineering:Subversion_Repository&amp;diff=29566"/>
		<updated>2008-08-20T01:34:58Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Can I see the files through the Web */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is the NA-MIC Sandbox ==&lt;br /&gt;
&lt;br /&gt;
NA-MIC SandBox is a repository of untested and unstable code developed as a part of NA-MIC. For more information, check the [[NAMIC_Wiki:Software_Process#The_Sandbox|NA-MIC Software Development Process]]&lt;br /&gt;
&lt;br /&gt;
This source code repository is managed using &amp;quot;[http://en.wikipedia.org/wiki/Subversion_(software) Subversion]&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
For information on how to use Subversion, please see [http://svnbook.red-bean.com/ the SVN Book at red-bean.com]. In particular, check out the information about [http://svnbook.red-bean.com/en/1.1/ch03s05.html the Basic Work Cycle for svn].&lt;br /&gt;
&lt;br /&gt;
The NA-MIC SVN is also used for the [[Slicer3|Slicer3]] development effort.&lt;br /&gt;
&lt;br /&gt;
== How do I get NA-MIC SandBox ==&lt;br /&gt;
&lt;br /&gt;
First, you should install a  [http://subversion.tigris.org/ Subversion] client in your computer. They are available for most operating systems. Please check if you already have Subversion on the system, or download appropriate one from http://subversion.tigris.org/project_packages.html. On Linux and Cygwin platforms you simply need to check if the &amp;quot;svn&amp;quot; command is available.&lt;br /&gt;
&lt;br /&gt;
Once you have a subversion client, you can checkout the NA-MIC Sandbox by using the following command:&lt;br /&gt;
&lt;br /&gt;
 svn checkout http://svn.na-mic.org/NAMICSandBox/trunk NAMICSandBox&lt;br /&gt;
&lt;br /&gt;
== How do I commit to NA-MIC Subversion ==&lt;br /&gt;
&lt;br /&gt;
Fill the form at https://www.kitware.com/Admin/SendPassword.cgi and under Comment type &amp;quot;Request password for NA-MIC Sandbox&amp;quot;. Once you have access to write to NA-MIC SandBox, you can work with repository using the following commands:&lt;br /&gt;
&lt;br /&gt;
To update repository:&lt;br /&gt;
&lt;br /&gt;
 svn update&lt;br /&gt;
&lt;br /&gt;
To check current state of your edits:&lt;br /&gt;
&lt;br /&gt;
 svn status&lt;br /&gt;
&lt;br /&gt;
To check the current state compared to the repository:&lt;br /&gt;
&lt;br /&gt;
 svn -u status&lt;br /&gt;
&lt;br /&gt;
To add new file:&lt;br /&gt;
&lt;br /&gt;
 svn add filename&lt;br /&gt;
&lt;br /&gt;
followed by (very important):&lt;br /&gt;
&lt;br /&gt;
 svn commit -m&amp;quot;ENH: Adding a new file&amp;quot; filename&lt;br /&gt;
&lt;br /&gt;
To remove file:&lt;br /&gt;
&lt;br /&gt;
 svn remove filename&lt;br /&gt;
&lt;br /&gt;
To rename file:&lt;br /&gt;
&lt;br /&gt;
 svn move oldname newname&lt;br /&gt;
&lt;br /&gt;
If the update results in conflict, fix the file first before commiting it.&lt;br /&gt;
&lt;br /&gt;
Once you have fixed the file:&lt;br /&gt;
&lt;br /&gt;
 svn resolved &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Can I see the files through the Web ==&lt;br /&gt;
&lt;br /&gt;
Yes, check: [http://viewvc.slicer.org/viewcvs.cgi/?root=NAMICSandBox ViewVC].&lt;br /&gt;
&lt;br /&gt;
Or for Slicer3, [http://viewvc.slicer.org/viewcvs.cgi/?root=Slicer3 ViewVC].&lt;br /&gt;
&lt;br /&gt;
== How do I make a release branch? ==&lt;br /&gt;
&lt;br /&gt;
Use the copy command like:&lt;br /&gt;
&lt;br /&gt;
 svn copy http://svn.slicer.org/Slicer3 http://svn.slicer.orgSlicer3/branches/Slicer3.0-PostAHMBeta -m &amp;quot;ENH: new branch to capture work done at the 2007 all hands meeting&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== How can I switch between branches and the trunk? ==&lt;br /&gt;
&lt;br /&gt;
You can switch your current checkout to the branch with:&lt;br /&gt;
&lt;br /&gt;
 svn switch http://svn.slicer.orgSlicer3/branches/Slicer3.0-PreAHMBeta&lt;br /&gt;
&lt;br /&gt;
and get back to the head with:&lt;br /&gt;
&lt;br /&gt;
 svn switch http://svn.slicer.orgSlicer3/trunk &lt;br /&gt;
&lt;br /&gt;
Once you have switched, you can do updates and commits to that branch.&lt;br /&gt;
&lt;br /&gt;
== Merging latest changes from the HEAD into your branch ==&lt;br /&gt;
&lt;br /&gt;
 svn merge http://svn.slicer.org/Slicer3/trunk http://svn.slicer.org/Slicer3/branches/testing/sign_integration/Slicer3&lt;br /&gt;
&lt;br /&gt;
Note: this will not get new files, just changes to existing files.&lt;br /&gt;
&lt;br /&gt;
== How can I tell if I'm on the branch or the trunk? ==&lt;br /&gt;
&lt;br /&gt;
Look at the URL line from&lt;br /&gt;
&lt;br /&gt;
 svn info&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== How can I merge changes from once branch into another? ==&lt;br /&gt;
&lt;br /&gt;
To move changes from the current trunk head ''into'' a branch see [http://svnbook.red-bean.com/en/1.2/svn.branchmerge.commonuses.html this part of the svn documentation] or follow the instructions below:&lt;br /&gt;
&lt;br /&gt;
* Find out the initial version number of the branch by executing:  &lt;br /&gt;
&lt;br /&gt;
 svn log --verbose --stop-on-copy http://svn.slicer.org/Slicer3/branches/Slicer3.0-PreAHMBeta&lt;br /&gt;
&lt;br /&gt;
from which you'll see a revision number for the commit that created the branch. The number is specified by the oldest (last) log entry and starts with an r. In this case it is r2137. &lt;br /&gt;
&lt;br /&gt;
* Find out the current revision number of the trunc by executing &lt;br /&gt;
&lt;br /&gt;
 svn update &lt;br /&gt;
&lt;br /&gt;
In my example it is 2157.  &lt;br /&gt;
&lt;br /&gt;
* Bring changes up through 2157 into the branch, you run the following command from within the directory that has the branch:&lt;br /&gt;
&lt;br /&gt;
 svn merge -r2137:2157 http://svn.slicer.org/Slicer3/trunk&lt;br /&gt;
&lt;br /&gt;
If you do 'svn status' the new files will show up as modified and/or conflicts.  &lt;br /&gt;
&lt;br /&gt;
* Resolve any conflicts: &lt;br /&gt;
&lt;br /&gt;
  svn status | grep &amp;quot;C &amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Engineering:Subversion_Repository#Conflicts_in_the_file| See ]]  on how to resolve conflicts &lt;br /&gt;
&lt;br /&gt;
* Update and compile libraries in Slicer3-lib by executing  &lt;br /&gt;
&lt;br /&gt;
  Slicer3/Scripts/genlib.tcl&lt;br /&gt;
&lt;br /&gt;
* Compile Slicer3 by executing make in Slicer3-build&lt;br /&gt;
&lt;br /&gt;
* Commit all new files (also the once that were added/updated from the trunc) to the branch by executing in the source directory : &lt;br /&gt;
 &lt;br /&gt;
 svn commit -m &amp;quot;ENH:  Update my branch with current trunc - r2137:2157&amp;quot; &lt;br /&gt;
&lt;br /&gt;
Note, add r2137:2157 in the log file so next time you update the branch by executing &lt;br /&gt;
&lt;br /&gt;
svn merge -r2158:XXXX http://svn.slicer.org/Slicer3/trunk&lt;br /&gt;
&lt;br /&gt;
== I get the following error when I try to commit... ==&lt;br /&gt;
&lt;br /&gt;
If you want to enable this error reporting on your subversion repository, please follow instructions about [[Subversion_Input_Filters|Subversion Input Filters]].&lt;br /&gt;
&lt;br /&gt;
=== Commit log error ===&lt;br /&gt;
&lt;br /&gt;
The error would look like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;---------------------------------------------------------------------&lt;br /&gt;
 Subversion Commits to NA-MIC require commit type in the comment.&lt;br /&gt;
 Valid commit types are:&lt;br /&gt;
   BUG:   - a change made to fix a runtime issue&lt;br /&gt;
            (crash, segmentation fault, exception, or incorrect result,&lt;br /&gt;
   COMP:  - a fix for a compilation issue, error or warning,&lt;br /&gt;
   ENH:   - new functionality added to the project,&lt;br /&gt;
   PERF:  - a performance improvement,&lt;br /&gt;
   STYLE: - a change that does not impact the logic or execution of the code.&lt;br /&gt;
            (improve coding style, comments, documentation).&lt;br /&gt;
 &lt;br /&gt;
 The Subversion command to commit the change is:&lt;br /&gt;
 &lt;br /&gt;
   svn commit -m &amp;quot;BUG: fixed core dump when passed float data&amp;quot; filename&lt;br /&gt;
 &lt;br /&gt;
 you can also use the syntax below which omits the -m flag. In this case&lt;br /&gt;
 subversion will start up an editor for you to enter a comment on why you made&lt;br /&gt;
 the change.&lt;br /&gt;
 &lt;br /&gt;
   svn commit filename&lt;br /&gt;
 ----------------------------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to start the commit message with one of the specified tags.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Tabs in the source file ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;----------------------------------------------------------------------&lt;br /&gt;
 Problems in file &amp;quot;my baby.cxx&amp;quot;:&lt;br /&gt;
 The following line(s) contain tabs:&lt;br /&gt;
     4: This line contains a tab--&amp;gt;      &amp;lt;--&lt;br /&gt;
 &lt;br /&gt;
 Found problems with 1 file(s). Cannot commit&lt;br /&gt;
 ----------------------------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure there is no tabs in the source files. You can remove them with&lt;br /&gt;
&lt;br /&gt;
 perl -pi .-e 's/\t/    /g' &amp;lt;FileName&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
  sed -i -e 's/\t/  /g' &amp;lt;FileName&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Windows new-lines in the source file ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;----------------------------------------------------------------------&lt;br /&gt;
Problems in file &amp;quot;trunk/AnalyzeObjectReader/objectutils.h&amp;quot;:&lt;br /&gt;
The following line(s) contain windows new-lines:&lt;br /&gt;
    1: /*************************************************************************&lt;br /&gt;
    2: Copyright (c) 2007, Regents of the University of Iowa&lt;br /&gt;
    3: &lt;br /&gt;
    4: All rights reserved.&lt;br /&gt;
    5: &lt;br /&gt;
&lt;br /&gt;
Found problems with 1 file(s). Cannot commit&lt;br /&gt;
 ----------------------------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure there are no windows new-lines in the source files. You can remove them with&lt;br /&gt;
&lt;br /&gt;
  sed -i -e 's/^M//g' &amp;lt;FileName&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where the &amp;quot;^M&amp;quot; is typed by pressing the control key with the v-key followed by control key with the m-key.&lt;br /&gt;
&lt;br /&gt;
=== Missing new line at the end of file ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;----------------------------------------------------------------------&lt;br /&gt;
 Problems in file &amp;quot;my baby.cxx&amp;quot;:&lt;br /&gt;
 The following line(s) do not contain new-line character:&lt;br /&gt;
     5: another linex&lt;br /&gt;
 &lt;br /&gt;
 Found problems with 1 file(s). Cannot commit&lt;br /&gt;
 ----------------------------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure there is a new line at the end of the source file. Most editors should fix this automatically.&lt;br /&gt;
&lt;br /&gt;
=== Conflicts in the file ===&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;----------------------------------------------------------------------&lt;br /&gt;
 Problems in file &amp;quot;test.cxx&amp;quot;:&lt;br /&gt;
 The following line(s) contain conflicts:&lt;br /&gt;
     1: &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; .mine&lt;br /&gt;
    11: =======&lt;br /&gt;
    22: &amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; .r13&lt;br /&gt;
 &lt;br /&gt;
 Found problems with 2 file(s). Cannot commit&lt;br /&gt;
 ----------------------------------------------------------------------&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to remove any conflicts before removing files.&lt;br /&gt;
&lt;br /&gt;
Once resolved:&lt;br /&gt;
&lt;br /&gt;
 svn resolved test.cxx&lt;br /&gt;
&lt;br /&gt;
=== Things missing from SVN that were in CVS ===&lt;br /&gt;
&lt;br /&gt;
==== No cvs diff -w ====&lt;br /&gt;
&lt;br /&gt;
Some workarounds here: http://kitt.hodsden.com/ignoring_whitespace_changes_with_svn_diff&lt;br /&gt;
&lt;br /&gt;
==== No cvs update -C ====&lt;br /&gt;
&lt;br /&gt;
Remove the file and then update (nothing more clean?) (mathieu). I believe this is describe here: http://svnbook.red-bean.com/nightly/en/svn.tour.cycle.html#svn.tour.cycle.resolve&lt;br /&gt;
&lt;br /&gt;
...snip...&lt;br /&gt;
&lt;br /&gt;
If you get a conflict, you need to do one of three things:&lt;br /&gt;
&lt;br /&gt;
* Merge the conflicted text “by hand” (by examining and editing the conflict markers within the file).&lt;br /&gt;
* Copy one of the temporary files on top of your working file.&lt;br /&gt;
* Run svn revert &amp;lt;filename&amp;gt; to throw away all of your local changes.&lt;br /&gt;
&lt;br /&gt;
Once you've resolved the conflict, you need to let Subversion know by running svn resolved. This removes the three temporary files and Subversion no longer considers the file to be in a state of conflict.&lt;br /&gt;
&lt;br /&gt;
 $ svn resolved &amp;lt;filename&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...snip...&lt;br /&gt;
&lt;br /&gt;
== Usage Example ==&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
&lt;br /&gt;
Below is a (hypothetical) example of the typical use of the NA-MIC Sandbox.&lt;br /&gt;
&lt;br /&gt;
* A group collaborating in NA-MIC is developing software for segmenting tumors.&lt;br /&gt;
* The group wants to share this code with other groups and eventually contribute it to one of the toolkits in the NA-MIC Kit, or to Slicer&lt;br /&gt;
* First the code must be brought to work on representative use cases&lt;br /&gt;
* Then the code is to be tried out by members of other groups.&lt;br /&gt;
* In order to share and test the code, the first group contributes it in a sub-directory of the NA-MIC Sandbox&lt;br /&gt;
* The content of the sub-directory must include '''ALL''' the material that other group may need in order to get this code to work. (with the exception of large datasets, for which a link to a public database will be preferred).&lt;br /&gt;
* One of the sub-directories of the new directory will include a technical report describing the code and how to use it.&lt;br /&gt;
** This report will be submitted later as a paper to the [Insight journal].&lt;br /&gt;
* Other groups will get the material by updating their local checkouts of the NA-MIC Sandbox&lt;br /&gt;
** They will try the code&lt;br /&gt;
** They will send comments back to the original group&lt;br /&gt;
** They will modify and improve the code, and commit their changes back to the repository&lt;br /&gt;
&lt;br /&gt;
=== How to do it ===&lt;br /&gt;
&lt;br /&gt;
The steps that must be followed by the first group are&lt;br /&gt;
&lt;br /&gt;
# Checkout the NA-MIC Sandbox into a local computer&lt;br /&gt;
# As a sub-directory of the &amp;quot;trunk&amp;quot; directory, create a new directory with a name descriptive of the project (e.g. TumorSegmentationMethodX in this case).&lt;br /&gt;
# Add the directory by using the command '''svn add TumorSegmentationMethodX'''.&lt;br /&gt;
# Cd in the directory and create the following typical tree&lt;br /&gt;
## Source&lt;br /&gt;
## Testing&lt;br /&gt;
## Documents&lt;br /&gt;
### Report01&lt;br /&gt;
# Add each one of the subdirectories by using the command '''svn add directoryname'''&lt;br /&gt;
# At the top of the TumorSegmentationMethodX directory, create the files&lt;br /&gt;
## CMakeLists.txt&lt;br /&gt;
## CTestConfig.cmake&lt;br /&gt;
# Add them to the repository by using the commands&lt;br /&gt;
## svn add CMakeLists.txt&lt;br /&gt;
## svn add CTestConfig.cmake&lt;br /&gt;
## svn commit -m &amp;quot;ENH: Configuration files&amp;quot;&lt;br /&gt;
# In the &amp;quot;Source&amp;quot; sub-directory add the source code files implementing their algorithm.&lt;br /&gt;
# In the &amp;quot;Testing&amp;quot; sub-directory add the source code files testing '''ALL''' the features of their algorithm.&lt;br /&gt;
## For this, a CMakeLists.txt file must be added in the Testing sub-directory and it should include ADD_TEST commands in generous profusion.&lt;br /&gt;
# Once all the code '''and Tests''' are added to the sub-directory, a build of the code will be made in a separate binary tree. From that binary tree, builds will be submitted to one of the NA-MIC kit Dashboard (e.g. ITK, VTK, Slicer). The Dashboard to use will depend on the nature of the source code. In this case, since this is a segmentation method, the ITK Dashboard will be the proper location. The submission should be posted as Experimental builds to avoid confusion with the standard builds of that Dashboard.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Steps to be followed by other groups are&lt;br /&gt;
&lt;br /&gt;
# Update their local checkouts of the NA-MIC Sandbox&lt;br /&gt;
## This can be done with the command '''svn update'''&lt;br /&gt;
## This should bring the new directory TumorSegmentationMethodX&lt;br /&gt;
# Make a build of the code in a separate binary tree&lt;br /&gt;
# Submit a build to the Dashboard&lt;br /&gt;
# Test the code with their own images&lt;br /&gt;
# Make improvements to the code and commit them to the repository with the command '''svn commit -m &amp;quot;ENH: This changes improves...&amp;quot; '''&lt;br /&gt;
## The content of the &amp;quot;-m&amp;quot; message is extremely important. You must write it from the perspesctive of considering a developer unfamiliar with the code, reading this comments five years later. Please write clear and generous messages. Lazy developers who write short commit messages will automatically accumulate bad Karma and will be condemned to reincarnate as users of buggy operating systems with lousy customer support.&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2008_Summer_Project_Week:XNATandXCEDE&amp;diff=27433</id>
		<title>2008 Summer Project Week:XNATandXCEDE</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2008_Summer_Project_Week:XNATandXCEDE&amp;diff=27433"/>
		<updated>2008-06-24T14:30:07Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* REST interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|[[Image:ProjectWeek-2008.png|thumb|320px|Return to [[2008_Summer_Project_Week|Project Week Main Page]] ]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Key Investigators===&lt;br /&gt;
* Dan M.&lt;br /&gt;
* Dan B.&lt;br /&gt;
* Julien&lt;br /&gt;
* Steve&lt;br /&gt;
* Wendy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Objectives&amp;lt;/h1&amp;gt;&lt;br /&gt;
Improve Slicer's informatics support and its integration with XNAT Tools;&lt;br /&gt;
Design XCEDE Web Services using several Slicer3 use scenarios as drivers. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Approach, Plan&amp;lt;/h1&amp;gt;&lt;br /&gt;
* Work with existing Grails-based REST interface to XCEDE&lt;br /&gt;
* Evaluate use cases for Slicer3&lt;br /&gt;
* Work on design of XCEDE web services API to support these.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Progress&amp;lt;/h1&amp;gt;&lt;br /&gt;
A straw man REST interface to XCEDE has been implemented using Grails (Groovy on Rails). Grails is a rapid application development environment patterned after Rails (Ruby on Rails). Grails, however, is completely Java-based utilizing industry standard components (Spring, Hibernate, Groovy). In addition, Grails supports many of the common AJAX frameworks and can be compiled and deployed as a .war file.&lt;br /&gt;
&lt;br /&gt;
A server has been set up on slicerl using code in the NAMICSandbox. Two interfaces are available, a human-friendly web site and a machine-friendly REST interface. The command line program curl can interact with the REST interface, and is useful for learning and debugging.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Detailed Project Goals===&lt;br /&gt;
* The XCEDE REST service shall implement the full XCEDE capabilities as a stand-alone application&lt;br /&gt;
** When connected to a data service such as XNAT, it's functionality will replace the stand-alone app's, e.g. XCEDE will pass data query requests through to XNAT or perhaps to a DICOM QR provider.&lt;br /&gt;
* Users, Roles and Permissions will be incorporated through the [http://www.jsecurity.org/ JSecurity] library.  While user authentication will not be added in the first release, the scaffolding will be in place and authentication may be added where required.&lt;br /&gt;
* Interaction with the REST interface will not require a sophisticated client.&lt;br /&gt;
** &amp;quot;curl&amp;quot; or &amp;quot;wget&amp;quot; will be sufficient.&lt;br /&gt;
** Most languages have some form of HTTP libraries, making them suitable client platforms.&lt;br /&gt;
* Deployment&lt;br /&gt;
** The REST service will be deployed as a .war file.  Many servlet engines immediately handle .war applications.&lt;br /&gt;
** The REST service may be deployed as part of an XNAT instance.  It may allow fast-path access to XNAT queries.&lt;br /&gt;
&lt;br /&gt;
=== REST interface ===&lt;br /&gt;
[http://en.wikipedia.org/wiki/Representational_State_Transfer REST] is a simple idea: expose all your resources as URI's.  The URI's are nouns, with 4 basic verbs that act on them.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|-style=&amp;quot;background:#ebeced; color:black&amp;quot; align=&amp;quot;left&amp;quot; &lt;br /&gt;
! HTTP Method&lt;br /&gt;
! CRUD concept&lt;br /&gt;
! Usage&lt;br /&gt;
|-&lt;br /&gt;
| PUT&lt;br /&gt;
| Create&lt;br /&gt;
| Create a new instances of a resource.  In some cases, the user can choose the URI, e.g. http://www.example.org/XCEDE/project/MyFancyProject, in other cases, the REST service chooses the URI, e.g. http://www.example.org/XCEDE/project which will create http://www.example.org/XCEDE/project/1 (then /2, /3, etc).&lt;br /&gt;
|-&lt;br /&gt;
| GET&lt;br /&gt;
| Read&lt;br /&gt;
| Fetch a representation of the resource.  This will be XCEDE by default, generic [http://xstream.codehaus.org/ XStream] XML, and JSON provided as debug information.&lt;br /&gt;
|-&lt;br /&gt;
| POST&lt;br /&gt;
| Update&lt;br /&gt;
| POST can be thought of as '''append'''.  If POST'ing to an existing URI, update the representation with the POST'ed data, returning the new representation.&lt;br /&gt;
|-&lt;br /&gt;
| DELETE&lt;br /&gt;
| Delete&lt;br /&gt;
| Obviously deletes a resource, if the user has privileges.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
* Sample grails-based excee interface: http://boggs.bwh.harvard.edu:8080/XCEDE/&lt;br /&gt;
* Grails: http://www.grails.org&lt;br /&gt;
* XCEDE: http://www.xcede.org&lt;br /&gt;
* XNAT: http://www.xnat.org&lt;br /&gt;
* [http://slicer.spl.harvard.edu/slicerWiki/index.php/Slicer3:XCEDE_use_cases#XCEDE_REST_Interface XCEDE use cases]&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2008_Summer_Project_Week:XNATandXCEDE&amp;diff=27429</id>
		<title>2008 Summer Project Week:XNATandXCEDE</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2008_Summer_Project_Week:XNATandXCEDE&amp;diff=27429"/>
		<updated>2008-06-24T13:39:32Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Detailed Project Goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|[[Image:ProjectWeek-2008.png|thumb|320px|Return to [[2008_Summer_Project_Week|Project Week Main Page]] ]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Key Investigators===&lt;br /&gt;
* Dan M.&lt;br /&gt;
* Dan B.&lt;br /&gt;
* Julien&lt;br /&gt;
* Steve&lt;br /&gt;
* Wendy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Objectives&amp;lt;/h1&amp;gt;&lt;br /&gt;
Improve Slicer's informatics support and its integration with XNAT Tools;&lt;br /&gt;
Design XCEDE Web Services using several Slicer3 use scenarios as drivers. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Approach, Plan&amp;lt;/h1&amp;gt;&lt;br /&gt;
* Work with existing Grails-based REST interface to XCEDE&lt;br /&gt;
* Evaluate use cases for Slicer3&lt;br /&gt;
* Work on design of XCEDE web services API to support these.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Progress&amp;lt;/h1&amp;gt;&lt;br /&gt;
A straw man REST interface to XCEDE has been implemented using Grails (Groovy on Rails). Grails is a rapid application development environment patterned after Rails (Ruby on Rails). Grails, however, is completely Java-based utilizing industry standard components (Spring, Hibernate, Groovy). In addition, Grails supports many of the common AJAX frameworks and can be compiled and deployed as a .war file.&lt;br /&gt;
&lt;br /&gt;
A server has been set up on slicerl using code in the NAMICSandbox. Two interfaces are available, a human-friendly web site and a machine-friendly REST interface. The command line program curl can interact with the REST interface, and is useful for learning and debugging.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Detailed Project Goals===&lt;br /&gt;
* The XCEDE REST service shall implement the full XCEDE capabilities as a stand-alone application&lt;br /&gt;
** When connected to a data service such as XNAT, it's functionality will replace the stand-alone app's, e.g. XCEDE will pass data query requests through to XNAT or perhaps to a DICOM QR provider.&lt;br /&gt;
* Users, Roles and Permissions will be incorporated through the [http://www.jsecurity.org/ JSecurity] library.  While user authentication will not be added in the first release, the scaffolding will be in place and authentication may be added where required.&lt;br /&gt;
* Interaction with the REST interface will not require a sophisticated client.&lt;br /&gt;
** &amp;quot;curl&amp;quot; or &amp;quot;wget&amp;quot; will be sufficient.&lt;br /&gt;
** Most languages have some form of HTTP libraries, making them suitable client platforms.&lt;br /&gt;
* Deployment&lt;br /&gt;
** The REST service will be deployed as a .war file.  Many servlet engines immediately handle .war applications.&lt;br /&gt;
** The REST service may be deployed as part of an XNAT instance.  It may allow fast-path access to XNAT queries.&lt;br /&gt;
&lt;br /&gt;
=== REST interface ===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
* Sample grails-based excee interface: http://boggs.bwh.harvard.edu:8080/XCEDE/&lt;br /&gt;
* Grails: http://www.grails.org&lt;br /&gt;
* XCEDE: http://www.xcede.org&lt;br /&gt;
* XNAT: http://www.xnat.org&lt;br /&gt;
* [http://slicer.spl.harvard.edu/slicerWiki/index.php/Slicer3:XCEDE_use_cases#XCEDE_REST_Interface XCEDE use cases]&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2008_Summer_Project_Week:XNATandXCEDE&amp;diff=27427</id>
		<title>2008 Summer Project Week:XNATandXCEDE</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2008_Summer_Project_Week:XNATandXCEDE&amp;diff=27427"/>
		<updated>2008-06-24T13:33:42Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Detailed Project Goals */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|[[Image:ProjectWeek-2008.png|thumb|320px|Return to [[2008_Summer_Project_Week|Project Week Main Page]] ]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Key Investigators===&lt;br /&gt;
* Dan M.&lt;br /&gt;
* Dan B.&lt;br /&gt;
* Julien&lt;br /&gt;
* Steve&lt;br /&gt;
* Wendy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Objectives&amp;lt;/h1&amp;gt;&lt;br /&gt;
Improve Slicer's informatics support and its integration with XNAT Tools;&lt;br /&gt;
Design XCEDE Web Services using several Slicer3 use scenarios as drivers. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Approach, Plan&amp;lt;/h1&amp;gt;&lt;br /&gt;
* Work with existing Grails-based REST interface to XCEDE&lt;br /&gt;
* Evaluate use cases for Slicer3&lt;br /&gt;
* Work on design of XCEDE web services API to support these.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Progress&amp;lt;/h1&amp;gt;&lt;br /&gt;
A straw man REST interface to XCEDE has been implemented using Grails (Groovy on Rails). Grails is a rapid application development environment patterned after Rails (Ruby on Rails). Grails, however, is completely Java-based utilizing industry standard components (Spring, Hibernate, Groovy). In addition, Grails supports many of the common AJAX frameworks and can be compiled and deployed as a .war file.&lt;br /&gt;
&lt;br /&gt;
A server has been set up on slicerl using code in the NAMICSandbox. Two interfaces are available, a human-friendly web site and a machine-friendly REST interface. The command line program curl can interact with the REST interface, and is useful for learning and debugging.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Detailed Project Goals===&lt;br /&gt;
* The XCEDE REST service shall implement the full XCEDE capabilities as a stand-alone application&lt;br /&gt;
** When connected to a data service such as XNAT, it's functionality will replace the stand-alone app's, e.g. XCEDE will pass data query requests through to XNAT or perhaps to a DICOM QR provider.&lt;br /&gt;
* Users, Roles and Permissions will be incorporated through the [http://www.jsecurity.org/ JSecurity] library.  While user authentication will not be added in the first release, the scaffolding will be in place and authentication may be added where required.&lt;br /&gt;
* Interaction with the REST interface will not require a sophisticated client.&lt;br /&gt;
** &amp;quot;curl&amp;quot; or &amp;quot;wget&amp;quot; will be sufficient.&lt;br /&gt;
** Most languages have some form of HTTP libraries, making them suitable client platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== REST interface ===&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
* Sample grails-based excee interface: http://boggs.bwh.harvard.edu:8080/XCEDE/&lt;br /&gt;
* Grails: http://www.grails.org&lt;br /&gt;
* XCEDE: http://www.xcede.org&lt;br /&gt;
* XNAT: http://www.xnat.org&lt;br /&gt;
* [http://slicer.spl.harvard.edu/slicerWiki/index.php/Slicer3:XCEDE_use_cases#XCEDE_REST_Interface XCEDE use cases]&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2008_Summer_Project_Week:XNATandXCEDE&amp;diff=27426</id>
		<title>2008 Summer Project Week:XNATandXCEDE</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2008_Summer_Project_Week:XNATandXCEDE&amp;diff=27426"/>
		<updated>2008-06-24T13:22:46Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|[[Image:ProjectWeek-2008.png|thumb|320px|Return to [[2008_Summer_Project_Week|Project Week Main Page]] ]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Key Investigators===&lt;br /&gt;
* Dan M.&lt;br /&gt;
* Dan B.&lt;br /&gt;
* Julien&lt;br /&gt;
* Steve&lt;br /&gt;
* Wendy&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Objectives&amp;lt;/h1&amp;gt;&lt;br /&gt;
Improve Slicer's informatics support and its integration with XNAT Tools;&lt;br /&gt;
Design XCEDE Web Services using several Slicer3 use scenarios as drivers. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Approach, Plan&amp;lt;/h1&amp;gt;&lt;br /&gt;
* Work with existing Grails-based REST interface to XCEDE&lt;br /&gt;
* Evaluate use cases for Slicer3&lt;br /&gt;
* Work on design of XCEDE web services API to support these.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Progress&amp;lt;/h1&amp;gt;&lt;br /&gt;
A straw man REST interface to XCEDE has been implemented using Grails (Groovy on Rails). Grails is a rapid application development environment patterned after Rails (Ruby on Rails). Grails, however, is completely Java-based utilizing industry standard components (Spring, Hibernate, Groovy). In addition, Grails supports many of the common AJAX frameworks and can be compiled and deployed as a .war file.&lt;br /&gt;
&lt;br /&gt;
A server has been set up on slicerl using code in the NAMICSandbox. Two interfaces are available, a human-friendly web site and a machine-friendly REST interface. The command line program curl can interact with the REST interface, and is useful for learning and debugging.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Detailed Project Goals===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
&lt;br /&gt;
* Sample grails-based excee interface: http://boggs.bwh.harvard.edu:8080/XCEDE/&lt;br /&gt;
* Grails: http://www.grails.org&lt;br /&gt;
* XCEDE: http://www.xcede.org&lt;br /&gt;
* XNAT: http://www.xnat.org&lt;br /&gt;
* [http://slicer.spl.harvard.edu/slicerWiki/index.php/Slicer3:XCEDE_use_cases#XCEDE_REST_Interface XCEDE use cases]&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2008_Summer_Project_Week&amp;diff=26592</id>
		<title>2008 Summer Project Week</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2008_Summer_Project_Week&amp;diff=26592"/>
		<updated>2008-06-09T02:12:08Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Other Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Engineering:Programming_Events|Programming/Project Events]]&lt;br /&gt;
&lt;br /&gt;
[[Image:ProjectWeek-2008.png|thumb|220px|right|Summer 2008]]&lt;br /&gt;
&lt;br /&gt;
== Logistics ==&lt;br /&gt;
&lt;br /&gt;
'''Dates:''' June 23-27, 2008&lt;br /&gt;
&lt;br /&gt;
'''Location:''' MIT. [[Meeting_Locations:MIT_Grier_A_%26B|Grier Rooms A &amp;amp; B: 34-401A &amp;amp; 34-401B]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Registration Fee:''' $260 (this will cover the cost of breakfast, lunch and coffee breaks for the week). Due by Friday, June 13th, 2008. Please make checks out to &amp;quot;Massachusetts Institute of Technology&amp;quot; and mail to: Donna Kaufman, MIT, 77 Massachusetts Ave., 38-409a, Cambridge, MA 02139&lt;br /&gt;
&lt;br /&gt;
'''Registration Method''' Please add your name to the attendee list below (create namic wiki account if you don't have one, by clicking on the &amp;quot;login/create account&amp;quot; link on the top right corner of this page), and then mail a check to Donna Kaufman at the address above.&lt;br /&gt;
&lt;br /&gt;
If you are attending for one day only, the registration fee is not required.&lt;br /&gt;
&lt;br /&gt;
'''Hotel:''' We have a group rate of $239/night (plus tax) for a room with either 1 king or 2 queen beds at the [http://www.hotelatmit.com Hotel at MIT (now called Le Meridien)]. [http://www.starwoodmeeting.com/StarGroupsWeb/booking/reservation?id=0805167317&amp;amp;key=4FD1B  Please click here to reserve.]This rate is good only through June 1.&lt;br /&gt;
&lt;br /&gt;
Here is some information about several other Boston area hotels that are convenient to NA-MIC events: [[Boston_Hotels|Boston_Hotels]]. Summer is tourist season in Boston, so please book your rooms early.&lt;br /&gt;
&lt;br /&gt;
([[Project Week Logistics Checklist|This is a checklist for the onsite planning items]])&lt;br /&gt;
&lt;br /&gt;
==Introduction to NA-MIC Project Week==&lt;br /&gt;
&lt;br /&gt;
NA-MIC Project Week is a hands on activity -- programming using the [[NA-MIC-Kit|NA-MIC Kit]], algorithm design, and clinical application -- that has become one of the major events in the [[NA-MIC-Kit|NA-MIC Kit]] calendar. This event is the seventh of the [[Engineering:Programming_Events|'''series''']]. It is held in the summer at MIT (typically the last week of June), and a shorter version is held in Salt Lake City in the winter (typically the second week of January).  &lt;br /&gt;
The main goal of these events if to move forward the deliverables of NA-MIC. NA-MIC participants and their collaborators are welcome to attend.  &lt;br /&gt;
&lt;br /&gt;
* NA-MIC Members: Participation in this event is voluntary -- if you don't think this will help you move forward in your work, there is no obligation to attend.&lt;br /&gt;
* Ideal candidates are those who want to contribute to the [[NA-MIC-Kit|NA-MIC Kit]], and those who can help make it happen.&lt;br /&gt;
* This is not an introduction to the components of the [[NA-MIC-Kit|NA-MIC Kit]].&lt;br /&gt;
* NA-MIC Core 1 (Algorithms) - bring your algorithms and code to work on in the company of Core 2 engineers and Core 3 scientists.&lt;br /&gt;
* NA-MIC Core 2 (Engineering) - bring your code for infrastructure and applications to extend the [[NA-MIC-Kit|NA-MIC Kit]] capabilities, integrate Core 1 algorithms, and refine workflows for Core 3.&lt;br /&gt;
* NA-MIC Core 3 (DBP) - bring your data to work on with the [[NA-MIC-Kit|NA-MIC Kit]] and get assistance and provide feedback to Core 1 scientists and Core 2 engineers.&lt;br /&gt;
* External Collaborators - if you are working on a project that uses the [[NA-MIC-Kit|NA-MIC kit]], and want to participate to get help from NA-MIC Engineering, please send an email to Tina Kapur (tkapur at bwh.harvard.edu).  Please note that the event is open to people outside NA-MIC, subject to availability.&lt;br /&gt;
* Everyone should '''bring a laptop'''. We will have four projectors.&lt;br /&gt;
* About half the time will be spent working on projects and the other half in project related discussions.&lt;br /&gt;
* You '''do''' need to be actively working on a NA-MIC related project in order to make this investment worthwhile for everyone.&lt;br /&gt;
&lt;br /&gt;
== Agenda==&lt;br /&gt;
* Monday &lt;br /&gt;
** noon-1pm lunch &lt;br /&gt;
**1pm: Welcome (Ron Kikinis)&lt;br /&gt;
** 1:05-3:30pm Introduce [[#Projects|Projects]] using templated wiki pages (all Project Leads) ([[NA-MIC/Projects/Theme/Template|Wiki Template]]) &lt;br /&gt;
** 3:30-5:30pm Start project work&lt;br /&gt;
* Tuesday &lt;br /&gt;
** 8:30am breakfast&lt;br /&gt;
** 9:00-9:45am: NA-MIC Software Process &lt;br /&gt;
** 10-10:30am [[Project Week 2008 Slicer 3.0 Update|Slicer 3.0 Update]] (Jim Miller, Steve Pieper)&lt;br /&gt;
** noon lunch&lt;br /&gt;
** 2:30-3:30pm: [[Project Week 2008 Special topic breakout: Non-Linear Registration]] &lt;br /&gt;
** 5:30pm adjourn for day&lt;br /&gt;
* Wednesday &lt;br /&gt;
** 8:30am breakfast&lt;br /&gt;
** 9:00-12pm [[Project Week 2008 Special topic breakout: ITK]] (Luis Ibanez)&lt;br /&gt;
** noon lunch&lt;br /&gt;
** 2:30-3:30pm: [[Project Week 2008 Special topic breakout: XNAT Database]] (Daniel Marcus)&lt;br /&gt;
** 5:30pm adjourn for day&lt;br /&gt;
* Thursday&lt;br /&gt;
** 8:30am breakfast&lt;br /&gt;
** noon lunch&lt;br /&gt;
**2:30-3:30pm [[Project Week 2008 Special topic breakout: GWE]] (Marco Ruiz)&lt;br /&gt;
** 5:30pm adjourn for day&lt;br /&gt;
* Friday &lt;br /&gt;
** 8:30am breakfast&lt;br /&gt;
** 10am-noon: Project Progress using update [[#Projects|Project Wiki pages]]&lt;br /&gt;
** noon lunch boxes and adjourn.  (Next one [[AHM_2009| in Utah the week of Jan 5, 2009]])&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
# Please make sure that you are on the http://public.kitware.com/cgi-bin/mailman/listinfo/na-mic-project-week mailing list&lt;br /&gt;
&lt;br /&gt;
# [[Engineering:TCON_2008|May 08 and May 15 TCON DBPs ONLY]] at 3pm ET to discuss NA-MIC DBP Projects ONLY. &lt;br /&gt;
# [[Engineering:TCON_2008|May 22 TCON#1]] at 3pm ET to discuss NA-MIC Engr Core Projects and Assign/Verify Teams&lt;br /&gt;
# [[Engineering:TCON_2008|May 29 TCON#2]] at 3pm ET to discuss NA-MIC ALGORITHMS Core Lead Projects.  Project leads should sign up for a slot [[Engineering:TCON_2008|here]]. Projects will be discussed in order of the signups. &lt;br /&gt;
# [[Engineering:TCON_2008|June 5 TCON#3]] at 3pm ET to discuss NA-MIC EXTERNAL Collaborations.  All NIH funded &amp;quot;collaborations with NCBC&amp;quot; leads should call. Project leads should sign up for a slot [[Engineering:TCON_2008|here]].  Projects will be discussed in order of the signups. &lt;br /&gt;
# [[Engineering:TCON_2008|June 12 TCON#4]] at 3pm ET to discuss NA-MIC EXTERNAL Collaborations.  All other collaboration leads should call. Project leads should sign up for a slot [[Engineering:TCON_2008|here]].  Projects will be discussed in order of the signups. &lt;br /&gt;
# [[Engineering:TCON_2008|June 19 TCON#5]] at 3pm ET to tie loose ends.  Anyone with un-addressed questions should call.&lt;br /&gt;
# By 3pm ET on June 12, 2008: [[NA-MIC/Projects/Theme/Template|Complete a templated wiki page for your project]]. Please do not edit the template page itself, but create a new page for your project and cut-and-paste the text from this template page.  If you have questions, please send an email to tkapur at bwh.harvard.edu.&lt;br /&gt;
# By 3pm on June 19, 2008: Create a directory for each project on the [[Engineering:SandBox|NAMIC Sandbox]] (Zack)&lt;br /&gt;
## Commit on each sandbox directory the code examples/snippets that represent our first guesses of appropriate methods. (Luis and Steve will help with this, as needed)&lt;br /&gt;
## Gather test images in any of the Data sharing resources we have (e.g. the BIRN). These ones don't have to be many. At least three different cases, so we can get an idea of the modality-specific characteristics of these images. Put the IDs of these data sets on the wiki page. (the participants must do this.)&lt;br /&gt;
## Setup nightly tests on a separate Dashboard, where we will run the methods that we are experimenting with. The test should post result images and computation time. (Zack)&lt;br /&gt;
# Please note that by the time we get to the project event, we should be trying to close off a project milestone rather than starting to work on one...&lt;br /&gt;
&lt;br /&gt;
== A History in Wiki Links ==&lt;br /&gt;
&lt;br /&gt;
A history of all the programming/project events in NA-MIC is available by following [[Engineering:Programming_Events|this link]].&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
===DBP II===&lt;br /&gt;
These are projects by the new set of DBPS:&lt;br /&gt;
#[[DBP2:Harvard|Velocardio Facial Syndrome (VCFS) as a Genetic Model for Schizophrenia]] (Harvard: Marek Kubicki, PI)&lt;br /&gt;
##EPI-DWI Distortion correction (Sylvain Bouix BWH, Tauseef Rehman GATech)&lt;br /&gt;
##[[2008_Summer_Project_Week:EddyCurrentCorrection|EPI-DWI Eddy Current distortion correction]] (Sylvain Bouix BWH, Ran Tao Utah)&lt;br /&gt;
##Lobe Parcellation of 3T MR data - need help parametrization (Sylvain Bouix BWH, Priya Srinivasan BWH, Brad Davis Kitware)&lt;br /&gt;
##Finsler method (John Melonakos GATech, Marek Kubicki BWH)&lt;br /&gt;
##Group Analysis on DTI (Casey Goodlett Utah, Marek Kubicki BWH)&lt;br /&gt;
#[[DBP2:UNC|Longitudinal MRI Study of Early Brain Development in Autism]] (UNC: Heather Hazlett, Joseph Piven, PI)&lt;br /&gt;
##Work Flow Tool for regional cortical thickness pipeline (Clement Vachet UNC)&lt;br /&gt;
##NITRC registration of cortical thickness modules (Clement Vachet UNC)&lt;br /&gt;
##DTI tools for a) DWI preparation and b) DTI atlas building (Zhexing Liu UNC) &lt;br /&gt;
#[[DBP2:MIND|Analysis of Brain Lesions in Lupus]] (MIND/UNM: Jeremy Bockholt, Charles Gasparovic PI)&lt;br /&gt;
##[[DBP2:MIND:RoadmapProject|Finish Roadmap Project]]&lt;br /&gt;
##[[DBP2:MIND:LongitudinalRegistrationProject|Longitudinal Registration]]&lt;br /&gt;
##[[DBP2:MIND:BeyondLesionsProject|Beyond Lesions]]&lt;br /&gt;
#[[DBP2:JHU|Segmentation and Registration Tools for Robotic Prostate Intervention]] (Queens/JHU: Gabor Fichtinger, PI)&lt;br /&gt;
##[[DBP2:JHU:Roadmap|Trans-Rectal Prostate Biopsy module (David Gobbi, Gabor Fichtinger, Queens/JHU)]]&lt;br /&gt;
##[[Projects:ProstateSegmentation|Prostate Segmentation and Registration (Yi Gao GATech, Gabor Fichtinger JHU)]]&lt;br /&gt;
##Hardware/software overlay for percutaneous intervention (Siddharth Vikal, Gabor Fichtinger, Queens/JHU)&lt;br /&gt;
&lt;br /&gt;
===Other Projects===&lt;br /&gt;
#[[2008_Summer_Project_Week:EddyCurrentCorrection|Eddy current and head motion correction of DWIs]] (Ran Tao, Utah, Sylvain Bouix, BWH, Xiaodong Tao, GE, Tom Fletcher, Utah)&lt;br /&gt;
#Integraton of groupwise b-spline registration into atlas building (Casey Goodlett, Serdar Balci)&lt;br /&gt;
# CVS / SVN auto synchronization&lt;br /&gt;
# 3D Widgets in Slicer&lt;br /&gt;
## Issues with existing widgets&lt;br /&gt;
## Design of new widgets&lt;br /&gt;
# Batch processing in the NAMIC Kit (Julien, Marco, Steve, Jim)&lt;br /&gt;
# Module Chaining (Marco, Jim, Steve, Dan B., Luca)&lt;br /&gt;
# Nonlinear transforms (Jim, Steve, Luis)&lt;br /&gt;
## TransformToWorld/TransformFromWorld, integration with slice viewing&lt;br /&gt;
# Slicer3, XNAT integration, and desigining XCEDE Web Services (Dan M., Steve, Julien, Dan B.)&lt;br /&gt;
## Review and enrich use cases&lt;br /&gt;
# Python in Slicer (Dan B., Michael Halle, Steve, Luca)&lt;br /&gt;
# Performance Tuning of Fiducials using the EventBroker and other tools (Nicole, Alex, Steve, Will)&lt;br /&gt;
# GUI Tweaking (Wendy, Sebastien) [http://www.na-mic.org/Bug/view.php?id=242]&lt;br /&gt;
&lt;br /&gt;
===External Collaborations===&lt;br /&gt;
#[[NA-MIC/Projects/Collaboration/UWA-Perth]] (Adam Wittek)&lt;br /&gt;
#[[NA-MIC/Projects/Collaboration/MRSI Module for Slicer]] (Bjoern Menze)&lt;br /&gt;
#NIREP: Non-rigid Image Registration Evaluation (Gary Christensen Group)&lt;br /&gt;
#Lung Atlas (Gary Christensen Group)&lt;br /&gt;
#Non-rigid image registration (Gary Christensen Group)&lt;br /&gt;
#[[NA-MIC/Projects/Collaboration/SARP phantom]] (Keith Gunderson)&lt;br /&gt;
#FMA (Protege) links to Slicer (Vish, Mike, Florin, Jim, Steve, Wendy)&lt;br /&gt;
#[[NA-MIC/Projects/External Collaboration/Measuring Alcohol and Stress Interaction]]&lt;br /&gt;
#[[NA-MIC/Projects/External Collaboration/Slicer3-vmtk Integration]] (Luca Antiga)&lt;br /&gt;
#[[NA-MIC/Projects/External Collaboration/Mesh Generation Summer 2008]] (Iowa Group)&lt;br /&gt;
&lt;br /&gt;
===Non-Medical Collaborations===&lt;br /&gt;
#[[NA-MIC/Projects/Non-Medical Collaborations/Astronomical Medicine|Astronomical Medicine]] (Harvard IIC: Douglas Alan, Michael Halle)&lt;br /&gt;
&lt;br /&gt;
==Attendee List==&lt;br /&gt;
# Ron Kikinis, BWH&lt;br /&gt;
# Carl-Fredrik Westin, BWH&lt;br /&gt;
# Gary Christensen, The University of Iowa&lt;br /&gt;
# Jeffrey Hawley, Gary Christensen's student&lt;br /&gt;
# Kate Raising, Gary Christensen's student&lt;br /&gt;
# Nathan Fritze, Gary Christensen's student&lt;br /&gt;
# Paul Song, Gary Christensen's student&lt;br /&gt;
# Cheng Zhang, Gary Christensen's student&lt;br /&gt;
# Ying Wei, Gary Christensen's student&lt;br /&gt;
# Nathan Burnette, The University of Iowa&lt;br /&gt;
# Hans Johnson, The University of Iowa&lt;br /&gt;
# Vincent Magnotta, The University of Iowa&lt;br /&gt;
# Keith Gunderson, The University of Iowa&lt;br /&gt;
# Steve Pieper, Isomics, Core 2/6&lt;br /&gt;
# Dana C. Peters, BIDMC Harvard Medical&lt;br /&gt;
# Jason Taclas, BIDMC Harvard Medical&lt;br /&gt;
# Nicole Aucoin, BWH, Core 2&lt;br /&gt;
# Will Schroeder, Kitware, Cores 2/4&lt;br /&gt;
# Sebastien Barre, Kitware, Core 2&lt;br /&gt;
# Julien Jomier, Kitware, Core 2&lt;br /&gt;
# Luis Ibanez, Kitware, Core 2&lt;br /&gt;
# Curtis Lisle, KnowledgeVis, Core 2&lt;br /&gt;
# Katie Hayes, BWH, Core 2&lt;br /&gt;
# Randy Gollub, MGH, Core 5&lt;br /&gt;
# Clement Vachet, UNC, Core 3&lt;br /&gt;
# Zhexing Liu, UNC, Core 1/3&lt;br /&gt;
# Casey Goodlett, Utah, Core 1&lt;br /&gt;
# Marcel Prastawa, Utah, Core 1&lt;br /&gt;
# Jeffrey Grethe, UCSD, Core 2&lt;br /&gt;
# Marco Ruiz, UCSD, Core 2&lt;br /&gt;
# Zhen Qian, Rutgers University&lt;br /&gt;
# Jinghao Zhou, Rutgers University&lt;br /&gt;
# Luca Antiga, Mario Negri Institute&lt;br /&gt;
# Adam Wittek, The University of Western Australia&lt;br /&gt;
# Grand Joldes, The University of Western Australia&lt;br /&gt;
# Jamie Berger, The University of Western Australia&lt;br /&gt;
# Serdar Balci, MIT, Core 1&lt;br /&gt;
# Bryce Kim, MIT, Core1&lt;br /&gt;
# Tina Kapur, BWH, Core 6&lt;br /&gt;
# Carling Cheung, Robarts Research Institute / The University of Western Ontario&lt;br /&gt;
# Danielle Pace, Robarts Research Institute / The University of Western Ontario&lt;br /&gt;
# Sean Megason, Dept of Systems Biology, Harvard Medical School&lt;br /&gt;
# Alex Gouaillard, Dept of Systems Biology, Harvard Medical School&lt;br /&gt;
# Kishore Mosaliganti, Dept of Systems Biology, Harvard Medical School&lt;br /&gt;
# Arnaud Gelas, Dept of Systems Biology, Harvard Medical School&lt;br /&gt;
# Sonia Pujol, Surgical Planning Laboratory, BWH&lt;br /&gt;
# Bjoern Menze, (then) Surgical Planning Laboratory, BWH&lt;br /&gt;
# Alex Yarmarkovich, Isomics, Core 2&lt;br /&gt;
# Sylvain Bouix, BWH, Core 3&lt;br /&gt;
# Priya Srinivasan, BWH, Core 3&lt;br /&gt;
# Chris Churas, UCSD, Core 2&lt;br /&gt;
# John Melonakos, Georgia Tech, Core 1&lt;br /&gt;
# Yi Gao, Georgia Tech, Core 1&lt;br /&gt;
# Tauseef Rehman, Georgia Tech, Core 1&lt;br /&gt;
# Clare Poynton, MIT, Core 1&lt;br /&gt;
# H. Jeremy Bockholt, MRN Lupus DBP Core 3&lt;br /&gt;
# Mark Scully, MRN Lupus DBP Core 3&lt;br /&gt;
# Gabor Fichtinger, Queen's, Core 3&lt;br /&gt;
# David Gobbi, Queen's, Core 3&lt;br /&gt;
# Purang Abolmaesumi, Queen's, Core 3&lt;br /&gt;
# Siddharth Vikal, Queen's, Core 3&lt;br /&gt;
# Daniel Blezek, Mayo&lt;br /&gt;
# Csaba Csoma, JHU, Core 3&lt;br /&gt;
# Ran Tao, University of Utah, Core 1&lt;br /&gt;
# Jim Miller, GE Research, Core 2&lt;br /&gt;
# Xiaodong Tao, GE Research, Core 2&lt;br /&gt;
# Dirk Padfield, GE Research, Core 2&lt;br /&gt;
# Viswanath Avasarala, GE Research, NAC&lt;br /&gt;
# Dan Marcus, Washington University   &lt;br /&gt;
# Tim Olsen, Washington University   &lt;br /&gt;
# Kevin Archie, Washington University   &lt;br /&gt;
# Misha Milchenko, Washington University&lt;br /&gt;
# Wendy Plesniak, BWH, Core 2&lt;br /&gt;
# Demian Wasserman, INRIA, LMI-collaborator&lt;br /&gt;
# Xenophon Papademetris, Yale, Collaborator&lt;br /&gt;
# Xenophon P's postdoc, Yale, Collaborator&lt;br /&gt;
# Xenophon P's student, Yale, Collaborator&lt;br /&gt;
# Vidya Rajagopalan, Virginia Tech, Student of Chris Wyatt, External Collaborator&lt;br /&gt;
# Greg Sharp, MGH, External Collaborator&lt;br /&gt;
# Marta Peroni, MGH, External Collaborator&lt;br /&gt;
# Toru Higaki, Hiroshima Univ., Japan, External collaborator (Hata)&lt;br /&gt;
# Jacek Kukluk, BWH,&lt;br /&gt;
# Nobuhiko Hata, BWH&lt;br /&gt;
# Junichi Tokuda, BWH&lt;br /&gt;
# Haying Liu, BWH&lt;br /&gt;
# Ragini Verma, UPenn (June 24)&lt;br /&gt;
# Luke Bloy, UPenn (Ragini Verma's student) (June 24)&lt;br /&gt;
# Yang Li, UPenn (Ragini's postdoc) (June 24)&lt;br /&gt;
# Jack Blevins, Acoustic Med, Collaborator&lt;br /&gt;
# Nikos Chrisochoides, College of William and Mary, External collaborator (June 23)&lt;br /&gt;
# Andriy Fedorov, College of William and Mary, External collaborator&lt;br /&gt;
# Carlos Sánchez Mendoza, BWH &lt;br /&gt;
# Kilian Pohl, BWH&lt;br /&gt;
# Pratik Patel, Brainlab, Collaborator&lt;br /&gt;
# Marianna Jakab, BWH&lt;br /&gt;
# Nathan Hageman, UCLA&lt;br /&gt;
# Douglas Alan, Harvard IIC, External Collaborator&lt;br /&gt;
# Tammy Riklin Raviv, MIT&lt;br /&gt;
# Peter Kazanzides, JHU, Collaborator&lt;br /&gt;
# Scott Hoge, BWH, (Wed, Jun 25)&lt;br /&gt;
#*WE HAVE REACHED CAPACITY. REGISTRATION IS CLOSED. [[User:Tkapur|Tkapur]] 19:42, 6 June 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
==Pictures==&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2008_Summer_Project_Week&amp;diff=25377</id>
		<title>2008 Summer Project Week</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2008_Summer_Project_Week&amp;diff=25377"/>
		<updated>2008-05-21T02:28:33Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Attendee List */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Engineering:Programming_Events|Programming/Project Events]]&lt;br /&gt;
&lt;br /&gt;
[[Image:ProjectWeek-2008.png|thumb|220px|right|Summer 2008]]&lt;br /&gt;
&lt;br /&gt;
== Logistics ==&lt;br /&gt;
&lt;br /&gt;
'''Dates:''' June 23-27, 2008&lt;br /&gt;
&lt;br /&gt;
'''Location:''' MIT. [[Meeting_Locations:MIT_Grier_A_%26B|Grier Rooms A &amp;amp; B: 34-401A &amp;amp; 34-401B]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Registration Fee:''' $260 (this will cover the cost of breakfast, lunch and coffee breaks for the week). Due by Friday, June 13th, 2008. Please make checks out to &amp;quot;Massachusetts Institute of Technology&amp;quot; and mail to: Donna Kaufman, MIT, 77 Massachusetts Ave., 38-409a, Cambridge, MA 02139&lt;br /&gt;
&lt;br /&gt;
If you are attending for one day only, the registration fee is not required.&lt;br /&gt;
&lt;br /&gt;
'''Hotel:''' We have a group rate of $239/night (plus tax) for a room with either 1 king or 2 queen beds at the [http://www.hotelatmit.com Hotel at MIT (now called Le Meridien)]. [http://www.starwoodmeeting.com/StarGroupsWeb/booking/reservation?id=0805167317&amp;amp;key=4FD1B  Please click here to reserve.]This rate is good only through June 1.&lt;br /&gt;
&lt;br /&gt;
Here is some information about several other Boston area hotels that are convenient to NA-MIC events: [[Boston_Hotels|Boston_Hotels]]. Summer is tourist season in Boston, so please book your rooms early.&lt;br /&gt;
&lt;br /&gt;
([[Project Week Logistics Checklist|This is a checklist for the onsite planning items]])&lt;br /&gt;
&lt;br /&gt;
==Introduction to NA-MIC Project Week==&lt;br /&gt;
&lt;br /&gt;
NA-MIC Project Week is a hands on activity -- programming using the [[NA-MIC-Kit|NA-MIC Kit]], algorithm design, and clinical application -- that has become one of the major events in the [[NA-MIC-Kit|NA-MIC Kit]] calendar. This event is the seventh of the [[Engineering:Programming_Events|'''series''']]. It is held in the summer at MIT (typically the last week of June), and a shorter version is held in Salt Lake City in the winter (typically the second week of January).  &lt;br /&gt;
The main goal of these events if to move forward the deliverables of NA-MIC. NA-MIC participants and their collaborators are welcome to attend.  &lt;br /&gt;
&lt;br /&gt;
* NA-MIC Members: Participation in this event is voluntary -- if you don't think this will help you move forward in your work, there is no obligation to attend.&lt;br /&gt;
* Ideal candidates are those who want to contribute to the [[NA-MIC-Kit|NA-MIC Kit]], and those who can help make it happen.&lt;br /&gt;
* This is not an introduction to the components of the [[NA-MIC-Kit|NA-MIC Kit]].&lt;br /&gt;
* NA-MIC Core 1 (Algorithms) - bring your algorithms and code to work on in the company of Core 2 engineers and Core 3 scientists.&lt;br /&gt;
* NA-MIC Core 2 (Engineering) - bring your code for infrastructure and applications to extend the [[NA-MIC-Kit|NA-MIC Kit]] capabilities, integrate Core 1 algorithms, and refine workflows for Core 3.&lt;br /&gt;
* NA-MIC Core 3 (DBP) - bring your data to work on with the [[NA-MIC-Kit|NA-MIC Kit]] and get assistance and provide feedback to Core 1 scientists and Core 2 engineers.&lt;br /&gt;
* External Collaborators - if you are working on a project that uses the [[NA-MIC-Kit|NA-MIC kit]], and want to participate to get help from NA-MIC Engineering, please send an email to Tina Kapur (tkapur at bwh.harvard.edu).  Please note that the event is open to people outside NA-MIC, subject to availability.&lt;br /&gt;
* Everyone should '''bring a laptop'''. We will have four projectors.&lt;br /&gt;
* About half the time will be spent working on projects and the other half in project related discussions.&lt;br /&gt;
* You '''do''' need to be actively working on a NA-MIC related project in order to make this investment worthwhile for everyone.&lt;br /&gt;
&lt;br /&gt;
== Agenda==&lt;br /&gt;
* Monday &lt;br /&gt;
** noon-1pm lunch &lt;br /&gt;
**1pm: Welcome (Ron Kikinis)&lt;br /&gt;
** 1:05-3:30pm Introduce [[#Projects|Projects]] using templated wiki pages (all Project Leads) ([[NA-MIC/Projects/Theme/Template|Wiki Template]]) &lt;br /&gt;
** 3:30-5:30pm Start project work&lt;br /&gt;
* Tuesday &lt;br /&gt;
** 8:30am breakfast&lt;br /&gt;
** 9:00-9:45am: NA-MIC Software Process &lt;br /&gt;
** 10-10:30am [[Project Week 2008 Slicer 3.0 Update|Slicer 3.0 Update]] (Jim Miller, Steve Pieper)&lt;br /&gt;
** noon lunch&lt;br /&gt;
** 2:30-3:30pm: [[Project Week 2008 Special topic breakout: Non-Linear Registration]] &lt;br /&gt;
** 5:30pm adjourn for day&lt;br /&gt;
* Wednesday &lt;br /&gt;
** 8:30am breakfast&lt;br /&gt;
** 9:00-12pm [[Project Week 2008 Special topic breakout: ITK]] (Luis Ibanez)&lt;br /&gt;
** noon lunch&lt;br /&gt;
** 2:30-3:30pm: [[Project Week 2008 Special topic breakout: XNAT Database]] (Daniel Marcus)&lt;br /&gt;
** 5:30pm adjourn for day&lt;br /&gt;
* Thursday&lt;br /&gt;
** 8:30am breakfast&lt;br /&gt;
** noon lunch&lt;br /&gt;
**2:30-3:30pm [[Project Week 2008 Special topic breakout: GWE]] (Marco Ruiz)&lt;br /&gt;
** 5:30pm adjourn for day&lt;br /&gt;
* Friday &lt;br /&gt;
** 8:30am breakfast&lt;br /&gt;
** 10am-noon: Project Progress using update [[#Projects|Project Wiki pages]]&lt;br /&gt;
** noon lunch boxes and adjourn.  (Next one [[AHM_2009| in Utah the week of Jan 5, 2009]])&lt;br /&gt;
&lt;br /&gt;
== Preparation ==&lt;br /&gt;
&lt;br /&gt;
# Please make sure that you are on the http://public.kitware.com/cgi-bin/mailman/listinfo/na-mic-project-week mailing list&lt;br /&gt;
&lt;br /&gt;
# [[Engineering:TCON_2008|May 08 and May 15 TCON DBPs ONLY]] at 3pm ET to discuss NA-MIC DBP Projects ONLY. &lt;br /&gt;
# [[Engineering:TCON_2008|May 22 TCON#1]] at 3pm ET to discuss NA-MIC Engr Core Projects and Assign/Verify Teams&lt;br /&gt;
# [[Engineering:TCON_2008|May 29 TCON#2]] at 3pm ET to discuss NA-MIC ALGORITHMS Core Lead Projects.  Project leads should sign up for a slot [[Engineering:TCON_2008|here]]. Projects will be discussed in order of the signups. &lt;br /&gt;
# [[Engineering:TCON_2008|June 5 TCON#3]] at 3pm ET to discuss NA-MIC EXTERNAL Collaborations.  All NIH funded &amp;quot;collaborations with NCBC&amp;quot; leads should call. Project leads should sign up for a slot [[Engineering:TCON_2008|here]].  Projects will be discussed in order of the signups. &lt;br /&gt;
# [[Engineering:TCON_2008|June 12 TCON#4]] at 3pm ET to discuss NA-MIC EXTERNAL Collaborations.  All other collaboration leads should call. Project leads should sign up for a slot [[Engineering:TCON_2008|here]].  Projects will be discussed in order of the signups. &lt;br /&gt;
# [[Engineering:TCON_2008|June 19 TCON#5]] at 3pm ET to tie loose ends.  Anyone with un-addressed questions should call.&lt;br /&gt;
# By 3pm ET on June 12, 2008: [[NA-MIC/Projects/Theme/Template|Complete a templated wiki page for your project]]. Please do not edit the template page itself, but create a new page for your project and cut-and-paste the text from this template page.  If you have questions, please send an email to tkapur at bwh.harvard.edu.&lt;br /&gt;
# By 3pm on June 19, 2008: Create a directory for each project on the [[Engineering:SandBox|NAMIC Sandbox]] (Zack)&lt;br /&gt;
## Commit on each sandbox directory the code examples/snippets that represent our first guesses of appropriate methods. (Luis and Steve will help with this, as needed)&lt;br /&gt;
## Gather test images in any of the Data sharing resources we have (e.g. the BIRN). These ones don't have to be many. At least three different cases, so we can get an idea of the modality-specific characteristics of these images. Put the IDs of these data sets on the wiki page. (the participants must do this.)&lt;br /&gt;
## Setup nightly tests on a separate Dashboard, where we will run the methods that we are experimenting with. The test should post result images and computation time. (Zack)&lt;br /&gt;
# Please note that by the time we get to the project event, we should be trying to close off a project milestone rather than starting to work on one...&lt;br /&gt;
&lt;br /&gt;
== A History in Wiki Links ==&lt;br /&gt;
&lt;br /&gt;
A history of all the programming/project events in NA-MIC is available by following [[Engineering:Programming_Events|this link]].&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
===DBP II===&lt;br /&gt;
These are projects by the new set of DBPS:&lt;br /&gt;
#[[DBP2:Harvard|Velocardio Facial Syndrome (VCFS) as a Genetic Model for Schizophrenia]] (Harvard: Marek Kubicki, PI)&lt;br /&gt;
##Add Projects for this DBP here...&lt;br /&gt;
#[[DBP2:UNC|Longitudinal MRI Study of Early Brain Development in Autism]] (UNC: Heather Hazlett, Joseph Piven, PI)&lt;br /&gt;
##Add Projects for this DBP here...&lt;br /&gt;
#[[DBP2:MIND|Analysis of Brain Lesions in Lupus]] (MIND/UNM: Jeremy Bockholt, Charles Gasparovic PI)&lt;br /&gt;
##Add Projects for this DBP here...&lt;br /&gt;
#[[DBP2:JHU|Segmentation and Registration Tools for Robotic Prostate Intervention]] (Queens/JHU: Gabor Fichtinger, PI)&lt;br /&gt;
##Add Projects for this DBP here...&lt;br /&gt;
&lt;br /&gt;
===Structural Analysis===&lt;br /&gt;
&lt;br /&gt;
===Diffusion Image Analysis===&lt;br /&gt;
&lt;br /&gt;
===Calibration/Validation===&lt;br /&gt;
&lt;br /&gt;
===NA-MIC Kit - Slicer 3===&lt;br /&gt;
&lt;br /&gt;
===External Collaborations===&lt;br /&gt;
#[[NA-MIC/Projects/Collaboration/UWA-Perth]] (Adam Wittek)&lt;br /&gt;
#[[NA-MIC/Projects/Collaboration/MRSI Module for Slicer]] (Bjoern Menze)&lt;br /&gt;
&lt;br /&gt;
===Non-Medical Collaborations===&lt;br /&gt;
&lt;br /&gt;
==Attendee List==&lt;br /&gt;
# Ron Kikinis, BWH&lt;br /&gt;
# Gary Christensen, The University of Iowa&lt;br /&gt;
# Jeffrey Hawley, Gary Christensen's student&lt;br /&gt;
# Kate Raising, Gary Christensen's student&lt;br /&gt;
# Nathan Fritze, Gary Christensen's student&lt;br /&gt;
# Paul Song, Gary Christensen's student&lt;br /&gt;
# Cheng Zhang, Gary Christensen's student&lt;br /&gt;
# Ying Wei, Gary Christensen's student&lt;br /&gt;
# Nathan Burnette, The University of Iowa&lt;br /&gt;
# Steve Pieper, Isomics, Core 2/6&lt;br /&gt;
# Dana C. Peters, BIDMC Harvard Medical&lt;br /&gt;
# Jason Taclas, BIDMC Harvard Medical&lt;br /&gt;
# Nicole Aucoin, BWH, Core 2&lt;br /&gt;
# Will Schroeder, Kitware, Cores 2/4&lt;br /&gt;
# Sebastien Barre, Kitware, Core 2&lt;br /&gt;
# Julien Jomier, Kitware, Core 2&lt;br /&gt;
# Luis Ibanez, Kitware, Core 2&lt;br /&gt;
# Curtis Lisle, KnowledgeVis, Core 2&lt;br /&gt;
# Katie Hayes, BWH, Core 2&lt;br /&gt;
# Randy Gollub, MGH, Core 5&lt;br /&gt;
# Clement Vachet, UNC, Core 3&lt;br /&gt;
# Casey Goodlett, Utah, Core 1&lt;br /&gt;
# Jeffrey Grethe, UCSD, Core 2&lt;br /&gt;
# Marco Ruiz, UCSD, Core 2&lt;br /&gt;
# Zhen Qian, Rutgers University&lt;br /&gt;
# Jinghao Zhou, Rutgers University&lt;br /&gt;
# Luca Antiga, Mario Negri Institute&lt;br /&gt;
# Adam Wittek, The University of Western Australia&lt;br /&gt;
# Grand Joldes, The University of Western Australia&lt;br /&gt;
# Jamie Berger, The University of Western Australia&lt;br /&gt;
# Serdar Balci, MIT, Core 1&lt;br /&gt;
# Bryce Kim, MIT, Core1&lt;br /&gt;
# Vincent Magnotta, The University of Iowa&lt;br /&gt;
# Tina Kapur, BWH, Core 6&lt;br /&gt;
# Carling Cheung, Robarts Research Institute / The University of Western Ontario&lt;br /&gt;
# Danielle Pace, Robarts Research Institute / The University of Western Ontario&lt;br /&gt;
# Sean Megason, Dept of Systems Biology, Harvard Medical School&lt;br /&gt;
# Alex Gouaillard, Dept of Systems Biology, Harvard Medical School&lt;br /&gt;
# Kishore Mosaliganti, Dept of Systems Biology, Harvard Medical School&lt;br /&gt;
# Arnaud Gelas, Dept of Systems Biology, Harvard Medical School&lt;br /&gt;
# Sonia Pujol, Surgical Planning Laboratory, BWH&lt;br /&gt;
# Bjoern Menze, (then) Surgical Planning Laboratory, BWH&lt;br /&gt;
# Alex Yarmarkovich, Isomics, Core 2&lt;br /&gt;
# Sylvain Bouix, BWH, Core 3&lt;br /&gt;
# Chris Churas, UCSD, Core 2&lt;br /&gt;
# John Melonakos, Georgia Tech, Core 1&lt;br /&gt;
# Yi Gao, Georgia Tech, Core 1&lt;br /&gt;
# Tauseef Rehman, Georgia Tech, Core 1&lt;br /&gt;
# Clare Poynton, MIT, Core 1&lt;br /&gt;
# H. Jeremy Bockholt, MRN Lupus DBP Core 3&lt;br /&gt;
# Mark Scully, MRN Lupus DBP Core 3&lt;br /&gt;
# Gabor Fichtinger, Queen's, Core 2&lt;br /&gt;
# David Gobbi, Queen's, Core 2&lt;br /&gt;
# Purang Abolmaesumi, Queen's, Core 2&lt;br /&gt;
# Siddharth Vikal, Queen's, Core 2&lt;br /&gt;
# Daniel Blezek, Mayo&lt;br /&gt;
&lt;br /&gt;
==Pictures==&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=22749</id>
		<title>Slicer3:TimeSeries and Multi-Volume Data</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=22749"/>
		<updated>2008-03-08T03:43:27Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Data format testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[[Slicer3:Developers#Slicer_3_Projects | Back to Slicer3 Projects List ]]'''&lt;br /&gt;
&lt;br /&gt;
== Slicer3 support for TimeSeries and Multi-Volume Data==&lt;br /&gt;
&lt;br /&gt;
=== Feature ideas ===&lt;br /&gt;
&lt;br /&gt;
Just a collection of ideas related to time series data in no particular order.&lt;br /&gt;
&lt;br /&gt;
* Would like to dynamically load data in a background thread to minimize memory requirements&lt;br /&gt;
** Need to understand how this will impact performance, i.e. can we page through the slices in real time?&lt;br /&gt;
* Flexible processing&lt;br /&gt;
** Volume by volume&lt;br /&gt;
** Slice by Slice (would require a &amp;quot;block of bytes&amp;quot; format like NRRD, Analyze, or NIFTI)&lt;br /&gt;
&lt;br /&gt;
=== Potentially useful codes ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkMultiGroupDataSet.html  VTK 5.1 multi-group data set]&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkTemporalDataSet.html  VTK 5.1 temporal data set]&lt;br /&gt;
* [http://www.insight-journal.org/InsightJournalManager/view_reviews.php?back=admin_publications_toolkits.php&amp;amp;pubid=164  VTK code from Inria ]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Data Model ===&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
Need to evaluate these use cases to address the most useful/common scenarios to design the system.  Each use case must be catagorized from 4 (Required) down to 1 (Nice to have).  In all cases, we desire to handle datasets much larger than memory, yet maintain full interactivity for the user.  Flexibility of processing must be a priority.&lt;br /&gt;
&lt;br /&gt;
# User pages through same slice from all volumes in acquisition orientation&lt;br /&gt;
# User pages through reformatted slice from all volumes&lt;br /&gt;
# Process one pixel at a time through all volumes&lt;br /&gt;
## Process in an &amp;quot;accumulator&amp;quot; mode&lt;br /&gt;
## Process by analyzing whole time course of voxel (could possibly be done slice at a time?)&lt;br /&gt;
# Process one slice at a time through all volumes&lt;br /&gt;
# Process one volume at a time through all volumes (same as previous?)&lt;br /&gt;
# Render dynamic time series, e.g. cardiac data&lt;br /&gt;
&lt;br /&gt;
=== Data format testing ===&lt;br /&gt;
&lt;br /&gt;
Three different data formats were tested.&lt;br /&gt;
&lt;br /&gt;
# SQLite, an embedded SQL database&lt;br /&gt;
# HDF5, a standard scientific file format&lt;br /&gt;
# Raw, a simple raw reading and writing of 8K chunks&lt;br /&gt;
&lt;br /&gt;
Results&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#abcdef&amp;quot;&lt;br /&gt;
! Software !! Write performance (256x256x10x16) !! Read performance (256x256 slice, averaged over 1000 slices)&lt;br /&gt;
|-&lt;br /&gt;
| SQLite &lt;br /&gt;
| 1.3sec &lt;br /&gt;
| 0.017sec&lt;br /&gt;
|-&lt;br /&gt;
| HDF5&lt;br /&gt;
| 2.6sec&lt;br /&gt;
|  0.017sec&lt;br /&gt;
|-&lt;br /&gt;
|Raw&lt;br /&gt;
| 0.6sec&lt;br /&gt;
| 0.004sec&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Reading and writing directly results in approximately 4x speedup over SQLite and HDF5.  This will be the approach for the class design.&lt;br /&gt;
&lt;br /&gt;
=== Mock-ups and ideas ===&lt;br /&gt;
&lt;br /&gt;
[[image:Ron-TimeSeriesMockup.png|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ron's mock-up for time series layout using the light box capability in Slicer 3:&lt;br /&gt;
&lt;br /&gt;
* Layout: green and yellow are a single box. Red shows a single zoomed in image, selected by clicking&lt;br /&gt;
* alignment through registration or adjusting TS1 versus TS2 (or 3) by dragging one of them left or right&lt;br /&gt;
&lt;br /&gt;
=== Existing GUI Resources ===&lt;br /&gt;
&lt;br /&gt;
Below are interface elements for which GUI resources already exist. The Basic Controller and Cine Controller are not attached to any logic or data structures. The Interval Browser is part of Slicer2.6.&lt;br /&gt;
&lt;br /&gt;
[[image:BasicController.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:CineDisplay5.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:Ibrowser.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hierarchical Management of Large Data Sets ==&lt;br /&gt;
&lt;br /&gt;
From an earlier discussion:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Here are some notes for our discussion about a project to address the need to browse through large volumetric datasets interactively.  The particular issue that I think needs to be addressed is matching the data passing through the display pipeline to the actual resolution of the display windows or texture maps.''&lt;br /&gt;
&lt;br /&gt;
''For example, if you have a 8k x 8k x 8k volume data set, and you want to view it in a 1k by 1k window with arbitrary slice planes, the current classes in VTK and ITK would require loading the full 512 Gigapixels of data into memory and then pulling out the 1k by 1k slice plane, which on almost any computer would require a lot of virtual memory paging, if its possible at all.  Assuming your reslice plane is different then the way the volume is laid out in memory, there will be a high level of cache misses and memory thrashing.  A similar issue occurs when zooming in to a small section within a large volume -- in order to extract the volume of interest, the full volume must be read into memory.''&lt;br /&gt;
&lt;br /&gt;
''A better way to approach this problem is to preprocess the volume data so that a hierarchy of different resolutions are available (full size, 1/2 size, 1/4 size, etc) and the volume data can be decomposed into blocks so that only the necessary parts are read in order to display the currently selected view.  There is a large literature on these types of techniques.  Google Maps/Earth are good example of this technique applied to a large database with good interactive feel.''&lt;br /&gt;
&lt;br /&gt;
''I'd like to see a project to implement this approach inside VTK (and, possibly, ITK).  There have been a few attempts in the past (DataCutter at OSU, is similar, I believe, but the code doesn't appear to be available and so far the people I've been asking at BWH, GE, Kitware don't know the details -- this is something I can research more).''&lt;br /&gt;
&lt;br /&gt;
''What I have in mind is four related tools: (1) a preprocessor to build a hierarchical volume datastructure/database, (2) a server that will take requests for a given extent at a given resolution and provide back the volume data, (3) a demo web site that will allow interactive browsing through large data sets, and (4) an implementation in slicer to load and display these multi-resolution volumes for interactive visualization.''&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22748</id>
		<title>Slicer3:Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22748"/>
		<updated>2008-03-08T03:08:27Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* SBuild */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= All-in-one Script to checkout and build Slicer3 =&lt;br /&gt;
&lt;br /&gt;
To compile and build Slicer3, you need a set of development packages installed on your machine: &lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_linux pre-requisite material for Linux ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_windows pre-requisite material for Windows ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_Apple_Mac_OS_X pre-requisite material for Mac ]&lt;br /&gt;
&lt;br /&gt;
There's a script called getbuildtest.tcl that makes the support libraries (VTK, ITK, teem, etc) and also builds slicer and does a dashboard submission.  (Click [[Slicer3:getbuildtest | here for background on getbuildtest]] and the experimental getbuildtest2 version).&lt;br /&gt;
&lt;br /&gt;
Just do the following two commands (see [[Slicer3:Build_Instructions#getbuildtest_on_windows|for windows users]] below):&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
   svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 &lt;br /&gt;
   ./Slicer3/Scripts/getbuildtest.tcl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Note: that a Slicer3-lib and Slicer3-build directory will be created for you. This is meant to be used to set up new machines and to run nightly testing of the full builds.&lt;br /&gt;
&lt;br /&gt;
To run (all platforms):&lt;br /&gt;
&lt;br /&gt;
 ./Slicer3-build/Slicer3&lt;br /&gt;
&lt;br /&gt;
Note: the whole build environment takes about 2G of disk space.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
Note also that getbuildtest will do an Experimental submission to the [http://www.na-mic.org/Slicer3/Dashboard/ Slicer3 dashboard]. If you want to use getbuildtest without submitting to the dashboard, you can set the test type to nothing with&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl -t &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Other options for the -t (--test-type) option are Nightly or Continuous (or any of the [http://www.cmake.org/Wiki/CMake_Testing_With_CTest CTest] options).&lt;br /&gt;
&lt;br /&gt;
== What does getbuildtest.tcl do? ==&lt;br /&gt;
&lt;br /&gt;
This script just automates the steps needed to build slicer.  What you end up with is a set of source and build directories that can either be further manipulated with getbuildtest or can be worked with normally.  That is, on windows you will have solution files that you can load in visual studio for debugging and further development.&lt;br /&gt;
&lt;br /&gt;
Specifically, getbuildtest does the following steps:&lt;br /&gt;
&lt;br /&gt;
* Refreshes Slicer3 svn&lt;br /&gt;
* Runs Scripts/genlib.tcl which does the following for each of the support libraries&lt;br /&gt;
** does a cvs/svn checkout/update&lt;br /&gt;
** runs cmake with the correct settings for use with Slicer3&lt;br /&gt;
** runs make (or developer studio) to build the libraries&lt;br /&gt;
* Runs cmake on Slicer3&lt;br /&gt;
* Builds Slicer3&lt;br /&gt;
* Runs ctest on Slicer3&lt;br /&gt;
* (optionally) Runs CPack on Slicer3&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
  usage: getbuildtest [options] [target]&lt;br /&gt;
    [target] is determined automatically if not specified&lt;br /&gt;
    [options] is one of the following:&lt;br /&gt;
     --help : prints this message and exits&lt;br /&gt;
     --clean : delete lib and build directories first&lt;br /&gt;
     -t --test-type : CTest test target&lt;br /&gt;
     --release : compile with optimization flags&lt;br /&gt;
     --update : does a cvs/svn update on each lib&lt;br /&gt;
     --pack : builds a distribution package (cpack)&lt;br /&gt;
&lt;br /&gt;
== Errors from getbuildtest ==&lt;br /&gt;
&lt;br /&gt;
You will need to have your firewall configured to allow access to na-mic.org for cvs access through port 2401. Also you need 8081 for submitting to the dashboard.&lt;br /&gt;
&lt;br /&gt;
Other errors might mean you don't have all the build tools (see next section).&lt;br /&gt;
&lt;br /&gt;
If you want to generate a log of the build process, you can use a command like the following:&lt;br /&gt;
&lt;br /&gt;
 # for csh/tcsh:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl |&amp;amp; tee build.log&lt;br /&gt;
or&lt;br /&gt;
 # for sh/bash:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl 2&amp;gt;&amp;amp;1 | tee build.log&lt;br /&gt;
&lt;br /&gt;
== Updating Your getbuildtest Build ==&lt;br /&gt;
&lt;br /&gt;
There are a few options:&lt;br /&gt;
&lt;br /&gt;
* you can re-run getbuildtest and it will update slicer3 and rebuild (just slicer3)&lt;br /&gt;
* you can add the --update option and all the libs will get a cvs/svn update and will rebuild if needed (good for tracking the development head of VTK/ITK/KWWidgets etc).&lt;br /&gt;
* you can just 'svn update' in the Slicer3 directory and then do 'make' in the Slicer3-build to get just the latest Slicer3 code.&lt;br /&gt;
&lt;br /&gt;
The following command for unix machines will update, build, and launch the latest Slicer3:&lt;br /&gt;
&lt;br /&gt;
 svn update &amp;amp;&amp;amp; (cd ../Slicer3-build; make &amp;amp;&amp;amp; ./bin/Slicer3)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on linux ==&lt;br /&gt;
&lt;br /&gt;
To compile slicer and do development, be sure you have a complete set of development packages installed on your machine.  The exact packages vary by distribution, but include:&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-c++&lt;br /&gt;
* libX11 &lt;br /&gt;
* libX11-devel (libX11-dev  on Ubuntu 7.04)&lt;br /&gt;
* libXt-devel (libXt-dev on Ubuntu)&lt;br /&gt;
* opengl/mesa (libgl1-mesa-dev on Ubuntu)&lt;br /&gt;
&lt;br /&gt;
Ubuntu one line install:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install subversion cvs tcl8.4 gcc g++ libX11-dev libXt-dev libxext-dev libgl1-mesa-dev libncurses5-dev tcsh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, be sure you have OpenGL and the GLX extension to X working.  To check the installation, it is usually enough to confirm that the command &amp;lt;pre&amp;gt;glxgears&amp;lt;/pre&amp;gt; runs with no errors.&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on windows ==&lt;br /&gt;
&lt;br /&gt;
The script should work fine on a properly configured windows environment. Current requirements are:&lt;br /&gt;
&lt;br /&gt;
* Developer Studio 8 Visual C++ Express which is free from Microsoft - be sure to install the Platform SDK and follow the ridiculous manual steps to set up the paths [[Slicer3:Build_Instructions#Information_on_Free_Microsoft_C.2B.2B_Compiler_on_Windows|see below]].&lt;br /&gt;
* Developer Studio 9 Visual C++ Express [[Slicer:Build_Instructions:MSVS9]]&lt;br /&gt;
** Other releases of visual studio also work (7 and 7.1)&lt;br /&gt;
** If they are installed in the default locations in &amp;quot;c:/Program Files&amp;quot; they will be detected by the build script automatically (you need to edit slicer_variables.tcl to point to the installation).&lt;br /&gt;
* [http://www.cygwin.com Cygwin] with the following packages&lt;br /&gt;
** tcltk&lt;br /&gt;
** svn&lt;br /&gt;
** cvs&lt;br /&gt;
** unzip&lt;br /&gt;
** curl&lt;br /&gt;
* With Developers Studio and cygwin installed, you only need to do the svn checkout and getbuildtest script to get a fully working Slicer3 plus all the tools you need to develop new code.&lt;br /&gt;
&lt;br /&gt;
Note: CMake and VTK will not work on a FAT formatted disk (use NTFS).&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on Apple Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
For Mac OS 10.4.10 install the following from the OS disks (not installed by default on new machines):&lt;br /&gt;
* Xcode Tools (OS Disk 1, default window)&lt;br /&gt;
* X11: also on OS Disk 1, but you need to scroll down and find the Optional Installs installer and select X11 under Applications. See [http://porting.openoffice.org/mac/faq/installing/X11.html step-by-step instructions].&lt;br /&gt;
* X11SDK - from OS Disk 1, Xcode Tools/Packages/X11SDK.pkg&lt;br /&gt;
* Subversion.  Installation [http://downloads.open.collab.net/binaries.html options here].  Get the latest svn version for compatibility with the server and be sure your client includes SSL (so it can access https repositories).&lt;br /&gt;
&lt;br /&gt;
Remember to run getbuildtest from an xterm so the tests can access the X server.&lt;br /&gt;
&lt;br /&gt;
== configuration options ==&lt;br /&gt;
&lt;br /&gt;
The file Slicer3/slicer_variables.tcl includes configuration options for which support libraries to use.  You may want to change thes for testing or to get access to new functionality.  &lt;br /&gt;
&lt;br /&gt;
 set ::SLICER_TAG &amp;quot;http://www.na-mic.org/svn/Slicer3/trunk&amp;quot;&lt;br /&gt;
 set ::CMAKE_TAG &amp;quot;CMake-2-4-2&amp;quot;&lt;br /&gt;
 set ::TEEM_TAG &amp;quot;Teem-1-9-0-patches&amp;quot;&lt;br /&gt;
 set ::KWWidgets_TAG &amp;quot;HEAD&amp;quot;&lt;br /&gt;
 set ::VTK_TAG &amp;quot;VTK-5-0&amp;quot;&lt;br /&gt;
 set ::ITK_TAG ITK-3-0&lt;br /&gt;
 set ::TCL_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::TK_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::ITCL_TAG &amp;quot;itcl-3-2-1&amp;quot;&lt;br /&gt;
 set ::IWIDGETS_TAG &amp;quot;iwidgets-4-0-1&amp;quot;&lt;br /&gt;
 set ::BLT_TAG &amp;quot;blt24z&amp;quot;&lt;br /&gt;
 set ::SANDBOX_TAG &amp;quot;http://svn.na-mic.org/svn/NAMICSandBox/branches/Slicer-2-6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For example, you may want a build against the ITK cvs head.  Change the flag value and then run &lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --update &lt;br /&gt;
&lt;br /&gt;
which will get the version from cvs, build it, and rebuild slicer3.  Depending on how radically different the versions you build are, you may need to use --clean.&lt;br /&gt;
&lt;br /&gt;
Another useful option is to change your build type to include support debugging.&lt;br /&gt;
&lt;br /&gt;
 set ::VTK_BUILD_TYPE &amp;quot;RelWithDebInfo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
options are Debug, Release, or RelWithDebInfo.  RelWithDebInfo is a compromise between speed and debuggability.  If you are tracking down a tough C++ bug you will get better information in Debug mode.  After changing this flag, you should run&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --clean&lt;br /&gt;
&lt;br /&gt;
to create a completely new build.&lt;br /&gt;
&lt;br /&gt;
= Manual checkout/build of Slicer3 and support libraries: =&lt;br /&gt;
&lt;br /&gt;
== Prerequisite software ==&lt;br /&gt;
&lt;br /&gt;
You need to get and build the following packages if you aren't using the getbuildtest script:&lt;br /&gt;
&lt;br /&gt;
# [http://www.cmake.org CMake (2.4.1 or later)]&lt;br /&gt;
# [http://www.tcl.tk Tcl/Tk (8.4 or later)]&lt;br /&gt;
# [http://sourceforge.net/projects/incrtcl/ incrTcl (3.2.1)]&lt;br /&gt;
# [http://www.vtk.org VTK 5.0]&lt;br /&gt;
# [http://www.itk.org ITK 3.4]&lt;br /&gt;
# [http://www.kwwidgets.org KWWidgets Slicer-3-0 tag]&lt;br /&gt;
# [http://teem.sf.net Teem (1.9.0)]&lt;br /&gt;
&lt;br /&gt;
== Build Steps ==&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
 $ svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.vtk.org:/cvsroot/VTK co VTK -r VTK-5-0&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.itk.org:/cvsroot/Insight co Insight -r ITK-3-4&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.kwwidgets.org:/cvsroot/KWWidgets co KWWidgets -r Slicer-3-0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure and build ITK ===&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
=== Configure and build VTK ===&lt;br /&gt;
&lt;br /&gt;
* All systems:&lt;br /&gt;
** BUILD_SHARED_LIBS ON&lt;br /&gt;
** CMAKE_SKIP_RPATH ON&lt;br /&gt;
** VTK_WRAP_TCL ON&lt;br /&gt;
** VTK_DEBUG_LEAKS ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX specific (Make sure to install [http://www.apple.com/downloads/macosx/apple/x11formacosx.html X11]):&lt;br /&gt;
** VTK_USE_CARBON OFF&lt;br /&gt;
** VTK_USE_X ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note, those options '''should not''' appear, since they disapear since VTK5:&lt;br /&gt;
** VTK_USE_HYBRID ON&lt;br /&gt;
** VTK_USE_PATENTED ON&lt;br /&gt;
&lt;br /&gt;
* Make sure that the TCL and TK path are set properly&lt;br /&gt;
** TCL_* and TK_*&lt;br /&gt;
&lt;br /&gt;
=== Configure and build KWWidgets ===&lt;br /&gt;
&lt;br /&gt;
* You need to specify where your VTK build tree is.&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
== Build and Run Slicer3 ==&lt;br /&gt;
&lt;br /&gt;
=== Manually ===&lt;br /&gt;
&lt;br /&gt;
# Check out and build slicer3 (e.g. on linux)&lt;br /&gt;
&lt;br /&gt;
  svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
  mkdir Slicer3-build&lt;br /&gt;
  cd Slicer3-build&lt;br /&gt;
  ccmake ../Slicer3&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Again make sure to turn:&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Start slicer with the Slicer3 executable in your build directory.&lt;br /&gt;
&lt;br /&gt;
= SBuild =&lt;br /&gt;
SBuild is a new, experimental build system for Slicer.  It is based on getbuildtest2.tcl and genlib2.tcl, but rather than try to hid the gory details of building Slicer, SBuild attempts to expose a reasonable amount to the developer.  The interface should be reasonably intuitive, but a brief walk through is useful.  Click on the thumbnails for larger views.  SBuild allows you to update and build just the portions of Slicer that you may require or want to build.  Any of the required libraries may be specified to be build by SBuild, or to use an existing build.  Existing libraries are not controlled by SBuild.  Under the hood, SBuild calls CMake to do the heavy lifting, just like getbuildtest2.tcl.&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
{|&lt;br /&gt;
|+ SBuild screenshots&lt;br /&gt;
|-&lt;br /&gt;
| [[image:SBuild-MainWindow.png|center|250px|Main SBuild Window]] || [[image:SBuild-RequiredWindow.png|center|250px|Required libraries]] &lt;br /&gt;
||[[image:SBuild-AllExternal.png|center|250px|SBuild configured for all external builds]]  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Configure the &amp;quot;Slicer Source Directory&amp;quot; by clicking on the &amp;quot;...&amp;quot; button, or typing a path to where you would like Slicer source saved&lt;br /&gt;
## Configure the &amp;quot;Slicer Build Directory&amp;quot; and &amp;quot;Slicer Library Directory&amp;quot; in the same fashion&lt;br /&gt;
# (Optional:) Switch to the &amp;quot;Required Libs&amp;quot; tab&lt;br /&gt;
## Configure any of the external builds that you may have by clicking on the checkbox next to the &amp;quot;Use external build&amp;quot; label&lt;br /&gt;
## When prompted, find the external build directory&lt;br /&gt;
## Note: SBuild looks for specific files inside the directory you choose, if not found you will be warned.  In this case, choose better.&lt;br /&gt;
## Any of the required libraries may be Updated, Configured, or Built from this tab.&lt;br /&gt;
# To build everything, go to the Slicer3 tab and click &amp;quot;All&amp;quot;&lt;br /&gt;
## Output of the build process should fly by.&lt;br /&gt;
&lt;br /&gt;
== Binary downloads ==&lt;br /&gt;
&lt;br /&gt;
* [[Media:SBuild-darwin-ppc.gz| Mac OSX PPC (must use X11)]]&lt;br /&gt;
* [[Media:SBuild-darwin-x86.gz| Mac OSX x86 (must use X11)]]&lt;br /&gt;
* [[Media:SBuild-linux-x86.gz| Linux x86]]&lt;br /&gt;
* [[Media:SBuild-linux-x86_64.gz| Linux x86-64]]&lt;br /&gt;
* [[Media:SBuild-win32_exe.gz| Win32 (please properly rename it)]]&lt;br /&gt;
* [[Media:SBuild.kit.gz| Generic tclkit (any platform)]]&lt;br /&gt;
&lt;br /&gt;
== Adding new Libraries to SBuild ==&lt;br /&gt;
The default package of SBuild contains the minimal number of required libraries to build Slicer.  Currently no optional libraries are installed.  The procedure for providing an SBuild plugin is modestly complicated, but several good examples exist.  All plugins go in SBuild.vfs/lib/SBuildPlugins.  As an example, let's create a plugin called Mythical, contained in SBuild.vfs/lib/SBuildPlugins/Mythical.tcl.&lt;br /&gt;
&lt;br /&gt;
In the Slicer3/Scripts/SBuild directory, run '''./bootstrap run''' to run SBuild, and '''./bootstrap build''' to build the Tcl Starkits.&lt;br /&gt;
&lt;br /&gt;
The first section of Mythical.tcl provides some housekeeping details:&lt;br /&gt;
&lt;br /&gt;
 package provide SBuildPlugins 1.0 &lt;br /&gt;
 &lt;br /&gt;
 lappend ::SBuild(Plugins) Mythical &lt;br /&gt;
 &lt;br /&gt;
 set ::Plugin(Mythical,Type) &amp;quot;optional&amp;quot;&lt;br /&gt;
 set ::Plugin(Mythical,Order) 100&lt;br /&gt;
 set ::Plugin(Mythical,CanUseUserBuild) 1&lt;br /&gt;
&lt;br /&gt;
The Mythical plugin must append itself to ::SBuild(Plugins) to register, and declares itself optional, builds in order 100, and can use user provided builds.&lt;br /&gt;
&lt;br /&gt;
Each plugin must provide several Tcl procs to do various functions.  The naming convention is PluginName-Function-Architecture.  In this example PluginName is Mythical.  SBuild first looks for the -Architecture variant, and failing, calls the PluginName-Function.  For instance, Mythical-Update is the Tcl proc that updates the source for Mythical, while Mythical-Build-Windows is a specialization for Windows.  The important functions are: Update, Configure, Build, and ConfigureSlicer.  The ConfigureSlicer function may append a CMake argument to be used when Slicer is configured.  If external packages are allowed, the ConfigureExternal function is called.  ConfigureExternal usually looks for libraries and sets a LibPath to be used to configure Slicer.  Examples of these functions are shown below.&lt;br /&gt;
&lt;br /&gt;
 # Here is where we would add lines to the main Slicer3 configuration&lt;br /&gt;
 proc Mythical-Setup {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we setup for an external build&lt;br /&gt;
 proc Mythical-ConfigureExternal {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   set SBuild(Mythical,LibPath) [file dirname [FindFile $::SBuild(Mythical,ExternalBuildPath) [list libMythicalCommon* MythicalCommon*.lib MythicalCommon*.dll]]]&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Add a line to Slicer's CMake command&lt;br /&gt;
 proc Mythical-ConfigureSlicer {} {&lt;br /&gt;
   global Plugin SBuild Slicer&lt;br /&gt;
   set dir [file join $SBuild(SlicerLibDir) Insight-build]&lt;br /&gt;
   if { $SBuild(Mythical,UseExternalBuild) } {&lt;br /&gt;
     set dir $SBuild(Mythical,ExternalBuildPath)&lt;br /&gt;
   }&lt;br /&gt;
   Debug &amp;quot;setting Mythical_DIR to $dir&amp;quot;&lt;br /&gt;
   lappend Slicer(CMakeArguments) -DMythical_DIR:FILEPATH=$dir&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we update Mythical?&lt;br /&gt;
 proc Mythical-Update {} {&lt;br /&gt;
   Debug &amp;quot;Checking out Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Insight&lt;br /&gt;
   ExecuteCommand $SBuild(SVNCommand) co http://www.mythical.org/svn/Mythical/trunk Mythical&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Configure to build&lt;br /&gt;
 proc Mythical-Configure {} {&lt;br /&gt;
   Debug &amp;quot;Configure Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Mythical-build&lt;br /&gt;
   cd Mythical-build&lt;br /&gt;
   ExecuteCommand $SBuild(CMake) \&lt;br /&gt;
     -G$SBuild(Generator) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER:STRING=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER_FULLPATH:FILEPATH=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DBUILD_SHARED_LIBS:BOOL=ON \&lt;br /&gt;
     -DCMAKE_SKIP_RPATH:BOOL=ON \&lt;br /&gt;
     -DBUILD_EXAMPLES:BOOL=OFF \&lt;br /&gt;
     -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
     -DCMAKE_BUILD_TYPE:STRING=$::SBuild(BuildType) \&lt;br /&gt;
     -DCMAKE_CXX_FLAGS_DEBUG:STRING=$::SBuild(CMakeCXXFlagsDebug) \&lt;br /&gt;
     ../Insight&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on windows?&lt;br /&gt;
 proc Mythical-Build-Windows {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   ExecuteCommand $SBuild(Make) Mythical.SLN /build  $SBuild(BuildType)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on other Makefile-based systems?&lt;br /&gt;
 proc Mythical-Build {} {&lt;br /&gt;
   Debug &amp;quot;Building Mythical&amp;quot;&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   eval ExecuteCommand $SBuild(Make) $SBuild(ParallelMake)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Clean up Mythical (nothing for the moment).&lt;br /&gt;
 proc Mythical-Clean {} {&lt;br /&gt;
   Debug &amp;quot;Cleaning Mythical&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* http://www.na-mic.org/Wiki/index.php/Slicer3&lt;br /&gt;
* http://www.na-mic.org/websvn/listing.php?repname=Slicer3&lt;br /&gt;
* [[Slicer3::Eclipse | Howto integrate Slicer3 into Eclipse]]&lt;br /&gt;
== Information on Free Microsoft C++ Compiler on Windows ==&lt;br /&gt;
&lt;br /&gt;
Be sure to follow '''all''' the steps on Microsoft link. Yes it means you need to download the compiler '''and''' sdk.&lt;br /&gt;
&lt;br /&gt;
* http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=File:SBuild.kit.gz&amp;diff=22747</id>
		<title>File:SBuild.kit.gz</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=File:SBuild.kit.gz&amp;diff=22747"/>
		<updated>2008-03-08T03:06:22Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22592</id>
		<title>Slicer3:Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22592"/>
		<updated>2008-03-04T05:17:44Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Binary downloads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= All-in-one Script to checkout and build Slicer3 =&lt;br /&gt;
&lt;br /&gt;
To compile and build Slicer3, you need a set of development packages installed on your machine: &lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_linux pre-requisite material for Linux ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_windows pre-requisite material for Windows ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_Apple_Mac_OS_X pre-requisite material for Mac ]&lt;br /&gt;
&lt;br /&gt;
There's a script called getbuildtest.tcl that makes the support libraries (VTK, ITK, teem, etc) and also builds slicer and does a dashboard submission.  (Click [[Slicer3:getbuildtest | here for background on getbuildtest]] and the experimental getbuildtest2 version).&lt;br /&gt;
&lt;br /&gt;
Just do the following two commands (see [[Slicer3:Build_Instructions#getbuildtest_on_windows|for windows users]] below):&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
   svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 &lt;br /&gt;
   ./Slicer3/Scripts/getbuildtest.tcl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Note: that a Slicer3-lib and Slicer3-build directory will be created for you. This is meant to be used to set up new machines and to run nightly testing of the full builds.&lt;br /&gt;
&lt;br /&gt;
To run (all platforms):&lt;br /&gt;
&lt;br /&gt;
 ./Slicer3-build/Slicer3&lt;br /&gt;
&lt;br /&gt;
Note: the whole build environment takes about 2G of disk space.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
Note also that getbuildtest will do an Experimental submission to the [http://www.na-mic.org/Slicer3/Dashboard/ Slicer3 dashboard]. If you want to use getbuildtest without submitting to the dashboard, you can set the test type to nothing with&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl -t &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Other options for the -t (--test-type) option are Nightly or Continuous (or any of the [http://www.cmake.org/Wiki/CMake_Testing_With_CTest CTest] options).&lt;br /&gt;
&lt;br /&gt;
== What does getbuildtest.tcl do? ==&lt;br /&gt;
&lt;br /&gt;
This script just automates the steps needed to build slicer.  What you end up with is a set of source and build directories that can either be further manipulated with getbuildtest or can be worked with normally.  That is, on windows you will have solution files that you can load in visual studio for debugging and further development.&lt;br /&gt;
&lt;br /&gt;
Specifically, getbuildtest does the following steps:&lt;br /&gt;
&lt;br /&gt;
* Refreshes Slicer3 svn&lt;br /&gt;
* Runs Scripts/genlib.tcl which does the following for each of the support libraries&lt;br /&gt;
** does a cvs/svn checkout/update&lt;br /&gt;
** runs cmake with the correct settings for use with Slicer3&lt;br /&gt;
** runs make (or developer studio) to build the libraries&lt;br /&gt;
* Runs cmake on Slicer3&lt;br /&gt;
* Builds Slicer3&lt;br /&gt;
* Runs ctest on Slicer3&lt;br /&gt;
* (optionally) Runs CPack on Slicer3&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
  usage: getbuildtest [options] [target]&lt;br /&gt;
    [target] is determined automatically if not specified&lt;br /&gt;
    [options] is one of the following:&lt;br /&gt;
     --help : prints this message and exits&lt;br /&gt;
     --clean : delete lib and build directories first&lt;br /&gt;
     -t --test-type : CTest test target&lt;br /&gt;
     --release : compile with optimization flags&lt;br /&gt;
     --update : does a cvs/svn update on each lib&lt;br /&gt;
     --pack : builds a distribution package (cpack)&lt;br /&gt;
&lt;br /&gt;
== Errors from getbuildtest ==&lt;br /&gt;
&lt;br /&gt;
You will need to have your firewall configured to allow access to na-mic.org for cvs access through port 2401. Also you need 8081 for submitting to the dashboard.&lt;br /&gt;
&lt;br /&gt;
Other errors might mean you don't have all the build tools (see next section).&lt;br /&gt;
&lt;br /&gt;
If you want to generate a log of the build process, you can use a command like the following:&lt;br /&gt;
&lt;br /&gt;
 # for csh/tcsh:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl |&amp;amp; tee build.log&lt;br /&gt;
or&lt;br /&gt;
 # for sh/bash:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl 2&amp;gt;&amp;amp;1 | tee build.log&lt;br /&gt;
&lt;br /&gt;
== Updating Your getbuildtest Build ==&lt;br /&gt;
&lt;br /&gt;
There are a few options:&lt;br /&gt;
&lt;br /&gt;
* you can re-run getbuildtest and it will update slicer3 and rebuild (just slicer3)&lt;br /&gt;
* you can add the --update option and all the libs will get a cvs/svn update and will rebuild if needed (good for tracking the development head of VTK/ITK/KWWidgets etc).&lt;br /&gt;
* you can just 'svn update' in the Slicer3 directory and then do 'make' in the Slicer3-build to get just the latest Slicer3 code.&lt;br /&gt;
&lt;br /&gt;
The following command for unix machines will update, build, and launch the latest Slicer3:&lt;br /&gt;
&lt;br /&gt;
 svn update &amp;amp;&amp;amp; (cd ../Slicer3-build; make &amp;amp;&amp;amp; ./bin/Slicer3)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on linux ==&lt;br /&gt;
&lt;br /&gt;
To compile slicer and do development, be sure you have a complete set of development packages installed on your machine.  The exact packages vary by distribution, but include:&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-c++&lt;br /&gt;
* libX11 &lt;br /&gt;
* libX11-devel (libX11-dev  on Ubuntu 7.04)&lt;br /&gt;
* libXt-devel (libXt-dev on Ubuntu)&lt;br /&gt;
* opengl/mesa (libgl1-mesa-dev on Ubuntu)&lt;br /&gt;
&lt;br /&gt;
Ubuntu one line install:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install subversion cvs tcl8.4 gcc g++ libX11-dev libXt-dev libxext-dev libgl1-mesa-dev libncurses5-dev tcsh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, be sure you have OpenGL and the GLX extension to X working.  To check the installation, it is usually enough to confirm that the command &amp;lt;pre&amp;gt;glxgears&amp;lt;/pre&amp;gt; runs with no errors.&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on windows ==&lt;br /&gt;
&lt;br /&gt;
The script should work fine on a properly configured windows environment. Current requirements are:&lt;br /&gt;
&lt;br /&gt;
* Developer Studio 8 Visual C++ Express which is free from Microsoft - be sure to install the Platform SDK and follow the ridiculous manual steps to set up the paths [[Slicer3:Build_Instructions#Information_on_Free_Microsoft_C.2B.2B_Compiler_on_Windows|see below]].&lt;br /&gt;
* Developer Studio 9 Visual C++ Express [[Slicer:Build_Instructions:MSVS9]]&lt;br /&gt;
** Other releases of visual studio also work (7 and 7.1)&lt;br /&gt;
** If they are installed in the default locations in &amp;quot;c:/Program Files&amp;quot; they will be detected by the build script automatically (you need to edit slicer_variables.tcl to point to the installation).&lt;br /&gt;
* [http://www.cygwin.com Cygwin] with the following packages&lt;br /&gt;
** tcltk&lt;br /&gt;
** svn&lt;br /&gt;
** cvs&lt;br /&gt;
** unzip&lt;br /&gt;
** curl&lt;br /&gt;
* With Developers Studio and cygwin installed, you only need to do the svn checkout and getbuildtest script to get a fully working Slicer3 plus all the tools you need to develop new code.&lt;br /&gt;
&lt;br /&gt;
Note: CMake and VTK will not work on a FAT formatted disk (use NTFS).&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on Apple Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
For Mac OS 10.4.10 install the following from the OS disks (not installed by default on new machines):&lt;br /&gt;
* Xcode Tools (OS Disk 1, default window)&lt;br /&gt;
* X11: also on OS Disk 1, but you need to scroll down and find the Optional Installs installer and select X11 under Applications. See [http://porting.openoffice.org/mac/faq/installing/X11.html step-by-step instructions].&lt;br /&gt;
* X11SDK - from OS Disk 1, Xcode Tools/Packages/X11SDK.pkg&lt;br /&gt;
* Subversion.  Installation [http://downloads.open.collab.net/binaries.html options here].  Get the latest svn version for compatibility with the server and be sure your client includes SSL (so it can access https repositories).&lt;br /&gt;
&lt;br /&gt;
Remember to run getbuildtest from an xterm so the tests can access the X server.&lt;br /&gt;
&lt;br /&gt;
== configuration options ==&lt;br /&gt;
&lt;br /&gt;
The file Slicer3/slicer_variables.tcl includes configuration options for which support libraries to use.  You may want to change thes for testing or to get access to new functionality.  &lt;br /&gt;
&lt;br /&gt;
 set ::SLICER_TAG &amp;quot;http://www.na-mic.org/svn/Slicer3/trunk&amp;quot;&lt;br /&gt;
 set ::CMAKE_TAG &amp;quot;CMake-2-4-2&amp;quot;&lt;br /&gt;
 set ::TEEM_TAG &amp;quot;Teem-1-9-0-patches&amp;quot;&lt;br /&gt;
 set ::KWWidgets_TAG &amp;quot;HEAD&amp;quot;&lt;br /&gt;
 set ::VTK_TAG &amp;quot;VTK-5-0&amp;quot;&lt;br /&gt;
 set ::ITK_TAG ITK-3-0&lt;br /&gt;
 set ::TCL_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::TK_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::ITCL_TAG &amp;quot;itcl-3-2-1&amp;quot;&lt;br /&gt;
 set ::IWIDGETS_TAG &amp;quot;iwidgets-4-0-1&amp;quot;&lt;br /&gt;
 set ::BLT_TAG &amp;quot;blt24z&amp;quot;&lt;br /&gt;
 set ::SANDBOX_TAG &amp;quot;http://svn.na-mic.org/svn/NAMICSandBox/branches/Slicer-2-6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For example, you may want a build against the ITK cvs head.  Change the flag value and then run &lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --update &lt;br /&gt;
&lt;br /&gt;
which will get the version from cvs, build it, and rebuild slicer3.  Depending on how radically different the versions you build are, you may need to use --clean.&lt;br /&gt;
&lt;br /&gt;
Another useful option is to change your build type to include support debugging.&lt;br /&gt;
&lt;br /&gt;
 set ::VTK_BUILD_TYPE &amp;quot;RelWithDebInfo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
options are Debug, Release, or RelWithDebInfo.  RelWithDebInfo is a compromise between speed and debuggability.  If you are tracking down a tough C++ bug you will get better information in Debug mode.  After changing this flag, you should run&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --clean&lt;br /&gt;
&lt;br /&gt;
to create a completely new build.&lt;br /&gt;
&lt;br /&gt;
= Manual checkout/build of Slicer3 and support libraries: =&lt;br /&gt;
&lt;br /&gt;
== Prerequisite software ==&lt;br /&gt;
&lt;br /&gt;
You need to get and build the following packages if you aren't using the getbuildtest script:&lt;br /&gt;
&lt;br /&gt;
# [http://www.cmake.org CMake (2.4.1 or later)]&lt;br /&gt;
# [http://www.tcl.tk Tcl/Tk (8.4 or later)]&lt;br /&gt;
# [http://sourceforge.net/projects/incrtcl/ incrTcl (3.2.1)]&lt;br /&gt;
# [http://www.vtk.org VTK 5.0]&lt;br /&gt;
# [http://www.itk.org ITK 3.4]&lt;br /&gt;
# [http://www.kwwidgets.org KWWidgets Slicer-3-0 tag]&lt;br /&gt;
# [http://teem.sf.net Teem (1.9.0)]&lt;br /&gt;
&lt;br /&gt;
== Build Steps ==&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
 $ svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.vtk.org:/cvsroot/VTK co VTK -r VTK-5-0&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.itk.org:/cvsroot/Insight co Insight -r ITK-3-4&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.kwwidgets.org:/cvsroot/KWWidgets co KWWidgets -r Slicer-3-0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure and build ITK ===&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
=== Configure and build VTK ===&lt;br /&gt;
&lt;br /&gt;
* All systems:&lt;br /&gt;
** BUILD_SHARED_LIBS ON&lt;br /&gt;
** CMAKE_SKIP_RPATH ON&lt;br /&gt;
** VTK_WRAP_TCL ON&lt;br /&gt;
** VTK_DEBUG_LEAKS ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX specific (Make sure to install [http://www.apple.com/downloads/macosx/apple/x11formacosx.html X11]):&lt;br /&gt;
** VTK_USE_CARBON OFF&lt;br /&gt;
** VTK_USE_X ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note, those options '''should not''' appear, since they disapear since VTK5:&lt;br /&gt;
** VTK_USE_HYBRID ON&lt;br /&gt;
** VTK_USE_PATENTED ON&lt;br /&gt;
&lt;br /&gt;
* Make sure that the TCL and TK path are set properly&lt;br /&gt;
** TCL_* and TK_*&lt;br /&gt;
&lt;br /&gt;
=== Configure and build KWWidgets ===&lt;br /&gt;
&lt;br /&gt;
* You need to specify where your VTK build tree is.&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
== Build and Run Slicer3 ==&lt;br /&gt;
&lt;br /&gt;
=== Manually ===&lt;br /&gt;
&lt;br /&gt;
# Check out and build slicer3 (e.g. on linux)&lt;br /&gt;
&lt;br /&gt;
  svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
  mkdir Slicer3-build&lt;br /&gt;
  cd Slicer3-build&lt;br /&gt;
  ccmake ../Slicer3&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Again make sure to turn:&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Start slicer with the Slicer3 executable in your build directory.&lt;br /&gt;
&lt;br /&gt;
= SBuild =&lt;br /&gt;
SBuild is a new, experimental build system for Slicer.  It is based on getbuildtest2.tcl and genlib2.tcl, but rather than try to hid the gory details of building Slicer, SBuild attempts to expose a reasonable amount to the developer.  The interface should be reasonably intuitive, but a brief walk through is useful.  Click on the thumbnails for larger views.  SBuild allows you to update and build just the portions of Slicer that you may require or want to build.  Any of the required libraries may be specified to be build by SBuild, or to use an existing build.  Existing libraries are not controlled by SBuild.&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
{|&lt;br /&gt;
|+ SBuild screenshots&lt;br /&gt;
|-&lt;br /&gt;
| [[image:SBuild-MainWindow.png|center|250px|Main SBuild Window]] || [[image:SBuild-RequiredWindow.png|center|250px|Required libraries]] &lt;br /&gt;
||[[image:SBuild-AllExternal.png|center|250px|SBuild configured for all external builds]]  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Configure the &amp;quot;Slicer Source Directory&amp;quot; by clicking on the &amp;quot;...&amp;quot; button, or typing a path to where you would like Slicer source saved&lt;br /&gt;
## Configure the &amp;quot;Slicer Build Directory&amp;quot; and &amp;quot;Slicer Library Directory&amp;quot; in the same fashion&lt;br /&gt;
# (Optional:) Switch to the &amp;quot;Required Libs&amp;quot; tab&lt;br /&gt;
## Configure any of the external builds that you may have by clicking on the checkbox next to the &amp;quot;Use external build&amp;quot; label&lt;br /&gt;
## When prompted, find the external build directory&lt;br /&gt;
## Note: SBuild looks for specific files inside the directory you choose, if not found you will be warned.  In this case, choose better.&lt;br /&gt;
## Any of the required libraries may be Updated, Configured, or Built from this tab.&lt;br /&gt;
# To build everything, go to the Slicer3 tab and click &amp;quot;All&amp;quot;&lt;br /&gt;
## Output of the build process should fly by.&lt;br /&gt;
&lt;br /&gt;
== Binary downloads ==&lt;br /&gt;
&lt;br /&gt;
* [[Media:SBuild-darwin-ppc.gz| Mac OSX PPC (must use X11)]]&lt;br /&gt;
* [[Media:SBuild-darwin-x86.gz| Mac OSX x86 (must use X11)]]&lt;br /&gt;
* [[Media:SBuild-linux-x86.gz| Linux x86]]&lt;br /&gt;
* [[Media:SBuild-linux-x86_64.gz| Linux x86-64]]&lt;br /&gt;
* [[Media:SBuild-win32_exe.gz| Win32 (please properly rename it)]]&lt;br /&gt;
&lt;br /&gt;
== Adding new Libraries to SBuild ==&lt;br /&gt;
The default package of SBuild contains the minimal number of required libraries to build Slicer.  Currently no optional libraries are installed.  The procedure for providing an SBuild plugin is modestly complicated, but several good examples exist.  All plugins go in SBuild.vfs/lib/SBuildPlugins.  As an example, let's create a plugin called Mythical, contained in SBuild.vfs/lib/SBuildPlugins/Mythical.tcl.&lt;br /&gt;
&lt;br /&gt;
In the Slicer3/Scripts/SBuild directory, run '''./bootstrap run''' to run SBuild, and '''./bootstrap build''' to build the Tcl Starkits.&lt;br /&gt;
&lt;br /&gt;
The first section of Mythical.tcl provides some housekeeping details:&lt;br /&gt;
&lt;br /&gt;
 package provide SBuildPlugins 1.0 &lt;br /&gt;
 &lt;br /&gt;
 lappend ::SBuild(Plugins) Mythical &lt;br /&gt;
 &lt;br /&gt;
 set ::Plugin(Mythical,Type) &amp;quot;optional&amp;quot;&lt;br /&gt;
 set ::Plugin(Mythical,Order) 100&lt;br /&gt;
 set ::Plugin(Mythical,CanUseUserBuild) 1&lt;br /&gt;
&lt;br /&gt;
The Mythical plugin must append itself to ::SBuild(Plugins) to register, and declares itself optional, builds in order 100, and can use user provided builds.&lt;br /&gt;
&lt;br /&gt;
Each plugin must provide several Tcl procs to do various functions.  The naming convention is PluginName-Function-Architecture.  In this example PluginName is Mythical.  SBuild first looks for the -Architecture variant, and failing, calls the PluginName-Function.  For instance, Mythical-Update is the Tcl proc that updates the source for Mythical, while Mythical-Build-Windows is a specialization for Windows.  The important functions are: Update, Configure, Build, and ConfigureSlicer.  The ConfigureSlicer function may append a CMake argument to be used when Slicer is configured.  If external packages are allowed, the ConfigureExternal function is called.  ConfigureExternal usually looks for libraries and sets a LibPath to be used to configure Slicer.  Examples of these functions are shown below.&lt;br /&gt;
&lt;br /&gt;
 # Here is where we would add lines to the main Slicer3 configuration&lt;br /&gt;
 proc Mythical-Setup {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we setup for an external build&lt;br /&gt;
 proc Mythical-ConfigureExternal {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   set SBuild(Mythical,LibPath) [file dirname [FindFile $::SBuild(Mythical,ExternalBuildPath) [list libMythicalCommon* MythicalCommon*.lib MythicalCommon*.dll]]]&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Add a line to Slicer's CMake command&lt;br /&gt;
 proc Mythical-ConfigureSlicer {} {&lt;br /&gt;
   global Plugin SBuild Slicer&lt;br /&gt;
   set dir [file join $SBuild(SlicerLibDir) Insight-build]&lt;br /&gt;
   if { $SBuild(Mythical,UseExternalBuild) } {&lt;br /&gt;
     set dir $SBuild(Mythical,ExternalBuildPath)&lt;br /&gt;
   }&lt;br /&gt;
   Debug &amp;quot;setting Mythical_DIR to $dir&amp;quot;&lt;br /&gt;
   lappend Slicer(CMakeArguments) -DMythical_DIR:FILEPATH=$dir&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we update Mythical?&lt;br /&gt;
 proc Mythical-Update {} {&lt;br /&gt;
   Debug &amp;quot;Checking out Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Insight&lt;br /&gt;
   ExecuteCommand $SBuild(SVNCommand) co http://www.mythical.org/svn/Mythical/trunk Mythical&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Configure to build&lt;br /&gt;
 proc Mythical-Configure {} {&lt;br /&gt;
   Debug &amp;quot;Configure Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Mythical-build&lt;br /&gt;
   cd Mythical-build&lt;br /&gt;
   ExecuteCommand $SBuild(CMake) \&lt;br /&gt;
     -G$SBuild(Generator) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER:STRING=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER_FULLPATH:FILEPATH=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DBUILD_SHARED_LIBS:BOOL=ON \&lt;br /&gt;
     -DCMAKE_SKIP_RPATH:BOOL=ON \&lt;br /&gt;
     -DBUILD_EXAMPLES:BOOL=OFF \&lt;br /&gt;
     -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
     -DCMAKE_BUILD_TYPE:STRING=$::SBuild(BuildType) \&lt;br /&gt;
     -DCMAKE_CXX_FLAGS_DEBUG:STRING=$::SBuild(CMakeCXXFlagsDebug) \&lt;br /&gt;
     ../Insight&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on windows?&lt;br /&gt;
 proc Mythical-Build-Windows {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   ExecuteCommand $SBuild(Make) Mythical.SLN /build  $SBuild(BuildType)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on other Makefile-based systems?&lt;br /&gt;
 proc Mythical-Build {} {&lt;br /&gt;
   Debug &amp;quot;Building Mythical&amp;quot;&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   eval ExecuteCommand $SBuild(Make) $SBuild(ParallelMake)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Clean up Mythical (nothing for the moment).&lt;br /&gt;
 proc Mythical-Clean {} {&lt;br /&gt;
   Debug &amp;quot;Cleaning Mythical&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* http://www.na-mic.org/Wiki/index.php/Slicer3&lt;br /&gt;
* http://www.na-mic.org/websvn/listing.php?repname=Slicer3&lt;br /&gt;
* [[Slicer3::Eclipse | Howto integrate Slicer3 into Eclipse]]&lt;br /&gt;
== Information on Free Microsoft C++ Compiler on Windows ==&lt;br /&gt;
&lt;br /&gt;
Be sure to follow '''all''' the steps on Microsoft link. Yes it means you need to download the compiler '''and''' sdk.&lt;br /&gt;
&lt;br /&gt;
* http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=File:SBuild-win32_exe.gz&amp;diff=22591</id>
		<title>File:SBuild-win32 exe.gz</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=File:SBuild-win32_exe.gz&amp;diff=22591"/>
		<updated>2008-03-04T05:16:18Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22590</id>
		<title>Slicer3:Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22590"/>
		<updated>2008-03-04T05:15:10Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Binary downloads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= All-in-one Script to checkout and build Slicer3 =&lt;br /&gt;
&lt;br /&gt;
To compile and build Slicer3, you need a set of development packages installed on your machine: &lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_linux pre-requisite material for Linux ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_windows pre-requisite material for Windows ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_Apple_Mac_OS_X pre-requisite material for Mac ]&lt;br /&gt;
&lt;br /&gt;
There's a script called getbuildtest.tcl that makes the support libraries (VTK, ITK, teem, etc) and also builds slicer and does a dashboard submission.  (Click [[Slicer3:getbuildtest | here for background on getbuildtest]] and the experimental getbuildtest2 version).&lt;br /&gt;
&lt;br /&gt;
Just do the following two commands (see [[Slicer3:Build_Instructions#getbuildtest_on_windows|for windows users]] below):&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
   svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 &lt;br /&gt;
   ./Slicer3/Scripts/getbuildtest.tcl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Note: that a Slicer3-lib and Slicer3-build directory will be created for you. This is meant to be used to set up new machines and to run nightly testing of the full builds.&lt;br /&gt;
&lt;br /&gt;
To run (all platforms):&lt;br /&gt;
&lt;br /&gt;
 ./Slicer3-build/Slicer3&lt;br /&gt;
&lt;br /&gt;
Note: the whole build environment takes about 2G of disk space.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
Note also that getbuildtest will do an Experimental submission to the [http://www.na-mic.org/Slicer3/Dashboard/ Slicer3 dashboard]. If you want to use getbuildtest without submitting to the dashboard, you can set the test type to nothing with&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl -t &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Other options for the -t (--test-type) option are Nightly or Continuous (or any of the [http://www.cmake.org/Wiki/CMake_Testing_With_CTest CTest] options).&lt;br /&gt;
&lt;br /&gt;
== What does getbuildtest.tcl do? ==&lt;br /&gt;
&lt;br /&gt;
This script just automates the steps needed to build slicer.  What you end up with is a set of source and build directories that can either be further manipulated with getbuildtest or can be worked with normally.  That is, on windows you will have solution files that you can load in visual studio for debugging and further development.&lt;br /&gt;
&lt;br /&gt;
Specifically, getbuildtest does the following steps:&lt;br /&gt;
&lt;br /&gt;
* Refreshes Slicer3 svn&lt;br /&gt;
* Runs Scripts/genlib.tcl which does the following for each of the support libraries&lt;br /&gt;
** does a cvs/svn checkout/update&lt;br /&gt;
** runs cmake with the correct settings for use with Slicer3&lt;br /&gt;
** runs make (or developer studio) to build the libraries&lt;br /&gt;
* Runs cmake on Slicer3&lt;br /&gt;
* Builds Slicer3&lt;br /&gt;
* Runs ctest on Slicer3&lt;br /&gt;
* (optionally) Runs CPack on Slicer3&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
  usage: getbuildtest [options] [target]&lt;br /&gt;
    [target] is determined automatically if not specified&lt;br /&gt;
    [options] is one of the following:&lt;br /&gt;
     --help : prints this message and exits&lt;br /&gt;
     --clean : delete lib and build directories first&lt;br /&gt;
     -t --test-type : CTest test target&lt;br /&gt;
     --release : compile with optimization flags&lt;br /&gt;
     --update : does a cvs/svn update on each lib&lt;br /&gt;
     --pack : builds a distribution package (cpack)&lt;br /&gt;
&lt;br /&gt;
== Errors from getbuildtest ==&lt;br /&gt;
&lt;br /&gt;
You will need to have your firewall configured to allow access to na-mic.org for cvs access through port 2401. Also you need 8081 for submitting to the dashboard.&lt;br /&gt;
&lt;br /&gt;
Other errors might mean you don't have all the build tools (see next section).&lt;br /&gt;
&lt;br /&gt;
If you want to generate a log of the build process, you can use a command like the following:&lt;br /&gt;
&lt;br /&gt;
 # for csh/tcsh:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl |&amp;amp; tee build.log&lt;br /&gt;
or&lt;br /&gt;
 # for sh/bash:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl 2&amp;gt;&amp;amp;1 | tee build.log&lt;br /&gt;
&lt;br /&gt;
== Updating Your getbuildtest Build ==&lt;br /&gt;
&lt;br /&gt;
There are a few options:&lt;br /&gt;
&lt;br /&gt;
* you can re-run getbuildtest and it will update slicer3 and rebuild (just slicer3)&lt;br /&gt;
* you can add the --update option and all the libs will get a cvs/svn update and will rebuild if needed (good for tracking the development head of VTK/ITK/KWWidgets etc).&lt;br /&gt;
* you can just 'svn update' in the Slicer3 directory and then do 'make' in the Slicer3-build to get just the latest Slicer3 code.&lt;br /&gt;
&lt;br /&gt;
The following command for unix machines will update, build, and launch the latest Slicer3:&lt;br /&gt;
&lt;br /&gt;
 svn update &amp;amp;&amp;amp; (cd ../Slicer3-build; make &amp;amp;&amp;amp; ./bin/Slicer3)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on linux ==&lt;br /&gt;
&lt;br /&gt;
To compile slicer and do development, be sure you have a complete set of development packages installed on your machine.  The exact packages vary by distribution, but include:&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-c++&lt;br /&gt;
* libX11 &lt;br /&gt;
* libX11-devel (libX11-dev  on Ubuntu 7.04)&lt;br /&gt;
* libXt-devel (libXt-dev on Ubuntu)&lt;br /&gt;
* opengl/mesa (libgl1-mesa-dev on Ubuntu)&lt;br /&gt;
&lt;br /&gt;
Ubuntu one line install:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install subversion cvs tcl8.4 gcc g++ libX11-dev libXt-dev libxext-dev libgl1-mesa-dev libncurses5-dev tcsh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, be sure you have OpenGL and the GLX extension to X working.  To check the installation, it is usually enough to confirm that the command &amp;lt;pre&amp;gt;glxgears&amp;lt;/pre&amp;gt; runs with no errors.&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on windows ==&lt;br /&gt;
&lt;br /&gt;
The script should work fine on a properly configured windows environment. Current requirements are:&lt;br /&gt;
&lt;br /&gt;
* Developer Studio 8 Visual C++ Express which is free from Microsoft - be sure to install the Platform SDK and follow the ridiculous manual steps to set up the paths [[Slicer3:Build_Instructions#Information_on_Free_Microsoft_C.2B.2B_Compiler_on_Windows|see below]].&lt;br /&gt;
* Developer Studio 9 Visual C++ Express [[Slicer:Build_Instructions:MSVS9]]&lt;br /&gt;
** Other releases of visual studio also work (7 and 7.1)&lt;br /&gt;
** If they are installed in the default locations in &amp;quot;c:/Program Files&amp;quot; they will be detected by the build script automatically (you need to edit slicer_variables.tcl to point to the installation).&lt;br /&gt;
* [http://www.cygwin.com Cygwin] with the following packages&lt;br /&gt;
** tcltk&lt;br /&gt;
** svn&lt;br /&gt;
** cvs&lt;br /&gt;
** unzip&lt;br /&gt;
** curl&lt;br /&gt;
* With Developers Studio and cygwin installed, you only need to do the svn checkout and getbuildtest script to get a fully working Slicer3 plus all the tools you need to develop new code.&lt;br /&gt;
&lt;br /&gt;
Note: CMake and VTK will not work on a FAT formatted disk (use NTFS).&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on Apple Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
For Mac OS 10.4.10 install the following from the OS disks (not installed by default on new machines):&lt;br /&gt;
* Xcode Tools (OS Disk 1, default window)&lt;br /&gt;
* X11: also on OS Disk 1, but you need to scroll down and find the Optional Installs installer and select X11 under Applications. See [http://porting.openoffice.org/mac/faq/installing/X11.html step-by-step instructions].&lt;br /&gt;
* X11SDK - from OS Disk 1, Xcode Tools/Packages/X11SDK.pkg&lt;br /&gt;
* Subversion.  Installation [http://downloads.open.collab.net/binaries.html options here].  Get the latest svn version for compatibility with the server and be sure your client includes SSL (so it can access https repositories).&lt;br /&gt;
&lt;br /&gt;
Remember to run getbuildtest from an xterm so the tests can access the X server.&lt;br /&gt;
&lt;br /&gt;
== configuration options ==&lt;br /&gt;
&lt;br /&gt;
The file Slicer3/slicer_variables.tcl includes configuration options for which support libraries to use.  You may want to change thes for testing or to get access to new functionality.  &lt;br /&gt;
&lt;br /&gt;
 set ::SLICER_TAG &amp;quot;http://www.na-mic.org/svn/Slicer3/trunk&amp;quot;&lt;br /&gt;
 set ::CMAKE_TAG &amp;quot;CMake-2-4-2&amp;quot;&lt;br /&gt;
 set ::TEEM_TAG &amp;quot;Teem-1-9-0-patches&amp;quot;&lt;br /&gt;
 set ::KWWidgets_TAG &amp;quot;HEAD&amp;quot;&lt;br /&gt;
 set ::VTK_TAG &amp;quot;VTK-5-0&amp;quot;&lt;br /&gt;
 set ::ITK_TAG ITK-3-0&lt;br /&gt;
 set ::TCL_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::TK_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::ITCL_TAG &amp;quot;itcl-3-2-1&amp;quot;&lt;br /&gt;
 set ::IWIDGETS_TAG &amp;quot;iwidgets-4-0-1&amp;quot;&lt;br /&gt;
 set ::BLT_TAG &amp;quot;blt24z&amp;quot;&lt;br /&gt;
 set ::SANDBOX_TAG &amp;quot;http://svn.na-mic.org/svn/NAMICSandBox/branches/Slicer-2-6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For example, you may want a build against the ITK cvs head.  Change the flag value and then run &lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --update &lt;br /&gt;
&lt;br /&gt;
which will get the version from cvs, build it, and rebuild slicer3.  Depending on how radically different the versions you build are, you may need to use --clean.&lt;br /&gt;
&lt;br /&gt;
Another useful option is to change your build type to include support debugging.&lt;br /&gt;
&lt;br /&gt;
 set ::VTK_BUILD_TYPE &amp;quot;RelWithDebInfo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
options are Debug, Release, or RelWithDebInfo.  RelWithDebInfo is a compromise between speed and debuggability.  If you are tracking down a tough C++ bug you will get better information in Debug mode.  After changing this flag, you should run&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --clean&lt;br /&gt;
&lt;br /&gt;
to create a completely new build.&lt;br /&gt;
&lt;br /&gt;
= Manual checkout/build of Slicer3 and support libraries: =&lt;br /&gt;
&lt;br /&gt;
== Prerequisite software ==&lt;br /&gt;
&lt;br /&gt;
You need to get and build the following packages if you aren't using the getbuildtest script:&lt;br /&gt;
&lt;br /&gt;
# [http://www.cmake.org CMake (2.4.1 or later)]&lt;br /&gt;
# [http://www.tcl.tk Tcl/Tk (8.4 or later)]&lt;br /&gt;
# [http://sourceforge.net/projects/incrtcl/ incrTcl (3.2.1)]&lt;br /&gt;
# [http://www.vtk.org VTK 5.0]&lt;br /&gt;
# [http://www.itk.org ITK 3.4]&lt;br /&gt;
# [http://www.kwwidgets.org KWWidgets Slicer-3-0 tag]&lt;br /&gt;
# [http://teem.sf.net Teem (1.9.0)]&lt;br /&gt;
&lt;br /&gt;
== Build Steps ==&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
 $ svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.vtk.org:/cvsroot/VTK co VTK -r VTK-5-0&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.itk.org:/cvsroot/Insight co Insight -r ITK-3-4&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.kwwidgets.org:/cvsroot/KWWidgets co KWWidgets -r Slicer-3-0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure and build ITK ===&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
=== Configure and build VTK ===&lt;br /&gt;
&lt;br /&gt;
* All systems:&lt;br /&gt;
** BUILD_SHARED_LIBS ON&lt;br /&gt;
** CMAKE_SKIP_RPATH ON&lt;br /&gt;
** VTK_WRAP_TCL ON&lt;br /&gt;
** VTK_DEBUG_LEAKS ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX specific (Make sure to install [http://www.apple.com/downloads/macosx/apple/x11formacosx.html X11]):&lt;br /&gt;
** VTK_USE_CARBON OFF&lt;br /&gt;
** VTK_USE_X ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note, those options '''should not''' appear, since they disapear since VTK5:&lt;br /&gt;
** VTK_USE_HYBRID ON&lt;br /&gt;
** VTK_USE_PATENTED ON&lt;br /&gt;
&lt;br /&gt;
* Make sure that the TCL and TK path are set properly&lt;br /&gt;
** TCL_* and TK_*&lt;br /&gt;
&lt;br /&gt;
=== Configure and build KWWidgets ===&lt;br /&gt;
&lt;br /&gt;
* You need to specify where your VTK build tree is.&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
== Build and Run Slicer3 ==&lt;br /&gt;
&lt;br /&gt;
=== Manually ===&lt;br /&gt;
&lt;br /&gt;
# Check out and build slicer3 (e.g. on linux)&lt;br /&gt;
&lt;br /&gt;
  svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
  mkdir Slicer3-build&lt;br /&gt;
  cd Slicer3-build&lt;br /&gt;
  ccmake ../Slicer3&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Again make sure to turn:&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Start slicer with the Slicer3 executable in your build directory.&lt;br /&gt;
&lt;br /&gt;
= SBuild =&lt;br /&gt;
SBuild is a new, experimental build system for Slicer.  It is based on getbuildtest2.tcl and genlib2.tcl, but rather than try to hid the gory details of building Slicer, SBuild attempts to expose a reasonable amount to the developer.  The interface should be reasonably intuitive, but a brief walk through is useful.  Click on the thumbnails for larger views.  SBuild allows you to update and build just the portions of Slicer that you may require or want to build.  Any of the required libraries may be specified to be build by SBuild, or to use an existing build.  Existing libraries are not controlled by SBuild.&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
{|&lt;br /&gt;
|+ SBuild screenshots&lt;br /&gt;
|-&lt;br /&gt;
| [[image:SBuild-MainWindow.png|center|250px|Main SBuild Window]] || [[image:SBuild-RequiredWindow.png|center|250px|Required libraries]] &lt;br /&gt;
||[[image:SBuild-AllExternal.png|center|250px|SBuild configured for all external builds]]  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Configure the &amp;quot;Slicer Source Directory&amp;quot; by clicking on the &amp;quot;...&amp;quot; button, or typing a path to where you would like Slicer source saved&lt;br /&gt;
## Configure the &amp;quot;Slicer Build Directory&amp;quot; and &amp;quot;Slicer Library Directory&amp;quot; in the same fashion&lt;br /&gt;
# (Optional:) Switch to the &amp;quot;Required Libs&amp;quot; tab&lt;br /&gt;
## Configure any of the external builds that you may have by clicking on the checkbox next to the &amp;quot;Use external build&amp;quot; label&lt;br /&gt;
## When prompted, find the external build directory&lt;br /&gt;
## Note: SBuild looks for specific files inside the directory you choose, if not found you will be warned.  In this case, choose better.&lt;br /&gt;
## Any of the required libraries may be Updated, Configured, or Built from this tab.&lt;br /&gt;
# To build everything, go to the Slicer3 tab and click &amp;quot;All&amp;quot;&lt;br /&gt;
## Output of the build process should fly by.&lt;br /&gt;
&lt;br /&gt;
== Binary downloads ==&lt;br /&gt;
&lt;br /&gt;
* [[Media:SBuild-darwin-ppc.gz| Mac OSX PPC (must use X11)]]&lt;br /&gt;
* [[Media:SBuild-darwin-x86.gz| Mac OSX x86 (must use X11)]]&lt;br /&gt;
* [[Media:SBuild-linux-x86.gz| Linux x86]]&lt;br /&gt;
* [[Media:SBuild-linux-x86_64.gz| Linux x86-64]]&lt;br /&gt;
* [[Media:SBuild-win32.exe.gz| Win32 (can't upload this one for some reason...)]]&lt;br /&gt;
&lt;br /&gt;
== Adding new Libraries to SBuild ==&lt;br /&gt;
The default package of SBuild contains the minimal number of required libraries to build Slicer.  Currently no optional libraries are installed.  The procedure for providing an SBuild plugin is modestly complicated, but several good examples exist.  All plugins go in SBuild.vfs/lib/SBuildPlugins.  As an example, let's create a plugin called Mythical, contained in SBuild.vfs/lib/SBuildPlugins/Mythical.tcl.&lt;br /&gt;
&lt;br /&gt;
In the Slicer3/Scripts/SBuild directory, run '''./bootstrap run''' to run SBuild, and '''./bootstrap build''' to build the Tcl Starkits.&lt;br /&gt;
&lt;br /&gt;
The first section of Mythical.tcl provides some housekeeping details:&lt;br /&gt;
&lt;br /&gt;
 package provide SBuildPlugins 1.0 &lt;br /&gt;
 &lt;br /&gt;
 lappend ::SBuild(Plugins) Mythical &lt;br /&gt;
 &lt;br /&gt;
 set ::Plugin(Mythical,Type) &amp;quot;optional&amp;quot;&lt;br /&gt;
 set ::Plugin(Mythical,Order) 100&lt;br /&gt;
 set ::Plugin(Mythical,CanUseUserBuild) 1&lt;br /&gt;
&lt;br /&gt;
The Mythical plugin must append itself to ::SBuild(Plugins) to register, and declares itself optional, builds in order 100, and can use user provided builds.&lt;br /&gt;
&lt;br /&gt;
Each plugin must provide several Tcl procs to do various functions.  The naming convention is PluginName-Function-Architecture.  In this example PluginName is Mythical.  SBuild first looks for the -Architecture variant, and failing, calls the PluginName-Function.  For instance, Mythical-Update is the Tcl proc that updates the source for Mythical, while Mythical-Build-Windows is a specialization for Windows.  The important functions are: Update, Configure, Build, and ConfigureSlicer.  The ConfigureSlicer function may append a CMake argument to be used when Slicer is configured.  If external packages are allowed, the ConfigureExternal function is called.  ConfigureExternal usually looks for libraries and sets a LibPath to be used to configure Slicer.  Examples of these functions are shown below.&lt;br /&gt;
&lt;br /&gt;
 # Here is where we would add lines to the main Slicer3 configuration&lt;br /&gt;
 proc Mythical-Setup {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we setup for an external build&lt;br /&gt;
 proc Mythical-ConfigureExternal {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   set SBuild(Mythical,LibPath) [file dirname [FindFile $::SBuild(Mythical,ExternalBuildPath) [list libMythicalCommon* MythicalCommon*.lib MythicalCommon*.dll]]]&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Add a line to Slicer's CMake command&lt;br /&gt;
 proc Mythical-ConfigureSlicer {} {&lt;br /&gt;
   global Plugin SBuild Slicer&lt;br /&gt;
   set dir [file join $SBuild(SlicerLibDir) Insight-build]&lt;br /&gt;
   if { $SBuild(Mythical,UseExternalBuild) } {&lt;br /&gt;
     set dir $SBuild(Mythical,ExternalBuildPath)&lt;br /&gt;
   }&lt;br /&gt;
   Debug &amp;quot;setting Mythical_DIR to $dir&amp;quot;&lt;br /&gt;
   lappend Slicer(CMakeArguments) -DMythical_DIR:FILEPATH=$dir&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we update Mythical?&lt;br /&gt;
 proc Mythical-Update {} {&lt;br /&gt;
   Debug &amp;quot;Checking out Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Insight&lt;br /&gt;
   ExecuteCommand $SBuild(SVNCommand) co http://www.mythical.org/svn/Mythical/trunk Mythical&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Configure to build&lt;br /&gt;
 proc Mythical-Configure {} {&lt;br /&gt;
   Debug &amp;quot;Configure Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Mythical-build&lt;br /&gt;
   cd Mythical-build&lt;br /&gt;
   ExecuteCommand $SBuild(CMake) \&lt;br /&gt;
     -G$SBuild(Generator) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER:STRING=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER_FULLPATH:FILEPATH=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DBUILD_SHARED_LIBS:BOOL=ON \&lt;br /&gt;
     -DCMAKE_SKIP_RPATH:BOOL=ON \&lt;br /&gt;
     -DBUILD_EXAMPLES:BOOL=OFF \&lt;br /&gt;
     -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
     -DCMAKE_BUILD_TYPE:STRING=$::SBuild(BuildType) \&lt;br /&gt;
     -DCMAKE_CXX_FLAGS_DEBUG:STRING=$::SBuild(CMakeCXXFlagsDebug) \&lt;br /&gt;
     ../Insight&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on windows?&lt;br /&gt;
 proc Mythical-Build-Windows {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   ExecuteCommand $SBuild(Make) Mythical.SLN /build  $SBuild(BuildType)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on other Makefile-based systems?&lt;br /&gt;
 proc Mythical-Build {} {&lt;br /&gt;
   Debug &amp;quot;Building Mythical&amp;quot;&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   eval ExecuteCommand $SBuild(Make) $SBuild(ParallelMake)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Clean up Mythical (nothing for the moment).&lt;br /&gt;
 proc Mythical-Clean {} {&lt;br /&gt;
   Debug &amp;quot;Cleaning Mythical&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* http://www.na-mic.org/Wiki/index.php/Slicer3&lt;br /&gt;
* http://www.na-mic.org/websvn/listing.php?repname=Slicer3&lt;br /&gt;
* [[Slicer3::Eclipse | Howto integrate Slicer3 into Eclipse]]&lt;br /&gt;
== Information on Free Microsoft C++ Compiler on Windows ==&lt;br /&gt;
&lt;br /&gt;
Be sure to follow '''all''' the steps on Microsoft link. Yes it means you need to download the compiler '''and''' sdk.&lt;br /&gt;
&lt;br /&gt;
* http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22589</id>
		<title>Slicer3:Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22589"/>
		<updated>2008-03-04T04:59:18Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= All-in-one Script to checkout and build Slicer3 =&lt;br /&gt;
&lt;br /&gt;
To compile and build Slicer3, you need a set of development packages installed on your machine: &lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_linux pre-requisite material for Linux ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_windows pre-requisite material for Windows ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_Apple_Mac_OS_X pre-requisite material for Mac ]&lt;br /&gt;
&lt;br /&gt;
There's a script called getbuildtest.tcl that makes the support libraries (VTK, ITK, teem, etc) and also builds slicer and does a dashboard submission.  (Click [[Slicer3:getbuildtest | here for background on getbuildtest]] and the experimental getbuildtest2 version).&lt;br /&gt;
&lt;br /&gt;
Just do the following two commands (see [[Slicer3:Build_Instructions#getbuildtest_on_windows|for windows users]] below):&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
   svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 &lt;br /&gt;
   ./Slicer3/Scripts/getbuildtest.tcl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Note: that a Slicer3-lib and Slicer3-build directory will be created for you. This is meant to be used to set up new machines and to run nightly testing of the full builds.&lt;br /&gt;
&lt;br /&gt;
To run (all platforms):&lt;br /&gt;
&lt;br /&gt;
 ./Slicer3-build/Slicer3&lt;br /&gt;
&lt;br /&gt;
Note: the whole build environment takes about 2G of disk space.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
Note also that getbuildtest will do an Experimental submission to the [http://www.na-mic.org/Slicer3/Dashboard/ Slicer3 dashboard]. If you want to use getbuildtest without submitting to the dashboard, you can set the test type to nothing with&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl -t &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Other options for the -t (--test-type) option are Nightly or Continuous (or any of the [http://www.cmake.org/Wiki/CMake_Testing_With_CTest CTest] options).&lt;br /&gt;
&lt;br /&gt;
== What does getbuildtest.tcl do? ==&lt;br /&gt;
&lt;br /&gt;
This script just automates the steps needed to build slicer.  What you end up with is a set of source and build directories that can either be further manipulated with getbuildtest or can be worked with normally.  That is, on windows you will have solution files that you can load in visual studio for debugging and further development.&lt;br /&gt;
&lt;br /&gt;
Specifically, getbuildtest does the following steps:&lt;br /&gt;
&lt;br /&gt;
* Refreshes Slicer3 svn&lt;br /&gt;
* Runs Scripts/genlib.tcl which does the following for each of the support libraries&lt;br /&gt;
** does a cvs/svn checkout/update&lt;br /&gt;
** runs cmake with the correct settings for use with Slicer3&lt;br /&gt;
** runs make (or developer studio) to build the libraries&lt;br /&gt;
* Runs cmake on Slicer3&lt;br /&gt;
* Builds Slicer3&lt;br /&gt;
* Runs ctest on Slicer3&lt;br /&gt;
* (optionally) Runs CPack on Slicer3&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
  usage: getbuildtest [options] [target]&lt;br /&gt;
    [target] is determined automatically if not specified&lt;br /&gt;
    [options] is one of the following:&lt;br /&gt;
     --help : prints this message and exits&lt;br /&gt;
     --clean : delete lib and build directories first&lt;br /&gt;
     -t --test-type : CTest test target&lt;br /&gt;
     --release : compile with optimization flags&lt;br /&gt;
     --update : does a cvs/svn update on each lib&lt;br /&gt;
     --pack : builds a distribution package (cpack)&lt;br /&gt;
&lt;br /&gt;
== Errors from getbuildtest ==&lt;br /&gt;
&lt;br /&gt;
You will need to have your firewall configured to allow access to na-mic.org for cvs access through port 2401. Also you need 8081 for submitting to the dashboard.&lt;br /&gt;
&lt;br /&gt;
Other errors might mean you don't have all the build tools (see next section).&lt;br /&gt;
&lt;br /&gt;
If you want to generate a log of the build process, you can use a command like the following:&lt;br /&gt;
&lt;br /&gt;
 # for csh/tcsh:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl |&amp;amp; tee build.log&lt;br /&gt;
or&lt;br /&gt;
 # for sh/bash:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl 2&amp;gt;&amp;amp;1 | tee build.log&lt;br /&gt;
&lt;br /&gt;
== Updating Your getbuildtest Build ==&lt;br /&gt;
&lt;br /&gt;
There are a few options:&lt;br /&gt;
&lt;br /&gt;
* you can re-run getbuildtest and it will update slicer3 and rebuild (just slicer3)&lt;br /&gt;
* you can add the --update option and all the libs will get a cvs/svn update and will rebuild if needed (good for tracking the development head of VTK/ITK/KWWidgets etc).&lt;br /&gt;
* you can just 'svn update' in the Slicer3 directory and then do 'make' in the Slicer3-build to get just the latest Slicer3 code.&lt;br /&gt;
&lt;br /&gt;
The following command for unix machines will update, build, and launch the latest Slicer3:&lt;br /&gt;
&lt;br /&gt;
 svn update &amp;amp;&amp;amp; (cd ../Slicer3-build; make &amp;amp;&amp;amp; ./bin/Slicer3)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on linux ==&lt;br /&gt;
&lt;br /&gt;
To compile slicer and do development, be sure you have a complete set of development packages installed on your machine.  The exact packages vary by distribution, but include:&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-c++&lt;br /&gt;
* libX11 &lt;br /&gt;
* libX11-devel (libX11-dev  on Ubuntu 7.04)&lt;br /&gt;
* libXt-devel (libXt-dev on Ubuntu)&lt;br /&gt;
* opengl/mesa (libgl1-mesa-dev on Ubuntu)&lt;br /&gt;
&lt;br /&gt;
Ubuntu one line install:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install subversion cvs tcl8.4 gcc g++ libX11-dev libXt-dev libxext-dev libgl1-mesa-dev libncurses5-dev tcsh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, be sure you have OpenGL and the GLX extension to X working.  To check the installation, it is usually enough to confirm that the command &amp;lt;pre&amp;gt;glxgears&amp;lt;/pre&amp;gt; runs with no errors.&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on windows ==&lt;br /&gt;
&lt;br /&gt;
The script should work fine on a properly configured windows environment. Current requirements are:&lt;br /&gt;
&lt;br /&gt;
* Developer Studio 8 Visual C++ Express which is free from Microsoft - be sure to install the Platform SDK and follow the ridiculous manual steps to set up the paths [[Slicer3:Build_Instructions#Information_on_Free_Microsoft_C.2B.2B_Compiler_on_Windows|see below]].&lt;br /&gt;
* Developer Studio 9 Visual C++ Express [[Slicer:Build_Instructions:MSVS9]]&lt;br /&gt;
** Other releases of visual studio also work (7 and 7.1)&lt;br /&gt;
** If they are installed in the default locations in &amp;quot;c:/Program Files&amp;quot; they will be detected by the build script automatically (you need to edit slicer_variables.tcl to point to the installation).&lt;br /&gt;
* [http://www.cygwin.com Cygwin] with the following packages&lt;br /&gt;
** tcltk&lt;br /&gt;
** svn&lt;br /&gt;
** cvs&lt;br /&gt;
** unzip&lt;br /&gt;
** curl&lt;br /&gt;
* With Developers Studio and cygwin installed, you only need to do the svn checkout and getbuildtest script to get a fully working Slicer3 plus all the tools you need to develop new code.&lt;br /&gt;
&lt;br /&gt;
Note: CMake and VTK will not work on a FAT formatted disk (use NTFS).&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on Apple Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
For Mac OS 10.4.10 install the following from the OS disks (not installed by default on new machines):&lt;br /&gt;
* Xcode Tools (OS Disk 1, default window)&lt;br /&gt;
* X11: also on OS Disk 1, but you need to scroll down and find the Optional Installs installer and select X11 under Applications. See [http://porting.openoffice.org/mac/faq/installing/X11.html step-by-step instructions].&lt;br /&gt;
* X11SDK - from OS Disk 1, Xcode Tools/Packages/X11SDK.pkg&lt;br /&gt;
* Subversion.  Installation [http://downloads.open.collab.net/binaries.html options here].  Get the latest svn version for compatibility with the server and be sure your client includes SSL (so it can access https repositories).&lt;br /&gt;
&lt;br /&gt;
Remember to run getbuildtest from an xterm so the tests can access the X server.&lt;br /&gt;
&lt;br /&gt;
== configuration options ==&lt;br /&gt;
&lt;br /&gt;
The file Slicer3/slicer_variables.tcl includes configuration options for which support libraries to use.  You may want to change thes for testing or to get access to new functionality.  &lt;br /&gt;
&lt;br /&gt;
 set ::SLICER_TAG &amp;quot;http://www.na-mic.org/svn/Slicer3/trunk&amp;quot;&lt;br /&gt;
 set ::CMAKE_TAG &amp;quot;CMake-2-4-2&amp;quot;&lt;br /&gt;
 set ::TEEM_TAG &amp;quot;Teem-1-9-0-patches&amp;quot;&lt;br /&gt;
 set ::KWWidgets_TAG &amp;quot;HEAD&amp;quot;&lt;br /&gt;
 set ::VTK_TAG &amp;quot;VTK-5-0&amp;quot;&lt;br /&gt;
 set ::ITK_TAG ITK-3-0&lt;br /&gt;
 set ::TCL_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::TK_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::ITCL_TAG &amp;quot;itcl-3-2-1&amp;quot;&lt;br /&gt;
 set ::IWIDGETS_TAG &amp;quot;iwidgets-4-0-1&amp;quot;&lt;br /&gt;
 set ::BLT_TAG &amp;quot;blt24z&amp;quot;&lt;br /&gt;
 set ::SANDBOX_TAG &amp;quot;http://svn.na-mic.org/svn/NAMICSandBox/branches/Slicer-2-6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For example, you may want a build against the ITK cvs head.  Change the flag value and then run &lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --update &lt;br /&gt;
&lt;br /&gt;
which will get the version from cvs, build it, and rebuild slicer3.  Depending on how radically different the versions you build are, you may need to use --clean.&lt;br /&gt;
&lt;br /&gt;
Another useful option is to change your build type to include support debugging.&lt;br /&gt;
&lt;br /&gt;
 set ::VTK_BUILD_TYPE &amp;quot;RelWithDebInfo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
options are Debug, Release, or RelWithDebInfo.  RelWithDebInfo is a compromise between speed and debuggability.  If you are tracking down a tough C++ bug you will get better information in Debug mode.  After changing this flag, you should run&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --clean&lt;br /&gt;
&lt;br /&gt;
to create a completely new build.&lt;br /&gt;
&lt;br /&gt;
= Manual checkout/build of Slicer3 and support libraries: =&lt;br /&gt;
&lt;br /&gt;
== Prerequisite software ==&lt;br /&gt;
&lt;br /&gt;
You need to get and build the following packages if you aren't using the getbuildtest script:&lt;br /&gt;
&lt;br /&gt;
# [http://www.cmake.org CMake (2.4.1 or later)]&lt;br /&gt;
# [http://www.tcl.tk Tcl/Tk (8.4 or later)]&lt;br /&gt;
# [http://sourceforge.net/projects/incrtcl/ incrTcl (3.2.1)]&lt;br /&gt;
# [http://www.vtk.org VTK 5.0]&lt;br /&gt;
# [http://www.itk.org ITK 3.4]&lt;br /&gt;
# [http://www.kwwidgets.org KWWidgets Slicer-3-0 tag]&lt;br /&gt;
# [http://teem.sf.net Teem (1.9.0)]&lt;br /&gt;
&lt;br /&gt;
== Build Steps ==&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
 $ svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.vtk.org:/cvsroot/VTK co VTK -r VTK-5-0&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.itk.org:/cvsroot/Insight co Insight -r ITK-3-4&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.kwwidgets.org:/cvsroot/KWWidgets co KWWidgets -r Slicer-3-0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure and build ITK ===&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
=== Configure and build VTK ===&lt;br /&gt;
&lt;br /&gt;
* All systems:&lt;br /&gt;
** BUILD_SHARED_LIBS ON&lt;br /&gt;
** CMAKE_SKIP_RPATH ON&lt;br /&gt;
** VTK_WRAP_TCL ON&lt;br /&gt;
** VTK_DEBUG_LEAKS ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX specific (Make sure to install [http://www.apple.com/downloads/macosx/apple/x11formacosx.html X11]):&lt;br /&gt;
** VTK_USE_CARBON OFF&lt;br /&gt;
** VTK_USE_X ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note, those options '''should not''' appear, since they disapear since VTK5:&lt;br /&gt;
** VTK_USE_HYBRID ON&lt;br /&gt;
** VTK_USE_PATENTED ON&lt;br /&gt;
&lt;br /&gt;
* Make sure that the TCL and TK path are set properly&lt;br /&gt;
** TCL_* and TK_*&lt;br /&gt;
&lt;br /&gt;
=== Configure and build KWWidgets ===&lt;br /&gt;
&lt;br /&gt;
* You need to specify where your VTK build tree is.&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
== Build and Run Slicer3 ==&lt;br /&gt;
&lt;br /&gt;
=== Manually ===&lt;br /&gt;
&lt;br /&gt;
# Check out and build slicer3 (e.g. on linux)&lt;br /&gt;
&lt;br /&gt;
  svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
  mkdir Slicer3-build&lt;br /&gt;
  cd Slicer3-build&lt;br /&gt;
  ccmake ../Slicer3&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Again make sure to turn:&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Start slicer with the Slicer3 executable in your build directory.&lt;br /&gt;
&lt;br /&gt;
= SBuild =&lt;br /&gt;
SBuild is a new, experimental build system for Slicer.  It is based on getbuildtest2.tcl and genlib2.tcl, but rather than try to hid the gory details of building Slicer, SBuild attempts to expose a reasonable amount to the developer.  The interface should be reasonably intuitive, but a brief walk through is useful.  Click on the thumbnails for larger views.  SBuild allows you to update and build just the portions of Slicer that you may require or want to build.  Any of the required libraries may be specified to be build by SBuild, or to use an existing build.  Existing libraries are not controlled by SBuild.&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
{|&lt;br /&gt;
|+ SBuild screenshots&lt;br /&gt;
|-&lt;br /&gt;
| [[image:SBuild-MainWindow.png|center|250px|Main SBuild Window]] || [[image:SBuild-RequiredWindow.png|center|250px|Required libraries]] &lt;br /&gt;
||[[image:SBuild-AllExternal.png|center|250px|SBuild configured for all external builds]]  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Configure the &amp;quot;Slicer Source Directory&amp;quot; by clicking on the &amp;quot;...&amp;quot; button, or typing a path to where you would like Slicer source saved&lt;br /&gt;
## Configure the &amp;quot;Slicer Build Directory&amp;quot; and &amp;quot;Slicer Library Directory&amp;quot; in the same fashion&lt;br /&gt;
# (Optional:) Switch to the &amp;quot;Required Libs&amp;quot; tab&lt;br /&gt;
## Configure any of the external builds that you may have by clicking on the checkbox next to the &amp;quot;Use external build&amp;quot; label&lt;br /&gt;
## When prompted, find the external build directory&lt;br /&gt;
## Note: SBuild looks for specific files inside the directory you choose, if not found you will be warned.  In this case, choose better.&lt;br /&gt;
## Any of the required libraries may be Updated, Configured, or Built from this tab.&lt;br /&gt;
# To build everything, go to the Slicer3 tab and click &amp;quot;All&amp;quot;&lt;br /&gt;
## Output of the build process should fly by.&lt;br /&gt;
&lt;br /&gt;
== Binary downloads ==&lt;br /&gt;
&lt;br /&gt;
* [[Media:SBuild-darwin-ppc.gz| Mac OSX PPC (must use X11)]]&lt;br /&gt;
* [[Media:SBuild-darwin-x86.gz| Mac OSX x86 (must use X11)]]&lt;br /&gt;
* [[Media:SBuild-linux-x86.gz| Linux x86]]&lt;br /&gt;
* [[Media:SBuild-linux-x86_64.gz| Linux x86-64]]&lt;br /&gt;
* [[Media:SBuild-win32.exe.gz| Win32]]&lt;br /&gt;
&lt;br /&gt;
== Adding new Libraries to SBuild ==&lt;br /&gt;
The default package of SBuild contains the minimal number of required libraries to build Slicer.  Currently no optional libraries are installed.  The procedure for providing an SBuild plugin is modestly complicated, but several good examples exist.  All plugins go in SBuild.vfs/lib/SBuildPlugins.  As an example, let's create a plugin called Mythical, contained in SBuild.vfs/lib/SBuildPlugins/Mythical.tcl.&lt;br /&gt;
&lt;br /&gt;
In the Slicer3/Scripts/SBuild directory, run '''./bootstrap run''' to run SBuild, and '''./bootstrap build''' to build the Tcl Starkits.&lt;br /&gt;
&lt;br /&gt;
The first section of Mythical.tcl provides some housekeeping details:&lt;br /&gt;
&lt;br /&gt;
 package provide SBuildPlugins 1.0 &lt;br /&gt;
 &lt;br /&gt;
 lappend ::SBuild(Plugins) Mythical &lt;br /&gt;
 &lt;br /&gt;
 set ::Plugin(Mythical,Type) &amp;quot;optional&amp;quot;&lt;br /&gt;
 set ::Plugin(Mythical,Order) 100&lt;br /&gt;
 set ::Plugin(Mythical,CanUseUserBuild) 1&lt;br /&gt;
&lt;br /&gt;
The Mythical plugin must append itself to ::SBuild(Plugins) to register, and declares itself optional, builds in order 100, and can use user provided builds.&lt;br /&gt;
&lt;br /&gt;
Each plugin must provide several Tcl procs to do various functions.  The naming convention is PluginName-Function-Architecture.  In this example PluginName is Mythical.  SBuild first looks for the -Architecture variant, and failing, calls the PluginName-Function.  For instance, Mythical-Update is the Tcl proc that updates the source for Mythical, while Mythical-Build-Windows is a specialization for Windows.  The important functions are: Update, Configure, Build, and ConfigureSlicer.  The ConfigureSlicer function may append a CMake argument to be used when Slicer is configured.  If external packages are allowed, the ConfigureExternal function is called.  ConfigureExternal usually looks for libraries and sets a LibPath to be used to configure Slicer.  Examples of these functions are shown below.&lt;br /&gt;
&lt;br /&gt;
 # Here is where we would add lines to the main Slicer3 configuration&lt;br /&gt;
 proc Mythical-Setup {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we setup for an external build&lt;br /&gt;
 proc Mythical-ConfigureExternal {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   set SBuild(Mythical,LibPath) [file dirname [FindFile $::SBuild(Mythical,ExternalBuildPath) [list libMythicalCommon* MythicalCommon*.lib MythicalCommon*.dll]]]&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Add a line to Slicer's CMake command&lt;br /&gt;
 proc Mythical-ConfigureSlicer {} {&lt;br /&gt;
   global Plugin SBuild Slicer&lt;br /&gt;
   set dir [file join $SBuild(SlicerLibDir) Insight-build]&lt;br /&gt;
   if { $SBuild(Mythical,UseExternalBuild) } {&lt;br /&gt;
     set dir $SBuild(Mythical,ExternalBuildPath)&lt;br /&gt;
   }&lt;br /&gt;
   Debug &amp;quot;setting Mythical_DIR to $dir&amp;quot;&lt;br /&gt;
   lappend Slicer(CMakeArguments) -DMythical_DIR:FILEPATH=$dir&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we update Mythical?&lt;br /&gt;
 proc Mythical-Update {} {&lt;br /&gt;
   Debug &amp;quot;Checking out Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Insight&lt;br /&gt;
   ExecuteCommand $SBuild(SVNCommand) co http://www.mythical.org/svn/Mythical/trunk Mythical&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Configure to build&lt;br /&gt;
 proc Mythical-Configure {} {&lt;br /&gt;
   Debug &amp;quot;Configure Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Mythical-build&lt;br /&gt;
   cd Mythical-build&lt;br /&gt;
   ExecuteCommand $SBuild(CMake) \&lt;br /&gt;
     -G$SBuild(Generator) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER:STRING=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER_FULLPATH:FILEPATH=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DBUILD_SHARED_LIBS:BOOL=ON \&lt;br /&gt;
     -DCMAKE_SKIP_RPATH:BOOL=ON \&lt;br /&gt;
     -DBUILD_EXAMPLES:BOOL=OFF \&lt;br /&gt;
     -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
     -DCMAKE_BUILD_TYPE:STRING=$::SBuild(BuildType) \&lt;br /&gt;
     -DCMAKE_CXX_FLAGS_DEBUG:STRING=$::SBuild(CMakeCXXFlagsDebug) \&lt;br /&gt;
     ../Insight&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on windows?&lt;br /&gt;
 proc Mythical-Build-Windows {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   ExecuteCommand $SBuild(Make) Mythical.SLN /build  $SBuild(BuildType)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on other Makefile-based systems?&lt;br /&gt;
 proc Mythical-Build {} {&lt;br /&gt;
   Debug &amp;quot;Building Mythical&amp;quot;&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   eval ExecuteCommand $SBuild(Make) $SBuild(ParallelMake)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Clean up Mythical (nothing for the moment).&lt;br /&gt;
 proc Mythical-Clean {} {&lt;br /&gt;
   Debug &amp;quot;Cleaning Mythical&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* http://www.na-mic.org/Wiki/index.php/Slicer3&lt;br /&gt;
* http://www.na-mic.org/websvn/listing.php?repname=Slicer3&lt;br /&gt;
* [[Slicer3::Eclipse | Howto integrate Slicer3 into Eclipse]]&lt;br /&gt;
== Information on Free Microsoft C++ Compiler on Windows ==&lt;br /&gt;
&lt;br /&gt;
Be sure to follow '''all''' the steps on Microsoft link. Yes it means you need to download the compiler '''and''' sdk.&lt;br /&gt;
&lt;br /&gt;
* http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22586</id>
		<title>Slicer3:Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22586"/>
		<updated>2008-03-04T04:48:25Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Binary downloads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= All-in-one Script to checkout and build Slicer3 =&lt;br /&gt;
&lt;br /&gt;
To compile and build Slicer3, you need a set of development packages installed on your machine: &lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_linux pre-requisite material for Linux ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_windows pre-requisite material for Windows ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_Apple_Mac_OS_X pre-requisite material for Mac ]&lt;br /&gt;
&lt;br /&gt;
There's a script called getbuildtest.tcl that makes the support libraries (VTK, ITK, teem, etc) and also builds slicer and does a dashboard submission.  (Click [[Slicer3:getbuildtest | here for background on getbuildtest]] and the experimental getbuildtest2 version).&lt;br /&gt;
&lt;br /&gt;
Just do the following two commands (see [[Slicer3:Build_Instructions#getbuildtest_on_windows|for windows users]] below):&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
   svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 &lt;br /&gt;
   ./Slicer3/Scripts/getbuildtest.tcl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Note: that a Slicer3-lib and Slicer3-build directory will be created for you. This is meant to be used to set up new machines and to run nightly testing of the full builds.&lt;br /&gt;
&lt;br /&gt;
To run (all platforms):&lt;br /&gt;
&lt;br /&gt;
 ./Slicer3-build/Slicer3&lt;br /&gt;
&lt;br /&gt;
Note: the whole build environment takes about 2G of disk space.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
Note also that getbuildtest will do an Experimental submission to the [http://www.na-mic.org/Slicer3/Dashboard/ Slicer3 dashboard]. If you want to use getbuildtest without submitting to the dashboard, you can set the test type to nothing with&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl -t &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Other options for the -t (--test-type) option are Nightly or Continuous (or any of the [http://www.cmake.org/Wiki/CMake_Testing_With_CTest CTest] options).&lt;br /&gt;
&lt;br /&gt;
== What does getbuildtest.tcl do? ==&lt;br /&gt;
&lt;br /&gt;
This script just automates the steps needed to build slicer.  What you end up with is a set of source and build directories that can either be further manipulated with getbuildtest or can be worked with normally.  That is, on windows you will have solution files that you can load in visual studio for debugging and further development.&lt;br /&gt;
&lt;br /&gt;
Specifically, getbuildtest does the following steps:&lt;br /&gt;
&lt;br /&gt;
* Refreshes Slicer3 svn&lt;br /&gt;
* Runs Scripts/genlib.tcl which does the following for each of the support libraries&lt;br /&gt;
** does a cvs/svn checkout/update&lt;br /&gt;
** runs cmake with the correct settings for use with Slicer3&lt;br /&gt;
** runs make (or developer studio) to build the libraries&lt;br /&gt;
* Runs cmake on Slicer3&lt;br /&gt;
* Builds Slicer3&lt;br /&gt;
* Runs ctest on Slicer3&lt;br /&gt;
* (optionally) Runs CPack on Slicer3&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
  usage: getbuildtest [options] [target]&lt;br /&gt;
    [target] is determined automatically if not specified&lt;br /&gt;
    [options] is one of the following:&lt;br /&gt;
     --help : prints this message and exits&lt;br /&gt;
     --clean : delete lib and build directories first&lt;br /&gt;
     -t --test-type : CTest test target&lt;br /&gt;
     --release : compile with optimization flags&lt;br /&gt;
     --update : does a cvs/svn update on each lib&lt;br /&gt;
     --pack : builds a distribution package (cpack)&lt;br /&gt;
&lt;br /&gt;
== Errors from getbuildtest ==&lt;br /&gt;
&lt;br /&gt;
You will need to have your firewall configured to allow access to na-mic.org for cvs access through port 2401. Also you need 8081 for submitting to the dashboard.&lt;br /&gt;
&lt;br /&gt;
Other errors might mean you don't have all the build tools (see next section).&lt;br /&gt;
&lt;br /&gt;
If you want to generate a log of the build process, you can use a command like the following:&lt;br /&gt;
&lt;br /&gt;
 # for csh/tcsh:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl |&amp;amp; tee build.log&lt;br /&gt;
or&lt;br /&gt;
 # for sh/bash:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl 2&amp;gt;&amp;amp;1 | tee build.log&lt;br /&gt;
&lt;br /&gt;
== Updating Your getbuildtest Build ==&lt;br /&gt;
&lt;br /&gt;
There are a few options:&lt;br /&gt;
&lt;br /&gt;
* you can re-run getbuildtest and it will update slicer3 and rebuild (just slicer3)&lt;br /&gt;
* you can add the --update option and all the libs will get a cvs/svn update and will rebuild if needed (good for tracking the development head of VTK/ITK/KWWidgets etc).&lt;br /&gt;
* you can just 'svn update' in the Slicer3 directory and then do 'make' in the Slicer3-build to get just the latest Slicer3 code.&lt;br /&gt;
&lt;br /&gt;
The following command for unix machines will update, build, and launch the latest Slicer3:&lt;br /&gt;
&lt;br /&gt;
 svn update &amp;amp;&amp;amp; (cd ../Slicer3-build; make &amp;amp;&amp;amp; ./bin/Slicer3)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on linux ==&lt;br /&gt;
&lt;br /&gt;
To compile slicer and do development, be sure you have a complete set of development packages installed on your machine.  The exact packages vary by distribution, but include:&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-c++&lt;br /&gt;
* libX11 &lt;br /&gt;
* libX11-devel (libX11-dev  on Ubuntu 7.04)&lt;br /&gt;
* libXt-devel (libXt-dev on Ubuntu)&lt;br /&gt;
* opengl/mesa (libgl1-mesa-dev on Ubuntu)&lt;br /&gt;
&lt;br /&gt;
Ubuntu one line install:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install subversion cvs tcl8.4 gcc g++ libX11-dev libXt-dev libxext-dev libgl1-mesa-dev libncurses5-dev tcsh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, be sure you have OpenGL and the GLX extension to X working.  To check the installation, it is usually enough to confirm that the command &amp;lt;pre&amp;gt;glxgears&amp;lt;/pre&amp;gt; runs with no errors.&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on windows ==&lt;br /&gt;
&lt;br /&gt;
The script should work fine on a properly configured windows environment. Current requirements are:&lt;br /&gt;
&lt;br /&gt;
* Developer Studio 8 Visual C++ Express which is free from Microsoft - be sure to install the Platform SDK and follow the ridiculous manual steps to set up the paths [[Slicer3:Build_Instructions#Information_on_Free_Microsoft_C.2B.2B_Compiler_on_Windows|see below]].&lt;br /&gt;
* Developer Studio 9 Visual C++ Express [[Slicer:Build_Instructions:MSVS9]]&lt;br /&gt;
** Other releases of visual studio also work (7 and 7.1)&lt;br /&gt;
** If they are installed in the default locations in &amp;quot;c:/Program Files&amp;quot; they will be detected by the build script automatically (you need to edit slicer_variables.tcl to point to the installation).&lt;br /&gt;
* [http://www.cygwin.com Cygwin] with the following packages&lt;br /&gt;
** tcltk&lt;br /&gt;
** svn&lt;br /&gt;
** cvs&lt;br /&gt;
** unzip&lt;br /&gt;
** curl&lt;br /&gt;
* With Developers Studio and cygwin installed, you only need to do the svn checkout and getbuildtest script to get a fully working Slicer3 plus all the tools you need to develop new code.&lt;br /&gt;
&lt;br /&gt;
Note: CMake and VTK will not work on a FAT formatted disk (use NTFS).&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on Apple Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
For Mac OS 10.4.10 install the following from the OS disks (not installed by default on new machines):&lt;br /&gt;
* Xcode Tools (OS Disk 1, default window)&lt;br /&gt;
* X11: also on OS Disk 1, but you need to scroll down and find the Optional Installs installer and select X11 under Applications. See [http://porting.openoffice.org/mac/faq/installing/X11.html step-by-step instructions].&lt;br /&gt;
* X11SDK - from OS Disk 1, Xcode Tools/Packages/X11SDK.pkg&lt;br /&gt;
* Subversion.  Installation [http://downloads.open.collab.net/binaries.html options here].  Get the latest svn version for compatibility with the server and be sure your client includes SSL (so it can access https repositories).&lt;br /&gt;
&lt;br /&gt;
Remember to run getbuildtest from an xterm so the tests can access the X server.&lt;br /&gt;
&lt;br /&gt;
== configuration options ==&lt;br /&gt;
&lt;br /&gt;
The file Slicer3/slicer_variables.tcl includes configuration options for which support libraries to use.  You may want to change thes for testing or to get access to new functionality.  &lt;br /&gt;
&lt;br /&gt;
 set ::SLICER_TAG &amp;quot;http://www.na-mic.org/svn/Slicer3/trunk&amp;quot;&lt;br /&gt;
 set ::CMAKE_TAG &amp;quot;CMake-2-4-2&amp;quot;&lt;br /&gt;
 set ::TEEM_TAG &amp;quot;Teem-1-9-0-patches&amp;quot;&lt;br /&gt;
 set ::KWWidgets_TAG &amp;quot;HEAD&amp;quot;&lt;br /&gt;
 set ::VTK_TAG &amp;quot;VTK-5-0&amp;quot;&lt;br /&gt;
 set ::ITK_TAG ITK-3-0&lt;br /&gt;
 set ::TCL_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::TK_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::ITCL_TAG &amp;quot;itcl-3-2-1&amp;quot;&lt;br /&gt;
 set ::IWIDGETS_TAG &amp;quot;iwidgets-4-0-1&amp;quot;&lt;br /&gt;
 set ::BLT_TAG &amp;quot;blt24z&amp;quot;&lt;br /&gt;
 set ::SANDBOX_TAG &amp;quot;http://svn.na-mic.org/svn/NAMICSandBox/branches/Slicer-2-6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For example, you may want a build against the ITK cvs head.  Change the flag value and then run &lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --update &lt;br /&gt;
&lt;br /&gt;
which will get the version from cvs, build it, and rebuild slicer3.  Depending on how radically different the versions you build are, you may need to use --clean.&lt;br /&gt;
&lt;br /&gt;
Another useful option is to change your build type to include support debugging.&lt;br /&gt;
&lt;br /&gt;
 set ::VTK_BUILD_TYPE &amp;quot;RelWithDebInfo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
options are Debug, Release, or RelWithDebInfo.  RelWithDebInfo is a compromise between speed and debuggability.  If you are tracking down a tough C++ bug you will get better information in Debug mode.  After changing this flag, you should run&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --clean&lt;br /&gt;
&lt;br /&gt;
to create a completely new build.&lt;br /&gt;
&lt;br /&gt;
= Manual checkout/build of Slicer3 and support libraries: =&lt;br /&gt;
&lt;br /&gt;
== Prerequisite software ==&lt;br /&gt;
&lt;br /&gt;
You need to get and build the following packages if you aren't using the getbuildtest script:&lt;br /&gt;
&lt;br /&gt;
# [http://www.cmake.org CMake (2.4.1 or later)]&lt;br /&gt;
# [http://www.tcl.tk Tcl/Tk (8.4 or later)]&lt;br /&gt;
# [http://sourceforge.net/projects/incrtcl/ incrTcl (3.2.1)]&lt;br /&gt;
# [http://www.vtk.org VTK 5.0]&lt;br /&gt;
# [http://www.itk.org ITK 3.4]&lt;br /&gt;
# [http://www.kwwidgets.org KWWidgets Slicer-3-0 tag]&lt;br /&gt;
# [http://teem.sf.net Teem (1.9.0)]&lt;br /&gt;
&lt;br /&gt;
== Build Steps ==&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
 $ svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.vtk.org:/cvsroot/VTK co VTK -r VTK-5-0&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.itk.org:/cvsroot/Insight co Insight -r ITK-3-4&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.kwwidgets.org:/cvsroot/KWWidgets co KWWidgets -r Slicer-3-0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure and build ITK ===&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
=== Configure and build VTK ===&lt;br /&gt;
&lt;br /&gt;
* All systems:&lt;br /&gt;
** BUILD_SHARED_LIBS ON&lt;br /&gt;
** CMAKE_SKIP_RPATH ON&lt;br /&gt;
** VTK_WRAP_TCL ON&lt;br /&gt;
** VTK_DEBUG_LEAKS ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX specific (Make sure to install [http://www.apple.com/downloads/macosx/apple/x11formacosx.html X11]):&lt;br /&gt;
** VTK_USE_CARBON OFF&lt;br /&gt;
** VTK_USE_X ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note, those options '''should not''' appear, since they disapear since VTK5:&lt;br /&gt;
** VTK_USE_HYBRID ON&lt;br /&gt;
** VTK_USE_PATENTED ON&lt;br /&gt;
&lt;br /&gt;
* Make sure that the TCL and TK path are set properly&lt;br /&gt;
** TCL_* and TK_*&lt;br /&gt;
&lt;br /&gt;
=== Configure and build KWWidgets ===&lt;br /&gt;
&lt;br /&gt;
* You need to specify where your VTK build tree is.&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
== Build and Run Slicer3 ==&lt;br /&gt;
&lt;br /&gt;
=== Manually ===&lt;br /&gt;
&lt;br /&gt;
# Check out and build slicer3 (e.g. on linux)&lt;br /&gt;
&lt;br /&gt;
  svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
  mkdir Slicer3-build&lt;br /&gt;
  cd Slicer3-build&lt;br /&gt;
  ccmake ../Slicer3&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Again make sure to turn:&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Start slicer with the Slicer3 executable in your build directory.&lt;br /&gt;
&lt;br /&gt;
= SBuild =&lt;br /&gt;
SBuild is a new, experimental build system for Slicer.  It is based on getbuildtest2.tcl and genlib2.tcl, but rather than try to hid the gory details of building Slicer, SBuild attempts to expose a reasonable amount to the developer.  The interface should be reasonably intuitive, but a brief walk through is useful.  Click on the thumbnails for larger views.  SBuild allows you to update and build just the portions of Slicer that you may require or want to build.  Any of the required libraries may be specified to be build by SBuild, or to use an existing build.  Existing libraries are not controlled by SBuild.&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
{|&lt;br /&gt;
|+ SBuild screenshots&lt;br /&gt;
|-&lt;br /&gt;
| [[image:SBuild-MainWindow.png|center|250px|Main SBuild Window]] || [[image:SBuild-RequiredWindow.png|center|250px|Required libraries]] &lt;br /&gt;
||[[image:SBuild-AllExternal.png|center|250px|SBuild configured for all external builds]]  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Binary downloads ==&lt;br /&gt;
&lt;br /&gt;
* [[Media:SBuild-darwin-ppc.gz| Mac OSX PPC (must use X11)]]&lt;br /&gt;
* [[Media:SBuild-darwin-x86.gz| Mac OSX x86 (must use X11)]]&lt;br /&gt;
* [[Media:SBuild-linux-x86.gz| Linux x86]]&lt;br /&gt;
* [[Media:SBuild-linux-x86_64.gz| Linux x86-64]]&lt;br /&gt;
* [[Media:SBuild-win32.exe.gz| Win32]]&lt;br /&gt;
&lt;br /&gt;
== Adding new Libraries to SBuild ==&lt;br /&gt;
The default package of SBuild contains the minimal number of required libraries to build Slicer.  Currently no optional libraries are installed.  The procedure for providing an SBuild plugin is modestly complicated, but several good examples exist.  All plugins go in SBuild.vfs/lib/SBuildPlugins.  As an example, let's create a plugin called Mythical, contained in SBuild.vfs/lib/SBuildPlugins/Mythical.tcl.&lt;br /&gt;
&lt;br /&gt;
In the Slicer3/Scripts/SBuild directory, run '''./bootstrap run''' to run SBuild, and '''./bootstrap build''' to build the Tcl Starkits.&lt;br /&gt;
&lt;br /&gt;
The first section of Mythical.tcl provides some housekeeping details:&lt;br /&gt;
&lt;br /&gt;
 package provide SBuildPlugins 1.0 &lt;br /&gt;
 &lt;br /&gt;
 lappend ::SBuild(Plugins) Mythical &lt;br /&gt;
 &lt;br /&gt;
 set ::Plugin(Mythical,Type) &amp;quot;optional&amp;quot;&lt;br /&gt;
 set ::Plugin(Mythical,Order) 100&lt;br /&gt;
 set ::Plugin(Mythical,CanUseUserBuild) 1&lt;br /&gt;
&lt;br /&gt;
The Mythical plugin must append itself to ::SBuild(Plugins) to register, and declares itself optional, builds in order 100, and can use user provided builds.&lt;br /&gt;
&lt;br /&gt;
Each plugin must provide several Tcl procs to do various functions.  The naming convention is PluginName-Function-Architecture.  In this example PluginName is Mythical.  SBuild first looks for the -Architecture variant, and failing, calls the PluginName-Function.  For instance, Mythical-Update is the Tcl proc that updates the source for Mythical, while Mythical-Build-Windows is a specialization for Windows.  The important functions are: Update, Configure, Build, and ConfigureSlicer.  The ConfigureSlicer function may append a CMake argument to be used when Slicer is configured.  If external packages are allowed, the ConfigureExternal function is called.  ConfigureExternal usually looks for libraries and sets a LibPath to be used to configure Slicer.  Examples of these functions are shown below.&lt;br /&gt;
&lt;br /&gt;
 # Here is where we would add lines to the main Slicer3 configuration&lt;br /&gt;
 proc Mythical-Setup {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we setup for an external build&lt;br /&gt;
 proc Mythical-ConfigureExternal {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   set SBuild(Mythical,LibPath) [file dirname [FindFile $::SBuild(Mythical,ExternalBuildPath) [list libMythicalCommon* MythicalCommon*.lib MythicalCommon*.dll]]]&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Add a line to Slicer's CMake command&lt;br /&gt;
 proc Mythical-ConfigureSlicer {} {&lt;br /&gt;
   global Plugin SBuild Slicer&lt;br /&gt;
   set dir [file join $SBuild(SlicerLibDir) Insight-build]&lt;br /&gt;
   if { $SBuild(Mythical,UseExternalBuild) } {&lt;br /&gt;
     set dir $SBuild(Mythical,ExternalBuildPath)&lt;br /&gt;
   }&lt;br /&gt;
   Debug &amp;quot;setting Mythical_DIR to $dir&amp;quot;&lt;br /&gt;
   lappend Slicer(CMakeArguments) -DMythical_DIR:FILEPATH=$dir&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we update Mythical?&lt;br /&gt;
 proc Mythical-Update {} {&lt;br /&gt;
   Debug &amp;quot;Checking out Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Insight&lt;br /&gt;
   ExecuteCommand $SBuild(SVNCommand) co http://www.mythical.org/svn/Mythical/trunk Mythical&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Configure to build&lt;br /&gt;
 proc Mythical-Configure {} {&lt;br /&gt;
   Debug &amp;quot;Configure Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Mythical-build&lt;br /&gt;
   cd Mythical-build&lt;br /&gt;
   ExecuteCommand $SBuild(CMake) \&lt;br /&gt;
     -G$SBuild(Generator) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER:STRING=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER_FULLPATH:FILEPATH=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DBUILD_SHARED_LIBS:BOOL=ON \&lt;br /&gt;
     -DCMAKE_SKIP_RPATH:BOOL=ON \&lt;br /&gt;
     -DBUILD_EXAMPLES:BOOL=OFF \&lt;br /&gt;
     -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
     -DCMAKE_BUILD_TYPE:STRING=$::SBuild(BuildType) \&lt;br /&gt;
     -DCMAKE_CXX_FLAGS_DEBUG:STRING=$::SBuild(CMakeCXXFlagsDebug) \&lt;br /&gt;
     ../Insight&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on windows?&lt;br /&gt;
 proc Mythical-Build-Windows {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   ExecuteCommand $SBuild(Make) Mythical.SLN /build  $SBuild(BuildType)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on other Makefile-based systems?&lt;br /&gt;
 proc Mythical-Build {} {&lt;br /&gt;
   Debug &amp;quot;Building Mythical&amp;quot;&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   eval ExecuteCommand $SBuild(Make) $SBuild(ParallelMake)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Clean up Mythical (nothing for the moment).&lt;br /&gt;
 proc Mythical-Clean {} {&lt;br /&gt;
   Debug &amp;quot;Cleaning Mythical&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* http://www.na-mic.org/Wiki/index.php/Slicer3&lt;br /&gt;
* http://www.na-mic.org/websvn/listing.php?repname=Slicer3&lt;br /&gt;
* [[Slicer3::Eclipse | Howto integrate Slicer3 into Eclipse]]&lt;br /&gt;
== Information on Free Microsoft C++ Compiler on Windows ==&lt;br /&gt;
&lt;br /&gt;
Be sure to follow '''all''' the steps on Microsoft link. Yes it means you need to download the compiler '''and''' sdk.&lt;br /&gt;
&lt;br /&gt;
* http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=File:SBuild-linux-x86_64.gz&amp;diff=22585</id>
		<title>File:SBuild-linux-x86 64.gz</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=File:SBuild-linux-x86_64.gz&amp;diff=22585"/>
		<updated>2008-03-04T04:48:09Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=File:SBuild-linux-x86.gz&amp;diff=22584</id>
		<title>File:SBuild-linux-x86.gz</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=File:SBuild-linux-x86.gz&amp;diff=22584"/>
		<updated>2008-03-04T04:42:37Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=File:SBuild-darwin-x86.gz&amp;diff=22583</id>
		<title>File:SBuild-darwin-x86.gz</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=File:SBuild-darwin-x86.gz&amp;diff=22583"/>
		<updated>2008-03-04T04:41:22Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=File:SBuild-darwin-ppc.gz&amp;diff=22582</id>
		<title>File:SBuild-darwin-ppc.gz</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=File:SBuild-darwin-ppc.gz&amp;diff=22582"/>
		<updated>2008-03-04T04:40:23Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22580</id>
		<title>Slicer3:Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22580"/>
		<updated>2008-03-04T04:35:36Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Screenshots */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= All-in-one Script to checkout and build Slicer3 =&lt;br /&gt;
&lt;br /&gt;
To compile and build Slicer3, you need a set of development packages installed on your machine: &lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_linux pre-requisite material for Linux ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_windows pre-requisite material for Windows ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_Apple_Mac_OS_X pre-requisite material for Mac ]&lt;br /&gt;
&lt;br /&gt;
There's a script called getbuildtest.tcl that makes the support libraries (VTK, ITK, teem, etc) and also builds slicer and does a dashboard submission.  (Click [[Slicer3:getbuildtest | here for background on getbuildtest]] and the experimental getbuildtest2 version).&lt;br /&gt;
&lt;br /&gt;
Just do the following two commands (see [[Slicer3:Build_Instructions#getbuildtest_on_windows|for windows users]] below):&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
   svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 &lt;br /&gt;
   ./Slicer3/Scripts/getbuildtest.tcl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Note: that a Slicer3-lib and Slicer3-build directory will be created for you. This is meant to be used to set up new machines and to run nightly testing of the full builds.&lt;br /&gt;
&lt;br /&gt;
To run (all platforms):&lt;br /&gt;
&lt;br /&gt;
 ./Slicer3-build/Slicer3&lt;br /&gt;
&lt;br /&gt;
Note: the whole build environment takes about 2G of disk space.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
Note also that getbuildtest will do an Experimental submission to the [http://www.na-mic.org/Slicer3/Dashboard/ Slicer3 dashboard]. If you want to use getbuildtest without submitting to the dashboard, you can set the test type to nothing with&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl -t &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Other options for the -t (--test-type) option are Nightly or Continuous (or any of the [http://www.cmake.org/Wiki/CMake_Testing_With_CTest CTest] options).&lt;br /&gt;
&lt;br /&gt;
== What does getbuildtest.tcl do? ==&lt;br /&gt;
&lt;br /&gt;
This script just automates the steps needed to build slicer.  What you end up with is a set of source and build directories that can either be further manipulated with getbuildtest or can be worked with normally.  That is, on windows you will have solution files that you can load in visual studio for debugging and further development.&lt;br /&gt;
&lt;br /&gt;
Specifically, getbuildtest does the following steps:&lt;br /&gt;
&lt;br /&gt;
* Refreshes Slicer3 svn&lt;br /&gt;
* Runs Scripts/genlib.tcl which does the following for each of the support libraries&lt;br /&gt;
** does a cvs/svn checkout/update&lt;br /&gt;
** runs cmake with the correct settings for use with Slicer3&lt;br /&gt;
** runs make (or developer studio) to build the libraries&lt;br /&gt;
* Runs cmake on Slicer3&lt;br /&gt;
* Builds Slicer3&lt;br /&gt;
* Runs ctest on Slicer3&lt;br /&gt;
* (optionally) Runs CPack on Slicer3&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
  usage: getbuildtest [options] [target]&lt;br /&gt;
    [target] is determined automatically if not specified&lt;br /&gt;
    [options] is one of the following:&lt;br /&gt;
     --help : prints this message and exits&lt;br /&gt;
     --clean : delete lib and build directories first&lt;br /&gt;
     -t --test-type : CTest test target&lt;br /&gt;
     --release : compile with optimization flags&lt;br /&gt;
     --update : does a cvs/svn update on each lib&lt;br /&gt;
     --pack : builds a distribution package (cpack)&lt;br /&gt;
&lt;br /&gt;
== Errors from getbuildtest ==&lt;br /&gt;
&lt;br /&gt;
You will need to have your firewall configured to allow access to na-mic.org for cvs access through port 2401. Also you need 8081 for submitting to the dashboard.&lt;br /&gt;
&lt;br /&gt;
Other errors might mean you don't have all the build tools (see next section).&lt;br /&gt;
&lt;br /&gt;
If you want to generate a log of the build process, you can use a command like the following:&lt;br /&gt;
&lt;br /&gt;
 # for csh/tcsh:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl |&amp;amp; tee build.log&lt;br /&gt;
or&lt;br /&gt;
 # for sh/bash:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl 2&amp;gt;&amp;amp;1 | tee build.log&lt;br /&gt;
&lt;br /&gt;
== Updating Your getbuildtest Build ==&lt;br /&gt;
&lt;br /&gt;
There are a few options:&lt;br /&gt;
&lt;br /&gt;
* you can re-run getbuildtest and it will update slicer3 and rebuild (just slicer3)&lt;br /&gt;
* you can add the --update option and all the libs will get a cvs/svn update and will rebuild if needed (good for tracking the development head of VTK/ITK/KWWidgets etc).&lt;br /&gt;
* you can just 'svn update' in the Slicer3 directory and then do 'make' in the Slicer3-build to get just the latest Slicer3 code.&lt;br /&gt;
&lt;br /&gt;
The following command for unix machines will update, build, and launch the latest Slicer3:&lt;br /&gt;
&lt;br /&gt;
 svn update &amp;amp;&amp;amp; (cd ../Slicer3-build; make &amp;amp;&amp;amp; ./bin/Slicer3)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on linux ==&lt;br /&gt;
&lt;br /&gt;
To compile slicer and do development, be sure you have a complete set of development packages installed on your machine.  The exact packages vary by distribution, but include:&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-c++&lt;br /&gt;
* libX11 &lt;br /&gt;
* libX11-devel (libX11-dev  on Ubuntu 7.04)&lt;br /&gt;
* libXt-devel (libXt-dev on Ubuntu)&lt;br /&gt;
* opengl/mesa (libgl1-mesa-dev on Ubuntu)&lt;br /&gt;
&lt;br /&gt;
Ubuntu one line install:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install subversion cvs tcl8.4 gcc g++ libX11-dev libXt-dev libxext-dev libgl1-mesa-dev libncurses5-dev tcsh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, be sure you have OpenGL and the GLX extension to X working.  To check the installation, it is usually enough to confirm that the command &amp;lt;pre&amp;gt;glxgears&amp;lt;/pre&amp;gt; runs with no errors.&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on windows ==&lt;br /&gt;
&lt;br /&gt;
The script should work fine on a properly configured windows environment. Current requirements are:&lt;br /&gt;
&lt;br /&gt;
* Developer Studio 8 Visual C++ Express which is free from Microsoft - be sure to install the Platform SDK and follow the ridiculous manual steps to set up the paths [[Slicer3:Build_Instructions#Information_on_Free_Microsoft_C.2B.2B_Compiler_on_Windows|see below]].&lt;br /&gt;
* Developer Studio 9 Visual C++ Express [[Slicer:Build_Instructions:MSVS9]]&lt;br /&gt;
** Other releases of visual studio also work (7 and 7.1)&lt;br /&gt;
** If they are installed in the default locations in &amp;quot;c:/Program Files&amp;quot; they will be detected by the build script automatically (you need to edit slicer_variables.tcl to point to the installation).&lt;br /&gt;
* [http://www.cygwin.com Cygwin] with the following packages&lt;br /&gt;
** tcltk&lt;br /&gt;
** svn&lt;br /&gt;
** cvs&lt;br /&gt;
** unzip&lt;br /&gt;
** curl&lt;br /&gt;
* With Developers Studio and cygwin installed, you only need to do the svn checkout and getbuildtest script to get a fully working Slicer3 plus all the tools you need to develop new code.&lt;br /&gt;
&lt;br /&gt;
Note: CMake and VTK will not work on a FAT formatted disk (use NTFS).&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on Apple Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
For Mac OS 10.4.10 install the following from the OS disks (not installed by default on new machines):&lt;br /&gt;
* Xcode Tools (OS Disk 1, default window)&lt;br /&gt;
* X11: also on OS Disk 1, but you need to scroll down and find the Optional Installs installer and select X11 under Applications. See [http://porting.openoffice.org/mac/faq/installing/X11.html step-by-step instructions].&lt;br /&gt;
* X11SDK - from OS Disk 1, Xcode Tools/Packages/X11SDK.pkg&lt;br /&gt;
* Subversion.  Installation [http://downloads.open.collab.net/binaries.html options here].  Get the latest svn version for compatibility with the server and be sure your client includes SSL (so it can access https repositories).&lt;br /&gt;
&lt;br /&gt;
Remember to run getbuildtest from an xterm so the tests can access the X server.&lt;br /&gt;
&lt;br /&gt;
== configuration options ==&lt;br /&gt;
&lt;br /&gt;
The file Slicer3/slicer_variables.tcl includes configuration options for which support libraries to use.  You may want to change thes for testing or to get access to new functionality.  &lt;br /&gt;
&lt;br /&gt;
 set ::SLICER_TAG &amp;quot;http://www.na-mic.org/svn/Slicer3/trunk&amp;quot;&lt;br /&gt;
 set ::CMAKE_TAG &amp;quot;CMake-2-4-2&amp;quot;&lt;br /&gt;
 set ::TEEM_TAG &amp;quot;Teem-1-9-0-patches&amp;quot;&lt;br /&gt;
 set ::KWWidgets_TAG &amp;quot;HEAD&amp;quot;&lt;br /&gt;
 set ::VTK_TAG &amp;quot;VTK-5-0&amp;quot;&lt;br /&gt;
 set ::ITK_TAG ITK-3-0&lt;br /&gt;
 set ::TCL_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::TK_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::ITCL_TAG &amp;quot;itcl-3-2-1&amp;quot;&lt;br /&gt;
 set ::IWIDGETS_TAG &amp;quot;iwidgets-4-0-1&amp;quot;&lt;br /&gt;
 set ::BLT_TAG &amp;quot;blt24z&amp;quot;&lt;br /&gt;
 set ::SANDBOX_TAG &amp;quot;http://svn.na-mic.org/svn/NAMICSandBox/branches/Slicer-2-6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For example, you may want a build against the ITK cvs head.  Change the flag value and then run &lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --update &lt;br /&gt;
&lt;br /&gt;
which will get the version from cvs, build it, and rebuild slicer3.  Depending on how radically different the versions you build are, you may need to use --clean.&lt;br /&gt;
&lt;br /&gt;
Another useful option is to change your build type to include support debugging.&lt;br /&gt;
&lt;br /&gt;
 set ::VTK_BUILD_TYPE &amp;quot;RelWithDebInfo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
options are Debug, Release, or RelWithDebInfo.  RelWithDebInfo is a compromise between speed and debuggability.  If you are tracking down a tough C++ bug you will get better information in Debug mode.  After changing this flag, you should run&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --clean&lt;br /&gt;
&lt;br /&gt;
to create a completely new build.&lt;br /&gt;
&lt;br /&gt;
= Manual checkout/build of Slicer3 and support libraries: =&lt;br /&gt;
&lt;br /&gt;
== Prerequisite software ==&lt;br /&gt;
&lt;br /&gt;
You need to get and build the following packages if you aren't using the getbuildtest script:&lt;br /&gt;
&lt;br /&gt;
# [http://www.cmake.org CMake (2.4.1 or later)]&lt;br /&gt;
# [http://www.tcl.tk Tcl/Tk (8.4 or later)]&lt;br /&gt;
# [http://sourceforge.net/projects/incrtcl/ incrTcl (3.2.1)]&lt;br /&gt;
# [http://www.vtk.org VTK 5.0]&lt;br /&gt;
# [http://www.itk.org ITK 3.4]&lt;br /&gt;
# [http://www.kwwidgets.org KWWidgets Slicer-3-0 tag]&lt;br /&gt;
# [http://teem.sf.net Teem (1.9.0)]&lt;br /&gt;
&lt;br /&gt;
== Build Steps ==&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
 $ svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.vtk.org:/cvsroot/VTK co VTK -r VTK-5-0&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.itk.org:/cvsroot/Insight co Insight -r ITK-3-4&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.kwwidgets.org:/cvsroot/KWWidgets co KWWidgets -r Slicer-3-0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure and build ITK ===&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
=== Configure and build VTK ===&lt;br /&gt;
&lt;br /&gt;
* All systems:&lt;br /&gt;
** BUILD_SHARED_LIBS ON&lt;br /&gt;
** CMAKE_SKIP_RPATH ON&lt;br /&gt;
** VTK_WRAP_TCL ON&lt;br /&gt;
** VTK_DEBUG_LEAKS ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX specific (Make sure to install [http://www.apple.com/downloads/macosx/apple/x11formacosx.html X11]):&lt;br /&gt;
** VTK_USE_CARBON OFF&lt;br /&gt;
** VTK_USE_X ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note, those options '''should not''' appear, since they disapear since VTK5:&lt;br /&gt;
** VTK_USE_HYBRID ON&lt;br /&gt;
** VTK_USE_PATENTED ON&lt;br /&gt;
&lt;br /&gt;
* Make sure that the TCL and TK path are set properly&lt;br /&gt;
** TCL_* and TK_*&lt;br /&gt;
&lt;br /&gt;
=== Configure and build KWWidgets ===&lt;br /&gt;
&lt;br /&gt;
* You need to specify where your VTK build tree is.&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
== Build and Run Slicer3 ==&lt;br /&gt;
&lt;br /&gt;
=== Manually ===&lt;br /&gt;
&lt;br /&gt;
# Check out and build slicer3 (e.g. on linux)&lt;br /&gt;
&lt;br /&gt;
  svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
  mkdir Slicer3-build&lt;br /&gt;
  cd Slicer3-build&lt;br /&gt;
  ccmake ../Slicer3&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Again make sure to turn:&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Start slicer with the Slicer3 executable in your build directory.&lt;br /&gt;
&lt;br /&gt;
= SBuild =&lt;br /&gt;
SBuild is a new, experimental build system for Slicer.  It is based on getbuildtest2.tcl and genlib2.tcl, but rather than try to hid the gory details of building Slicer, SBuild attempts to expose a reasonable amount to the developer.  The interface should be reasonably intuitive, but a brief walk through is useful.  Click on the thumbnails for larger views.  SBuild allows you to update and build just the portions of Slicer that you may require or want to build.  Any of the required libraries may be specified to be build by SBuild, or to use an existing build.  Existing libraries are not controlled by SBuild.&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
{|&lt;br /&gt;
|+ SBuild screenshots&lt;br /&gt;
|-&lt;br /&gt;
| [[image:SBuild-MainWindow.png|center|250px|Main SBuild Window]] || [[image:SBuild-RequiredWindow.png|center|250px|Required libraries]] &lt;br /&gt;
||[[image:SBuild-AllExternal.png|center|250px|SBuild configured for all external builds]]  &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Binary downloads ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding new Libraries to SBuild ==&lt;br /&gt;
The default package of SBuild contains the minimal number of required libraries to build Slicer.  Currently no optional libraries are installed.  The procedure for providing an SBuild plugin is modestly complicated, but several good examples exist.  All plugins go in SBuild.vfs/lib/SBuildPlugins.  As an example, let's create a plugin called Mythical, contained in SBuild.vfs/lib/SBuildPlugins/Mythical.tcl.&lt;br /&gt;
&lt;br /&gt;
In the Slicer3/Scripts/SBuild directory, run '''./bootstrap run''' to run SBuild, and '''./bootstrap build''' to build the Tcl Starkits.&lt;br /&gt;
&lt;br /&gt;
The first section of Mythical.tcl provides some housekeeping details:&lt;br /&gt;
&lt;br /&gt;
 package provide SBuildPlugins 1.0 &lt;br /&gt;
 &lt;br /&gt;
 lappend ::SBuild(Plugins) Mythical &lt;br /&gt;
 &lt;br /&gt;
 set ::Plugin(Mythical,Type) &amp;quot;optional&amp;quot;&lt;br /&gt;
 set ::Plugin(Mythical,Order) 100&lt;br /&gt;
 set ::Plugin(Mythical,CanUseUserBuild) 1&lt;br /&gt;
&lt;br /&gt;
The Mythical plugin must append itself to ::SBuild(Plugins) to register, and declares itself optional, builds in order 100, and can use user provided builds.&lt;br /&gt;
&lt;br /&gt;
Each plugin must provide several Tcl procs to do various functions.  The naming convention is PluginName-Function-Architecture.  In this example PluginName is Mythical.  SBuild first looks for the -Architecture variant, and failing, calls the PluginName-Function.  For instance, Mythical-Update is the Tcl proc that updates the source for Mythical, while Mythical-Build-Windows is a specialization for Windows.  The important functions are: Update, Configure, Build, and ConfigureSlicer.  The ConfigureSlicer function may append a CMake argument to be used when Slicer is configured.  If external packages are allowed, the ConfigureExternal function is called.  ConfigureExternal usually looks for libraries and sets a LibPath to be used to configure Slicer.  Examples of these functions are shown below.&lt;br /&gt;
&lt;br /&gt;
 # Here is where we would add lines to the main Slicer3 configuration&lt;br /&gt;
 proc Mythical-Setup {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we setup for an external build&lt;br /&gt;
 proc Mythical-ConfigureExternal {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   set SBuild(Mythical,LibPath) [file dirname [FindFile $::SBuild(Mythical,ExternalBuildPath) [list libMythicalCommon* MythicalCommon*.lib MythicalCommon*.dll]]]&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Add a line to Slicer's CMake command&lt;br /&gt;
 proc Mythical-ConfigureSlicer {} {&lt;br /&gt;
   global Plugin SBuild Slicer&lt;br /&gt;
   set dir [file join $SBuild(SlicerLibDir) Insight-build]&lt;br /&gt;
   if { $SBuild(Mythical,UseExternalBuild) } {&lt;br /&gt;
     set dir $SBuild(Mythical,ExternalBuildPath)&lt;br /&gt;
   }&lt;br /&gt;
   Debug &amp;quot;setting Mythical_DIR to $dir&amp;quot;&lt;br /&gt;
   lappend Slicer(CMakeArguments) -DMythical_DIR:FILEPATH=$dir&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we update Mythical?&lt;br /&gt;
 proc Mythical-Update {} {&lt;br /&gt;
   Debug &amp;quot;Checking out Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Insight&lt;br /&gt;
   ExecuteCommand $SBuild(SVNCommand) co http://www.mythical.org/svn/Mythical/trunk Mythical&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Configure to build&lt;br /&gt;
 proc Mythical-Configure {} {&lt;br /&gt;
   Debug &amp;quot;Configure Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Mythical-build&lt;br /&gt;
   cd Mythical-build&lt;br /&gt;
   ExecuteCommand $SBuild(CMake) \&lt;br /&gt;
     -G$SBuild(Generator) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER:STRING=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER_FULLPATH:FILEPATH=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DBUILD_SHARED_LIBS:BOOL=ON \&lt;br /&gt;
     -DCMAKE_SKIP_RPATH:BOOL=ON \&lt;br /&gt;
     -DBUILD_EXAMPLES:BOOL=OFF \&lt;br /&gt;
     -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
     -DCMAKE_BUILD_TYPE:STRING=$::SBuild(BuildType) \&lt;br /&gt;
     -DCMAKE_CXX_FLAGS_DEBUG:STRING=$::SBuild(CMakeCXXFlagsDebug) \&lt;br /&gt;
     ../Insight&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on windows?&lt;br /&gt;
 proc Mythical-Build-Windows {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   ExecuteCommand $SBuild(Make) Mythical.SLN /build  $SBuild(BuildType)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on other Makefile-based systems?&lt;br /&gt;
 proc Mythical-Build {} {&lt;br /&gt;
   Debug &amp;quot;Building Mythical&amp;quot;&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   eval ExecuteCommand $SBuild(Make) $SBuild(ParallelMake)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Clean up Mythical (nothing for the moment).&lt;br /&gt;
 proc Mythical-Clean {} {&lt;br /&gt;
   Debug &amp;quot;Cleaning Mythical&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* http://www.na-mic.org/Wiki/index.php/Slicer3&lt;br /&gt;
* http://www.na-mic.org/websvn/listing.php?repname=Slicer3&lt;br /&gt;
* [[Slicer3::Eclipse | Howto integrate Slicer3 into Eclipse]]&lt;br /&gt;
== Information on Free Microsoft C++ Compiler on Windows ==&lt;br /&gt;
&lt;br /&gt;
Be sure to follow '''all''' the steps on Microsoft link. Yes it means you need to download the compiler '''and''' sdk.&lt;br /&gt;
&lt;br /&gt;
* http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=File:SBuild-AllExternal.png&amp;diff=22579</id>
		<title>File:SBuild-AllExternal.png</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=File:SBuild-AllExternal.png&amp;diff=22579"/>
		<updated>2008-03-04T04:30:26Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=File:SBuild-RequiredWindow.png&amp;diff=22578</id>
		<title>File:SBuild-RequiredWindow.png</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=File:SBuild-RequiredWindow.png&amp;diff=22578"/>
		<updated>2008-03-04T04:28:47Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=File:SBuild-MainWindow.png&amp;diff=22577</id>
		<title>File:SBuild-MainWindow.png</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=File:SBuild-MainWindow.png&amp;diff=22577"/>
		<updated>2008-03-04T04:27:57Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=File:SBuild-MainWindow.tif&amp;diff=22576</id>
		<title>File:SBuild-MainWindow.tif</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=File:SBuild-MainWindow.tif&amp;diff=22576"/>
		<updated>2008-03-04T04:19:40Z</updated>

		<summary type="html">&lt;p&gt;Blezek: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22575</id>
		<title>Slicer3:Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22575"/>
		<updated>2008-03-04T04:17:04Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* SBuild */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= All-in-one Script to checkout and build Slicer3 =&lt;br /&gt;
&lt;br /&gt;
To compile and build Slicer3, you need a set of development packages installed on your machine: &lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_linux pre-requisite material for Linux ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_windows pre-requisite material for Windows ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_Apple_Mac_OS_X pre-requisite material for Mac ]&lt;br /&gt;
&lt;br /&gt;
There's a script called getbuildtest.tcl that makes the support libraries (VTK, ITK, teem, etc) and also builds slicer and does a dashboard submission.  (Click [[Slicer3:getbuildtest | here for background on getbuildtest]] and the experimental getbuildtest2 version).&lt;br /&gt;
&lt;br /&gt;
Just do the following two commands (see [[Slicer3:Build_Instructions#getbuildtest_on_windows|for windows users]] below):&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
   svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 &lt;br /&gt;
   ./Slicer3/Scripts/getbuildtest.tcl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Note: that a Slicer3-lib and Slicer3-build directory will be created for you. This is meant to be used to set up new machines and to run nightly testing of the full builds.&lt;br /&gt;
&lt;br /&gt;
To run (all platforms):&lt;br /&gt;
&lt;br /&gt;
 ./Slicer3-build/Slicer3&lt;br /&gt;
&lt;br /&gt;
Note: the whole build environment takes about 2G of disk space.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
Note also that getbuildtest will do an Experimental submission to the [http://www.na-mic.org/Slicer3/Dashboard/ Slicer3 dashboard]. If you want to use getbuildtest without submitting to the dashboard, you can set the test type to nothing with&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl -t &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Other options for the -t (--test-type) option are Nightly or Continuous (or any of the [http://www.cmake.org/Wiki/CMake_Testing_With_CTest CTest] options).&lt;br /&gt;
&lt;br /&gt;
== What does getbuildtest.tcl do? ==&lt;br /&gt;
&lt;br /&gt;
This script just automates the steps needed to build slicer.  What you end up with is a set of source and build directories that can either be further manipulated with getbuildtest or can be worked with normally.  That is, on windows you will have solution files that you can load in visual studio for debugging and further development.&lt;br /&gt;
&lt;br /&gt;
Specifically, getbuildtest does the following steps:&lt;br /&gt;
&lt;br /&gt;
* Refreshes Slicer3 svn&lt;br /&gt;
* Runs Scripts/genlib.tcl which does the following for each of the support libraries&lt;br /&gt;
** does a cvs/svn checkout/update&lt;br /&gt;
** runs cmake with the correct settings for use with Slicer3&lt;br /&gt;
** runs make (or developer studio) to build the libraries&lt;br /&gt;
* Runs cmake on Slicer3&lt;br /&gt;
* Builds Slicer3&lt;br /&gt;
* Runs ctest on Slicer3&lt;br /&gt;
* (optionally) Runs CPack on Slicer3&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
  usage: getbuildtest [options] [target]&lt;br /&gt;
    [target] is determined automatically if not specified&lt;br /&gt;
    [options] is one of the following:&lt;br /&gt;
     --help : prints this message and exits&lt;br /&gt;
     --clean : delete lib and build directories first&lt;br /&gt;
     -t --test-type : CTest test target&lt;br /&gt;
     --release : compile with optimization flags&lt;br /&gt;
     --update : does a cvs/svn update on each lib&lt;br /&gt;
     --pack : builds a distribution package (cpack)&lt;br /&gt;
&lt;br /&gt;
== Errors from getbuildtest ==&lt;br /&gt;
&lt;br /&gt;
You will need to have your firewall configured to allow access to na-mic.org for cvs access through port 2401. Also you need 8081 for submitting to the dashboard.&lt;br /&gt;
&lt;br /&gt;
Other errors might mean you don't have all the build tools (see next section).&lt;br /&gt;
&lt;br /&gt;
If you want to generate a log of the build process, you can use a command like the following:&lt;br /&gt;
&lt;br /&gt;
 # for csh/tcsh:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl |&amp;amp; tee build.log&lt;br /&gt;
or&lt;br /&gt;
 # for sh/bash:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl 2&amp;gt;&amp;amp;1 | tee build.log&lt;br /&gt;
&lt;br /&gt;
== Updating Your getbuildtest Build ==&lt;br /&gt;
&lt;br /&gt;
There are a few options:&lt;br /&gt;
&lt;br /&gt;
* you can re-run getbuildtest and it will update slicer3 and rebuild (just slicer3)&lt;br /&gt;
* you can add the --update option and all the libs will get a cvs/svn update and will rebuild if needed (good for tracking the development head of VTK/ITK/KWWidgets etc).&lt;br /&gt;
* you can just 'svn update' in the Slicer3 directory and then do 'make' in the Slicer3-build to get just the latest Slicer3 code.&lt;br /&gt;
&lt;br /&gt;
The following command for unix machines will update, build, and launch the latest Slicer3:&lt;br /&gt;
&lt;br /&gt;
 svn update &amp;amp;&amp;amp; (cd ../Slicer3-build; make &amp;amp;&amp;amp; ./bin/Slicer3)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on linux ==&lt;br /&gt;
&lt;br /&gt;
To compile slicer and do development, be sure you have a complete set of development packages installed on your machine.  The exact packages vary by distribution, but include:&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-c++&lt;br /&gt;
* libX11 &lt;br /&gt;
* libX11-devel (libX11-dev  on Ubuntu 7.04)&lt;br /&gt;
* libXt-devel (libXt-dev on Ubuntu)&lt;br /&gt;
* opengl/mesa (libgl1-mesa-dev on Ubuntu)&lt;br /&gt;
&lt;br /&gt;
Ubuntu one line install:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install subversion cvs tcl8.4 gcc g++ libX11-dev libXt-dev libxext-dev libgl1-mesa-dev libncurses5-dev tcsh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, be sure you have OpenGL and the GLX extension to X working.  To check the installation, it is usually enough to confirm that the command &amp;lt;pre&amp;gt;glxgears&amp;lt;/pre&amp;gt; runs with no errors.&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on windows ==&lt;br /&gt;
&lt;br /&gt;
The script should work fine on a properly configured windows environment. Current requirements are:&lt;br /&gt;
&lt;br /&gt;
* Developer Studio 8 Visual C++ Express which is free from Microsoft - be sure to install the Platform SDK and follow the ridiculous manual steps to set up the paths [[Slicer3:Build_Instructions#Information_on_Free_Microsoft_C.2B.2B_Compiler_on_Windows|see below]].&lt;br /&gt;
* Developer Studio 9 Visual C++ Express [[Slicer:Build_Instructions:MSVS9]]&lt;br /&gt;
** Other releases of visual studio also work (7 and 7.1)&lt;br /&gt;
** If they are installed in the default locations in &amp;quot;c:/Program Files&amp;quot; they will be detected by the build script automatically (you need to edit slicer_variables.tcl to point to the installation).&lt;br /&gt;
* [http://www.cygwin.com Cygwin] with the following packages&lt;br /&gt;
** tcltk&lt;br /&gt;
** svn&lt;br /&gt;
** cvs&lt;br /&gt;
** unzip&lt;br /&gt;
** curl&lt;br /&gt;
* With Developers Studio and cygwin installed, you only need to do the svn checkout and getbuildtest script to get a fully working Slicer3 plus all the tools you need to develop new code.&lt;br /&gt;
&lt;br /&gt;
Note: CMake and VTK will not work on a FAT formatted disk (use NTFS).&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on Apple Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
For Mac OS 10.4.10 install the following from the OS disks (not installed by default on new machines):&lt;br /&gt;
* Xcode Tools (OS Disk 1, default window)&lt;br /&gt;
* X11: also on OS Disk 1, but you need to scroll down and find the Optional Installs installer and select X11 under Applications. See [http://porting.openoffice.org/mac/faq/installing/X11.html step-by-step instructions].&lt;br /&gt;
* X11SDK - from OS Disk 1, Xcode Tools/Packages/X11SDK.pkg&lt;br /&gt;
* Subversion.  Installation [http://downloads.open.collab.net/binaries.html options here].  Get the latest svn version for compatibility with the server and be sure your client includes SSL (so it can access https repositories).&lt;br /&gt;
&lt;br /&gt;
Remember to run getbuildtest from an xterm so the tests can access the X server.&lt;br /&gt;
&lt;br /&gt;
== configuration options ==&lt;br /&gt;
&lt;br /&gt;
The file Slicer3/slicer_variables.tcl includes configuration options for which support libraries to use.  You may want to change thes for testing or to get access to new functionality.  &lt;br /&gt;
&lt;br /&gt;
 set ::SLICER_TAG &amp;quot;http://www.na-mic.org/svn/Slicer3/trunk&amp;quot;&lt;br /&gt;
 set ::CMAKE_TAG &amp;quot;CMake-2-4-2&amp;quot;&lt;br /&gt;
 set ::TEEM_TAG &amp;quot;Teem-1-9-0-patches&amp;quot;&lt;br /&gt;
 set ::KWWidgets_TAG &amp;quot;HEAD&amp;quot;&lt;br /&gt;
 set ::VTK_TAG &amp;quot;VTK-5-0&amp;quot;&lt;br /&gt;
 set ::ITK_TAG ITK-3-0&lt;br /&gt;
 set ::TCL_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::TK_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::ITCL_TAG &amp;quot;itcl-3-2-1&amp;quot;&lt;br /&gt;
 set ::IWIDGETS_TAG &amp;quot;iwidgets-4-0-1&amp;quot;&lt;br /&gt;
 set ::BLT_TAG &amp;quot;blt24z&amp;quot;&lt;br /&gt;
 set ::SANDBOX_TAG &amp;quot;http://svn.na-mic.org/svn/NAMICSandBox/branches/Slicer-2-6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For example, you may want a build against the ITK cvs head.  Change the flag value and then run &lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --update &lt;br /&gt;
&lt;br /&gt;
which will get the version from cvs, build it, and rebuild slicer3.  Depending on how radically different the versions you build are, you may need to use --clean.&lt;br /&gt;
&lt;br /&gt;
Another useful option is to change your build type to include support debugging.&lt;br /&gt;
&lt;br /&gt;
 set ::VTK_BUILD_TYPE &amp;quot;RelWithDebInfo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
options are Debug, Release, or RelWithDebInfo.  RelWithDebInfo is a compromise between speed and debuggability.  If you are tracking down a tough C++ bug you will get better information in Debug mode.  After changing this flag, you should run&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --clean&lt;br /&gt;
&lt;br /&gt;
to create a completely new build.&lt;br /&gt;
&lt;br /&gt;
= Manual checkout/build of Slicer3 and support libraries: =&lt;br /&gt;
&lt;br /&gt;
== Prerequisite software ==&lt;br /&gt;
&lt;br /&gt;
You need to get and build the following packages if you aren't using the getbuildtest script:&lt;br /&gt;
&lt;br /&gt;
# [http://www.cmake.org CMake (2.4.1 or later)]&lt;br /&gt;
# [http://www.tcl.tk Tcl/Tk (8.4 or later)]&lt;br /&gt;
# [http://sourceforge.net/projects/incrtcl/ incrTcl (3.2.1)]&lt;br /&gt;
# [http://www.vtk.org VTK 5.0]&lt;br /&gt;
# [http://www.itk.org ITK 3.4]&lt;br /&gt;
# [http://www.kwwidgets.org KWWidgets Slicer-3-0 tag]&lt;br /&gt;
# [http://teem.sf.net Teem (1.9.0)]&lt;br /&gt;
&lt;br /&gt;
== Build Steps ==&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
 $ svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.vtk.org:/cvsroot/VTK co VTK -r VTK-5-0&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.itk.org:/cvsroot/Insight co Insight -r ITK-3-4&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.kwwidgets.org:/cvsroot/KWWidgets co KWWidgets -r Slicer-3-0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure and build ITK ===&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
=== Configure and build VTK ===&lt;br /&gt;
&lt;br /&gt;
* All systems:&lt;br /&gt;
** BUILD_SHARED_LIBS ON&lt;br /&gt;
** CMAKE_SKIP_RPATH ON&lt;br /&gt;
** VTK_WRAP_TCL ON&lt;br /&gt;
** VTK_DEBUG_LEAKS ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX specific (Make sure to install [http://www.apple.com/downloads/macosx/apple/x11formacosx.html X11]):&lt;br /&gt;
** VTK_USE_CARBON OFF&lt;br /&gt;
** VTK_USE_X ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note, those options '''should not''' appear, since they disapear since VTK5:&lt;br /&gt;
** VTK_USE_HYBRID ON&lt;br /&gt;
** VTK_USE_PATENTED ON&lt;br /&gt;
&lt;br /&gt;
* Make sure that the TCL and TK path are set properly&lt;br /&gt;
** TCL_* and TK_*&lt;br /&gt;
&lt;br /&gt;
=== Configure and build KWWidgets ===&lt;br /&gt;
&lt;br /&gt;
* You need to specify where your VTK build tree is.&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
== Build and Run Slicer3 ==&lt;br /&gt;
&lt;br /&gt;
=== Manually ===&lt;br /&gt;
&lt;br /&gt;
# Check out and build slicer3 (e.g. on linux)&lt;br /&gt;
&lt;br /&gt;
  svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
  mkdir Slicer3-build&lt;br /&gt;
  cd Slicer3-build&lt;br /&gt;
  ccmake ../Slicer3&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Again make sure to turn:&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Start slicer with the Slicer3 executable in your build directory.&lt;br /&gt;
&lt;br /&gt;
= SBuild =&lt;br /&gt;
SBuild is a new, experimental build system for Slicer.  It is based on getbuildtest2.tcl and genlib2.tcl, but rather than try to hid the gory details of building Slicer, SBuild attempts to expose a reasonable amount to the developer.  The interface should be reasonably intuitive, but a brief walk through is useful.  Click on the thumbnails for larger views.  SBuild allows you to update and build just the portions of Slicer that you may require or want to build.  Any of the required libraries may be specified to be build by SBuild, or to use an existing build.  Existing libraries are not controlled by SBuild.&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
| style=&amp;quot;background: #ebeced&amp;quot; colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;| &amp;lt;b&amp;gt;Featured Paper&amp;lt;/b&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ebeced&amp;quot;|[[image:Ziyan-2007.jpg|center|250px|Non-linear registration of dMR]] &lt;br /&gt;
| style=&amp;quot;background: #ebeced&amp;quot;|Nonlinear Registration of Diffusion MR Images Based on Fiber Bundles: 3D renderings of intersubject registration. &amp;lt;br&amp;gt;&lt;br /&gt;
For more information click [http://www.na-mic.org/pages/Special:PubDB_View?dspaceid=1079 '''here''']. &lt;br /&gt;
|}&lt;br /&gt;
== Binary downloads ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding new Libraries to SBuild ==&lt;br /&gt;
The default package of SBuild contains the minimal number of required libraries to build Slicer.  Currently no optional libraries are installed.  The procedure for providing an SBuild plugin is modestly complicated, but several good examples exist.  All plugins go in SBuild.vfs/lib/SBuildPlugins.  As an example, let's create a plugin called Mythical, contained in SBuild.vfs/lib/SBuildPlugins/Mythical.tcl.&lt;br /&gt;
&lt;br /&gt;
In the Slicer3/Scripts/SBuild directory, run '''./bootstrap run''' to run SBuild, and '''./bootstrap build''' to build the Tcl Starkits.&lt;br /&gt;
&lt;br /&gt;
The first section of Mythical.tcl provides some housekeeping details:&lt;br /&gt;
&lt;br /&gt;
 package provide SBuildPlugins 1.0 &lt;br /&gt;
 &lt;br /&gt;
 lappend ::SBuild(Plugins) Mythical &lt;br /&gt;
 &lt;br /&gt;
 set ::Plugin(Mythical,Type) &amp;quot;optional&amp;quot;&lt;br /&gt;
 set ::Plugin(Mythical,Order) 100&lt;br /&gt;
 set ::Plugin(Mythical,CanUseUserBuild) 1&lt;br /&gt;
&lt;br /&gt;
The Mythical plugin must append itself to ::SBuild(Plugins) to register, and declares itself optional, builds in order 100, and can use user provided builds.&lt;br /&gt;
&lt;br /&gt;
Each plugin must provide several Tcl procs to do various functions.  The naming convention is PluginName-Function-Architecture.  In this example PluginName is Mythical.  SBuild first looks for the -Architecture variant, and failing, calls the PluginName-Function.  For instance, Mythical-Update is the Tcl proc that updates the source for Mythical, while Mythical-Build-Windows is a specialization for Windows.  The important functions are: Update, Configure, Build, and ConfigureSlicer.  The ConfigureSlicer function may append a CMake argument to be used when Slicer is configured.  If external packages are allowed, the ConfigureExternal function is called.  ConfigureExternal usually looks for libraries and sets a LibPath to be used to configure Slicer.  Examples of these functions are shown below.&lt;br /&gt;
&lt;br /&gt;
 # Here is where we would add lines to the main Slicer3 configuration&lt;br /&gt;
 proc Mythical-Setup {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we setup for an external build&lt;br /&gt;
 proc Mythical-ConfigureExternal {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   set SBuild(Mythical,LibPath) [file dirname [FindFile $::SBuild(Mythical,ExternalBuildPath) [list libMythicalCommon* MythicalCommon*.lib MythicalCommon*.dll]]]&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Add a line to Slicer's CMake command&lt;br /&gt;
 proc Mythical-ConfigureSlicer {} {&lt;br /&gt;
   global Plugin SBuild Slicer&lt;br /&gt;
   set dir [file join $SBuild(SlicerLibDir) Insight-build]&lt;br /&gt;
   if { $SBuild(Mythical,UseExternalBuild) } {&lt;br /&gt;
     set dir $SBuild(Mythical,ExternalBuildPath)&lt;br /&gt;
   }&lt;br /&gt;
   Debug &amp;quot;setting Mythical_DIR to $dir&amp;quot;&lt;br /&gt;
   lappend Slicer(CMakeArguments) -DMythical_DIR:FILEPATH=$dir&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we update Mythical?&lt;br /&gt;
 proc Mythical-Update {} {&lt;br /&gt;
   Debug &amp;quot;Checking out Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Insight&lt;br /&gt;
   ExecuteCommand $SBuild(SVNCommand) co http://www.mythical.org/svn/Mythical/trunk Mythical&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Configure to build&lt;br /&gt;
 proc Mythical-Configure {} {&lt;br /&gt;
   Debug &amp;quot;Configure Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Mythical-build&lt;br /&gt;
   cd Mythical-build&lt;br /&gt;
   ExecuteCommand $SBuild(CMake) \&lt;br /&gt;
     -G$SBuild(Generator) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER:STRING=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER_FULLPATH:FILEPATH=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DBUILD_SHARED_LIBS:BOOL=ON \&lt;br /&gt;
     -DCMAKE_SKIP_RPATH:BOOL=ON \&lt;br /&gt;
     -DBUILD_EXAMPLES:BOOL=OFF \&lt;br /&gt;
     -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
     -DCMAKE_BUILD_TYPE:STRING=$::SBuild(BuildType) \&lt;br /&gt;
     -DCMAKE_CXX_FLAGS_DEBUG:STRING=$::SBuild(CMakeCXXFlagsDebug) \&lt;br /&gt;
     ../Insight&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on windows?&lt;br /&gt;
 proc Mythical-Build-Windows {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   ExecuteCommand $SBuild(Make) Mythical.SLN /build  $SBuild(BuildType)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on other Makefile-based systems?&lt;br /&gt;
 proc Mythical-Build {} {&lt;br /&gt;
   Debug &amp;quot;Building Mythical&amp;quot;&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   eval ExecuteCommand $SBuild(Make) $SBuild(ParallelMake)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Clean up Mythical (nothing for the moment).&lt;br /&gt;
 proc Mythical-Clean {} {&lt;br /&gt;
   Debug &amp;quot;Cleaning Mythical&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* http://www.na-mic.org/Wiki/index.php/Slicer3&lt;br /&gt;
* http://www.na-mic.org/websvn/listing.php?repname=Slicer3&lt;br /&gt;
* [[Slicer3::Eclipse | Howto integrate Slicer3 into Eclipse]]&lt;br /&gt;
== Information on Free Microsoft C++ Compiler on Windows ==&lt;br /&gt;
&lt;br /&gt;
Be sure to follow '''all''' the steps on Microsoft link. Yes it means you need to download the compiler '''and''' sdk.&lt;br /&gt;
&lt;br /&gt;
* http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22574</id>
		<title>Slicer3:Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22574"/>
		<updated>2008-03-04T04:14:55Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Adding new Libraries to SBuild */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= All-in-one Script to checkout and build Slicer3 =&lt;br /&gt;
&lt;br /&gt;
To compile and build Slicer3, you need a set of development packages installed on your machine: &lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_linux pre-requisite material for Linux ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_windows pre-requisite material for Windows ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_Apple_Mac_OS_X pre-requisite material for Mac ]&lt;br /&gt;
&lt;br /&gt;
There's a script called getbuildtest.tcl that makes the support libraries (VTK, ITK, teem, etc) and also builds slicer and does a dashboard submission.  (Click [[Slicer3:getbuildtest | here for background on getbuildtest]] and the experimental getbuildtest2 version).&lt;br /&gt;
&lt;br /&gt;
Just do the following two commands (see [[Slicer3:Build_Instructions#getbuildtest_on_windows|for windows users]] below):&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
   svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 &lt;br /&gt;
   ./Slicer3/Scripts/getbuildtest.tcl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Note: that a Slicer3-lib and Slicer3-build directory will be created for you. This is meant to be used to set up new machines and to run nightly testing of the full builds.&lt;br /&gt;
&lt;br /&gt;
To run (all platforms):&lt;br /&gt;
&lt;br /&gt;
 ./Slicer3-build/Slicer3&lt;br /&gt;
&lt;br /&gt;
Note: the whole build environment takes about 2G of disk space.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
Note also that getbuildtest will do an Experimental submission to the [http://www.na-mic.org/Slicer3/Dashboard/ Slicer3 dashboard]. If you want to use getbuildtest without submitting to the dashboard, you can set the test type to nothing with&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl -t &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Other options for the -t (--test-type) option are Nightly or Continuous (or any of the [http://www.cmake.org/Wiki/CMake_Testing_With_CTest CTest] options).&lt;br /&gt;
&lt;br /&gt;
== What does getbuildtest.tcl do? ==&lt;br /&gt;
&lt;br /&gt;
This script just automates the steps needed to build slicer.  What you end up with is a set of source and build directories that can either be further manipulated with getbuildtest or can be worked with normally.  That is, on windows you will have solution files that you can load in visual studio for debugging and further development.&lt;br /&gt;
&lt;br /&gt;
Specifically, getbuildtest does the following steps:&lt;br /&gt;
&lt;br /&gt;
* Refreshes Slicer3 svn&lt;br /&gt;
* Runs Scripts/genlib.tcl which does the following for each of the support libraries&lt;br /&gt;
** does a cvs/svn checkout/update&lt;br /&gt;
** runs cmake with the correct settings for use with Slicer3&lt;br /&gt;
** runs make (or developer studio) to build the libraries&lt;br /&gt;
* Runs cmake on Slicer3&lt;br /&gt;
* Builds Slicer3&lt;br /&gt;
* Runs ctest on Slicer3&lt;br /&gt;
* (optionally) Runs CPack on Slicer3&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
  usage: getbuildtest [options] [target]&lt;br /&gt;
    [target] is determined automatically if not specified&lt;br /&gt;
    [options] is one of the following:&lt;br /&gt;
     --help : prints this message and exits&lt;br /&gt;
     --clean : delete lib and build directories first&lt;br /&gt;
     -t --test-type : CTest test target&lt;br /&gt;
     --release : compile with optimization flags&lt;br /&gt;
     --update : does a cvs/svn update on each lib&lt;br /&gt;
     --pack : builds a distribution package (cpack)&lt;br /&gt;
&lt;br /&gt;
== Errors from getbuildtest ==&lt;br /&gt;
&lt;br /&gt;
You will need to have your firewall configured to allow access to na-mic.org for cvs access through port 2401. Also you need 8081 for submitting to the dashboard.&lt;br /&gt;
&lt;br /&gt;
Other errors might mean you don't have all the build tools (see next section).&lt;br /&gt;
&lt;br /&gt;
If you want to generate a log of the build process, you can use a command like the following:&lt;br /&gt;
&lt;br /&gt;
 # for csh/tcsh:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl |&amp;amp; tee build.log&lt;br /&gt;
or&lt;br /&gt;
 # for sh/bash:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl 2&amp;gt;&amp;amp;1 | tee build.log&lt;br /&gt;
&lt;br /&gt;
== Updating Your getbuildtest Build ==&lt;br /&gt;
&lt;br /&gt;
There are a few options:&lt;br /&gt;
&lt;br /&gt;
* you can re-run getbuildtest and it will update slicer3 and rebuild (just slicer3)&lt;br /&gt;
* you can add the --update option and all the libs will get a cvs/svn update and will rebuild if needed (good for tracking the development head of VTK/ITK/KWWidgets etc).&lt;br /&gt;
* you can just 'svn update' in the Slicer3 directory and then do 'make' in the Slicer3-build to get just the latest Slicer3 code.&lt;br /&gt;
&lt;br /&gt;
The following command for unix machines will update, build, and launch the latest Slicer3:&lt;br /&gt;
&lt;br /&gt;
 svn update &amp;amp;&amp;amp; (cd ../Slicer3-build; make &amp;amp;&amp;amp; ./bin/Slicer3)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on linux ==&lt;br /&gt;
&lt;br /&gt;
To compile slicer and do development, be sure you have a complete set of development packages installed on your machine.  The exact packages vary by distribution, but include:&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-c++&lt;br /&gt;
* libX11 &lt;br /&gt;
* libX11-devel (libX11-dev  on Ubuntu 7.04)&lt;br /&gt;
* libXt-devel (libXt-dev on Ubuntu)&lt;br /&gt;
* opengl/mesa (libgl1-mesa-dev on Ubuntu)&lt;br /&gt;
&lt;br /&gt;
Ubuntu one line install:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install subversion cvs tcl8.4 gcc g++ libX11-dev libXt-dev libxext-dev libgl1-mesa-dev libncurses5-dev tcsh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, be sure you have OpenGL and the GLX extension to X working.  To check the installation, it is usually enough to confirm that the command &amp;lt;pre&amp;gt;glxgears&amp;lt;/pre&amp;gt; runs with no errors.&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on windows ==&lt;br /&gt;
&lt;br /&gt;
The script should work fine on a properly configured windows environment. Current requirements are:&lt;br /&gt;
&lt;br /&gt;
* Developer Studio 8 Visual C++ Express which is free from Microsoft - be sure to install the Platform SDK and follow the ridiculous manual steps to set up the paths [[Slicer3:Build_Instructions#Information_on_Free_Microsoft_C.2B.2B_Compiler_on_Windows|see below]].&lt;br /&gt;
* Developer Studio 9 Visual C++ Express [[Slicer:Build_Instructions:MSVS9]]&lt;br /&gt;
** Other releases of visual studio also work (7 and 7.1)&lt;br /&gt;
** If they are installed in the default locations in &amp;quot;c:/Program Files&amp;quot; they will be detected by the build script automatically (you need to edit slicer_variables.tcl to point to the installation).&lt;br /&gt;
* [http://www.cygwin.com Cygwin] with the following packages&lt;br /&gt;
** tcltk&lt;br /&gt;
** svn&lt;br /&gt;
** cvs&lt;br /&gt;
** unzip&lt;br /&gt;
** curl&lt;br /&gt;
* With Developers Studio and cygwin installed, you only need to do the svn checkout and getbuildtest script to get a fully working Slicer3 plus all the tools you need to develop new code.&lt;br /&gt;
&lt;br /&gt;
Note: CMake and VTK will not work on a FAT formatted disk (use NTFS).&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on Apple Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
For Mac OS 10.4.10 install the following from the OS disks (not installed by default on new machines):&lt;br /&gt;
* Xcode Tools (OS Disk 1, default window)&lt;br /&gt;
* X11: also on OS Disk 1, but you need to scroll down and find the Optional Installs installer and select X11 under Applications. See [http://porting.openoffice.org/mac/faq/installing/X11.html step-by-step instructions].&lt;br /&gt;
* X11SDK - from OS Disk 1, Xcode Tools/Packages/X11SDK.pkg&lt;br /&gt;
* Subversion.  Installation [http://downloads.open.collab.net/binaries.html options here].  Get the latest svn version for compatibility with the server and be sure your client includes SSL (so it can access https repositories).&lt;br /&gt;
&lt;br /&gt;
Remember to run getbuildtest from an xterm so the tests can access the X server.&lt;br /&gt;
&lt;br /&gt;
== configuration options ==&lt;br /&gt;
&lt;br /&gt;
The file Slicer3/slicer_variables.tcl includes configuration options for which support libraries to use.  You may want to change thes for testing or to get access to new functionality.  &lt;br /&gt;
&lt;br /&gt;
 set ::SLICER_TAG &amp;quot;http://www.na-mic.org/svn/Slicer3/trunk&amp;quot;&lt;br /&gt;
 set ::CMAKE_TAG &amp;quot;CMake-2-4-2&amp;quot;&lt;br /&gt;
 set ::TEEM_TAG &amp;quot;Teem-1-9-0-patches&amp;quot;&lt;br /&gt;
 set ::KWWidgets_TAG &amp;quot;HEAD&amp;quot;&lt;br /&gt;
 set ::VTK_TAG &amp;quot;VTK-5-0&amp;quot;&lt;br /&gt;
 set ::ITK_TAG ITK-3-0&lt;br /&gt;
 set ::TCL_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::TK_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::ITCL_TAG &amp;quot;itcl-3-2-1&amp;quot;&lt;br /&gt;
 set ::IWIDGETS_TAG &amp;quot;iwidgets-4-0-1&amp;quot;&lt;br /&gt;
 set ::BLT_TAG &amp;quot;blt24z&amp;quot;&lt;br /&gt;
 set ::SANDBOX_TAG &amp;quot;http://svn.na-mic.org/svn/NAMICSandBox/branches/Slicer-2-6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For example, you may want a build against the ITK cvs head.  Change the flag value and then run &lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --update &lt;br /&gt;
&lt;br /&gt;
which will get the version from cvs, build it, and rebuild slicer3.  Depending on how radically different the versions you build are, you may need to use --clean.&lt;br /&gt;
&lt;br /&gt;
Another useful option is to change your build type to include support debugging.&lt;br /&gt;
&lt;br /&gt;
 set ::VTK_BUILD_TYPE &amp;quot;RelWithDebInfo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
options are Debug, Release, or RelWithDebInfo.  RelWithDebInfo is a compromise between speed and debuggability.  If you are tracking down a tough C++ bug you will get better information in Debug mode.  After changing this flag, you should run&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --clean&lt;br /&gt;
&lt;br /&gt;
to create a completely new build.&lt;br /&gt;
&lt;br /&gt;
= Manual checkout/build of Slicer3 and support libraries: =&lt;br /&gt;
&lt;br /&gt;
== Prerequisite software ==&lt;br /&gt;
&lt;br /&gt;
You need to get and build the following packages if you aren't using the getbuildtest script:&lt;br /&gt;
&lt;br /&gt;
# [http://www.cmake.org CMake (2.4.1 or later)]&lt;br /&gt;
# [http://www.tcl.tk Tcl/Tk (8.4 or later)]&lt;br /&gt;
# [http://sourceforge.net/projects/incrtcl/ incrTcl (3.2.1)]&lt;br /&gt;
# [http://www.vtk.org VTK 5.0]&lt;br /&gt;
# [http://www.itk.org ITK 3.4]&lt;br /&gt;
# [http://www.kwwidgets.org KWWidgets Slicer-3-0 tag]&lt;br /&gt;
# [http://teem.sf.net Teem (1.9.0)]&lt;br /&gt;
&lt;br /&gt;
== Build Steps ==&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
 $ svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.vtk.org:/cvsroot/VTK co VTK -r VTK-5-0&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.itk.org:/cvsroot/Insight co Insight -r ITK-3-4&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.kwwidgets.org:/cvsroot/KWWidgets co KWWidgets -r Slicer-3-0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure and build ITK ===&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
=== Configure and build VTK ===&lt;br /&gt;
&lt;br /&gt;
* All systems:&lt;br /&gt;
** BUILD_SHARED_LIBS ON&lt;br /&gt;
** CMAKE_SKIP_RPATH ON&lt;br /&gt;
** VTK_WRAP_TCL ON&lt;br /&gt;
** VTK_DEBUG_LEAKS ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX specific (Make sure to install [http://www.apple.com/downloads/macosx/apple/x11formacosx.html X11]):&lt;br /&gt;
** VTK_USE_CARBON OFF&lt;br /&gt;
** VTK_USE_X ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note, those options '''should not''' appear, since they disapear since VTK5:&lt;br /&gt;
** VTK_USE_HYBRID ON&lt;br /&gt;
** VTK_USE_PATENTED ON&lt;br /&gt;
&lt;br /&gt;
* Make sure that the TCL and TK path are set properly&lt;br /&gt;
** TCL_* and TK_*&lt;br /&gt;
&lt;br /&gt;
=== Configure and build KWWidgets ===&lt;br /&gt;
&lt;br /&gt;
* You need to specify where your VTK build tree is.&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
== Build and Run Slicer3 ==&lt;br /&gt;
&lt;br /&gt;
=== Manually ===&lt;br /&gt;
&lt;br /&gt;
# Check out and build slicer3 (e.g. on linux)&lt;br /&gt;
&lt;br /&gt;
  svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
  mkdir Slicer3-build&lt;br /&gt;
  cd Slicer3-build&lt;br /&gt;
  ccmake ../Slicer3&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Again make sure to turn:&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Start slicer with the Slicer3 executable in your build directory.&lt;br /&gt;
&lt;br /&gt;
= SBuild =&lt;br /&gt;
SBuild is a new, experimental build system for Slicer.  It is based on getbuildtest2.tcl and genlib2.tcl, but rather than try to hid the gory details of building Slicer, SBuild attempts to expose a reasonable amount to the developer.  The interface should be reasonably intuitive, but a brief walk through is useful.  Click on the thumbnails for larger views.  SBuild allows you to update and build just the portions of Slicer that you may require or want to build.  Any of the required libraries may be specified to be build by SBuild, or to use an existing build.  Existing libraries are not controlled by SBuild.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding new Libraries to SBuild ==&lt;br /&gt;
The default package of SBuild contains the minimal number of required libraries to build Slicer.  Currently no optional libraries are installed.  The procedure for providing an SBuild plugin is modestly complicated, but several good examples exist.  All plugins go in SBuild.vfs/lib/SBuildPlugins.  As an example, let's create a plugin called Mythical, contained in SBuild.vfs/lib/SBuildPlugins/Mythical.tcl.&lt;br /&gt;
&lt;br /&gt;
In the Slicer3/Scripts/SBuild directory, run '''./bootstrap run''' to run SBuild, and '''./bootstrap build''' to build the Tcl Starkits.&lt;br /&gt;
&lt;br /&gt;
The first section of Mythical.tcl provides some housekeeping details:&lt;br /&gt;
&lt;br /&gt;
 package provide SBuildPlugins 1.0 &lt;br /&gt;
 &lt;br /&gt;
 lappend ::SBuild(Plugins) Mythical &lt;br /&gt;
 &lt;br /&gt;
 set ::Plugin(Mythical,Type) &amp;quot;optional&amp;quot;&lt;br /&gt;
 set ::Plugin(Mythical,Order) 100&lt;br /&gt;
 set ::Plugin(Mythical,CanUseUserBuild) 1&lt;br /&gt;
&lt;br /&gt;
The Mythical plugin must append itself to ::SBuild(Plugins) to register, and declares itself optional, builds in order 100, and can use user provided builds.&lt;br /&gt;
&lt;br /&gt;
Each plugin must provide several Tcl procs to do various functions.  The naming convention is PluginName-Function-Architecture.  In this example PluginName is Mythical.  SBuild first looks for the -Architecture variant, and failing, calls the PluginName-Function.  For instance, Mythical-Update is the Tcl proc that updates the source for Mythical, while Mythical-Build-Windows is a specialization for Windows.  The important functions are: Update, Configure, Build, and ConfigureSlicer.  The ConfigureSlicer function may append a CMake argument to be used when Slicer is configured.  If external packages are allowed, the ConfigureExternal function is called.  ConfigureExternal usually looks for libraries and sets a LibPath to be used to configure Slicer.  Examples of these functions are shown below.&lt;br /&gt;
&lt;br /&gt;
 # Here is where we would add lines to the main Slicer3 configuration&lt;br /&gt;
 proc Mythical-Setup {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we setup for an external build&lt;br /&gt;
 proc Mythical-ConfigureExternal {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   set SBuild(Mythical,LibPath) [file dirname [FindFile $::SBuild(Mythical,ExternalBuildPath) [list libMythicalCommon* MythicalCommon*.lib MythicalCommon*.dll]]]&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Add a line to Slicer's CMake command&lt;br /&gt;
 proc Mythical-ConfigureSlicer {} {&lt;br /&gt;
   global Plugin SBuild Slicer&lt;br /&gt;
   set dir [file join $SBuild(SlicerLibDir) Insight-build]&lt;br /&gt;
   if { $SBuild(Mythical,UseExternalBuild) } {&lt;br /&gt;
     set dir $SBuild(Mythical,ExternalBuildPath)&lt;br /&gt;
   }&lt;br /&gt;
   Debug &amp;quot;setting Mythical_DIR to $dir&amp;quot;&lt;br /&gt;
   lappend Slicer(CMakeArguments) -DMythical_DIR:FILEPATH=$dir&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we update Mythical?&lt;br /&gt;
 proc Mythical-Update {} {&lt;br /&gt;
   Debug &amp;quot;Checking out Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Insight&lt;br /&gt;
   ExecuteCommand $SBuild(SVNCommand) co http://www.mythical.org/svn/Mythical/trunk Mythical&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Configure to build&lt;br /&gt;
 proc Mythical-Configure {} {&lt;br /&gt;
   Debug &amp;quot;Configure Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Mythical-build&lt;br /&gt;
   cd Mythical-build&lt;br /&gt;
   ExecuteCommand $SBuild(CMake) \&lt;br /&gt;
     -G$SBuild(Generator) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER:STRING=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER_FULLPATH:FILEPATH=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DBUILD_SHARED_LIBS:BOOL=ON \&lt;br /&gt;
     -DCMAKE_SKIP_RPATH:BOOL=ON \&lt;br /&gt;
     -DBUILD_EXAMPLES:BOOL=OFF \&lt;br /&gt;
     -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
     -DCMAKE_BUILD_TYPE:STRING=$::SBuild(BuildType) \&lt;br /&gt;
     -DCMAKE_CXX_FLAGS_DEBUG:STRING=$::SBuild(CMakeCXXFlagsDebug) \&lt;br /&gt;
     ../Insight&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on windows?&lt;br /&gt;
 proc Mythical-Build-Windows {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   ExecuteCommand $SBuild(Make) Mythical.SLN /build  $SBuild(BuildType)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on other Makefile-based systems?&lt;br /&gt;
 proc Mythical-Build {} {&lt;br /&gt;
   Debug &amp;quot;Building Mythical&amp;quot;&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   eval ExecuteCommand $SBuild(Make) $SBuild(ParallelMake)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Clean up Mythical (nothing for the moment).&lt;br /&gt;
 proc Mythical-Clean {} {&lt;br /&gt;
   Debug &amp;quot;Cleaning Mythical&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* http://www.na-mic.org/Wiki/index.php/Slicer3&lt;br /&gt;
* http://www.na-mic.org/websvn/listing.php?repname=Slicer3&lt;br /&gt;
* [[Slicer3::Eclipse | Howto integrate Slicer3 into Eclipse]]&lt;br /&gt;
== Information on Free Microsoft C++ Compiler on Windows ==&lt;br /&gt;
&lt;br /&gt;
Be sure to follow '''all''' the steps on Microsoft link. Yes it means you need to download the compiler '''and''' sdk.&lt;br /&gt;
&lt;br /&gt;
* http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22573</id>
		<title>Slicer3:Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22573"/>
		<updated>2008-03-04T03:53:12Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* SBuild */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= All-in-one Script to checkout and build Slicer3 =&lt;br /&gt;
&lt;br /&gt;
To compile and build Slicer3, you need a set of development packages installed on your machine: &lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_linux pre-requisite material for Linux ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_windows pre-requisite material for Windows ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_Apple_Mac_OS_X pre-requisite material for Mac ]&lt;br /&gt;
&lt;br /&gt;
There's a script called getbuildtest.tcl that makes the support libraries (VTK, ITK, teem, etc) and also builds slicer and does a dashboard submission.  (Click [[Slicer3:getbuildtest | here for background on getbuildtest]] and the experimental getbuildtest2 version).&lt;br /&gt;
&lt;br /&gt;
Just do the following two commands (see [[Slicer3:Build_Instructions#getbuildtest_on_windows|for windows users]] below):&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
   svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 &lt;br /&gt;
   ./Slicer3/Scripts/getbuildtest.tcl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Note: that a Slicer3-lib and Slicer3-build directory will be created for you. This is meant to be used to set up new machines and to run nightly testing of the full builds.&lt;br /&gt;
&lt;br /&gt;
To run (all platforms):&lt;br /&gt;
&lt;br /&gt;
 ./Slicer3-build/Slicer3&lt;br /&gt;
&lt;br /&gt;
Note: the whole build environment takes about 2G of disk space.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
Note also that getbuildtest will do an Experimental submission to the [http://www.na-mic.org/Slicer3/Dashboard/ Slicer3 dashboard]. If you want to use getbuildtest without submitting to the dashboard, you can set the test type to nothing with&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl -t &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Other options for the -t (--test-type) option are Nightly or Continuous (or any of the [http://www.cmake.org/Wiki/CMake_Testing_With_CTest CTest] options).&lt;br /&gt;
&lt;br /&gt;
== What does getbuildtest.tcl do? ==&lt;br /&gt;
&lt;br /&gt;
This script just automates the steps needed to build slicer.  What you end up with is a set of source and build directories that can either be further manipulated with getbuildtest or can be worked with normally.  That is, on windows you will have solution files that you can load in visual studio for debugging and further development.&lt;br /&gt;
&lt;br /&gt;
Specifically, getbuildtest does the following steps:&lt;br /&gt;
&lt;br /&gt;
* Refreshes Slicer3 svn&lt;br /&gt;
* Runs Scripts/genlib.tcl which does the following for each of the support libraries&lt;br /&gt;
** does a cvs/svn checkout/update&lt;br /&gt;
** runs cmake with the correct settings for use with Slicer3&lt;br /&gt;
** runs make (or developer studio) to build the libraries&lt;br /&gt;
* Runs cmake on Slicer3&lt;br /&gt;
* Builds Slicer3&lt;br /&gt;
* Runs ctest on Slicer3&lt;br /&gt;
* (optionally) Runs CPack on Slicer3&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
  usage: getbuildtest [options] [target]&lt;br /&gt;
    [target] is determined automatically if not specified&lt;br /&gt;
    [options] is one of the following:&lt;br /&gt;
     --help : prints this message and exits&lt;br /&gt;
     --clean : delete lib and build directories first&lt;br /&gt;
     -t --test-type : CTest test target&lt;br /&gt;
     --release : compile with optimization flags&lt;br /&gt;
     --update : does a cvs/svn update on each lib&lt;br /&gt;
     --pack : builds a distribution package (cpack)&lt;br /&gt;
&lt;br /&gt;
== Errors from getbuildtest ==&lt;br /&gt;
&lt;br /&gt;
You will need to have your firewall configured to allow access to na-mic.org for cvs access through port 2401. Also you need 8081 for submitting to the dashboard.&lt;br /&gt;
&lt;br /&gt;
Other errors might mean you don't have all the build tools (see next section).&lt;br /&gt;
&lt;br /&gt;
If you want to generate a log of the build process, you can use a command like the following:&lt;br /&gt;
&lt;br /&gt;
 # for csh/tcsh:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl |&amp;amp; tee build.log&lt;br /&gt;
or&lt;br /&gt;
 # for sh/bash:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl 2&amp;gt;&amp;amp;1 | tee build.log&lt;br /&gt;
&lt;br /&gt;
== Updating Your getbuildtest Build ==&lt;br /&gt;
&lt;br /&gt;
There are a few options:&lt;br /&gt;
&lt;br /&gt;
* you can re-run getbuildtest and it will update slicer3 and rebuild (just slicer3)&lt;br /&gt;
* you can add the --update option and all the libs will get a cvs/svn update and will rebuild if needed (good for tracking the development head of VTK/ITK/KWWidgets etc).&lt;br /&gt;
* you can just 'svn update' in the Slicer3 directory and then do 'make' in the Slicer3-build to get just the latest Slicer3 code.&lt;br /&gt;
&lt;br /&gt;
The following command for unix machines will update, build, and launch the latest Slicer3:&lt;br /&gt;
&lt;br /&gt;
 svn update &amp;amp;&amp;amp; (cd ../Slicer3-build; make &amp;amp;&amp;amp; ./bin/Slicer3)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on linux ==&lt;br /&gt;
&lt;br /&gt;
To compile slicer and do development, be sure you have a complete set of development packages installed on your machine.  The exact packages vary by distribution, but include:&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-c++&lt;br /&gt;
* libX11 &lt;br /&gt;
* libX11-devel (libX11-dev  on Ubuntu 7.04)&lt;br /&gt;
* libXt-devel (libXt-dev on Ubuntu)&lt;br /&gt;
* opengl/mesa (libgl1-mesa-dev on Ubuntu)&lt;br /&gt;
&lt;br /&gt;
Ubuntu one line install:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install subversion cvs tcl8.4 gcc g++ libX11-dev libXt-dev libxext-dev libgl1-mesa-dev libncurses5-dev tcsh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, be sure you have OpenGL and the GLX extension to X working.  To check the installation, it is usually enough to confirm that the command &amp;lt;pre&amp;gt;glxgears&amp;lt;/pre&amp;gt; runs with no errors.&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on windows ==&lt;br /&gt;
&lt;br /&gt;
The script should work fine on a properly configured windows environment. Current requirements are:&lt;br /&gt;
&lt;br /&gt;
* Developer Studio 8 Visual C++ Express which is free from Microsoft - be sure to install the Platform SDK and follow the ridiculous manual steps to set up the paths [[Slicer3:Build_Instructions#Information_on_Free_Microsoft_C.2B.2B_Compiler_on_Windows|see below]].&lt;br /&gt;
* Developer Studio 9 Visual C++ Express [[Slicer:Build_Instructions:MSVS9]]&lt;br /&gt;
** Other releases of visual studio also work (7 and 7.1)&lt;br /&gt;
** If they are installed in the default locations in &amp;quot;c:/Program Files&amp;quot; they will be detected by the build script automatically (you need to edit slicer_variables.tcl to point to the installation).&lt;br /&gt;
* [http://www.cygwin.com Cygwin] with the following packages&lt;br /&gt;
** tcltk&lt;br /&gt;
** svn&lt;br /&gt;
** cvs&lt;br /&gt;
** unzip&lt;br /&gt;
** curl&lt;br /&gt;
* With Developers Studio and cygwin installed, you only need to do the svn checkout and getbuildtest script to get a fully working Slicer3 plus all the tools you need to develop new code.&lt;br /&gt;
&lt;br /&gt;
Note: CMake and VTK will not work on a FAT formatted disk (use NTFS).&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on Apple Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
For Mac OS 10.4.10 install the following from the OS disks (not installed by default on new machines):&lt;br /&gt;
* Xcode Tools (OS Disk 1, default window)&lt;br /&gt;
* X11: also on OS Disk 1, but you need to scroll down and find the Optional Installs installer and select X11 under Applications. See [http://porting.openoffice.org/mac/faq/installing/X11.html step-by-step instructions].&lt;br /&gt;
* X11SDK - from OS Disk 1, Xcode Tools/Packages/X11SDK.pkg&lt;br /&gt;
* Subversion.  Installation [http://downloads.open.collab.net/binaries.html options here].  Get the latest svn version for compatibility with the server and be sure your client includes SSL (so it can access https repositories).&lt;br /&gt;
&lt;br /&gt;
Remember to run getbuildtest from an xterm so the tests can access the X server.&lt;br /&gt;
&lt;br /&gt;
== configuration options ==&lt;br /&gt;
&lt;br /&gt;
The file Slicer3/slicer_variables.tcl includes configuration options for which support libraries to use.  You may want to change thes for testing or to get access to new functionality.  &lt;br /&gt;
&lt;br /&gt;
 set ::SLICER_TAG &amp;quot;http://www.na-mic.org/svn/Slicer3/trunk&amp;quot;&lt;br /&gt;
 set ::CMAKE_TAG &amp;quot;CMake-2-4-2&amp;quot;&lt;br /&gt;
 set ::TEEM_TAG &amp;quot;Teem-1-9-0-patches&amp;quot;&lt;br /&gt;
 set ::KWWidgets_TAG &amp;quot;HEAD&amp;quot;&lt;br /&gt;
 set ::VTK_TAG &amp;quot;VTK-5-0&amp;quot;&lt;br /&gt;
 set ::ITK_TAG ITK-3-0&lt;br /&gt;
 set ::TCL_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::TK_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::ITCL_TAG &amp;quot;itcl-3-2-1&amp;quot;&lt;br /&gt;
 set ::IWIDGETS_TAG &amp;quot;iwidgets-4-0-1&amp;quot;&lt;br /&gt;
 set ::BLT_TAG &amp;quot;blt24z&amp;quot;&lt;br /&gt;
 set ::SANDBOX_TAG &amp;quot;http://svn.na-mic.org/svn/NAMICSandBox/branches/Slicer-2-6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For example, you may want a build against the ITK cvs head.  Change the flag value and then run &lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --update &lt;br /&gt;
&lt;br /&gt;
which will get the version from cvs, build it, and rebuild slicer3.  Depending on how radically different the versions you build are, you may need to use --clean.&lt;br /&gt;
&lt;br /&gt;
Another useful option is to change your build type to include support debugging.&lt;br /&gt;
&lt;br /&gt;
 set ::VTK_BUILD_TYPE &amp;quot;RelWithDebInfo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
options are Debug, Release, or RelWithDebInfo.  RelWithDebInfo is a compromise between speed and debuggability.  If you are tracking down a tough C++ bug you will get better information in Debug mode.  After changing this flag, you should run&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --clean&lt;br /&gt;
&lt;br /&gt;
to create a completely new build.&lt;br /&gt;
&lt;br /&gt;
= Manual checkout/build of Slicer3 and support libraries: =&lt;br /&gt;
&lt;br /&gt;
== Prerequisite software ==&lt;br /&gt;
&lt;br /&gt;
You need to get and build the following packages if you aren't using the getbuildtest script:&lt;br /&gt;
&lt;br /&gt;
# [http://www.cmake.org CMake (2.4.1 or later)]&lt;br /&gt;
# [http://www.tcl.tk Tcl/Tk (8.4 or later)]&lt;br /&gt;
# [http://sourceforge.net/projects/incrtcl/ incrTcl (3.2.1)]&lt;br /&gt;
# [http://www.vtk.org VTK 5.0]&lt;br /&gt;
# [http://www.itk.org ITK 3.4]&lt;br /&gt;
# [http://www.kwwidgets.org KWWidgets Slicer-3-0 tag]&lt;br /&gt;
# [http://teem.sf.net Teem (1.9.0)]&lt;br /&gt;
&lt;br /&gt;
== Build Steps ==&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
 $ svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.vtk.org:/cvsroot/VTK co VTK -r VTK-5-0&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.itk.org:/cvsroot/Insight co Insight -r ITK-3-4&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.kwwidgets.org:/cvsroot/KWWidgets co KWWidgets -r Slicer-3-0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure and build ITK ===&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
=== Configure and build VTK ===&lt;br /&gt;
&lt;br /&gt;
* All systems:&lt;br /&gt;
** BUILD_SHARED_LIBS ON&lt;br /&gt;
** CMAKE_SKIP_RPATH ON&lt;br /&gt;
** VTK_WRAP_TCL ON&lt;br /&gt;
** VTK_DEBUG_LEAKS ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX specific (Make sure to install [http://www.apple.com/downloads/macosx/apple/x11formacosx.html X11]):&lt;br /&gt;
** VTK_USE_CARBON OFF&lt;br /&gt;
** VTK_USE_X ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note, those options '''should not''' appear, since they disapear since VTK5:&lt;br /&gt;
** VTK_USE_HYBRID ON&lt;br /&gt;
** VTK_USE_PATENTED ON&lt;br /&gt;
&lt;br /&gt;
* Make sure that the TCL and TK path are set properly&lt;br /&gt;
** TCL_* and TK_*&lt;br /&gt;
&lt;br /&gt;
=== Configure and build KWWidgets ===&lt;br /&gt;
&lt;br /&gt;
* You need to specify where your VTK build tree is.&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
== Build and Run Slicer3 ==&lt;br /&gt;
&lt;br /&gt;
=== Manually ===&lt;br /&gt;
&lt;br /&gt;
# Check out and build slicer3 (e.g. on linux)&lt;br /&gt;
&lt;br /&gt;
  svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
  mkdir Slicer3-build&lt;br /&gt;
  cd Slicer3-build&lt;br /&gt;
  ccmake ../Slicer3&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Again make sure to turn:&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Start slicer with the Slicer3 executable in your build directory.&lt;br /&gt;
&lt;br /&gt;
= SBuild =&lt;br /&gt;
SBuild is a new, experimental build system for Slicer.  It is based on getbuildtest2.tcl and genlib2.tcl, but rather than try to hid the gory details of building Slicer, SBuild attempts to expose a reasonable amount to the developer.  The interface should be reasonably intuitive, but a brief walk through is useful.  Click on the thumbnails for larger views.  SBuild allows you to update and build just the portions of Slicer that you may require or want to build.  Any of the required libraries may be specified to be build by SBuild, or to use an existing build.  Existing libraries are not controlled by SBuild.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding new Libraries to SBuild ==&lt;br /&gt;
The default package of SBuild contains the minimal number of required libraries to build Slicer.  Currently no optional libraries are installed.  The procedure for providing an SBuild plugin is modestly complicated, but several good examples exist.  All plugins go in SBuild.vfs/lib/SBuildPlugins.  As an example, let's create a plugin called Mythical, contained in SBuild.vfs/lib/SBuildPlugins/Mythical.tcl.&lt;br /&gt;
&lt;br /&gt;
The first section provides some housekeeping details:&lt;br /&gt;
&lt;br /&gt;
 package provide SBuildPlugins 1.0 &lt;br /&gt;
 &lt;br /&gt;
 lappend ::SBuild(Plugins) Mythical &lt;br /&gt;
 &lt;br /&gt;
 set ::Plugin(Mythical,Type) &amp;quot;optional&amp;quot;&lt;br /&gt;
 set ::Plugin(Mythical,Order) 100&lt;br /&gt;
 set ::Plugin(Mythical,CanUseUserBuild) 1&lt;br /&gt;
&lt;br /&gt;
The Mythical plugin must append itself to ::SBuild(Plugins) to register, and declares itself optional, builds in order 100, and can use user provided builds.&lt;br /&gt;
&lt;br /&gt;
Each plugin must provide several Tcl procs to do various functions.  The naming convention is PluginName-Function-Architecture.  In this example PluginName is Mythical.  SBuild first looks for the -Architecture variant, and failing, calls the PluginName-Function.  For instance, Mythical-Update is the Tcl proc that updates the source for Mythical, while Mythical-Build-Windows is a specialization for Windows.  The important functions are: Update, Configure, Build, and ConfigureSlicer.  The ConfigureSlicer function may append a CMake argument to be used when Slicer is configured.  If external packages are allowed, the ConfigureExternal function is called.  ConfigureExternal usually looks for libraries and sets a LibPath to be used to configure Slicer.  Examples of these functions are shown below.&lt;br /&gt;
&lt;br /&gt;
 # Here is where we would add lines to the main Slicer3 configuration&lt;br /&gt;
 proc Mythical-Setup {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we setup for an external build&lt;br /&gt;
 proc Mythical-ConfigureExternal {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   set SBuild(Mythical,LibPath) [file dirname [FindFile $::SBuild(Mythical,ExternalBuildPath) [list libMythicalCommon* MythicalCommon*.lib MythicalCommon*.dll]]]&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Add a line to Slicer's CMake command&lt;br /&gt;
 proc Mythical-ConfigureSlicer {} {&lt;br /&gt;
   global Plugin SBuild Slicer&lt;br /&gt;
   set dir [file join $SBuild(SlicerLibDir) Insight-build]&lt;br /&gt;
   if { $SBuild(Mythical,UseExternalBuild) } {&lt;br /&gt;
     set dir $SBuild(Mythical,ExternalBuildPath)&lt;br /&gt;
   }&lt;br /&gt;
   Debug &amp;quot;setting Mythical_DIR to $dir&amp;quot;&lt;br /&gt;
   lappend Slicer(CMakeArguments) -DMythical_DIR:FILEPATH=$dir&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we update Mythical?&lt;br /&gt;
 proc Mythical-Update {} {&lt;br /&gt;
   Debug &amp;quot;Checking out Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Insight&lt;br /&gt;
   ExecuteCommand $SBuild(SVNCommand) co http://www.mythical.org/svn/Mythical/trunk Mythical&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Configure to build&lt;br /&gt;
 proc Mythical-Configure {} {&lt;br /&gt;
   Debug &amp;quot;Configure Mythical&amp;quot;&lt;br /&gt;
   global SBuild Plugin&lt;br /&gt;
   file mkdir Mythical-build&lt;br /&gt;
   cd Mythical-build&lt;br /&gt;
   ExecuteCommand $SBuild(CMake) \&lt;br /&gt;
     -G$SBuild(Generator) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER:STRING=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DCMAKE_CXX_COMPILER_FULLPATH:FILEPATH=$::SBuild(CompilerPath)/$SBuild(Compiler) \&lt;br /&gt;
     -DBUILD_SHARED_LIBS:BOOL=ON \&lt;br /&gt;
     -DCMAKE_SKIP_RPATH:BOOL=ON \&lt;br /&gt;
     -DBUILD_EXAMPLES:BOOL=OFF \&lt;br /&gt;
     -DBUILD_TESTING:BOOL=OFF \&lt;br /&gt;
     -DCMAKE_BUILD_TYPE:STRING=$::SBuild(BuildType) \&lt;br /&gt;
     -DCMAKE_CXX_FLAGS_DEBUG:STRING=$::SBuild(CMakeCXXFlagsDebug) \&lt;br /&gt;
     ../Insight&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on windows?&lt;br /&gt;
 proc Mythical-Build-Windows {} {&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   ExecuteCommand $SBuild(Make) Mythical.SLN /build  $SBuild(BuildType)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # How do we build on other Makefile-based systems?&lt;br /&gt;
 proc Mythical-Build {} {&lt;br /&gt;
   Debug &amp;quot;Building Mythical&amp;quot;&lt;br /&gt;
   global SBuild&lt;br /&gt;
   cd Insight-build&lt;br /&gt;
   eval ExecuteCommand $SBuild(Make) $SBuild(ParallelMake)&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Clean up Mythical (nothing for the moment).&lt;br /&gt;
 proc Mythical-Clean {} {&lt;br /&gt;
   Debug &amp;quot;Cleaning Mythical&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* http://www.na-mic.org/Wiki/index.php/Slicer3&lt;br /&gt;
* http://www.na-mic.org/websvn/listing.php?repname=Slicer3&lt;br /&gt;
* [[Slicer3::Eclipse | Howto integrate Slicer3 into Eclipse]]&lt;br /&gt;
== Information on Free Microsoft C++ Compiler on Windows ==&lt;br /&gt;
&lt;br /&gt;
Be sure to follow '''all''' the steps on Microsoft link. Yes it means you need to download the compiler '''and''' sdk.&lt;br /&gt;
&lt;br /&gt;
* http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22572</id>
		<title>Slicer3:Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22572"/>
		<updated>2008-03-04T03:13:21Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* SBuild */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= All-in-one Script to checkout and build Slicer3 =&lt;br /&gt;
&lt;br /&gt;
To compile and build Slicer3, you need a set of development packages installed on your machine: &lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_linux pre-requisite material for Linux ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_windows pre-requisite material for Windows ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_Apple_Mac_OS_X pre-requisite material for Mac ]&lt;br /&gt;
&lt;br /&gt;
There's a script called getbuildtest.tcl that makes the support libraries (VTK, ITK, teem, etc) and also builds slicer and does a dashboard submission.  (Click [[Slicer3:getbuildtest | here for background on getbuildtest]] and the experimental getbuildtest2 version).&lt;br /&gt;
&lt;br /&gt;
Just do the following two commands (see [[Slicer3:Build_Instructions#getbuildtest_on_windows|for windows users]] below):&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
   svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 &lt;br /&gt;
   ./Slicer3/Scripts/getbuildtest.tcl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Note: that a Slicer3-lib and Slicer3-build directory will be created for you. This is meant to be used to set up new machines and to run nightly testing of the full builds.&lt;br /&gt;
&lt;br /&gt;
To run (all platforms):&lt;br /&gt;
&lt;br /&gt;
 ./Slicer3-build/Slicer3&lt;br /&gt;
&lt;br /&gt;
Note: the whole build environment takes about 2G of disk space.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
Note also that getbuildtest will do an Experimental submission to the [http://www.na-mic.org/Slicer3/Dashboard/ Slicer3 dashboard]. If you want to use getbuildtest without submitting to the dashboard, you can set the test type to nothing with&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl -t &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Other options for the -t (--test-type) option are Nightly or Continuous (or any of the [http://www.cmake.org/Wiki/CMake_Testing_With_CTest CTest] options).&lt;br /&gt;
&lt;br /&gt;
== What does getbuildtest.tcl do? ==&lt;br /&gt;
&lt;br /&gt;
This script just automates the steps needed to build slicer.  What you end up with is a set of source and build directories that can either be further manipulated with getbuildtest or can be worked with normally.  That is, on windows you will have solution files that you can load in visual studio for debugging and further development.&lt;br /&gt;
&lt;br /&gt;
Specifically, getbuildtest does the following steps:&lt;br /&gt;
&lt;br /&gt;
* Refreshes Slicer3 svn&lt;br /&gt;
* Runs Scripts/genlib.tcl which does the following for each of the support libraries&lt;br /&gt;
** does a cvs/svn checkout/update&lt;br /&gt;
** runs cmake with the correct settings for use with Slicer3&lt;br /&gt;
** runs make (or developer studio) to build the libraries&lt;br /&gt;
* Runs cmake on Slicer3&lt;br /&gt;
* Builds Slicer3&lt;br /&gt;
* Runs ctest on Slicer3&lt;br /&gt;
* (optionally) Runs CPack on Slicer3&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
  usage: getbuildtest [options] [target]&lt;br /&gt;
    [target] is determined automatically if not specified&lt;br /&gt;
    [options] is one of the following:&lt;br /&gt;
     --help : prints this message and exits&lt;br /&gt;
     --clean : delete lib and build directories first&lt;br /&gt;
     -t --test-type : CTest test target&lt;br /&gt;
     --release : compile with optimization flags&lt;br /&gt;
     --update : does a cvs/svn update on each lib&lt;br /&gt;
     --pack : builds a distribution package (cpack)&lt;br /&gt;
&lt;br /&gt;
== Errors from getbuildtest ==&lt;br /&gt;
&lt;br /&gt;
You will need to have your firewall configured to allow access to na-mic.org for cvs access through port 2401. Also you need 8081 for submitting to the dashboard.&lt;br /&gt;
&lt;br /&gt;
Other errors might mean you don't have all the build tools (see next section).&lt;br /&gt;
&lt;br /&gt;
If you want to generate a log of the build process, you can use a command like the following:&lt;br /&gt;
&lt;br /&gt;
 # for csh/tcsh:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl |&amp;amp; tee build.log&lt;br /&gt;
or&lt;br /&gt;
 # for sh/bash:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl 2&amp;gt;&amp;amp;1 | tee build.log&lt;br /&gt;
&lt;br /&gt;
== Updating Your getbuildtest Build ==&lt;br /&gt;
&lt;br /&gt;
There are a few options:&lt;br /&gt;
&lt;br /&gt;
* you can re-run getbuildtest and it will update slicer3 and rebuild (just slicer3)&lt;br /&gt;
* you can add the --update option and all the libs will get a cvs/svn update and will rebuild if needed (good for tracking the development head of VTK/ITK/KWWidgets etc).&lt;br /&gt;
* you can just 'svn update' in the Slicer3 directory and then do 'make' in the Slicer3-build to get just the latest Slicer3 code.&lt;br /&gt;
&lt;br /&gt;
The following command for unix machines will update, build, and launch the latest Slicer3:&lt;br /&gt;
&lt;br /&gt;
 svn update &amp;amp;&amp;amp; (cd ../Slicer3-build; make &amp;amp;&amp;amp; ./bin/Slicer3)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on linux ==&lt;br /&gt;
&lt;br /&gt;
To compile slicer and do development, be sure you have a complete set of development packages installed on your machine.  The exact packages vary by distribution, but include:&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-c++&lt;br /&gt;
* libX11 &lt;br /&gt;
* libX11-devel (libX11-dev  on Ubuntu 7.04)&lt;br /&gt;
* libXt-devel (libXt-dev on Ubuntu)&lt;br /&gt;
* opengl/mesa (libgl1-mesa-dev on Ubuntu)&lt;br /&gt;
&lt;br /&gt;
Ubuntu one line install:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install subversion cvs tcl8.4 gcc g++ libX11-dev libXt-dev libxext-dev libgl1-mesa-dev libncurses5-dev tcsh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, be sure you have OpenGL and the GLX extension to X working.  To check the installation, it is usually enough to confirm that the command &amp;lt;pre&amp;gt;glxgears&amp;lt;/pre&amp;gt; runs with no errors.&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on windows ==&lt;br /&gt;
&lt;br /&gt;
The script should work fine on a properly configured windows environment. Current requirements are:&lt;br /&gt;
&lt;br /&gt;
* Developer Studio 8 Visual C++ Express which is free from Microsoft - be sure to install the Platform SDK and follow the ridiculous manual steps to set up the paths [[Slicer3:Build_Instructions#Information_on_Free_Microsoft_C.2B.2B_Compiler_on_Windows|see below]].&lt;br /&gt;
* Developer Studio 9 Visual C++ Express [[Slicer:Build_Instructions:MSVS9]]&lt;br /&gt;
** Other releases of visual studio also work (7 and 7.1)&lt;br /&gt;
** If they are installed in the default locations in &amp;quot;c:/Program Files&amp;quot; they will be detected by the build script automatically (you need to edit slicer_variables.tcl to point to the installation).&lt;br /&gt;
* [http://www.cygwin.com Cygwin] with the following packages&lt;br /&gt;
** tcltk&lt;br /&gt;
** svn&lt;br /&gt;
** cvs&lt;br /&gt;
** unzip&lt;br /&gt;
** curl&lt;br /&gt;
* With Developers Studio and cygwin installed, you only need to do the svn checkout and getbuildtest script to get a fully working Slicer3 plus all the tools you need to develop new code.&lt;br /&gt;
&lt;br /&gt;
Note: CMake and VTK will not work on a FAT formatted disk (use NTFS).&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on Apple Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
For Mac OS 10.4.10 install the following from the OS disks (not installed by default on new machines):&lt;br /&gt;
* Xcode Tools (OS Disk 1, default window)&lt;br /&gt;
* X11: also on OS Disk 1, but you need to scroll down and find the Optional Installs installer and select X11 under Applications. See [http://porting.openoffice.org/mac/faq/installing/X11.html step-by-step instructions].&lt;br /&gt;
* X11SDK - from OS Disk 1, Xcode Tools/Packages/X11SDK.pkg&lt;br /&gt;
* Subversion.  Installation [http://downloads.open.collab.net/binaries.html options here].  Get the latest svn version for compatibility with the server and be sure your client includes SSL (so it can access https repositories).&lt;br /&gt;
&lt;br /&gt;
Remember to run getbuildtest from an xterm so the tests can access the X server.&lt;br /&gt;
&lt;br /&gt;
== configuration options ==&lt;br /&gt;
&lt;br /&gt;
The file Slicer3/slicer_variables.tcl includes configuration options for which support libraries to use.  You may want to change thes for testing or to get access to new functionality.  &lt;br /&gt;
&lt;br /&gt;
 set ::SLICER_TAG &amp;quot;http://www.na-mic.org/svn/Slicer3/trunk&amp;quot;&lt;br /&gt;
 set ::CMAKE_TAG &amp;quot;CMake-2-4-2&amp;quot;&lt;br /&gt;
 set ::TEEM_TAG &amp;quot;Teem-1-9-0-patches&amp;quot;&lt;br /&gt;
 set ::KWWidgets_TAG &amp;quot;HEAD&amp;quot;&lt;br /&gt;
 set ::VTK_TAG &amp;quot;VTK-5-0&amp;quot;&lt;br /&gt;
 set ::ITK_TAG ITK-3-0&lt;br /&gt;
 set ::TCL_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::TK_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::ITCL_TAG &amp;quot;itcl-3-2-1&amp;quot;&lt;br /&gt;
 set ::IWIDGETS_TAG &amp;quot;iwidgets-4-0-1&amp;quot;&lt;br /&gt;
 set ::BLT_TAG &amp;quot;blt24z&amp;quot;&lt;br /&gt;
 set ::SANDBOX_TAG &amp;quot;http://svn.na-mic.org/svn/NAMICSandBox/branches/Slicer-2-6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For example, you may want a build against the ITK cvs head.  Change the flag value and then run &lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --update &lt;br /&gt;
&lt;br /&gt;
which will get the version from cvs, build it, and rebuild slicer3.  Depending on how radically different the versions you build are, you may need to use --clean.&lt;br /&gt;
&lt;br /&gt;
Another useful option is to change your build type to include support debugging.&lt;br /&gt;
&lt;br /&gt;
 set ::VTK_BUILD_TYPE &amp;quot;RelWithDebInfo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
options are Debug, Release, or RelWithDebInfo.  RelWithDebInfo is a compromise between speed and debuggability.  If you are tracking down a tough C++ bug you will get better information in Debug mode.  After changing this flag, you should run&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --clean&lt;br /&gt;
&lt;br /&gt;
to create a completely new build.&lt;br /&gt;
&lt;br /&gt;
= Manual checkout/build of Slicer3 and support libraries: =&lt;br /&gt;
&lt;br /&gt;
== Prerequisite software ==&lt;br /&gt;
&lt;br /&gt;
You need to get and build the following packages if you aren't using the getbuildtest script:&lt;br /&gt;
&lt;br /&gt;
# [http://www.cmake.org CMake (2.4.1 or later)]&lt;br /&gt;
# [http://www.tcl.tk Tcl/Tk (8.4 or later)]&lt;br /&gt;
# [http://sourceforge.net/projects/incrtcl/ incrTcl (3.2.1)]&lt;br /&gt;
# [http://www.vtk.org VTK 5.0]&lt;br /&gt;
# [http://www.itk.org ITK 3.4]&lt;br /&gt;
# [http://www.kwwidgets.org KWWidgets Slicer-3-0 tag]&lt;br /&gt;
# [http://teem.sf.net Teem (1.9.0)]&lt;br /&gt;
&lt;br /&gt;
== Build Steps ==&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
 $ svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.vtk.org:/cvsroot/VTK co VTK -r VTK-5-0&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.itk.org:/cvsroot/Insight co Insight -r ITK-3-4&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.kwwidgets.org:/cvsroot/KWWidgets co KWWidgets -r Slicer-3-0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure and build ITK ===&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
=== Configure and build VTK ===&lt;br /&gt;
&lt;br /&gt;
* All systems:&lt;br /&gt;
** BUILD_SHARED_LIBS ON&lt;br /&gt;
** CMAKE_SKIP_RPATH ON&lt;br /&gt;
** VTK_WRAP_TCL ON&lt;br /&gt;
** VTK_DEBUG_LEAKS ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX specific (Make sure to install [http://www.apple.com/downloads/macosx/apple/x11formacosx.html X11]):&lt;br /&gt;
** VTK_USE_CARBON OFF&lt;br /&gt;
** VTK_USE_X ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note, those options '''should not''' appear, since they disapear since VTK5:&lt;br /&gt;
** VTK_USE_HYBRID ON&lt;br /&gt;
** VTK_USE_PATENTED ON&lt;br /&gt;
&lt;br /&gt;
* Make sure that the TCL and TK path are set properly&lt;br /&gt;
** TCL_* and TK_*&lt;br /&gt;
&lt;br /&gt;
=== Configure and build KWWidgets ===&lt;br /&gt;
&lt;br /&gt;
* You need to specify where your VTK build tree is.&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
== Build and Run Slicer3 ==&lt;br /&gt;
&lt;br /&gt;
=== Manually ===&lt;br /&gt;
&lt;br /&gt;
# Check out and build slicer3 (e.g. on linux)&lt;br /&gt;
&lt;br /&gt;
  svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
  mkdir Slicer3-build&lt;br /&gt;
  cd Slicer3-build&lt;br /&gt;
  ccmake ../Slicer3&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Again make sure to turn:&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Start slicer with the Slicer3 executable in your build directory.&lt;br /&gt;
&lt;br /&gt;
= SBuild =&lt;br /&gt;
SBuild is a new, experimental build system for Slicer.  It is based on getbuildtest2.tcl and genlib2.tcl, but rather than try to hid the gory details of building Slicer, SBuild attempts to expose a reasonable amount to the developer.  The interface should be reasonably intuitive, but a brief walk through is useful.  Click on the thumbnails for larger views.  SBuild allows you to update and build just the portions of Slicer that you may require or want to build.  Any of the required libraries may be specified to be build by SBuild, or to use an existing build.  Existing libraries are not controlled by SBuild.&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* http://www.na-mic.org/Wiki/index.php/Slicer3&lt;br /&gt;
* http://www.na-mic.org/websvn/listing.php?repname=Slicer3&lt;br /&gt;
* [[Slicer3::Eclipse | Howto integrate Slicer3 into Eclipse]]&lt;br /&gt;
== Information on Free Microsoft C++ Compiler on Windows ==&lt;br /&gt;
&lt;br /&gt;
Be sure to follow '''all''' the steps on Microsoft link. Yes it means you need to download the compiler '''and''' sdk.&lt;br /&gt;
&lt;br /&gt;
* http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22571</id>
		<title>Slicer3:Build Instructions</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Build_Instructions&amp;diff=22571"/>
		<updated>2008-03-04T03:08:29Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= All-in-one Script to checkout and build Slicer3 =&lt;br /&gt;
&lt;br /&gt;
To compile and build Slicer3, you need a set of development packages installed on your machine: &lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_linux pre-requisite material for Linux ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_windows pre-requisite material for Windows ]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/Slicer3:Build_Instructions#getbuildtest_on_Apple_Mac_OS_X pre-requisite material for Mac ]&lt;br /&gt;
&lt;br /&gt;
There's a script called getbuildtest.tcl that makes the support libraries (VTK, ITK, teem, etc) and also builds slicer and does a dashboard submission.  (Click [[Slicer3:getbuildtest | here for background on getbuildtest]] and the experimental getbuildtest2 version).&lt;br /&gt;
&lt;br /&gt;
Just do the following two commands (see [[Slicer3:Build_Instructions#getbuildtest_on_windows|for windows users]] below):&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
   svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 &lt;br /&gt;
   ./Slicer3/Scripts/getbuildtest.tcl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Note: that a Slicer3-lib and Slicer3-build directory will be created for you. This is meant to be used to set up new machines and to run nightly testing of the full builds.&lt;br /&gt;
&lt;br /&gt;
To run (all platforms):&lt;br /&gt;
&lt;br /&gt;
 ./Slicer3-build/Slicer3&lt;br /&gt;
&lt;br /&gt;
Note: the whole build environment takes about 2G of disk space.&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
&lt;br /&gt;
Note also that getbuildtest will do an Experimental submission to the [http://www.na-mic.org/Slicer3/Dashboard/ Slicer3 dashboard]. If you want to use getbuildtest without submitting to the dashboard, you can set the test type to nothing with&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl -t &amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Other options for the -t (--test-type) option are Nightly or Continuous (or any of the [http://www.cmake.org/Wiki/CMake_Testing_With_CTest CTest] options).&lt;br /&gt;
&lt;br /&gt;
== What does getbuildtest.tcl do? ==&lt;br /&gt;
&lt;br /&gt;
This script just automates the steps needed to build slicer.  What you end up with is a set of source and build directories that can either be further manipulated with getbuildtest or can be worked with normally.  That is, on windows you will have solution files that you can load in visual studio for debugging and further development.&lt;br /&gt;
&lt;br /&gt;
Specifically, getbuildtest does the following steps:&lt;br /&gt;
&lt;br /&gt;
* Refreshes Slicer3 svn&lt;br /&gt;
* Runs Scripts/genlib.tcl which does the following for each of the support libraries&lt;br /&gt;
** does a cvs/svn checkout/update&lt;br /&gt;
** runs cmake with the correct settings for use with Slicer3&lt;br /&gt;
** runs make (or developer studio) to build the libraries&lt;br /&gt;
* Runs cmake on Slicer3&lt;br /&gt;
* Builds Slicer3&lt;br /&gt;
* Runs ctest on Slicer3&lt;br /&gt;
* (optionally) Runs CPack on Slicer3&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
  usage: getbuildtest [options] [target]&lt;br /&gt;
    [target] is determined automatically if not specified&lt;br /&gt;
    [options] is one of the following:&lt;br /&gt;
     --help : prints this message and exits&lt;br /&gt;
     --clean : delete lib and build directories first&lt;br /&gt;
     -t --test-type : CTest test target&lt;br /&gt;
     --release : compile with optimization flags&lt;br /&gt;
     --update : does a cvs/svn update on each lib&lt;br /&gt;
     --pack : builds a distribution package (cpack)&lt;br /&gt;
&lt;br /&gt;
== Errors from getbuildtest ==&lt;br /&gt;
&lt;br /&gt;
You will need to have your firewall configured to allow access to na-mic.org for cvs access through port 2401. Also you need 8081 for submitting to the dashboard.&lt;br /&gt;
&lt;br /&gt;
Other errors might mean you don't have all the build tools (see next section).&lt;br /&gt;
&lt;br /&gt;
If you want to generate a log of the build process, you can use a command like the following:&lt;br /&gt;
&lt;br /&gt;
 # for csh/tcsh:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl |&amp;amp; tee build.log&lt;br /&gt;
or&lt;br /&gt;
 # for sh/bash:&lt;br /&gt;
 ./Scripts/getbuildtest.tcl 2&amp;gt;&amp;amp;1 | tee build.log&lt;br /&gt;
&lt;br /&gt;
== Updating Your getbuildtest Build ==&lt;br /&gt;
&lt;br /&gt;
There are a few options:&lt;br /&gt;
&lt;br /&gt;
* you can re-run getbuildtest and it will update slicer3 and rebuild (just slicer3)&lt;br /&gt;
* you can add the --update option and all the libs will get a cvs/svn update and will rebuild if needed (good for tracking the development head of VTK/ITK/KWWidgets etc).&lt;br /&gt;
* you can just 'svn update' in the Slicer3 directory and then do 'make' in the Slicer3-build to get just the latest Slicer3 code.&lt;br /&gt;
&lt;br /&gt;
The following command for unix machines will update, build, and launch the latest Slicer3:&lt;br /&gt;
&lt;br /&gt;
 svn update &amp;amp;&amp;amp; (cd ../Slicer3-build; make &amp;amp;&amp;amp; ./bin/Slicer3)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on linux ==&lt;br /&gt;
&lt;br /&gt;
To compile slicer and do development, be sure you have a complete set of development packages installed on your machine.  The exact packages vary by distribution, but include:&lt;br /&gt;
* gcc&lt;br /&gt;
* gcc-c++&lt;br /&gt;
* libX11 &lt;br /&gt;
* libX11-devel (libX11-dev  on Ubuntu 7.04)&lt;br /&gt;
* libXt-devel (libXt-dev on Ubuntu)&lt;br /&gt;
* opengl/mesa (libgl1-mesa-dev on Ubuntu)&lt;br /&gt;
&lt;br /&gt;
Ubuntu one line install:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install subversion cvs tcl8.4 gcc g++ libX11-dev libXt-dev libxext-dev libgl1-mesa-dev libncurses5-dev tcsh&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Also, be sure you have OpenGL and the GLX extension to X working.  To check the installation, it is usually enough to confirm that the command &amp;lt;pre&amp;gt;glxgears&amp;lt;/pre&amp;gt; runs with no errors.&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on windows ==&lt;br /&gt;
&lt;br /&gt;
The script should work fine on a properly configured windows environment. Current requirements are:&lt;br /&gt;
&lt;br /&gt;
* Developer Studio 8 Visual C++ Express which is free from Microsoft - be sure to install the Platform SDK and follow the ridiculous manual steps to set up the paths [[Slicer3:Build_Instructions#Information_on_Free_Microsoft_C.2B.2B_Compiler_on_Windows|see below]].&lt;br /&gt;
* Developer Studio 9 Visual C++ Express [[Slicer:Build_Instructions:MSVS9]]&lt;br /&gt;
** Other releases of visual studio also work (7 and 7.1)&lt;br /&gt;
** If they are installed in the default locations in &amp;quot;c:/Program Files&amp;quot; they will be detected by the build script automatically (you need to edit slicer_variables.tcl to point to the installation).&lt;br /&gt;
* [http://www.cygwin.com Cygwin] with the following packages&lt;br /&gt;
** tcltk&lt;br /&gt;
** svn&lt;br /&gt;
** cvs&lt;br /&gt;
** unzip&lt;br /&gt;
** curl&lt;br /&gt;
* With Developers Studio and cygwin installed, you only need to do the svn checkout and getbuildtest script to get a fully working Slicer3 plus all the tools you need to develop new code.&lt;br /&gt;
&lt;br /&gt;
Note: CMake and VTK will not work on a FAT formatted disk (use NTFS).&lt;br /&gt;
&lt;br /&gt;
== getbuildtest on Apple Mac OS X ==&lt;br /&gt;
&lt;br /&gt;
For Mac OS 10.4.10 install the following from the OS disks (not installed by default on new machines):&lt;br /&gt;
* Xcode Tools (OS Disk 1, default window)&lt;br /&gt;
* X11: also on OS Disk 1, but you need to scroll down and find the Optional Installs installer and select X11 under Applications. See [http://porting.openoffice.org/mac/faq/installing/X11.html step-by-step instructions].&lt;br /&gt;
* X11SDK - from OS Disk 1, Xcode Tools/Packages/X11SDK.pkg&lt;br /&gt;
* Subversion.  Installation [http://downloads.open.collab.net/binaries.html options here].  Get the latest svn version for compatibility with the server and be sure your client includes SSL (so it can access https repositories).&lt;br /&gt;
&lt;br /&gt;
Remember to run getbuildtest from an xterm so the tests can access the X server.&lt;br /&gt;
&lt;br /&gt;
== configuration options ==&lt;br /&gt;
&lt;br /&gt;
The file Slicer3/slicer_variables.tcl includes configuration options for which support libraries to use.  You may want to change thes for testing or to get access to new functionality.  &lt;br /&gt;
&lt;br /&gt;
 set ::SLICER_TAG &amp;quot;http://www.na-mic.org/svn/Slicer3/trunk&amp;quot;&lt;br /&gt;
 set ::CMAKE_TAG &amp;quot;CMake-2-4-2&amp;quot;&lt;br /&gt;
 set ::TEEM_TAG &amp;quot;Teem-1-9-0-patches&amp;quot;&lt;br /&gt;
 set ::KWWidgets_TAG &amp;quot;HEAD&amp;quot;&lt;br /&gt;
 set ::VTK_TAG &amp;quot;VTK-5-0&amp;quot;&lt;br /&gt;
 set ::ITK_TAG ITK-3-0&lt;br /&gt;
 set ::TCL_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::TK_TAG &amp;quot;core-8-4-6&amp;quot;&lt;br /&gt;
 set ::ITCL_TAG &amp;quot;itcl-3-2-1&amp;quot;&lt;br /&gt;
 set ::IWIDGETS_TAG &amp;quot;iwidgets-4-0-1&amp;quot;&lt;br /&gt;
 set ::BLT_TAG &amp;quot;blt24z&amp;quot;&lt;br /&gt;
 set ::SANDBOX_TAG &amp;quot;http://svn.na-mic.org/svn/NAMICSandBox/branches/Slicer-2-6&amp;quot;&lt;br /&gt;
&lt;br /&gt;
For example, you may want a build against the ITK cvs head.  Change the flag value and then run &lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --update &lt;br /&gt;
&lt;br /&gt;
which will get the version from cvs, build it, and rebuild slicer3.  Depending on how radically different the versions you build are, you may need to use --clean.&lt;br /&gt;
&lt;br /&gt;
Another useful option is to change your build type to include support debugging.&lt;br /&gt;
&lt;br /&gt;
 set ::VTK_BUILD_TYPE &amp;quot;RelWithDebInfo&amp;quot;&lt;br /&gt;
&lt;br /&gt;
options are Debug, Release, or RelWithDebInfo.  RelWithDebInfo is a compromise between speed and debuggability.  If you are tracking down a tough C++ bug you will get better information in Debug mode.  After changing this flag, you should run&lt;br /&gt;
&lt;br /&gt;
 getbuildtest.tcl --clean&lt;br /&gt;
&lt;br /&gt;
to create a completely new build.&lt;br /&gt;
&lt;br /&gt;
= Manual checkout/build of Slicer3 and support libraries: =&lt;br /&gt;
&lt;br /&gt;
== Prerequisite software ==&lt;br /&gt;
&lt;br /&gt;
You need to get and build the following packages if you aren't using the getbuildtest script:&lt;br /&gt;
&lt;br /&gt;
# [http://www.cmake.org CMake (2.4.1 or later)]&lt;br /&gt;
# [http://www.tcl.tk Tcl/Tk (8.4 or later)]&lt;br /&gt;
# [http://sourceforge.net/projects/incrtcl/ incrTcl (3.2.1)]&lt;br /&gt;
# [http://www.vtk.org VTK 5.0]&lt;br /&gt;
# [http://www.itk.org ITK 3.4]&lt;br /&gt;
# [http://www.kwwidgets.org KWWidgets Slicer-3-0 tag]&lt;br /&gt;
# [http://teem.sf.net Teem (1.9.0)]&lt;br /&gt;
&lt;br /&gt;
== Build Steps ==&lt;br /&gt;
&lt;br /&gt;
Steps:&lt;br /&gt;
&lt;br /&gt;
 $ svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.vtk.org:/cvsroot/VTK co VTK -r VTK-5-0&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.itk.org:/cvsroot/Insight co Insight -r ITK-3-4&lt;br /&gt;
 $ cvs -d :pserver:anoncvs@www.kwwidgets.org:/cvsroot/KWWidgets co KWWidgets -r Slicer-3-0&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure and build ITK ===&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
=== Configure and build VTK ===&lt;br /&gt;
&lt;br /&gt;
* All systems:&lt;br /&gt;
** BUILD_SHARED_LIBS ON&lt;br /&gt;
** CMAKE_SKIP_RPATH ON&lt;br /&gt;
** VTK_WRAP_TCL ON&lt;br /&gt;
** VTK_DEBUG_LEAKS ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* MacOSX specific (Make sure to install [http://www.apple.com/downloads/macosx/apple/x11formacosx.html X11]):&lt;br /&gt;
** VTK_USE_CARBON OFF&lt;br /&gt;
** VTK_USE_X ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note, those options '''should not''' appear, since they disapear since VTK5:&lt;br /&gt;
** VTK_USE_HYBRID ON&lt;br /&gt;
** VTK_USE_PATENTED ON&lt;br /&gt;
&lt;br /&gt;
* Make sure that the TCL and TK path are set properly&lt;br /&gt;
** TCL_* and TK_*&lt;br /&gt;
&lt;br /&gt;
=== Configure and build KWWidgets ===&lt;br /&gt;
&lt;br /&gt;
* You need to specify where your VTK build tree is.&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
== Build and Run Slicer3 ==&lt;br /&gt;
&lt;br /&gt;
=== Manually ===&lt;br /&gt;
&lt;br /&gt;
# Check out and build slicer3 (e.g. on linux)&lt;br /&gt;
&lt;br /&gt;
  svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
  mkdir Slicer3-build&lt;br /&gt;
  cd Slicer3-build&lt;br /&gt;
  ccmake ../Slicer3&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Again make sure to turn:&lt;br /&gt;
&lt;br /&gt;
* BUILD_SHARED_LIBS ON&lt;br /&gt;
* CMAKE_SKIP_RPATH ON&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; Start slicer with the Slicer3 executable in your build directory.&lt;br /&gt;
&lt;br /&gt;
= SBuild =&lt;br /&gt;
&lt;br /&gt;
= Links =&lt;br /&gt;
&lt;br /&gt;
* http://www.na-mic.org/Wiki/index.php/Slicer3&lt;br /&gt;
* http://www.na-mic.org/websvn/listing.php?repname=Slicer3&lt;br /&gt;
* [[Slicer3::Eclipse | Howto integrate Slicer3 into Eclipse]]&lt;br /&gt;
== Information on Free Microsoft C++ Compiler on Windows ==&lt;br /&gt;
&lt;br /&gt;
Be sure to follow '''all''' the steps on Microsoft link. Yes it means you need to download the compiler '''and''' sdk.&lt;br /&gt;
&lt;br /&gt;
* http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=22522</id>
		<title>Slicer3:TimeSeries and Multi-Volume Data</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=22522"/>
		<updated>2008-03-02T02:36:27Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Data format testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[[Slicer3:Developers#Slicer_3_Projects | Back to Slicer3 Projects List ]]'''&lt;br /&gt;
&lt;br /&gt;
== Slicer3 support for TimeSeries and Multi-Volume Data==&lt;br /&gt;
&lt;br /&gt;
=== Feature ideas ===&lt;br /&gt;
&lt;br /&gt;
Just a collection of ideas related to time series data in no particular order.&lt;br /&gt;
&lt;br /&gt;
* Would like to dynamically load data in a background thread to minimize memory requirements&lt;br /&gt;
** Need to understand how this will impact performance, i.e. can we page through the slices in real time?&lt;br /&gt;
* Flexible processing&lt;br /&gt;
** Volume by volume&lt;br /&gt;
** Slice by Slice (would require a &amp;quot;block of bytes&amp;quot; format like NRRD, Analyze, or NIFTI)&lt;br /&gt;
&lt;br /&gt;
=== Potentially useful codes ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkMultiGroupDataSet.html  VTK 5.1 multi-group data set]&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkTemporalDataSet.html  VTK 5.1 temporal data set]&lt;br /&gt;
* [http://www.insight-journal.org/InsightJournalManager/view_reviews.php?back=admin_publications_toolkits.php&amp;amp;pubid=164  VTK code from Inria ]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Data Model ===&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
Need to evaluate these use cases to address the most useful/common scenarios to design the system.  Each use case must be catagorized from 4 (Required) down to 1 (Nice to have).  In all cases, we desire to handle datasets much larger than memory, yet maintain full interactivity for the user.  Flexibility of processing must be a priority.&lt;br /&gt;
&lt;br /&gt;
# User pages through same slice from all volumes in acquisition orientation&lt;br /&gt;
# User pages through reformatted slice from all volumes&lt;br /&gt;
# Process one pixel at a time through all volumes&lt;br /&gt;
## Process in an &amp;quot;accumulator&amp;quot; mode&lt;br /&gt;
## Process by analyzing whole time course of voxel (could possibly be done slice at a time?)&lt;br /&gt;
# Process one slice at a time through all volumes&lt;br /&gt;
# Process one volume at a time through all volumes (same as previous?)&lt;br /&gt;
# Render dynamic time series, e.g. cardiac data&lt;br /&gt;
&lt;br /&gt;
=== Data format testing ===&lt;br /&gt;
&lt;br /&gt;
Three different data formats were tested.&lt;br /&gt;
&lt;br /&gt;
# SQLite, an embedded SQL database&lt;br /&gt;
# HDF5, a standard scientific file format&lt;br /&gt;
# Raw, a simple raw reading and writing of 8K chunks&lt;br /&gt;
&lt;br /&gt;
Results&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#abcdef&amp;quot;&lt;br /&gt;
! Software !! Write performance (256x256x10x16) !! Read performance (256x256 slice, averaged over 1000 slices)&lt;br /&gt;
|-&lt;br /&gt;
| SQLite || 1.3sec || 0.017sec&lt;br /&gt;
| HDF5   || 2.6sec ||  0.017sec&lt;br /&gt;
| Raw    || 0.6sec || 0.004sec&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Reading and writing directly results in approximately 4x speedup over SQLite and HDF5.  This will be the approach for the class design.&lt;br /&gt;
&lt;br /&gt;
=== Mock-ups and ideas ===&lt;br /&gt;
&lt;br /&gt;
[[image:Ron-TimeSeriesMockup.png|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ron's mock-up for time series layout using the light box capability in Slicer 3:&lt;br /&gt;
&lt;br /&gt;
* Layout: green and yellow are a single box. Red shows a single zoomed in image, selected by clicking&lt;br /&gt;
* alignment through registration or adjusting TS1 versus TS2 (or 3) by dragging one of them left or right&lt;br /&gt;
&lt;br /&gt;
=== Existing GUI Resources ===&lt;br /&gt;
&lt;br /&gt;
Below are interface elements for which GUI resources already exist. The Basic Controller and Cine Controller are not attached to any logic or data structures. The Interval Browser is part of Slicer2.6.&lt;br /&gt;
&lt;br /&gt;
[[image:BasicController.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:CineDisplay5.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:Ibrowser.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hierarchical Management of Large Data Sets ==&lt;br /&gt;
&lt;br /&gt;
From an earlier discussion:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Here are some notes for our discussion about a project to address the need to browse through large volumetric datasets interactively.  The particular issue that I think needs to be addressed is matching the data passing through the display pipeline to the actual resolution of the display windows or texture maps.''&lt;br /&gt;
&lt;br /&gt;
''For example, if you have a 8k x 8k x 8k volume data set, and you want to view it in a 1k by 1k window with arbitrary slice planes, the current classes in VTK and ITK would require loading the full 512 Gigapixels of data into memory and then pulling out the 1k by 1k slice plane, which on almost any computer would require a lot of virtual memory paging, if its possible at all.  Assuming your reslice plane is different then the way the volume is laid out in memory, there will be a high level of cache misses and memory thrashing.  A similar issue occurs when zooming in to a small section within a large volume -- in order to extract the volume of interest, the full volume must be read into memory.''&lt;br /&gt;
&lt;br /&gt;
''A better way to approach this problem is to preprocess the volume data so that a hierarchy of different resolutions are available (full size, 1/2 size, 1/4 size, etc) and the volume data can be decomposed into blocks so that only the necessary parts are read in order to display the currently selected view.  There is a large literature on these types of techniques.  Google Maps/Earth are good example of this technique applied to a large database with good interactive feel.''&lt;br /&gt;
&lt;br /&gt;
''I'd like to see a project to implement this approach inside VTK (and, possibly, ITK).  There have been a few attempts in the past (DataCutter at OSU, is similar, I believe, but the code doesn't appear to be available and so far the people I've been asking at BWH, GE, Kitware don't know the details -- this is something I can research more).''&lt;br /&gt;
&lt;br /&gt;
''What I have in mind is four related tools: (1) a preprocessor to build a hierarchical volume datastructure/database, (2) a server that will take requests for a given extent at a given resolution and provide back the volume data, (3) a demo web site that will allow interactive browsing through large data sets, and (4) an implementation in slicer to load and display these multi-resolution volumes for interactive visualization.''&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=22423</id>
		<title>Slicer3:TimeSeries and Multi-Volume Data</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=22423"/>
		<updated>2008-02-25T05:13:05Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Data format testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[[Slicer3:Developers#Slicer_3_Projects | Back to Slicer3 Projects List ]]'''&lt;br /&gt;
&lt;br /&gt;
== Slicer3 support for TimeSeries and Multi-Volume Data==&lt;br /&gt;
&lt;br /&gt;
=== Feature ideas ===&lt;br /&gt;
&lt;br /&gt;
Just a collection of ideas related to time series data in no particular order.&lt;br /&gt;
&lt;br /&gt;
* Would like to dynamically load data in a background thread to minimize memory requirements&lt;br /&gt;
** Need to understand how this will impact performance, i.e. can we page through the slices in real time?&lt;br /&gt;
* Flexible processing&lt;br /&gt;
** Volume by volume&lt;br /&gt;
** Slice by Slice (would require a &amp;quot;block of bytes&amp;quot; format like NRRD, Analyze, or NIFTI)&lt;br /&gt;
&lt;br /&gt;
=== Potentially useful codes ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkMultiGroupDataSet.html  VTK 5.1 multi-group data set]&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkTemporalDataSet.html  VTK 5.1 temporal data set]&lt;br /&gt;
* [http://www.insight-journal.org/InsightJournalManager/view_reviews.php?back=admin_publications_toolkits.php&amp;amp;pubid=164  VTK code from Inria ]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Data Model ===&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
Need to evaluate these use cases to address the most useful/common scenarios to design the system.  Each use case must be catagorized from 4 (Required) down to 1 (Nice to have).  In all cases, we desire to handle datasets much larger than memory, yet maintain full interactivity for the user.  Flexibility of processing must be a priority.&lt;br /&gt;
&lt;br /&gt;
# User pages through same slice from all volumes in acquisition orientation&lt;br /&gt;
# User pages through reformatted slice from all volumes&lt;br /&gt;
# Process one pixel at a time through all volumes&lt;br /&gt;
## Process in an &amp;quot;accumulator&amp;quot; mode&lt;br /&gt;
## Process by analyzing whole time course of voxel (could possibly be done slice at a time?)&lt;br /&gt;
# Process one slice at a time through all volumes&lt;br /&gt;
# Process one volume at a time through all volumes (same as previous?)&lt;br /&gt;
# Render dynamic time series, e.g. cardiac data&lt;br /&gt;
&lt;br /&gt;
=== Data format testing ===&lt;br /&gt;
&lt;br /&gt;
Three different data formats were tested.&lt;br /&gt;
&lt;br /&gt;
# SQLite, an embedded SQL database&lt;br /&gt;
# HDF5, a standard scientific file format&lt;br /&gt;
# Raw, a simple raw reading and writing of 8K chunks&lt;br /&gt;
&lt;br /&gt;
Results&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#abcdef&amp;quot;&lt;br /&gt;
! Software !! Write performance (256x256x10x16) !! Read performance (average per 256x256 slice)&lt;br /&gt;
|-&lt;br /&gt;
| Coming soon || Entry2 || Entry3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Mock-ups and ideas ===&lt;br /&gt;
&lt;br /&gt;
[[image:Ron-TimeSeriesMockup.png|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ron's mock-up for time series layout using the light box capability in Slicer 3:&lt;br /&gt;
&lt;br /&gt;
* Layout: green and yellow are a single box. Red shows a single zoomed in image, selected by clicking&lt;br /&gt;
* alignment through registration or adjusting TS1 versus TS2 (or 3) by dragging one of them left or right&lt;br /&gt;
&lt;br /&gt;
=== Existing GUI Resources ===&lt;br /&gt;
&lt;br /&gt;
Below are interface elements for which GUI resources already exist. The Basic Controller and Cine Controller are not attached to any logic or data structures. The Interval Browser is part of Slicer2.6.&lt;br /&gt;
&lt;br /&gt;
[[image:BasicController.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:CineDisplay5.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:Ibrowser.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hierarchical Management of Large Data Sets ==&lt;br /&gt;
&lt;br /&gt;
From an earlier discussion:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Here are some notes for our discussion about a project to address the need to browse through large volumetric datasets interactively.  The particular issue that I think needs to be addressed is matching the data passing through the display pipeline to the actual resolution of the display windows or texture maps.''&lt;br /&gt;
&lt;br /&gt;
''For example, if you have a 8k x 8k x 8k volume data set, and you want to view it in a 1k by 1k window with arbitrary slice planes, the current classes in VTK and ITK would require loading the full 512 Gigapixels of data into memory and then pulling out the 1k by 1k slice plane, which on almost any computer would require a lot of virtual memory paging, if its possible at all.  Assuming your reslice plane is different then the way the volume is laid out in memory, there will be a high level of cache misses and memory thrashing.  A similar issue occurs when zooming in to a small section within a large volume -- in order to extract the volume of interest, the full volume must be read into memory.''&lt;br /&gt;
&lt;br /&gt;
''A better way to approach this problem is to preprocess the volume data so that a hierarchy of different resolutions are available (full size, 1/2 size, 1/4 size, etc) and the volume data can be decomposed into blocks so that only the necessary parts are read in order to display the currently selected view.  There is a large literature on these types of techniques.  Google Maps/Earth are good example of this technique applied to a large database with good interactive feel.''&lt;br /&gt;
&lt;br /&gt;
''I'd like to see a project to implement this approach inside VTK (and, possibly, ITK).  There have been a few attempts in the past (DataCutter at OSU, is similar, I believe, but the code doesn't appear to be available and so far the people I've been asking at BWH, GE, Kitware don't know the details -- this is something I can research more).''&lt;br /&gt;
&lt;br /&gt;
''What I have in mind is four related tools: (1) a preprocessor to build a hierarchical volume datastructure/database, (2) a server that will take requests for a given extent at a given resolution and provide back the volume data, (3) a demo web site that will allow interactive browsing through large data sets, and (4) an implementation in slicer to load and display these multi-resolution volumes for interactive visualization.''&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=22422</id>
		<title>Slicer3:TimeSeries and Multi-Volume Data</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=22422"/>
		<updated>2008-02-25T05:10:05Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Data format testing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[[Slicer3:Developers#Slicer_3_Projects | Back to Slicer3 Projects List ]]'''&lt;br /&gt;
&lt;br /&gt;
== Slicer3 support for TimeSeries and Multi-Volume Data==&lt;br /&gt;
&lt;br /&gt;
=== Feature ideas ===&lt;br /&gt;
&lt;br /&gt;
Just a collection of ideas related to time series data in no particular order.&lt;br /&gt;
&lt;br /&gt;
* Would like to dynamically load data in a background thread to minimize memory requirements&lt;br /&gt;
** Need to understand how this will impact performance, i.e. can we page through the slices in real time?&lt;br /&gt;
* Flexible processing&lt;br /&gt;
** Volume by volume&lt;br /&gt;
** Slice by Slice (would require a &amp;quot;block of bytes&amp;quot; format like NRRD, Analyze, or NIFTI)&lt;br /&gt;
&lt;br /&gt;
=== Potentially useful codes ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkMultiGroupDataSet.html  VTK 5.1 multi-group data set]&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkTemporalDataSet.html  VTK 5.1 temporal data set]&lt;br /&gt;
* [http://www.insight-journal.org/InsightJournalManager/view_reviews.php?back=admin_publications_toolkits.php&amp;amp;pubid=164  VTK code from Inria ]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Data Model ===&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
Need to evaluate these use cases to address the most useful/common scenarios to design the system.  Each use case must be catagorized from 4 (Required) down to 1 (Nice to have).  In all cases, we desire to handle datasets much larger than memory, yet maintain full interactivity for the user.  Flexibility of processing must be a priority.&lt;br /&gt;
&lt;br /&gt;
# User pages through same slice from all volumes in acquisition orientation&lt;br /&gt;
# User pages through reformatted slice from all volumes&lt;br /&gt;
# Process one pixel at a time through all volumes&lt;br /&gt;
## Process in an &amp;quot;accumulator&amp;quot; mode&lt;br /&gt;
## Process by analyzing whole time course of voxel (could possibly be done slice at a time?)&lt;br /&gt;
# Process one slice at a time through all volumes&lt;br /&gt;
# Process one volume at a time through all volumes (same as previous?)&lt;br /&gt;
# Render dynamic time series, e.g. cardiac data&lt;br /&gt;
&lt;br /&gt;
=== Data format testing ===&lt;br /&gt;
&lt;br /&gt;
Three different data formats were tested.&lt;br /&gt;
&lt;br /&gt;
# SQLite, an embedded SQL database&lt;br /&gt;
# HDF5, a standard scientific file format&lt;br /&gt;
# Raw, a simple raw reading and writing of 8K chunks&lt;br /&gt;
&lt;br /&gt;
Results&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#abcdef&amp;quot;&lt;br /&gt;
! Software !! Write performance (256x256x10x16) !! Read performance (average per 256x256 slice)&lt;br /&gt;
|-&lt;br /&gt;
| Entry1 || Entry2 || Entry3&lt;br /&gt;
|-&lt;br /&gt;
| Entry1 || Entry2 || Entry3&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Mock-ups and ideas ===&lt;br /&gt;
&lt;br /&gt;
[[image:Ron-TimeSeriesMockup.png|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ron's mock-up for time series layout using the light box capability in Slicer 3:&lt;br /&gt;
&lt;br /&gt;
* Layout: green and yellow are a single box. Red shows a single zoomed in image, selected by clicking&lt;br /&gt;
* alignment through registration or adjusting TS1 versus TS2 (or 3) by dragging one of them left or right&lt;br /&gt;
&lt;br /&gt;
=== Existing GUI Resources ===&lt;br /&gt;
&lt;br /&gt;
Below are interface elements for which GUI resources already exist. The Basic Controller and Cine Controller are not attached to any logic or data structures. The Interval Browser is part of Slicer2.6.&lt;br /&gt;
&lt;br /&gt;
[[image:BasicController.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:CineDisplay5.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:Ibrowser.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hierarchical Management of Large Data Sets ==&lt;br /&gt;
&lt;br /&gt;
From an earlier discussion:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Here are some notes for our discussion about a project to address the need to browse through large volumetric datasets interactively.  The particular issue that I think needs to be addressed is matching the data passing through the display pipeline to the actual resolution of the display windows or texture maps.''&lt;br /&gt;
&lt;br /&gt;
''For example, if you have a 8k x 8k x 8k volume data set, and you want to view it in a 1k by 1k window with arbitrary slice planes, the current classes in VTK and ITK would require loading the full 512 Gigapixels of data into memory and then pulling out the 1k by 1k slice plane, which on almost any computer would require a lot of virtual memory paging, if its possible at all.  Assuming your reslice plane is different then the way the volume is laid out in memory, there will be a high level of cache misses and memory thrashing.  A similar issue occurs when zooming in to a small section within a large volume -- in order to extract the volume of interest, the full volume must be read into memory.''&lt;br /&gt;
&lt;br /&gt;
''A better way to approach this problem is to preprocess the volume data so that a hierarchy of different resolutions are available (full size, 1/2 size, 1/4 size, etc) and the volume data can be decomposed into blocks so that only the necessary parts are read in order to display the currently selected view.  There is a large literature on these types of techniques.  Google Maps/Earth are good example of this technique applied to a large database with good interactive feel.''&lt;br /&gt;
&lt;br /&gt;
''I'd like to see a project to implement this approach inside VTK (and, possibly, ITK).  There have been a few attempts in the past (DataCutter at OSU, is similar, I believe, but the code doesn't appear to be available and so far the people I've been asking at BWH, GE, Kitware don't know the details -- this is something I can research more).''&lt;br /&gt;
&lt;br /&gt;
''What I have in mind is four related tools: (1) a preprocessor to build a hierarchical volume datastructure/database, (2) a server that will take requests for a given extent at a given resolution and provide back the volume data, (3) a demo web site that will allow interactive browsing through large data sets, and (4) an implementation in slicer to load and display these multi-resolution volumes for interactive visualization.''&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=22421</id>
		<title>Slicer3:TimeSeries and Multi-Volume Data</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=22421"/>
		<updated>2008-02-25T05:06:11Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Use Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[[Slicer3:Developers#Slicer_3_Projects | Back to Slicer3 Projects List ]]'''&lt;br /&gt;
&lt;br /&gt;
== Slicer3 support for TimeSeries and Multi-Volume Data==&lt;br /&gt;
&lt;br /&gt;
=== Feature ideas ===&lt;br /&gt;
&lt;br /&gt;
Just a collection of ideas related to time series data in no particular order.&lt;br /&gt;
&lt;br /&gt;
* Would like to dynamically load data in a background thread to minimize memory requirements&lt;br /&gt;
** Need to understand how this will impact performance, i.e. can we page through the slices in real time?&lt;br /&gt;
* Flexible processing&lt;br /&gt;
** Volume by volume&lt;br /&gt;
** Slice by Slice (would require a &amp;quot;block of bytes&amp;quot; format like NRRD, Analyze, or NIFTI)&lt;br /&gt;
&lt;br /&gt;
=== Potentially useful codes ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkMultiGroupDataSet.html  VTK 5.1 multi-group data set]&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkTemporalDataSet.html  VTK 5.1 temporal data set]&lt;br /&gt;
* [http://www.insight-journal.org/InsightJournalManager/view_reviews.php?back=admin_publications_toolkits.php&amp;amp;pubid=164  VTK code from Inria ]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Data Model ===&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
Need to evaluate these use cases to address the most useful/common scenarios to design the system.  Each use case must be catagorized from 4 (Required) down to 1 (Nice to have).  In all cases, we desire to handle datasets much larger than memory, yet maintain full interactivity for the user.  Flexibility of processing must be a priority.&lt;br /&gt;
&lt;br /&gt;
# User pages through same slice from all volumes in acquisition orientation&lt;br /&gt;
# User pages through reformatted slice from all volumes&lt;br /&gt;
# Process one pixel at a time through all volumes&lt;br /&gt;
## Process in an &amp;quot;accumulator&amp;quot; mode&lt;br /&gt;
## Process by analyzing whole time course of voxel (could possibly be done slice at a time?)&lt;br /&gt;
# Process one slice at a time through all volumes&lt;br /&gt;
# Process one volume at a time through all volumes (same as previous?)&lt;br /&gt;
# Render dynamic time series, e.g. cardiac data&lt;br /&gt;
&lt;br /&gt;
=== Data format testing ===&lt;br /&gt;
&lt;br /&gt;
Three different data formats were tested.&lt;br /&gt;
&lt;br /&gt;
# SQLite, an embedded SQL database&lt;br /&gt;
# HDF5, a standard scientific file format&lt;br /&gt;
# Raw, a simple raw reading and writing of 8K chunks&lt;br /&gt;
&lt;br /&gt;
Results&lt;br /&gt;
&lt;br /&gt;
=== Mock-ups and ideas ===&lt;br /&gt;
&lt;br /&gt;
[[image:Ron-TimeSeriesMockup.png|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ron's mock-up for time series layout using the light box capability in Slicer 3:&lt;br /&gt;
&lt;br /&gt;
* Layout: green and yellow are a single box. Red shows a single zoomed in image, selected by clicking&lt;br /&gt;
* alignment through registration or adjusting TS1 versus TS2 (or 3) by dragging one of them left or right&lt;br /&gt;
&lt;br /&gt;
=== Existing GUI Resources ===&lt;br /&gt;
&lt;br /&gt;
Below are interface elements for which GUI resources already exist. The Basic Controller and Cine Controller are not attached to any logic or data structures. The Interval Browser is part of Slicer2.6.&lt;br /&gt;
&lt;br /&gt;
[[image:BasicController.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:CineDisplay5.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:Ibrowser.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hierarchical Management of Large Data Sets ==&lt;br /&gt;
&lt;br /&gt;
From an earlier discussion:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Here are some notes for our discussion about a project to address the need to browse through large volumetric datasets interactively.  The particular issue that I think needs to be addressed is matching the data passing through the display pipeline to the actual resolution of the display windows or texture maps.''&lt;br /&gt;
&lt;br /&gt;
''For example, if you have a 8k x 8k x 8k volume data set, and you want to view it in a 1k by 1k window with arbitrary slice planes, the current classes in VTK and ITK would require loading the full 512 Gigapixels of data into memory and then pulling out the 1k by 1k slice plane, which on almost any computer would require a lot of virtual memory paging, if its possible at all.  Assuming your reslice plane is different then the way the volume is laid out in memory, there will be a high level of cache misses and memory thrashing.  A similar issue occurs when zooming in to a small section within a large volume -- in order to extract the volume of interest, the full volume must be read into memory.''&lt;br /&gt;
&lt;br /&gt;
''A better way to approach this problem is to preprocess the volume data so that a hierarchy of different resolutions are available (full size, 1/2 size, 1/4 size, etc) and the volume data can be decomposed into blocks so that only the necessary parts are read in order to display the currently selected view.  There is a large literature on these types of techniques.  Google Maps/Earth are good example of this technique applied to a large database with good interactive feel.''&lt;br /&gt;
&lt;br /&gt;
''I'd like to see a project to implement this approach inside VTK (and, possibly, ITK).  There have been a few attempts in the past (DataCutter at OSU, is similar, I believe, but the code doesn't appear to be available and so far the people I've been asking at BWH, GE, Kitware don't know the details -- this is something I can research more).''&lt;br /&gt;
&lt;br /&gt;
''What I have in mind is four related tools: (1) a preprocessor to build a hierarchical volume datastructure/database, (2) a server that will take requests for a given extent at a given resolution and provide back the volume data, (3) a demo web site that will allow interactive browsing through large data sets, and (4) an implementation in slicer to load and display these multi-resolution volumes for interactive visualization.''&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=21786</id>
		<title>Slicer3:TimeSeries and Multi-Volume Data</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=21786"/>
		<updated>2008-02-03T03:11:01Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Use Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[[Slicer3:Developers#Slicer_3_Projects | Back to Slicer3 Projects List ]]'''&lt;br /&gt;
&lt;br /&gt;
== Slicer3 support for TimeSeries and Multi-Volume Data==&lt;br /&gt;
&lt;br /&gt;
=== Feature ideas ===&lt;br /&gt;
&lt;br /&gt;
Just a collection of ideas related to time series data in no particular order.&lt;br /&gt;
&lt;br /&gt;
* Would like to dynamically load data in a background thread to minimize memory requirements&lt;br /&gt;
** Need to understand how this will impact performance, i.e. can we page through the slices in real time?&lt;br /&gt;
* Flexible processing&lt;br /&gt;
** Volume by volume&lt;br /&gt;
** Slice by Slice (would require a &amp;quot;block of bytes&amp;quot; format like NRRD, Analyze, or NIFTI)&lt;br /&gt;
&lt;br /&gt;
=== Potentially useful codes ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkMultiGroupDataSet.html  VTK 5.1 multi-group data set]&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkTemporalDataSet.html  VTK 5.1 temporal data set]&lt;br /&gt;
* [http://www.insight-journal.org/InsightJournalManager/view_reviews.php?back=admin_publications_toolkits.php&amp;amp;pubid=164  VTK code from Inria ]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Data Model ===&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
Need to evaluate these use cases to address the most useful/common scenarios to design the system.  Each use case must be catagorized from 4 (Required) down to 1 (Nice to have).  In all cases, we desire to handle datasets much larger than memory, yet maintain full interactivity for the user.  Flexibility of processing must be a priority.&lt;br /&gt;
&lt;br /&gt;
# User pages through same slice from all volumes in acquisition orientation&lt;br /&gt;
# User pages through reformatted slice from all volumes&lt;br /&gt;
# Process one pixel at a time through all volumes&lt;br /&gt;
## Process in an &amp;quot;accumulator&amp;quot; mode&lt;br /&gt;
## Process by analyzing whole time course of voxel (could possibly be done slice at a time?)&lt;br /&gt;
# Process one slice at a time through all volumes&lt;br /&gt;
# Process one volume at a time through all volumes (same as previous?)&lt;br /&gt;
# Render dynamic time series, e.g. cardiac data&lt;br /&gt;
&lt;br /&gt;
=== Mock-ups and ideas ===&lt;br /&gt;
&lt;br /&gt;
[[image:Ron-TimeSeriesMockup.png|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ron's mock-up for time series layout using the light box capability in Slicer 3:&lt;br /&gt;
&lt;br /&gt;
* Layout: green and yellow are a single box. Red shows a single zoomed in image, selected by clicking&lt;br /&gt;
* alignment through registration or adjusting TS1 versus TS2 (or 3) by dragging one of them left or right&lt;br /&gt;
&lt;br /&gt;
=== Existing GUI Resources ===&lt;br /&gt;
&lt;br /&gt;
Below are interface elements for which GUI resources already exist. The Basic Controller and Cine Controller are not attached to any logic or data structures. The Interval Browser is part of Slicer2.6.&lt;br /&gt;
&lt;br /&gt;
[[image:BasicController.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:CineDisplay5.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:Ibrowser.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hierarchical Management of Large Data Sets ==&lt;br /&gt;
&lt;br /&gt;
From an earlier discussion:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Here are some notes for our discussion about a project to address the need to browse through large volumetric datasets interactively.  The particular issue that I think needs to be addressed is matching the data passing through the display pipeline to the actual resolution of the display windows or texture maps.''&lt;br /&gt;
&lt;br /&gt;
''For example, if you have a 8k x 8k x 8k volume data set, and you want to view it in a 1k by 1k window with arbitrary slice planes, the current classes in VTK and ITK would require loading the full 512 Gigapixels of data into memory and then pulling out the 1k by 1k slice plane, which on almost any computer would require a lot of virtual memory paging, if its possible at all.  Assuming your reslice plane is different then the way the volume is laid out in memory, there will be a high level of cache misses and memory thrashing.  A similar issue occurs when zooming in to a small section within a large volume -- in order to extract the volume of interest, the full volume must be read into memory.''&lt;br /&gt;
&lt;br /&gt;
''A better way to approach this problem is to preprocess the volume data so that a hierarchy of different resolutions are available (full size, 1/2 size, 1/4 size, etc) and the volume data can be decomposed into blocks so that only the necessary parts are read in order to display the currently selected view.  There is a large literature on these types of techniques.  Google Maps/Earth are good example of this technique applied to a large database with good interactive feel.''&lt;br /&gt;
&lt;br /&gt;
''I'd like to see a project to implement this approach inside VTK (and, possibly, ITK).  There have been a few attempts in the past (DataCutter at OSU, is similar, I believe, but the code doesn't appear to be available and so far the people I've been asking at BWH, GE, Kitware don't know the details -- this is something I can research more).''&lt;br /&gt;
&lt;br /&gt;
''What I have in mind is four related tools: (1) a preprocessor to build a hierarchical volume datastructure/database, (2) a server that will take requests for a given extent at a given resolution and provide back the volume data, (3) a demo web site that will allow interactive browsing through large data sets, and (4) an implementation in slicer to load and display these multi-resolution volumes for interactive visualization.''&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=21785</id>
		<title>Slicer3:TimeSeries and Multi-Volume Data</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=21785"/>
		<updated>2008-02-03T03:08:56Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Use Cases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[[Slicer3:Developers#Slicer_3_Projects | Back to Slicer3 Projects List ]]'''&lt;br /&gt;
&lt;br /&gt;
== Slicer3 support for TimeSeries and Multi-Volume Data==&lt;br /&gt;
&lt;br /&gt;
=== Feature ideas ===&lt;br /&gt;
&lt;br /&gt;
Just a collection of ideas related to time series data in no particular order.&lt;br /&gt;
&lt;br /&gt;
* Would like to dynamically load data in a background thread to minimize memory requirements&lt;br /&gt;
** Need to understand how this will impact performance, i.e. can we page through the slices in real time?&lt;br /&gt;
* Flexible processing&lt;br /&gt;
** Volume by volume&lt;br /&gt;
** Slice by Slice (would require a &amp;quot;block of bytes&amp;quot; format like NRRD, Analyze, or NIFTI)&lt;br /&gt;
&lt;br /&gt;
=== Potentially useful codes ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkMultiGroupDataSet.html  VTK 5.1 multi-group data set]&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkTemporalDataSet.html  VTK 5.1 temporal data set]&lt;br /&gt;
* [http://www.insight-journal.org/InsightJournalManager/view_reviews.php?back=admin_publications_toolkits.php&amp;amp;pubid=164  VTK code from Inria ]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Data Model ===&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
Need to evaluate these use cases to address the most useful/common scenarios to design the system.  Each use case must be catagorized from 4 (Required) down to 1 (Nice to have).  In all cases, we desire to handle datasets much larger than memory, yet maintain full interactivity for the user.  Flexibility of processing must be a priority.&lt;br /&gt;
&lt;br /&gt;
# User pages through same slice from all volumes in acquisition orientation&lt;br /&gt;
# User pages through reformatted slice from all volumes in acquisition orientation&lt;br /&gt;
# Process one pixel at a time through all volumes&lt;br /&gt;
## Process in an &amp;quot;accumulator&amp;quot; mode&lt;br /&gt;
## Process by analyzing whole time course of voxel (could possibly be done slice at a time?)&lt;br /&gt;
# Process one slice at a time through all volumes&lt;br /&gt;
# Process one volume at a time through all volumes&lt;br /&gt;
# Render dynamic time series, e.g. cardiac data&lt;br /&gt;
&lt;br /&gt;
=== Mock-ups and ideas ===&lt;br /&gt;
&lt;br /&gt;
[[image:Ron-TimeSeriesMockup.png|thumb|300px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ron's mock-up for time series layout using the light box capability in Slicer 3:&lt;br /&gt;
&lt;br /&gt;
* Layout: green and yellow are a single box. Red shows a single zoomed in image, selected by clicking&lt;br /&gt;
* alignment through registration or adjusting TS1 versus TS2 (or 3) by dragging one of them left or right&lt;br /&gt;
&lt;br /&gt;
=== Existing GUI Resources ===&lt;br /&gt;
&lt;br /&gt;
Below are interface elements for which GUI resources already exist. The Basic Controller and Cine Controller are not attached to any logic or data structures. The Interval Browser is part of Slicer2.6.&lt;br /&gt;
&lt;br /&gt;
[[image:BasicController.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:CineDisplay5.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:Ibrowser.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Hierarchical Management of Large Data Sets ==&lt;br /&gt;
&lt;br /&gt;
From an earlier discussion:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Here are some notes for our discussion about a project to address the need to browse through large volumetric datasets interactively.  The particular issue that I think needs to be addressed is matching the data passing through the display pipeline to the actual resolution of the display windows or texture maps.''&lt;br /&gt;
&lt;br /&gt;
''For example, if you have a 8k x 8k x 8k volume data set, and you want to view it in a 1k by 1k window with arbitrary slice planes, the current classes in VTK and ITK would require loading the full 512 Gigapixels of data into memory and then pulling out the 1k by 1k slice plane, which on almost any computer would require a lot of virtual memory paging, if its possible at all.  Assuming your reslice plane is different then the way the volume is laid out in memory, there will be a high level of cache misses and memory thrashing.  A similar issue occurs when zooming in to a small section within a large volume -- in order to extract the volume of interest, the full volume must be read into memory.''&lt;br /&gt;
&lt;br /&gt;
''A better way to approach this problem is to preprocess the volume data so that a hierarchy of different resolutions are available (full size, 1/2 size, 1/4 size, etc) and the volume data can be decomposed into blocks so that only the necessary parts are read in order to display the currently selected view.  There is a large literature on these types of techniques.  Google Maps/Earth are good example of this technique applied to a large database with good interactive feel.''&lt;br /&gt;
&lt;br /&gt;
''I'd like to see a project to implement this approach inside VTK (and, possibly, ITK).  There have been a few attempts in the past (DataCutter at OSU, is similar, I believe, but the code doesn't appear to be available and so far the people I've been asking at BWH, GE, Kitware don't know the details -- this is something I can research more).''&lt;br /&gt;
&lt;br /&gt;
''What I have in mind is four related tools: (1) a preprocessor to build a hierarchical volume datastructure/database, (2) a server that will take requests for a given extent at a given resolution and provide back the volume data, (3) a demo web site that will allow interactive browsing through large data sets, and (4) an implementation in slicer to load and display these multi-resolution volumes for interactive visualization.''&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=21729</id>
		<title>Slicer3:TimeSeries and Multi-Volume Data</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=21729"/>
		<updated>2008-02-01T03:56:04Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Feature ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[[Slicer3:Developers#Slicer_3_Projects | Back to Slicer3 Projects List ]]'''&lt;br /&gt;
&lt;br /&gt;
== Slicer3 support for TimeSeries and Multi-Volume Data==&lt;br /&gt;
&lt;br /&gt;
=== Feature ideas ===&lt;br /&gt;
&lt;br /&gt;
Just a collection of ideas related to time series data in no particular order.&lt;br /&gt;
&lt;br /&gt;
* Would like to dynamically load data in a background thread to minimize memory requirements&lt;br /&gt;
** Need to understand how this will impact performance, i.e. can we page through the slices in real time?&lt;br /&gt;
* Flexible processing&lt;br /&gt;
** Volume by volume&lt;br /&gt;
** Slice by Slice (would require a &amp;quot;block of bytes&amp;quot; format like NRRD, Analyze, or NIFTI)&lt;br /&gt;
&lt;br /&gt;
=== Potentially useful codes ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkMultiGroupDataSet.html  VTK 5.1 multi-group data set]&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkTemporalDataSet.html  VTK 5.1 temporal data set]&lt;br /&gt;
* [http://www.insight-journal.org/InsightJournalManager/view_reviews.php?back=admin_publications_toolkits.php&amp;amp;pubid=164  VTK code from Inria ]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Data Model ===&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Existing GUI Resources ===&lt;br /&gt;
&lt;br /&gt;
Below are interface elements for which GUI resources already exist. The Basic Controller and Cine Controller are not attached to any logic or data structures. The Interval Browser is part of Slicer2.6.&lt;br /&gt;
&lt;br /&gt;
[[image:BasicController.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:CineDisplay5.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:Ibrowser.png]]&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=21728</id>
		<title>Slicer3:TimeSeries and Multi-Volume Data</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:TimeSeries_and_Multi-Volume_Data&amp;diff=21728"/>
		<updated>2008-02-01T03:37:36Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Slicer3 support for TimeSeries and Multi-Volume Data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''[[Slicer3:Developers#Slicer_3_Projects | Back to Slicer3 Projects List ]]'''&lt;br /&gt;
&lt;br /&gt;
== Slicer3 support for TimeSeries and Multi-Volume Data==&lt;br /&gt;
&lt;br /&gt;
=== Feature ideas ===&lt;br /&gt;
&lt;br /&gt;
Just a collection of ideas related to time series data in no particular order.&lt;br /&gt;
&lt;br /&gt;
* Would like to dynamically load data in a background thread to minimize memory requirements&lt;br /&gt;
** Need to understand how this will impact performance, i.e. can we page through the slices in real time?&lt;br /&gt;
* Flexible processing&lt;br /&gt;
** Volume by volume&lt;br /&gt;
** Slice by Slice (would require a &amp;quot;block of bytes&amp;quot; format like NRRD, Analyze, or NIFTI)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Potentially useful codes ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkMultiGroupDataSet.html  VTK 5.1 multi-group data set]&lt;br /&gt;
* [http://www.vtk.org/doc/nightly/html/classvtkTemporalDataSet.html  VTK 5.1 temporal data set]&lt;br /&gt;
* [http://www.insight-journal.org/InsightJournalManager/view_reviews.php?back=admin_publications_toolkits.php&amp;amp;pubid=164  VTK code from Inria ]&lt;br /&gt;
&lt;br /&gt;
=== Proposed Data Model ===&lt;br /&gt;
&lt;br /&gt;
=== Use Cases ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Existing GUI Resources ===&lt;br /&gt;
&lt;br /&gt;
Below are interface elements for which GUI resources already exist. The Basic Controller and Cine Controller are not attached to any logic or data structures. The Interval Browser is part of Slicer2.6.&lt;br /&gt;
&lt;br /&gt;
[[image:BasicController.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:CineDisplay5.png]]&lt;br /&gt;
&lt;br /&gt;
[[image:Ibrowser.png]]&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=AHM_2008&amp;diff=21168</id>
		<title>AHM 2008</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=AHM_2008&amp;diff=21168"/>
		<updated>2008-01-10T22:39:58Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Agenda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;00&amp;quot; cellpadding=&amp;quot;8&amp;quot; cellspacing=&amp;quot;0&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;| '''This is the home page for the 2008 NA-MIC all hands meeting (AHM).''' NA-MIC participants meet for a AHM once a year. The purpose of the AHM is to coordinate, discuss plans and report to NIH officers and the external advisory board (EAB). The external advisory board meets with the NA-MIC leadership immediately after the AHM. In parallel, NA-MIC is organizing a project week. These events, with the exception of the EAB meeting, are open to collaborators and potential collaborators.&lt;br /&gt;
&lt;br /&gt;
For more information about the project weeks in general, click [[Engineering:Programming_Events|'''here''']]. &lt;br /&gt;
&lt;br /&gt;
For information about the January 2008 project week, see below or click [[2008_Winter_Project_Week|'''here''']].&lt;br /&gt;
&lt;br /&gt;
For information about Utah as a travel destination click [http://www.utah.com '''here'''].&lt;br /&gt;
| style=&amp;quot;background: #ebeced&amp;quot; colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;| [[Image:SLC.jpg|center|350px|View of the City]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background: #ebeced&amp;quot;| &amp;lt;b&amp;gt;SLC&amp;lt;/b&amp;gt;&lt;br /&gt;
| style=&amp;quot;background: #ebeced&amp;quot;|The 2008 AHM, EAB and Project Week will be held in Salt Lake City, UT, January 7-11 2008. &lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We have three wireless access points at the AHM.&lt;br /&gt;
&lt;br /&gt;
Two of them are located in the capital ballroom.  One is named capital-ballroom, the other is named capital-ballroom2.  If one access point doesn't let you connect it is probably overloaded.  In that case, please try connecting to the other one.&lt;br /&gt;
&lt;br /&gt;
The wireless in the amethyst ballroom is named linksys.&lt;br /&gt;
&lt;br /&gt;
None of these access points require a password to connect.  &lt;br /&gt;
&lt;br /&gt;
== Agenda ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot;&lt;br /&gt;
|- style=&amp;quot;background:#ebeced; color:black&amp;quot; align=&amp;quot;left&amp;quot; &lt;br /&gt;
| style=&amp;quot;width:4%&amp;quot; | '''Time'''&lt;br /&gt;
| style=&amp;quot;width:12%&amp;quot; | '''Monday, January 7''' &lt;br /&gt;
| style=&amp;quot;width:12%&amp;quot; | '''Tuesday, January 8'''&lt;br /&gt;
| style=&amp;quot;width:12%&amp;quot; | '''Wednesday, January 9''' &lt;br /&gt;
| style=&amp;quot;width:32%&amp;quot; | '''Thursday, January 10 '''&lt;br /&gt;
| style=&amp;quot;width:12%&amp;quot; | '''Friday, January 11''' &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffffdd; color:black&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:#522200&amp;quot;| '''[[2008_Winter_Project_Week|Project Activities]] ''' in [http://www.marriott.com/hotels/event-planning/floor-plans/slccc-salt-lake-city-marriott-city-center/ Capitol B-C]&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:#522200&amp;quot;| '''[[2008_Winter_Project_Week|Project Activities]] ''' in [http://www.marriott.com/hotels/event-planning/floor-plans/slccc-salt-lake-city-marriott-city-center/ Capitol B-C]&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:#522200&amp;quot;| '''[[2008_Winter_Project_Week|Project Activities]] ''' in [http://www.marriott.com/hotels/event-planning/floor-plans/slccc-salt-lake-city-marriott-city-center/ Capitol B-C]&lt;br /&gt;
| style=&amp;quot;background:#fff6a6; color:#522200&amp;quot;| '''AHM''' in [http://www.marriott.com/hotels/event-planning/floor-plans/slccc-salt-lake-city-marriott-city-center/ Capitol A-B], [[2008_EAB|'''EAB''']] in [http://www.marriott.com/hotels/event-planning/floor-plans/slccc-salt-lake-city-marriott-city-center/ Olympus B]&lt;br /&gt;
'''[[2008_Winter_Project_Week|Project Activities]] ''' in [http://www.marriott.com/hotels/event-planning/floor-plans/slccc-salt-lake-city-marriott-city-center/ Olympus A]&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:#522200&amp;quot;|'''[[2008_Winter_Project_Week|Project Activities]] ''' in [http://www.marriott.com/hotels/event-planning/floor-plans/slccc-salt-lake-city-marriott-city-center/ Capitol B-C]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffffdd; color:black&amp;quot;|'''7:30-''' &lt;br /&gt;
| style=&amp;quot;background:#ebeced; color:black&amp;quot;|  &lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;| Breakfast&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;| Breakfast&lt;br /&gt;
| style=&amp;quot;background:#fff6a6; color:black&amp;quot;| Breakfast&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;| Breakfast&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffffdd; color:black&amp;quot;|'''8:00-10:00''' &lt;br /&gt;
| style=&amp;quot;background:#ebeced; color:black&amp;quot;|'''9:30''' Core 1 and 2 PI closed session in [http://www.marriott.com/hotels/event-planning/floor-plans/slccc-salt-lake-city-marriott-city-center/ Capitol A]&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;|Project Work &amp;lt;br&amp;gt; [[2008 Winter Project Week Plug-ins for Slicer3|Plug-ins for Slicer3]] in [http://www.marriott.com/hotels/event-planning/floor-plans/slccc-salt-lake-city-marriott-city-center/ Amethyst 1]&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;|Project Work &amp;lt;br&amp;gt;'''8:00-9:00''' [[2008 Winter Project Week IGT|IGT Breakout Session]] [http://www.marriott.com/hotels/event-planning/floor-plans/slccc-salt-lake-city-marriott-city-center/ Amethyst 1]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
9am: [[2008 Winter Project Week Tractography|Tractography Breakout Session]] in [http://www.marriott.com/hotels/event-planning/floor-plans/slccc-salt-lake-city-marriott-city-center/ Amethyst 2]&lt;br /&gt;
| style=&amp;quot;background:#fff6a6; color:black&amp;quot;|&amp;lt;br&amp;gt;&lt;br /&gt;
'''8:00''' [[AHM 2008 Introduction|Introduction]], Ron Kikinis &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Core 1 and 2 Presentations'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''8:05''' [[Media:NAMIC-AHM2008-Utah1.ppt | Utah 1]], Ross Whitaker&amp;lt;br&amp;gt;&lt;br /&gt;
'''8:20''' [[Media:Utah-Gerig-EAB.ppt‎ | Utah 2]], Guido Gerig&amp;lt;br&amp;gt;&lt;br /&gt;
'''8:30''': [[Media:MIT_NAMIC_AHM2008.ppt‎ | MIT]], Polina Golland&amp;lt;br&amp;gt;&lt;br /&gt;
'''8:45''': [[Media:20080110-AHM-GeorgiaTech.zip|Georgia Tech]], Allen Tannenbaum&amp;lt;br&amp;gt;&lt;br /&gt;
'''9:00''': [[Media:2008 UNC Core1 NAMIC AHM.ppt | UNC]], Martin Styner&amp;lt;br&amp;gt;&lt;br /&gt;
'''9:10''': [[Media:namic_ahm_nrg.ppt | MGH/WUSTL]], Dan Marcus&amp;lt;br&amp;gt;&lt;br /&gt;
'''9:25''': [[media:2008_NA-MIC_AHM_Kitware.ppt | Kitware]], Will Schroeder&amp;lt;br&amp;gt;&lt;br /&gt;
'''9:40''': [[Media:GE Research AHM 2008.ZIP | GE Research]], Jim Miller&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;|Project Work &amp;lt;br&amp;gt; [[2008 Winter Project Week Python|Python mini-Breakout Session]] &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffffdd; color:black&amp;quot;|'''10:00-10:30''' &lt;br /&gt;
| style=&amp;quot;background:#ebeced; color:black&amp;quot;| Core 1 and 2 PI closed session&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;| Coffee&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;| Coffee&lt;br /&gt;
| style=&amp;quot;background:#fff6a6; color:black&amp;quot;| Coffee&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;| Coffee&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffffdd; color:black&amp;quot;|'''10:30-12:00''' &lt;br /&gt;
| style=&amp;quot;background:#ebeced; color:black&amp;quot;| Core 1 and 2 PI closed session&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;|Project Work &lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;|Project Work &amp;lt;br&amp;gt;&lt;br /&gt;
[[2008 Winter Project Week Tractography|Tractography Breakout Session contd]]  &lt;br /&gt;
| style=&amp;quot;background:#fff6a6; color:black&amp;quot;|&lt;br /&gt;
'''10:30''': [[media:2008 NA-MIC AHM Isomics.ppt | Isomics]], Steve Pieper&amp;lt;br&amp;gt;&lt;br /&gt;
'''10:45''': [[media:NA-MIC_2008AHM_UCSD.ppt | UCSD]], Mark Ellisman&amp;lt;br&amp;gt;&lt;br /&gt;
'''11:00''': [[media:Toga NAMIC 2008.zip|UCLA]], Arthur Toga&amp;lt;br&amp;gt;&lt;br /&gt;
'''11:15''': Outreach: [[media:NA-MIC.2008.AHM.Core5.6.ppt|Training &amp;amp; Dissemination]], Randy Gollub&amp;lt;br&amp;gt;&lt;br /&gt;
'''11:25''': Invited [[media:Simbios-AHM-2008.zip|talk]]: Mike Sherman, Stanford NCBC Simbios, SimTK Architect&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;|Project Work&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffffdd; color:black&amp;quot;|'''12:00-1:00'''  &lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;| Lunch&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;| Lunch &amp;lt;br&amp;gt; [[DBP Engineering Resource|DPB Engineers Lunch meeting]]&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;| Lunch&amp;lt;br&amp;gt; [[AHM 2008 fMRI|Birds of a Feather: fMRI]]&lt;br /&gt;
| style=&amp;quot;background:#fff6a6; color:black&amp;quot;| Lunch&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;| Adjourn &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffffdd; color:black&amp;quot;|'''1:00-3:00''' &lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;|Introduce Projects and Participants &lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;|Breakout: [[2008 Winter Project Week Geometry and Topology processing of Meshes|Geometry and Topology processing of Meshes]] [http://www.marriott.com/hotels/event-planning/floor-plans/slccc-salt-lake-city-marriott-city-center/ Amthyst 1]&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;|Project Work &amp;lt;br&amp;gt; [[2008 Winter Project Week Tractography|Tractography Breakout Session contd]] &lt;br /&gt;
| style=&amp;quot;background:#fff6a6; color:black&amp;quot;|&lt;br /&gt;
'''DBP results''' &amp;lt;br&amp;gt;&lt;br /&gt;
'''1:00''': [[Media:DBP2-Prostate-AHM2008.ppt | Queens/JHU]][[Media:DBP2-Prostate-AHM2008.pdf | (pdf)]], David Gobbi&amp;lt;br&amp;gt;&lt;br /&gt;
'''1:15''':[[Media:UNC DBP 2_longitudinal autism study_AHM jan08.ppt| UNC]], Heather Cody Hazlett&amp;lt;br&amp;gt;&lt;br /&gt;
'''1:30''':[[Media:NA-MIC_Kubicki.ppt | Harvard]], Marek Kubicki&amp;lt;br&amp;gt;&lt;br /&gt;
'''1:45''':[[Media:DBP2_MIND_Lupus_200801_update.ppt | MIND/UNM]], Jeremy Bockholt&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''NCBC Collaborations'''&amp;lt;br&amp;gt;&lt;br /&gt;
'''2:00''': [[Media:NA-MIC_Cleary_RF_Ablation_Georgetown.pdf|Georgetown]], Kevin Cleary&amp;lt;br&amp;gt;&lt;br /&gt;
'''2:15''': [[Media:External-Wyatt-WFUSM.ppt‎|Wake Forest/VT]], Chris Wyatt&amp;lt;br&amp;gt;&lt;br /&gt;
'''2:30''': [[Media:NA-MIC Mesh Collaboration - 2008.ppt| UIowa]], Nicole Grosland,Vincent Magnotta&amp;lt;br&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#ebeced; color:black&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffffdd; color:black&amp;quot;|'''3:30-4:00''' &lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;| Coffee&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;| Coffee&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;| Coffee&lt;br /&gt;
| style=&amp;quot;background:#fff6a6; color:black&amp;quot;| Coffee&lt;br /&gt;
| style=&amp;quot;background:#ebeced; color:black&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffffdd; color:black&amp;quot;|'''3:00-5:00''' &lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;|'''3:00-4:00''' Slicer Update [[Media:2008 NA-MIC AHM Slicer3.ppt | Slides]]&amp;lt;br&amp;gt;&lt;br /&gt;
'''4:00-5:00''' Breakout: [[2008 Winter Project Week EM Segmenter User Group|EM Segmenter User Group]] [http://www.marriott.com/hotels/event-planning/floor-plans/slccc-salt-lake-city-marriott-city-center/ Amethyst 1]&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;|Project Work &amp;lt;br&amp;gt;[[2008_Winter_Project_Week_Image_Registration_Update| Registration Breakout]] [http://www.marriott.com/hotels/event-planning/floor-plans/slccc-salt-lake-city-marriott-city-center/ Amethyst 1]&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;|Project Work &amp;lt;br&amp;gt;'''3:00-4:00''' [[2008 Winter Project Week Batchmake Update|Batchmake Update]]&amp;lt;br&amp;gt;[http://www.marriott.com/hotels/event-planning/floor-plans/slccc-salt-lake-city-marriott-city-center/ Amethyst 1]&lt;br /&gt;
[[2008 Winter Project Week Tractography|Tractography Breakout Session contd]] &amp;lt;br&amp;gt;&lt;br /&gt;
| style=&amp;quot;background:#fff6a6; color:black&amp;quot;|[[2008 EAB|EAB]]&amp;lt;br&amp;gt;[http://www.marriott.com/hotels/event-planning/floor-plans/slccc-salt-lake-city-marriott-city-center/ Olympus B]&amp;lt;br&amp;gt;'''3:00-4:00''' Discussion with NA-MIC Leadership&amp;lt;br&amp;gt; '''4:00-5:00''' Closed Session&lt;br /&gt;
| style=&amp;quot;background:#ebeced; color:black&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background:#ffffdd; color:black&amp;quot;|'''05:00-07:00''' &lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;|&lt;br /&gt;
| style=&amp;quot;background:#b4d597; color:black&amp;quot;|'''5:00''' Optional: [[2008-SCI-tour|Tour]] of the new SCI building&lt;br /&gt;
| style=&amp;quot;background:#fff6a6; color:black&amp;quot;|'''6:00''' Optional: [http://www.skisaltlake.com/murphys.htm Beer at Murphy's] (like last year)&lt;br /&gt;
| style=&amp;quot;background:#ebeced; color:black&amp;quot;| &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please note that there will be a Core 1&amp;amp;2 Site PI Retreat on the morning of Monday, January 7th. This is a closed session for Core 1&amp;amp;2 Site PIs, with no delegates. The topic is the competitive renewal.&lt;br /&gt;
&lt;br /&gt;
== Dates. Venue. Registration ==&lt;br /&gt;
&lt;br /&gt;
'''Dates:''' &lt;br /&gt;
* The All Hands Meeting and External Advisory Board Meeting will be held on '''Thursday, January 10th'''.  &lt;br /&gt;
* Project Activities will be held rest of the week between '''Monday, January 7th and Friday, January 11th'''.&lt;br /&gt;
&lt;br /&gt;
'''Venue:''' The venue for the meeting is [http://www.marriott.com/hotels/travel/slccc-salt-lake-city-marriott-city-center/ Marriot City Center, Salt Lake City, Utah] Mariott City Center, Salt Lake City, Utah. [http://marriott.com/property/meetingsandevents/floorplans/slccc (Floorplan)]. To reserve rooms at the meeting rate of $129/night, please either call the hotel at 1-801-961-8700 or 1-866-961-8700 (toll free) and mention that you are attending the NAMIC meeting or book online by using the code SCISCIA. Please note that we do need attendees to use this hotel in order to not incur additional charges for the use of conference rooms.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt; '''Registration:''' We are charging a registration fee to all participants. The fee covers the costs of the facilities and food provided. In order to keep the fee low, we need to get a sufficient number of hotel nights by our participants. See above for more on this. Please click [http://www.sci.utah.edu/namic2008/registration.html '''here'''] for online registration. This registration must be completed by Friday, December 14, 2007. &amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Attendees ==&lt;br /&gt;
&lt;br /&gt;
Please note that unlike past events, registration will not be done on the wiki. Instead you need to follow [http://www.sci.utah.edu/namic2008/registration.html this registration link] to complete your online registration.  The organizers will periodically publish the list of registered attendees in the space below.  Attendees should '''NOT''' add their names in this section.&lt;br /&gt;
&lt;br /&gt;
This is the list of attendees who have registered as of January 5, 2008&lt;br /&gt;
&lt;br /&gt;
===AHM===&lt;br /&gt;
#	Michael J.	Ackerman, Ph.D.	National Library of Medicine	&lt;br /&gt;
#	Everette	Burdette	Acoustic MedSystems, Inc.	&lt;br /&gt;
#	German	Cavelier	NIHNIMH	&lt;br /&gt;
#	Kevin	Cleary	Georgetown University	collaborator&lt;br /&gt;
#	Zohara	Cohen	National Institutes of Health	&lt;br /&gt;
#	Jack	Collins	SAIC-Frederick, Inc.	&lt;br /&gt;
#	Gabor	Fichtinger	Queens University	&lt;br /&gt;
#	Chris	Johnson	External Advisory Board	EAB member&lt;br /&gt;
#	Danial	Lashkari	MIT	MIT&lt;br /&gt;
#	Mikhail	Milchenko	Washington University at St Louis	2&lt;br /&gt;
#	Sandy	Napel	Stanford	EAB member&lt;br /&gt;
#	Godfrey	Pearlson	Yale	EAB member&lt;br /&gt;
#	Fred	Prior	External Advisory Board	EAB member&lt;br /&gt;
#	Mike	Sherman	Stanford	Invited Speaker&lt;br /&gt;
#	Arthur	Toga	Laboratory of Neuro Imaging, UCLA	&lt;br /&gt;
#	Chris	Wyatt	Virginia Tech	Collaborator&lt;br /&gt;
#	Terry S.	Yoo	National Library of Medicine	&lt;br /&gt;
&lt;br /&gt;
===AHM and Project Event===&lt;br /&gt;
#	Douglas	Alan	Harvard University IIC	Collaborator&lt;br /&gt;
#	Luca	Antiga	Mario Negri Institute	&lt;br /&gt;
#	Kevin	Archie	Washington University School of Medicine	&lt;br /&gt;
#	Nicole	Aucoin	Brigham and Women's Hospital	2&lt;br /&gt;
#	Stephen	Aylward	Kitware, Inc.	&lt;br /&gt;
#	Serdar	Balci	MIT	&lt;br /&gt;
#	Sebastien	Barre	Kitware, Inc.	&lt;br /&gt;
#	Jack	Blevins	Acoustic MedSystems, Inc.	&lt;br /&gt;
#	Daniel	Blezek	Mayo Clinic	External&lt;br /&gt;
#	H Jeremy	Bockholt	The MIND Research Network	MIND DBP2&lt;br /&gt;
#	Sylvain	Bouix	Brigham and Womens Hospital	Psychiatry Neuroimaging Lab Core 3&lt;br /&gt;
#	Francois	Budin	Brigham and Womens Hospital	&lt;br /&gt;
#	Patrick	Cheng	Georgetown University	collaborator&lt;br /&gt;
#	Kiyoyuki	Chinzei	AIST, Japan	&lt;br /&gt;
#	Nikos	Chrisochoides	College of William and Mary	&lt;br /&gt;
#	Csaba 	Csoma	Johns Hopkins University	&lt;br /&gt;
#	Brad	Davis	Kitware, Inc.	&lt;br /&gt;
#	Preston Tom	Fletcher	SCI Institute	&lt;br /&gt;
#	Andreas	Freudling	Brigham and Women's Hospital	Leadership Core&lt;br /&gt;
#	Yi	Gao	Georgia Tech	&lt;br /&gt;
#	Guido	Gerig	SCI Institute	&lt;br /&gt;
#	David	Gobbi	Queens University	DBP2&lt;br /&gt;
#	Polina	Golland	MIT	Core 1&lt;br /&gt;
#	Randy	Gollub	MGH Department of Psychiatry	Core 5&lt;br /&gt;
#	Casey	Goodlett	SCI Institute	&lt;br /&gt;
#	Alexandre	Gouaillard	Caltech	&lt;br /&gt;
#	Sylvain	Gouttard	SCI Institute	&lt;br /&gt;
#	Benjamin	Grauer	Brigham and Women's Hospital	Leadership Core &lt;br /&gt;
#	Jeffrey	Grethe	UCSD	2&lt;br /&gt;
#	Nicole	Grosland	The University of Iowa, CCAD	&lt;br /&gt;
#	Nathan	Hageman	UCLA	&lt;br /&gt;
#	Michael	Halle	Brigham and Women's Hospital	Leadership Core&lt;br /&gt;
#	Nobuhiko	Hata	Brigham and Women's Hospital	Leadership Core&lt;br /&gt;
#	Nobuhiko	Hata	Brigham and Women's Hospital	&lt;br /&gt;
#	Kathryn	Hayes	Brigham and Womens Hospital	2 - Engineering&lt;br /&gt;
#	Heather Cody 	Hazlett	University of North Carolina	DBP Core2&lt;br /&gt;
#	Bill	Hoffman	Kitware, Inc.	&lt;br /&gt;
#	Jaesung	Hong	Kyushu University	&lt;br /&gt;
#	Luis	Ibanez	Kitware, Inc.	&lt;br /&gt;
#	Mustafa Okan	Irfanoglu	OSU	&lt;br /&gt;
#	Firdaus	Janoos	ohio-state univ	&lt;br /&gt;
#	Julien	Jomier	Kitware, Inc.	&lt;br /&gt;
#	Usman	Khan	Brigham and Womens Hospital	&lt;br /&gt;
#	Ron	Kikinis	Brigham and Womens Hospital	Leadership Core&lt;br /&gt;
#	Marek 	Kubicki	Brigham and Womens Hospital	&lt;br /&gt;
#	Curtis 	Lisle	KnowledgeVis, LLC	2&lt;br /&gt;
#	Haiying	Liu	Brigham and Womens Hospital	&lt;br /&gt;
#	William	Lorensen	External Advisory Board	EAB&lt;br /&gt;
#	Raghu	Machiraju	The Ohio State University	&lt;br /&gt;
#	Vincent	Magnotta	The University of Iowa, CCAD	&lt;br /&gt;
#	Daniel	Marcus	Washington University	Core 2&lt;br /&gt;
#	Doug	Markant	Brigham and Women's Hospital	Leadership Core&lt;br /&gt;
#	Katie	Mastrogiacomo	SPL, Brigham and Women's Hospital	Leadership Core&lt;br /&gt;
#	Sean	Megason	Caltech	&lt;br /&gt;
#	John	Melonakos	Georgia Tech	&lt;br /&gt;
#	James V	Miller	GE Global Research	&lt;br /&gt;
#	Vandana	Mohan	Georgia Inst of Technology	1&lt;br /&gt;
#	Kishore	Mosaliganti	The Ohio State University	&lt;br /&gt;
#	Tri	Ngo	MIT	&lt;br /&gt;
#	Ipek	Oguz	UNC	2&lt;br /&gt;
#	Steve	Pieper	Isomics, Inc.	2, 6&lt;br /&gt;
#	Carlo	Pierpaoli	NIH 	&lt;br /&gt;
#	Wendy	Plesniak	Brigham and Women's Hospital	Leadership Core&lt;br /&gt;
#	Kilian	Pohl	Brigham and Women's Hospital	1&lt;br /&gt;
#	Marcel	Prastawa	SCI Institute	&lt;br /&gt;
#	Sonia	Pujol	Brigham and Women's Hospital	Leadership Core&lt;br /&gt;
#	Katharina	Quintus	Brigham and Women's Hospital	Leadership Core&lt;br /&gt;
#	Yogesh	Rathi	Brigham and Womens Hospital	&lt;br /&gt;
#	Mert	Sabuncu	MIT	&lt;br /&gt;
#	Will	Schroeder	Kitware, Inc.	&lt;br /&gt;
#	Mark	Scully	The MIND Research Network	&lt;br /&gt;
#	Li	Shen	Indiana University	&lt;br /&gt;
#	Kiran	Shivanna	The University of Iowa, CCAD	&lt;br /&gt;
#	Martin	Styner	UNC Chapel Hill	1&lt;br /&gt;
#	Padma	Sundaram	Brigham and Womens Hospital	Brigham and Womens&lt;br /&gt;
#	Xiaodong	Tao	GE	&lt;br /&gt;
#	Kinh	Tieu	Brigham and Women's Hospital	&lt;br /&gt;
#	Junichi	Tokuda	Brigham and Women's Hospital	Leadership Core&lt;br /&gt;
#	Clement	Vachet	UNC Chapel Hill	3&lt;br /&gt;
#	Koen	Van Leemput	MIT	&lt;br /&gt;
#	Sandy	Wells	Brigham and Womens Hospital	&lt;br /&gt;
#	Carl-Fredrik	Westin	Brigham and Womens Hospital	NAC&lt;br /&gt;
#	Nathan	Wilson	Cardiovascular Simulation, Inc.	&lt;br /&gt;
#	Alexander	Yarmarkovich	Isomics, Inc. Engineering Core 2&lt;br /&gt;
#	Anastasia	Yendiki	MGH	&lt;br /&gt;
#	Boon Thye	Yeo	MIT	&lt;br /&gt;
#	Tim	Yin	Stony Brook University	&lt;br /&gt;
&lt;br /&gt;
This is the list of attendees who have registered as of January 5, 2008. Please note that unlike past events, registration will not be done on the wiki. Instead you need to follow [http://www.sci.utah.edu/namic2008/registration.html this registration link] to complete your online registration.  The organizers will periodically publish the list of registered attendees in the space above.  Attendees should '''NOT''' add their names in this section.&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_Python&amp;diff=21167</id>
		<title>2008 Winter Project Week Python</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_Python&amp;diff=21167"/>
		<updated>2008-01-10T22:22:05Z</updated>

		<summary type="html">&lt;p&gt;Blezek: New page: ==General Status of Python support in Slicer== * numpy/scipy integration * matplotlib status * command line modules in Python ** CLM Python module discovery (where to put your nifty Python...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==General Status of Python support in Slicer==&lt;br /&gt;
* numpy/scipy integration&lt;br /&gt;
* matplotlib status&lt;br /&gt;
* command line modules in Python&lt;br /&gt;
** CLM Python module discovery (where to put your nifty Python CLM)&lt;br /&gt;
* scripted modules in Python&lt;br /&gt;
** Scripted module discovery (where to put your nifty Python module)&lt;br /&gt;
* Python '''Meta-Modules'''&lt;br /&gt;
&lt;br /&gt;
==Slicer Python Primer==&lt;br /&gt;
&lt;br /&gt;
====Command line module walkthrough====&lt;br /&gt;
* Required elements&lt;br /&gt;
** XML&lt;br /&gt;
** Execute&lt;br /&gt;
* Processing MRML nodes&lt;br /&gt;
* Placing results back in MRML&lt;br /&gt;
* Gotchas&lt;br /&gt;
** Not threaded, don't lock up Slicer for too long&lt;br /&gt;
&lt;br /&gt;
====Python Scripted Modules====&lt;br /&gt;
* Required elements&lt;br /&gt;
** XML&lt;br /&gt;
** Function structure&lt;br /&gt;
** Module that looks like a class&lt;br /&gt;
&lt;br /&gt;
====Python '''Meta-Modules'''====&lt;br /&gt;
* Command Line Modules as plugins&lt;br /&gt;
* Discovery process&lt;br /&gt;
* Calling conventions&lt;br /&gt;
* Example&lt;br /&gt;
&lt;br /&gt;
====Future Directions====&lt;br /&gt;
* Wizard: Multi-stage modules (union of Scripted Modules and '''Meta-Modules''')&lt;br /&gt;
* Matplotlib: interactive and integrated plotting&lt;br /&gt;
* ''Matlab-like'' access to Slicer MRML nodes&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_Image_Registration_Update&amp;diff=20304</id>
		<title>2008 Winter Project Week Image Registration Update</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2008_Winter_Project_Week_Image_Registration_Update&amp;diff=20304"/>
		<updated>2007-12-28T20:35:07Z</updated>

		<summary type="html">&lt;p&gt;Blezek: /* Attendees */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
 Back to [[AHM_2008]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Breakout session on &amp;quot;Registration methods in the NAMIC Toolkit&amp;quot;=&lt;br /&gt;
&lt;br /&gt;
== Attendees ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;em&amp;gt;Please add your name below, if your plan on attending.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Guido Gerig&lt;br /&gt;
* Jim Miller&lt;br /&gt;
* Stephen Aylward&lt;br /&gt;
* Ross Whitaker&lt;br /&gt;
* Luis Ibanez&lt;br /&gt;
* Alex hanfei Gouaillard&lt;br /&gt;
* Casey Goodlett&lt;br /&gt;
* Bill Lorensen&lt;br /&gt;
* Luca Antiga&lt;br /&gt;
* Clement Vachet&lt;br /&gt;
* Ron Kikinis&lt;br /&gt;
* Serdar Balci&lt;br /&gt;
* Daniel Blezek&lt;br /&gt;
&lt;br /&gt;
== Topics ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;em&amp;gt;Please submit your ideas for topics to be discussed.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Demonstration of a registration module in Slicer (Stephen)&lt;br /&gt;
* Needs (Guido)&lt;br /&gt;
* What is available (Guido)&lt;br /&gt;
* Use in a pipeline (Guido)&lt;br /&gt;
* Validation (Guido)&lt;br /&gt;
* Testing (Luis)&lt;br /&gt;
* Heuristics for selecting components(Luis)&lt;br /&gt;
&lt;br /&gt;
== Presentations ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;em&amp;gt;If you would like to give a short (5-10 minute) presentation, please describe it below.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Opening remarks (Guido)&lt;br /&gt;
* Demonstration of a registration module in Slicer (Stephen)&lt;br /&gt;
* Discussion of directions for future work (assign priorities and responsibilities)&lt;br /&gt;
** Passing and tracking transforms in Slicer (Jim)&lt;br /&gt;
** Regularization of BSplines (Stephen)&lt;br /&gt;
** Adding &amp;quot;don't process&amp;quot; zones in BSplines (Stephen)&lt;br /&gt;
** Objects as masks: mrml -=&amp;gt; SpatialObject conversion (Stephen)&lt;br /&gt;
** Reducing BSpline memory requirements (Brad)&lt;br /&gt;
** Specializing particular metric/transform combinations (Luis)&lt;br /&gt;
** Batch processing registration&lt;br /&gt;
*** Atlas formation&lt;br /&gt;
*** Atlas application&lt;br /&gt;
** Validation&lt;br /&gt;
*** STAPLE&lt;br /&gt;
&lt;br /&gt;
== Related Links ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;em&amp;gt;Add papers, presentations, wiki pages, etc.&amp;lt;/em&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [http://www.vtk.org/Wiki/Proposals:GridComputing Grid Computing in ITK]&lt;br /&gt;
* [http://www.na-mic.org/Wiki/index.php/ITK_Registration_Optimization ITK Multi-threaded registration]&lt;br /&gt;
* [http://www.vtk.org/Wiki/ITK_Roadmap_2007_2008 ITK Roadmap for 2008]&lt;/div&gt;</summary>
		<author><name>Blezek</name></author>
		
	</entry>
</feed>