<?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=Yumin</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=Yumin"/>
	<link rel="alternate" type="text/html" href="https://www.na-mic.org/wiki/Special:Contributions/Yumin"/>
	<updated>2026-06-15T11:02:12Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=AHM2009:GUI_Testing&amp;diff=34073</id>
		<title>AHM2009:GUI Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=AHM2009:GUI_Testing&amp;diff=34073"/>
		<updated>2009-01-02T15:07:03Z</updated>

		<summary type="html">&lt;p&gt;Yumin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Back to [[AHM_2009]]&lt;br /&gt;
&lt;br /&gt;
Breakout session Moderator: Sebastien Barre&lt;br /&gt;
&lt;br /&gt;
Introduction: [http://wiki.na-mic.org/Wiki/index.php/2009_Winter_Project_Week_Automated_GUI_Testing Automatic KWWidgets and Slicer GUI Testing]&lt;br /&gt;
&lt;br /&gt;
Agenda:&lt;br /&gt;
* How to create Squish test suites from Squish IDE.&lt;br /&gt;
* How to add validation points in Squish tests.&lt;br /&gt;
* How to add Squish tests using CMake macros, so that they can be run nightly from ctest.&lt;br /&gt;
* Wiki pages of Squish for KWWidgets and Slicer3. &lt;br /&gt;
** [http://www.vtk.org/Wiki/KWWidgets/GUI_Testing/Squish/SquishForKWWidgets Squish for KWWidgets].&lt;br /&gt;
** [http://www.vtk.org/Wiki/KWWidgets/GUI_Testing/Squish/SquishForSlicer3 Squish for Slicer3].&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
*[http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing KWWidgets GUI testing].&lt;br /&gt;
*[http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing/Squish KWWidgets GUI testing with Squish].&lt;/div&gt;</summary>
		<author><name>Yumin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=AHM2009:GUI_Testing&amp;diff=33814</id>
		<title>AHM2009:GUI Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=AHM2009:GUI_Testing&amp;diff=33814"/>
		<updated>2008-12-18T06:01:39Z</updated>

		<summary type="html">&lt;p&gt;Yumin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Back to [[AHM_2009]]&lt;br /&gt;
&lt;br /&gt;
Breakout session Moderator: Sebastien Barre&lt;br /&gt;
&lt;br /&gt;
Introduction: [http://wiki.na-mic.org/Wiki/index.php/2009_Winter_Project_Week_Automated_GUI_Testing Automatic KWWidgets and Slicer GUI Testing]&lt;br /&gt;
&lt;br /&gt;
Agenda:&lt;br /&gt;
* How to create Squish test suites from Squish IDE.&lt;br /&gt;
* How to add validation points in Squish tests.&lt;br /&gt;
* How to add Squish tests using CMake macros, so that they can be run nightly from ctest.&lt;br /&gt;
* Squish current known issues with some KWWidgets. &lt;br /&gt;
** vtkKWComboBox, vtkKWMenuButton&lt;br /&gt;
** Recording a lot of MouseMove events with coordinates, which may not always be reliable.&lt;br /&gt;
** Asynchronous handling of mouse events, which is difficult to control of the procedure-flow, so in some cases, manual insert of &amp;quot;wait-some-time&amp;quot; is needed in the script&lt;br /&gt;
** RenderWindow mouse move events are recorded and played back TOO MUCH.&lt;br /&gt;
&lt;br /&gt;
* Discussions: tests validation methods.&lt;/div&gt;</summary>
		<author><name>Yumin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=AHM2009:GUI_Testing&amp;diff=33813</id>
		<title>AHM2009:GUI Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=AHM2009:GUI_Testing&amp;diff=33813"/>
		<updated>2008-12-18T05:53:43Z</updated>

		<summary type="html">&lt;p&gt;Yumin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Back to [[AHM_2009]]&lt;br /&gt;
&lt;br /&gt;
Breakout session Moderator: Sebastien Barre&lt;br /&gt;
&lt;br /&gt;
Introduction: [http://wiki.na-mic.org/Wiki/index.php/2009_Winter_Project_Week_Automated_GUI_Testing Automatic KWWidgets and Slicer GUI Testing]&lt;br /&gt;
&lt;br /&gt;
Agenda:&lt;br /&gt;
* How to create Squish test suites from Squish IDE.&lt;br /&gt;
* How to add validation points in Squish tests.&lt;br /&gt;
* How to add Squish tests using CMake macros, so that they can be run nightly from ctest.&lt;br /&gt;
* Squish current known issues with some KWWidgets. &lt;br /&gt;
* Discussions: tests validation methods.&lt;/div&gt;</summary>
		<author><name>Yumin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Automated_GUI_Testing&amp;diff=33812</id>
		<title>2009 Winter Project Week Automated GUI Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Automated_GUI_Testing&amp;diff=33812"/>
		<updated>2008-12-18T05:36:00Z</updated>

		<summary type="html">&lt;p&gt;Yumin: /* Key Investigators */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2009_Winter_Project_Week|Project Week Main Page]] ]]&lt;br /&gt;
|[[Image:squish_slicer3.png|thumb|320px|Image showing the end result of a Squish test with the clipbox of a volume in Slicer3]]&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;
* Kitware: Sebastien Barre, Yumin Yuan&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Objective&amp;lt;/h1&amp;gt;&lt;br /&gt;
An automated GUI testing framework in KWWidgets is definitely on high demand, and the reason is best described by Ron Kikinis:&lt;br /&gt;
&amp;quot;The automatic testing capability that kww will enable, appears to me to be more and more important, the more I think about it. As a matter of fact, automatic testing of entire sequences of mouse clicks and keyboard strokes will enable us to move to a different level robustness with slicer 3.0.&amp;quot;. &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;
Suggestions, discussions and specifications related to this topic are documented in this [http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing KWWidgets wiki page].&lt;br /&gt;
As described on the wiki, many solutions (freeware and commercial) have been investigated, and currently we think that Squish looks like to be a valid solution for simple tests (or, actually, our only solution). A detailed wiki page about [http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing/Squish KWWidgets testing with Squish] has been created, and a work-plan is defined:&lt;br /&gt;
&lt;br /&gt;
* Create a CMake module to find Squish on the system (paths to Squish server and Squish runner). &lt;br /&gt;
* Create CMake macros that will start/stop the server and run a test by invoking the runner and parsing its output. &lt;br /&gt;
* Invoke the Squish module when configuring/building KWWidgets. &lt;br /&gt;
* Create CMake macros that will add Squish tests for KWWidgets. &lt;br /&gt;
* Create new suites for KWWidgets examples. &lt;br /&gt;
* Create new suites to test every single KWWidgets core widget (in the WidgetsTour for example).&lt;br /&gt;
* Create new suites for Slicer3. &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;
&lt;br /&gt;
* Create a CMake module to find Squish on the system (paths to Squish server and Squish runner). --- Done by Brad Davis&lt;br /&gt;
* Create CMake macros that will start/stop the server and run a test by invoking the runner and parsing its output. --- Done by Brad Davis&lt;br /&gt;
* Invoke the Squish module when configuring/building KWWidgets. --- Done&lt;br /&gt;
* Create CMake macros that will add Squish tests for KWWidgets. --- In Progress (Need to add validation methods for some tests)&lt;br /&gt;
* Create new suites for KWWidgets examples. --- In Progress (Some new Squish test suites are created for all the Cxx examples, but still need to add validation methods to these tests).&lt;br /&gt;
* Create new suites to test every single KWWidgets core widget (in the WidgetsTour for example). --- In progress. (Some widgets are not working with Squish currently (Squish bugs), for example, vtkKWComboBox and vtkKWMenuButton. Trying to work with Squish support team to resolve these issues.)&lt;br /&gt;
* Create new suites for Slicer3. --- In progress. (A couple simple tests are created, but the test scripts need to be manually massaged quite a bit to make them work.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
*[http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing KWWidgets GUI testing].&lt;br /&gt;
*[http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing/Squish KWWidgets GUI testing with Squish].&lt;/div&gt;</summary>
		<author><name>Yumin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week&amp;diff=33811</id>
		<title>2009 Winter Project Week</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week&amp;diff=33811"/>
		<updated>2008-12-18T05:35:23Z</updated>

		<summary type="html">&lt;p&gt;Yumin: /* Other NA-MIC Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Project Events]], [[AHM_2009]], [[Events]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction to NA-MIC Project Week==&lt;br /&gt;
&lt;br /&gt;
Please read an introduction about these events [[Project_Events#Introduction|here]].&lt;br /&gt;
&lt;br /&gt;
== Dates.Venue.Registration ==&lt;br /&gt;
&lt;br /&gt;
Please [[AHM_2009#Dates._Venue._Registration| click here for Dates, Venue, and Registration]] for this event.&lt;br /&gt;
&lt;br /&gt;
== Agenda==&lt;br /&gt;
&lt;br /&gt;
Please [[AHM_2009#Agenda|click here for the agenda for AHM 2009 and Project Week]].&lt;br /&gt;
&lt;br /&gt;
==Projects==&lt;br /&gt;
Please note:&lt;br /&gt;
*Please use the [[2009_Winter_Project_Week_Template|'''2009 Project Week Template''']] to create a page for your project(s)&lt;br /&gt;
*[[2008_Summer_Project_Week#Projects|Last Event'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;br /&gt;
*Next Project Week is at MIT -- June 22-26, 2009&lt;br /&gt;
The following is a list of all projects that will be pursued at this meeting.&lt;br /&gt;
&lt;br /&gt;
===NA-MIC DBP Roadmap Projects===&lt;br /&gt;
Please note that these projects correspond to four clinical Roadmap application projects that will be pursued in focused parallel tracks at the meeting, each corresponding to a DBP problem.  &lt;br /&gt;
&lt;br /&gt;
#[[DBP2:Harvard:Brain_Segmentation_Roadmap|Harvard Roadmap Project: Stochastic Tractography for VCFS]]&lt;br /&gt;
##[[2009_Winter_Project_Week:GT_TubularSurfaceSeg|Tubular Surface Segmentation for fiber bundle extraction]] (Vandana Mohan GATech, Allen Tannenbaum GATech, Marek Kubicki BWH, Stephen Aylward Kitware)&lt;br /&gt;
##[[2009_Winter_Project_Week_StochasticTractography |Stochastic Tractograhy Tool for Slicer]] (Marek Kubicki BWH, Julien de Siebenthal BWH, Steve Pieper Isomics) &lt;br /&gt;
##[[2009_Winter_Project_Week_Slicer3Functioning |Evaluation of basic Slicer 3.0 Functionality from a User Perspective]] (Doug Terry BWH, Marek Kubicki BWH, Sylvain Bouix BWH, Steve Pieper, Wendy Plesniak, Nicole Aucoin) &lt;br /&gt;
##[[2009_Winter_Project_Week:DTIGroupAnalysis |Group analysis of DTI fiber bundles]] (Casey Goodlett, Guido Gerig, Marek Kubicki, Sylvain Bouix)&lt;br /&gt;
#[[DBP2:UNC:Cortical_Thickness_Roadmap|UNC Roadmap Project: Cortical Thickness Measurement for Autism]]&lt;br /&gt;
##[[2009_Winter_Project_Week:LocalCorticalThicknessPipeline|Local Cortical Thickness Pipeline]] (Clement Vachet, Martin Styner, Heather Cody Hazlett, Marc Niethammer, Ipek Oguz)&lt;br /&gt;
##[[2009_Winter_Project_Week:RegionalCorticalThicknessPipeline|Regional Cortical Thickness Pipeline]] (Cedric Mathieu, Clement Vachet, Martin Styner, Heather Cody Hazlett)&lt;br /&gt;
#[[DBP2:MIND:Roadmap|MIND Roadmap Project: Brain Lesion Analysis in Lupus]]&lt;br /&gt;
##[[2009_Winter_Project_Week:HighLevelWizard|Slicer High Level Wizard Project]](Steve Pieper, Mark Scully, Jeremy Bockholt)&lt;br /&gt;
##[[2009_Winter_Project_Week:LesionAlgorithms|Review of Lesion Algorithms]](Ross Whitaker, Vincent Magnotta, Marcel Prastawa, Mark Scully, Jeremy Bockholt)&lt;br /&gt;
##[[2009_Winter_Project_Week:LongitudinalLesions|Determine Requirements of Longitudinal Lesion Analyses]](Jeremy Bockholt, Marcel Prastawa, Mark Scully, Andriy Fedorov)&lt;br /&gt;
#[[DBP2:JHU:Roadmap|JHU Roadmap Project: Segmentation and Registration for Robotic Prostate Intervention]]&lt;br /&gt;
##[[2009_Winter_Project_Week:SterotacticFrameModel|Generating a Model of a Stereotactic Frame for Neurosurgery]] (Rares Crisan, Queens, Gabor Fichtinger, Queens, Katie Hayes, BWH)&lt;br /&gt;
&lt;br /&gt;
===Other NA-MIC Projects===&lt;br /&gt;
#[[2009_Winter_Project_Week_Hageman_FMTractography | Fluid mechanics tractography and visualization]] (Nathan Hageman UCLA)&lt;br /&gt;
#UCLA BrainLab/Slicer Neurosurgery Preoperative Tumor Planning - using Slicer and its link to BrainLab to investigate whether different tractography methods aid in preoperative planning of tumor resection.(Nathan Hageman UCLA)&lt;br /&gt;
#Development of FEM / FVM solver library in ITK/VTK (and/or Python?) (Nathan Hageman UCLA, Vince, Luca, Steve)&lt;br /&gt;
#[[2009_Winter_Project_Week_Transform_Management | Transform Management]](Jim Miller)&lt;br /&gt;
#Interactive 3D Widgets - Introduce new interactors into Slicer; extensions to current widgets to support Slicer (Karthik, Will Schroeder, Nicole Aucoin)&lt;br /&gt;
#[[2009_Winter_Project_Week_vtkITK_Pipeline | Using ITK in VTK Pipelines]] (Jim, Steve)&lt;br /&gt;
#[[2009_Winter_Project_Week_SlicerLayouts | User Interface Flexible Layouts]] (Wendy, Jim, Steve, Sebastien, Ron)&lt;br /&gt;
#[[2009_Winter_Project_Week_Python | Python interface completion and packaging - Fortran and openssl problems]] (Luca, Steve, Demian)&lt;br /&gt;
#[[Two-tensor tractography in Slicer using Python and Teem]] (Madeleine Seeland, C-F Westin, Xiaodong Tao)&lt;br /&gt;
#[[2009_Winter_Project_Week_Rotation_Tangents | Diffusion Tensor Invariant gradients and rotation tangents in Python and Teem]] (Peter Savadjiev, C-F Westin, Luis Ibanez)&lt;br /&gt;
#[[2009_Winter_Project_Week_Automated_GUI_Testing | KWWidgets and Slicer automated GUI testing ]](Sebastien, Yumin, Interested User: Vince)&lt;br /&gt;
#[[2009_Winter_Project_Week_ColorModule | Slicer Colors Module update ]](Nicole)&lt;br /&gt;
#[[Volume Rendering]] (Alex, Curt, Nicholas)&lt;br /&gt;
#[[2009_Winter_Project_Week_XND | XNAT Desktop BatchMake integration &amp;amp; Slicer interface]] (Dan Marcus, Stephen Aylward, Wendy Plesniak, Curt Lisle)&lt;br /&gt;
#[[2009_Winter_Project_Week_Cortical_Correspondence | Cortical correspondence using DTI]] (Ipek, Martin, Xiaodong)&lt;br /&gt;
#[[2009_Winter_Project_Week_Command_Line_Program_Testing |Command Line Program Testing]] (Lorensen, Ron)&lt;br /&gt;
#[[2009_Winter_Project_Week_Slicer_VMTK |Vessel Segmentation in Slicer using VMTK]] ([[User:haehn|Daniel Haehn]], [[User:lantiga| Luca Antiga]])&lt;br /&gt;
#[[2009_Winter_Project_Week_fMRI_Clustering |Exploring Functional Connectivity in fMRI via Clustering]] (Archana Venkataraman, Marek Kubicki, Polina Golland)&lt;br /&gt;
#[[2009_Winter_Project_Week_Compiler_Warnings:Slicer3_Graffiti |Compiler Warnings:Slicer3's Graffiti]] (Lorensen, NA-MIC)&lt;br /&gt;
#[[2009_Winter_Project_Week_ChangeTracker |Measuring dynamics of tumor growth in Slicer3 with ChangeTracker]] (Andriy Fedorov)&lt;br /&gt;
#[[2009_Winter_Project_Week_GWE_Catalogs |GWE integration with catalog files]] (Marco)&lt;br /&gt;
#[[2009_Winter_Project_Week_Gofigure_LevelSet |ITK level set solution for cell segmentation in microscopy datasets]] (part of Gofigure) (Kishore mosaliganti)&lt;br /&gt;
#[[2009_Winter_Project_Week_Surface_Processing |ITK surface processing filters: Smoothing, spherical parameterization]] (part of Gofigure) (Alex. Gouaillard)&lt;br /&gt;
#[[2009_Winter_Project_Week_Manual_Segmentation_Widgets |VTK widgets for manual segmentation and manual validation of segmentation]] (part of Gofigure) (Arnaud Gelas) &lt;br /&gt;
#[[2009_Winter_Project_Week_UtahPlugins | Integration of Utah registration and segmentation methods as Slicer plugins]] (Marcel Prastawa)&lt;br /&gt;
#[[2009_Winter_Project_Week_OMTRegistration | DWI to MRI Registration Using Optimat Mass Transport]] (Sylvain Bouix, Ivan Kolesov GATech)&lt;br /&gt;
&lt;br /&gt;
===External Collaborations===&lt;br /&gt;
* [[Iowa Meshing Tutorial]] &lt;br /&gt;
*Wake Forest - Virginia Tech&lt;br /&gt;
** [[2009_Winter_Project_Week_WFU1 | Move to All Slicer3 Workflow]]&lt;br /&gt;
** [[2009_Winter_Project_Week_WFU2 | Development of deformation based morphometry module]]&lt;br /&gt;
*Georgetown U: [[2009_Winter_Project_Week_NAVRFA | Prototype RF Lesion Ablation Workflow prototyped in Slicer]]&lt;br /&gt;
*UNC: &lt;br /&gt;
**[[2009_UNC_HAMMER | MR-image registration algorithm to be extended and added to namic kit]]&lt;br /&gt;
**[[2009_UNC_White_Matter_Lesion | white matter lesion segmentation]]&lt;br /&gt;
* [[Stanford SIMBIOS: Whole Body Segmentation for Simulation]]&lt;br /&gt;
* [[2009_Winter_Project_Week_MRSI | MRSI Module for Slicer (Bjoern Menze)]]&lt;br /&gt;
*[[NCI Evaluating NA-MIC Tools for Image Analysis]]&lt;br /&gt;
&lt;br /&gt;
=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Please make sure that you are on the [http://public.kitware.com/cgi-bin/mailman/listinfo/na-mic-project-week na-mic-project-week mailing list]&lt;br /&gt;
# Starting Thursday, October 16th, part of the weekly Thursday 3pm NA-MIC Engineering TCON will be used to prepare for this meeting.  The schedule for these preparatory calls is as follows:&lt;br /&gt;
#*October 16: Engineering Infrastructure Projects&lt;br /&gt;
#*October 23: Funded External Collaboration Projects&lt;br /&gt;
#*November 6: DPB Projects &lt;br /&gt;
#*November 20: New Collaborations&lt;br /&gt;
#*December 4: Other Projects&lt;br /&gt;
#*December 18: Loose Ends&lt;br /&gt;
#By December 17, 2008: [[2009_Winter_Project_Week_Template|Complete a templated wiki page for your project]]. Please do not edit the template page itself, but create a new page for your project and cut-and-paste the text from this template page.  If you have questions, please send an email to tkapur at bwh.harvard.edu.&lt;br /&gt;
# By December 17, 2008: Create a directory for each project on the [[Engineering:SandBox|NAMIC Sandbox]] (Zack)&lt;br /&gt;
##[https://www.kitware.com/Admin/SendPassword.cgi Ask Zack for a Sandbox account]&lt;br /&gt;
## Commit on each sandbox directory the code examples/snippets that represent our first guesses of appropriate methods. (Luis and Steve will help with this, as needed)&lt;br /&gt;
## Gather test images in any of the Data sharing resources we have (e.g. the BIRN). These ones don't have to be many. At least three different cases, so we can get an idea of the modality-specific characteristics of these images. Put the IDs of these data sets on the wiki page. (the participants must do this.)&lt;br /&gt;
## Setup nightly tests on a separate Dashboard, where we will run the methods that we are experimenting with. The test should post result images and computation time. (Zack)&lt;br /&gt;
# FINAL TCON: December 18th 3pm ET to tie loose ends&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;
== Previous Project Events ==&lt;br /&gt;
&lt;br /&gt;
A history of all the programming/project events in NA-MIC is available by following [[Project Events|this link]].&lt;/div&gt;</summary>
		<author><name>Yumin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Automated_GUI_Testing&amp;diff=33810</id>
		<title>2009 Winter Project Week Automated GUI Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Automated_GUI_Testing&amp;diff=33810"/>
		<updated>2008-12-18T05:30:31Z</updated>

		<summary type="html">&lt;p&gt;Yumin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2009_Winter_Project_Week|Project Week Main Page]] ]]&lt;br /&gt;
|[[Image:squish_slicer3.png|thumb|320px|Image showing the end result of a Squish test with the clipbox of a volume in Slicer3]]&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;
* Kitware: Sebastien Barre, Yumin Yuan&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Objective&amp;lt;/h1&amp;gt;&lt;br /&gt;
An automated GUI Testing framework in KWWidgets is definitely on high demand, and the reason is best described by Ron Kikinis:&lt;br /&gt;
&amp;quot;The automatic testing capability that kww will enable, appears to me to be more and more important, the more I think about it. As a matter of fact, automatic testing of entire sequences of mouse clicks and keyboard strokes will enable us to move to a different level robustness with slicer 3.0.&amp;quot;. &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;
Suggestions, discussions and specifications related to this topic are documented in this [http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing KWWidgets wiki page].&lt;br /&gt;
As described on the wiki, many solutions (freeware and commercial) have been investigated, and currently we think that Squish looks like to be a valid solution for simple tests (or, actually, our only solution). A detailed wiki page about [http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing/Squish KWWidgets testing with Squish] has been created, and a work-plan is defined:&lt;br /&gt;
&lt;br /&gt;
* Create a CMake module to find Squish on the system (paths to Squish server and Squish runner). &lt;br /&gt;
* Create CMake macros that will start/stop the server and run a test by invoking the runner and parsing its output. &lt;br /&gt;
* Invoke the Squish module when configuring/building KWWidgets. &lt;br /&gt;
* Create CMake macros that will add Squish tests for KWWidgets. &lt;br /&gt;
* Create new suites for KWWidgets examples. &lt;br /&gt;
* Create new suites to test every single KWWidgets core widget (in the WidgetsTour for example).&lt;br /&gt;
* Create new suites for Slicer3. &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;
&lt;br /&gt;
* Create a CMake module to find Squish on the system (paths to Squish server and Squish runner). --- Done by Brad Davis&lt;br /&gt;
* Create CMake macros that will start/stop the server and run a test by invoking the runner and parsing its output. --- Done by Brad Davis&lt;br /&gt;
* Invoke the Squish module when configuring/building KWWidgets. --- Done&lt;br /&gt;
* Create CMake macros that will add Squish tests for KWWidgets. --- In Progress (Need to add validation methods for some tests)&lt;br /&gt;
* Create new suites for KWWidgets examples. --- In Progress (Some new Squish test suites are created for all the Cxx examples, but still need to add validation methods to these tests).&lt;br /&gt;
* Create new suites to test every single KWWidgets core widget (in the WidgetsTour for example). --- In progress. (Some widgets are not working with Squish currently (Squish bugs), for example, vtkKWComboBox and vtkKWMenuButton. Trying to work with Squish support team to resolve these issues.)&lt;br /&gt;
* Create new suites for Slicer3. --- In progress. (A couple simple tests are created, but the test scripts need to be manually massaged quite a bit to make them work.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
*[http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing KWWidgets GUI testing].&lt;br /&gt;
*[http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing/Squish KWWidgets GUI testing with Squish].&lt;/div&gt;</summary>
		<author><name>Yumin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=File:Squish_slicer3.png&amp;diff=33809</id>
		<title>File:Squish slicer3.png</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=File:Squish_slicer3.png&amp;diff=33809"/>
		<updated>2008-12-18T05:21:03Z</updated>

		<summary type="html">&lt;p&gt;Yumin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Yumin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Automated_GUI_Testing&amp;diff=33808</id>
		<title>2009 Winter Project Week Automated GUI Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Automated_GUI_Testing&amp;diff=33808"/>
		<updated>2008-12-18T05:15:19Z</updated>

		<summary type="html">&lt;p&gt;Yumin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2009_Winter_Project_Week|Project Week Main Page]] ]]&lt;br /&gt;
|[[Image:squish_kwwidgets.jpg|thumb|320px|Image showing the end result of a Squish test on the MedicalImageViewerExample of KWWidgets]]&lt;br /&gt;
|[[Image:squish_slicer3.png|thumb|320px|Image showing the end result of a Squish test with the clipbox of a volume in Slicer3]]&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;
* Kitware: Sebastien Barre, Yumin Yuan&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Objective&amp;lt;/h1&amp;gt;&lt;br /&gt;
An automated GUI Testing framework in KWWidgets is definitely on high demand, and the reason is best described by Ron Kikinis:&lt;br /&gt;
   &amp;quot;The automatic testing capability that kww will enable, appears to me to be more and more important, the more I think about it. As a matter of fact, automatic testing of entire sequences of mouse clicks and keyboard strokes will enable us to move to a different level robustness with slicer 3.0.&amp;quot;. &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;
Suggestions, discussions and specifications related to this topic are documented in this [http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing KWWidgets wiki page].&lt;br /&gt;
As described on the wiki, many solutions (freeware and commercial) have been investigated, and currently we think that Squish looks like to be a valid solution for simple tests (or, actually, our only solution). A detailed wiki page about [http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing/Squish KWWidgets testing with Squish] has been created, and a work-plan is defined:&lt;br /&gt;
&lt;br /&gt;
  Create a CMake module to find Squish on the system (paths to Squish server and Squish runner). &lt;br /&gt;
  Create CMake macros that will start/stop the server and run a test by invoking the runner and parsing its output. &lt;br /&gt;
  Invoke the Squish module when configuring/building KWWidgets. &lt;br /&gt;
  Create CMake macros that will add Squish tests for KWWidgets. &lt;br /&gt;
  Create new suites for KWWidgets examples. &lt;br /&gt;
  Create new suites to test every single KWWidgets core widget (in the WidgetsTour for example)&lt;br /&gt;
  Create new suites for Slicer3. &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;
&lt;br /&gt;
  Create a CMake module to find Squish on the system (paths to Squish server and Squish runner). --- Done by Brad Davis&lt;br /&gt;
  Create CMake macros that will start/stop the server and run a test by invoking the runner and parsing its output. --- Done by Brad Davis&lt;br /&gt;
  Invoke the Squish module when configuring/building KWWidgets. --- Done&lt;br /&gt;
  Create CMake macros that will add Squish tests for KWWidgets. --- In Progress (Need to add validation methods for some tests)&lt;br /&gt;
  Create new suites for KWWidgets examples. --- In Progress (Some new Squish test suites are created for all the Cxx examples, but still need to add validation methods to these tests).&lt;br /&gt;
  Create new suites to test every single KWWidgets core widget (in the WidgetsTour for example). --- In progress. (Some widgets are not working with Squish currently (Squish bugs), for example, vtkKWComboBox and vtkKWMenuButton. Trying to work with Squish support team to resolve these issues.)&lt;br /&gt;
  Create new suites for Slicer3. --- In progress. (A couple simple tests are created, but the test scripts need to be manually massaged quite a bit to make them work.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
*[http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing KWWidgets GUI testing].&lt;br /&gt;
*[http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing/Squish KWWidgets GUI testing with Squish].&lt;/div&gt;</summary>
		<author><name>Yumin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Automated_GUI_Testing&amp;diff=33807</id>
		<title>2009 Winter Project Week Automated GUI Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Automated_GUI_Testing&amp;diff=33807"/>
		<updated>2008-12-18T05:06:14Z</updated>

		<summary type="html">&lt;p&gt;Yumin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2009_Winter_Project_Week|Project Week Main Page]] ]]&lt;br /&gt;
|[[Image:squish_kwwidgets.jpg|thumb|320px|Image showing the end result of a Squish test on the MedicalImageViewerExample of KWWidgets]]&lt;br /&gt;
|[[Image:squish_slicer3.jpg|thumb|320px|Image showing the end result of a Squish test with the clipbox of a volume in Slicer3]]&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;
* Kitware: Sebastien Barre, Yumin Yuan&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Objective&amp;lt;/h1&amp;gt;&lt;br /&gt;
An automated GUI Testing framework in KWWidgets is definitely on high demand, and the reason is best described by Ron Kikinis:&lt;br /&gt;
    * &amp;quot;The automatic testing capability that kww will enable, appears to me to be more and more important, the more I think about it. As a matter of fact, automatic testing of entire sequences of mouse clicks and keyboard strokes will enable us to move to a different level robustness with slicer 3.0.&amp;quot;. &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;
Suggestions, discussions and specifications related to this topic are documented in this [http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing KWWidgets wiki page].&lt;br /&gt;
As described on the wiki, many solutions (freeware and commercial) have been investigated, and currently we think that Squish looks like to be a valid solution for simple tests (or, actually, our only solution). A detailed wiki page about [http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing/Squish KWWidgets testing with Squish] has been created, and a work-plan is defined:&lt;br /&gt;
&lt;br /&gt;
    * Create a CMake module to find Squish on the system (paths to Squish server and Squish runner),&lt;br /&gt;
    * Create CMake macros that will start/stop the server &lt;br /&gt;
    * Create CMake macros that will run a test by invoking the runner and parsing its output,&lt;br /&gt;
    * Invoke the Squish module when configuring/building KWWidgets,&lt;br /&gt;
    * If Squish is found, add the above test to the KWCallbacks example, so that it is executed nightly. &lt;br /&gt;
    * Create new suites to test every single KWWidgets core widget (in the WidgetsTour for example). &lt;br /&gt;
    * Create new suites for Slicer3.&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;
&lt;br /&gt;
    * Create a CMake module to find Squish on the system (paths to Squish server and Squish runner). --- Done by Brad Davis&lt;br /&gt;
    * Create CMake macros that will start/stop the server and run a test by invoking the runner and parsing its output. --- Done by Brad Davis&lt;br /&gt;
    * Invoke the Squish module when configuring/building KWWidgets. --- Done&lt;br /&gt;
    * Create CMake macros that will add Squish tests for KWWidgets. --- In Progress (Need to add validation methods for some tests)&lt;br /&gt;
    * Create new suites for KWWidgets examples. --- In Progress (Some new Squish test suites are created for all the Cxx examples, but still need to add validation methods to these tests).&lt;br /&gt;
    * Create new suites to test every single KWWidgets core widget (in the WidgetsTour for example). --- In progress. (Some widgets are not working with Squish currently (Squish bugs), for example, vtkKWComboBox and vtkKWMenuButton. Trying to work with Squish support team to resolve these issues.)&lt;br /&gt;
    * Create new suites for Slicer3. --- In progress. (A couple simple tests are created, but the test scripts need to be manually massaged quite a bit to make them work.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
*[http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing KWWidgets GUI testing].&lt;br /&gt;
*[http://www.kwwidgets.org/Wiki/KWWidgets/GUI_Testing/Squish KWWidgets GUI testing with Squish].&lt;/div&gt;</summary>
		<author><name>Yumin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Automated_GUI_Testing&amp;diff=33806</id>
		<title>2009 Winter Project Week Automated GUI Testing</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week_Automated_GUI_Testing&amp;diff=33806"/>
		<updated>2008-12-18T03:46:25Z</updated>

		<summary type="html">&lt;p&gt;Yumin: New page: {| |Project Week Main Page ]] |[[Image:scarmri_namic.jpg|thumb|320px|Image showing scar in the left atrium using MR...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|[[Image:NAMIC-SLC.jpg|thumb|320px|Return to [[2009_Winter_Project_Week|Project Week Main Page]] ]]&lt;br /&gt;
|[[Image:scarmri_namic.jpg|thumb|320px|Image showing scar in the left atrium using MRI]]&lt;br /&gt;
|[[Image:scar_carto_namic.jpg|thumb|320px|Image of scar by MRI registered to MR Angiogram, and to the EP RF ablation site data.]]&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;
* Beth Israel Deaconess: Dana C. Peters&lt;br /&gt;
* Beth Israel Deaconess: Jason Taclas&lt;br /&gt;
* Kitware:  Luis Ibanez, NAMIC: Steve Pieper, GE: Jim Miller (providing advice)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Objective&amp;lt;/h1&amp;gt;&lt;br /&gt;
We are developing methods for  registering peri-procedural electrophysiological data showing sites of RF energy application (called Carto data) in the left atrium, with post-procedural MRI data, which shows regions of scarred left atrium (see figure above), using an interative closest point algorithm (Z. Malchano et al).   The goal is to measure the distance between scar by MRI and ablation sites (Carto data) by  EP.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 27%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Approach, Plan&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Our approach for comparing the locations of scar to sites of RF ablation is summarized in the ISMRM 2008 reference below.  The main challenge to this approach is to measure the distance between each scarred pixel, and each RF ablation site, and then the distance from each RF ablation site, to the nearest scarred pixel.   &amp;lt;foo&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Our plan for the project week is to first try to measure the closest distances between MRI scar and Carto data &amp;lt;bar&amp;gt;,and then to measure distances between Carto data and closest scar.  We also wish to colorize the Carto surface, based on voltage data.  We also wish to streamline the MR angiography segmentation method.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h1&amp;gt;Progress&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Software for the registration between electrophysiology Carto data and the MR angiogram has been implemented, using the ITK/VTK platform (see ISMRM 2008 abstract, Taclas et al, and figure above). This week we wrote code to quantitatively determine the distances between each ablation location, and the closest region of scar, and to determine the distances between each pixel of scar, and the nearest ablation point.   Therefore we accomplished our goal!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===References===&lt;br /&gt;
*Peters DC, Wylie JV, Hauser TH, Kissinger KV, Botnar RM, Essebag V, Josephson ME, Manning WJ. Detection of pulmonary vein and left atrial scar after catheter ablation with three-dimensional navigator-gated delayed enhancement MR imaging: initial experience. Radiology 2007; 243:690-695.&lt;br /&gt;
* Taclas JE, Wylie JV, Hauser TH, Manning WJ, Josephson ME, Peters, DC. Correlation and Visualization of Left Atrial Scar due to Pulmonary Vein Ablation with Recorded Ablation Sites.  Proceedings of the 16th scientific meeting of the International Society for Magnetic Resonance in Medicine (2008), Toronto, CA, p. 1042.&lt;br /&gt;
*Malchano ZJ, Neuzil P, Cury RC, Holmvang G, Weichet J, Schmidt EJ, Ruskin JN, Reddy VY. Integration of cardiac CT/MR imaging with three-dimensional electroanatomical mapping to guide catheter manipulation in the left atrium: implications for catheter ablation of atrial fibrillation. J Cardiovasc Electrophysiol 2006; 17:1221-1229.&lt;/div&gt;</summary>
		<author><name>Yumin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week&amp;diff=33805</id>
		<title>2009 Winter Project Week</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=2009_Winter_Project_Week&amp;diff=33805"/>
		<updated>2008-12-18T03:45:20Z</updated>

		<summary type="html">&lt;p&gt;Yumin: /* Other NA-MIC Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[Project Events]], [[AHM_2009]], [[Events]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Introduction to NA-MIC Project Week==&lt;br /&gt;
&lt;br /&gt;
Please read an introduction about these events [[Project_Events#Introduction|here]].&lt;br /&gt;
&lt;br /&gt;
== Dates.Venue.Registration ==&lt;br /&gt;
&lt;br /&gt;
Please [[AHM_2009#Dates._Venue._Registration| click here for Dates, Venue, and Registration]] for this event.&lt;br /&gt;
&lt;br /&gt;
== Agenda==&lt;br /&gt;
&lt;br /&gt;
Please [[AHM_2009#Agenda|click here for the agenda for AHM 2009 and Project Week]].&lt;br /&gt;
&lt;br /&gt;
==Projects==&lt;br /&gt;
Please note:&lt;br /&gt;
*Please use the [[2009_Winter_Project_Week_Template|'''2009 Project Week Template''']] to create a page for your project(s)&lt;br /&gt;
*[[2008_Summer_Project_Week#Projects|Last Event'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;br /&gt;
*Next Project Week is at MIT -- June 22-26, 2009&lt;br /&gt;
The following is a list of all projects that will be pursued at this meeting.&lt;br /&gt;
&lt;br /&gt;
===NA-MIC DBP Roadmap Projects===&lt;br /&gt;
Please note that these projects correspond to four clinical Roadmap application projects that will be pursued in focused parallel tracks at the meeting, each corresponding to a DBP problem.  &lt;br /&gt;
&lt;br /&gt;
#[[DBP2:Harvard:Brain_Segmentation_Roadmap|Harvard Roadmap Project: Stochastic Tractography for VCFS]]&lt;br /&gt;
##[[2009_Winter_Project_Week:GT_TubularSurfaceSeg|Tubular Surface Segmentation for fiber bundle extraction]] (Vandana Mohan GATech, Allen Tannenbaum GATech, Marek Kubicki BWH, Stephen Aylward Kitware)&lt;br /&gt;
##[[2009_Winter_Project_Week_StochasticTractography |Stochastic Tractograhy Tool for Slicer]] (Marek Kubicki BWH, Julien de Siebenthal BWH, Steve Pieper Isomics) &lt;br /&gt;
##[[2009_Winter_Project_Week_Slicer3Functioning |Evaluation of basic Slicer 3.0 Functionality from a User Perspective]] (Doug Terry BWH, Marek Kubicki BWH, Sylvain Bouix BWH, Steve Pieper, Wendy Plesniak, Nicole Aucoin) &lt;br /&gt;
##[[2009_Winter_Project_Week:DTIGroupAnalysis |Group analysis of DTI fiber bundles]] (Casey Goodlett, Guido Gerig, Marek Kubicki, Sylvain Bouix)&lt;br /&gt;
#[[DBP2:UNC:Cortical_Thickness_Roadmap|UNC Roadmap Project: Cortical Thickness Measurement for Autism]]&lt;br /&gt;
##[[2009_Winter_Project_Week:LocalCorticalThicknessPipeline|Local Cortical Thickness Pipeline]] (Clement Vachet, Martin Styner, Heather Cody Hazlett, Marc Niethammer, Ipek Oguz)&lt;br /&gt;
##[[2009_Winter_Project_Week:RegionalCorticalThicknessPipeline|Regional Cortical Thickness Pipeline]] (Cedric Mathieu, Clement Vachet, Martin Styner, Heather Cody Hazlett)&lt;br /&gt;
#[[DBP2:MIND:Roadmap|MIND Roadmap Project: Brain Lesion Analysis in Lupus]]&lt;br /&gt;
##[[2009_Winter_Project_Week:HighLevelWizard|Slicer High Level Wizard Project]](Steve Pieper, Mark Scully, Jeremy Bockholt)&lt;br /&gt;
##[[2009_Winter_Project_Week:LesionAlgorithms|Review of Lesion Algorithms]](Ross Whitaker, Vincent Magnotta, Marcel Prastawa, Mark Scully, Jeremy Bockholt)&lt;br /&gt;
##[[2009_Winter_Project_Week:LongitudinalLesions|Determine Requirements of Longitudinal Lesion Analyses]](Jeremy Bockholt, Marcel Prastawa, Mark Scully, Andriy Fedorov)&lt;br /&gt;
#[[DBP2:JHU:Roadmap|JHU Roadmap Project: Segmentation and Registration for Robotic Prostate Intervention]]&lt;br /&gt;
##[[2009_Winter_Project_Week:SterotacticFrameModel|Generating a Model of a Stereotactic Frame for Neurosurgery]] (Rares Crisan, Queens, Gabor Fichtinger, Queens, Katie Hayes, BWH)&lt;br /&gt;
&lt;br /&gt;
===Other NA-MIC Projects===&lt;br /&gt;
#[[2009_Winter_Project_Week_Hageman_FMTractography | Fluid mechanics tractography and visualization]] (Nathan Hageman UCLA)&lt;br /&gt;
#UCLA BrainLab/Slicer Neurosurgery Preoperative Tumor Planning - using Slicer and its link to BrainLab to investigate whether different tractography methods aid in preoperative planning of tumor resection.(Nathan Hageman UCLA)&lt;br /&gt;
#Development of FEM / FVM solver library in ITK/VTK (and/or Python?) (Nathan Hageman UCLA, Vince, Luca, Steve)&lt;br /&gt;
#[[2009_Winter_Project_Week_Transform_Management | Transform Management]](Jim Miller)&lt;br /&gt;
#Interactive 3D Widgets - Introduce new interactors into Slicer; extensions to current widgets to support Slicer (Karthik, Will Schroeder, Nicole Aucoin)&lt;br /&gt;
#[[2009_Winter_Project_Week_vtkITK_Pipeline | Using ITK in VTK Pipelines]] (Jim, Steve)&lt;br /&gt;
#[[2009_Winter_Project_Week_SlicerLayouts | User Interface Flexible Layouts]] (Wendy, Jim, Steve, Sebastien, Ron)&lt;br /&gt;
#[[2009_Winter_Project_Week_Python | Python interface completion and packaging - Fortran and openssl problems]] (Luca, Steve, Demian)&lt;br /&gt;
#[[Two-tensor tractography in Slicer using Python and Teem]] (Madeleine Seeland, C-F Westin, Xiaodong Tao)&lt;br /&gt;
#[[2009_Winter_Project_Week_Rotation_Tangents | Diffusion Tensor Invariant gradients and rotation tangents in Python and Teem]] (Peter Savadjiev, C-F Westin, Luis Ibanez)&lt;br /&gt;
#[[2009_Winter_Project_Week_Automated_GUI_Testing | KWWidgets and Slicer automated GUI testing with Squish ]](Sebastien, Yumin, Interested User: Vince)&lt;br /&gt;
#[[2009_Winter_Project_Week_ColorModule | Slicer Colors Module update ]](Nicole)&lt;br /&gt;
#[[Volume Rendering]] (Alex, Curt, Nicholas)&lt;br /&gt;
#[[2009_Winter_Project_Week_XND | XNAT Desktop BatchMake integration &amp;amp; Slicer interface]] (Dan Marcus, Stephen Aylward, Wendy Plesniak, Curt Lisle)&lt;br /&gt;
#[[2009_Winter_Project_Week_Cortical_Correspondence | Cortical correspondence using DTI]] (Ipek, Martin, Xiaodong)&lt;br /&gt;
#[[2009_Winter_Project_Week_Command_Line_Program_Testing |Command Line Program Testing]] (Lorensen, Ron)&lt;br /&gt;
#[[2009_Winter_Project_Week_Slicer_VMTK |Vessel Segmentation in Slicer using VMTK]] ([[User:haehn|Daniel Haehn]], [[User:lantiga| Luca Antiga]])&lt;br /&gt;
#[[2009_Winter_Project_Week_fMRI_Clustering |Exploring Functional Connectivity in fMRI via Clustering]] (Archana Venkataraman, Marek Kubicki, Polina Golland)&lt;br /&gt;
#[[2009_Winter_Project_Week_Compiler_Warnings:Slicer3_Graffiti |Compiler Warnings:Slicer3's Graffiti]] (Lorensen, NA-MIC)&lt;br /&gt;
#[[2009_Winter_Project_Week_ChangeTracker |Measuring dynamics of tumor growth in Slicer3 with ChangeTracker]] (Andriy Fedorov)&lt;br /&gt;
#[[2009_Winter_Project_Week_GWE_Catalogs |GWE integration with catalog files]] (Marco)&lt;br /&gt;
#[[2009_Winter_Project_Week_Gofigure_LevelSet |ITK level set solution for cell segmentation in microscopy datasets]] (part of Gofigure) (Kishore mosaliganti)&lt;br /&gt;
#[[2009_Winter_Project_Week_Surface_Processing |ITK surface processing filters: Smoothing, spherical parameterization]] (part of Gofigure) (Alex. Gouaillard)&lt;br /&gt;
#[[2009_Winter_Project_Week_Manual_Segmentation_Widgets |VTK widgets for manual segmentation and manual validation of segmentation]] (part of Gofigure) (Arnaud Gelas) &lt;br /&gt;
#[[2009_Winter_Project_Week_UtahPlugins | Integration of Utah registration and segmentation methods as Slicer plugins]] (Marcel Prastawa)&lt;br /&gt;
#[[2009_Winter_Project_Week_OMTRegistration | DWI to MRI Registration Using Optimat Mass Transport]] (Sylvain Bouix, Ivan Kolesov GATech)&lt;br /&gt;
&lt;br /&gt;
===External Collaborations===&lt;br /&gt;
* [[Iowa Meshing Tutorial]] &lt;br /&gt;
*Wake Forest - Virginia Tech&lt;br /&gt;
** [[2009_Winter_Project_Week_WFU1 | Move to All Slicer3 Workflow]]&lt;br /&gt;
** [[2009_Winter_Project_Week_WFU2 | Development of deformation based morphometry module]]&lt;br /&gt;
*Georgetown U: [[2009_Winter_Project_Week_NAVRFA | Prototype RF Lesion Ablation Workflow prototyped in Slicer]]&lt;br /&gt;
*UNC: &lt;br /&gt;
**[[2009_UNC_HAMMER | MR-image registration algorithm to be extended and added to namic kit]]&lt;br /&gt;
**[[2009_UNC_White_Matter_Lesion | white matter lesion segmentation]]&lt;br /&gt;
* [[Stanford SIMBIOS: Whole Body Segmentation for Simulation]]&lt;br /&gt;
* [[2009_Winter_Project_Week_MRSI | MRSI Module for Slicer (Bjoern Menze)]]&lt;br /&gt;
*[[NCI Evaluating NA-MIC Tools for Image Analysis]]&lt;br /&gt;
&lt;br /&gt;
=== Preparation ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Please make sure that you are on the [http://public.kitware.com/cgi-bin/mailman/listinfo/na-mic-project-week na-mic-project-week mailing list]&lt;br /&gt;
# Starting Thursday, October 16th, part of the weekly Thursday 3pm NA-MIC Engineering TCON will be used to prepare for this meeting.  The schedule for these preparatory calls is as follows:&lt;br /&gt;
#*October 16: Engineering Infrastructure Projects&lt;br /&gt;
#*October 23: Funded External Collaboration Projects&lt;br /&gt;
#*November 6: DPB Projects &lt;br /&gt;
#*November 20: New Collaborations&lt;br /&gt;
#*December 4: Other Projects&lt;br /&gt;
#*December 18: Loose Ends&lt;br /&gt;
#By December 17, 2008: [[2009_Winter_Project_Week_Template|Complete a templated wiki page for your project]]. Please do not edit the template page itself, but create a new page for your project and cut-and-paste the text from this template page.  If you have questions, please send an email to tkapur at bwh.harvard.edu.&lt;br /&gt;
# By December 17, 2008: Create a directory for each project on the [[Engineering:SandBox|NAMIC Sandbox]] (Zack)&lt;br /&gt;
##[https://www.kitware.com/Admin/SendPassword.cgi Ask Zack for a Sandbox account]&lt;br /&gt;
## Commit on each sandbox directory the code examples/snippets that represent our first guesses of appropriate methods. (Luis and Steve will help with this, as needed)&lt;br /&gt;
## Gather test images in any of the Data sharing resources we have (e.g. the BIRN). These ones don't have to be many. At least three different cases, so we can get an idea of the modality-specific characteristics of these images. Put the IDs of these data sets on the wiki page. (the participants must do this.)&lt;br /&gt;
## Setup nightly tests on a separate Dashboard, where we will run the methods that we are experimenting with. The test should post result images and computation time. (Zack)&lt;br /&gt;
# FINAL TCON: December 18th 3pm ET to tie loose ends&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;
== Previous Project Events ==&lt;br /&gt;
&lt;br /&gt;
A history of all the programming/project events in NA-MIC is available by following [[Project Events|this link]].&lt;/div&gt;</summary>
		<author><name>Yumin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Special_topic_breakout:_KWWidgets&amp;diff=12661</id>
		<title>Special topic breakout: KWWidgets</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Special_topic_breakout:_KWWidgets&amp;diff=12661"/>
		<updated>2007-06-27T03:55:13Z</updated>

		<summary type="html">&lt;p&gt;Yumin: /* From KWW-Users mailing list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:ProjectWeek-2007.png|thumb|300px|left|Return to [[2007_Programming/Project_Week_MIT|Project Week Main Page]]]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KWWidgets Breakout Session&lt;br /&gt;
&lt;br /&gt;
June 26th, 1-2pm&lt;br /&gt;
&lt;br /&gt;
Location: [[Meeting_Locations:MIT_Grier_A_%26B|Grier Rooms A &amp;amp; B: 34-401A &amp;amp; 34-401B]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attendees: ===&lt;br /&gt;
* Yumin Yuan&lt;br /&gt;
* Steve Pieper&lt;br /&gt;
* Alex Yarmarkovich&lt;br /&gt;
* Wendy Plesniak&lt;br /&gt;
* Nicole Aucoin&lt;br /&gt;
* Curt Lisle&lt;br /&gt;
* Csaba Csoma&lt;br /&gt;
* Brad Davis&lt;br /&gt;
* David Gobbi&lt;br /&gt;
* Kiran Shivanna&lt;br /&gt;
* Kevin Teich&lt;br /&gt;
* Jeff Hawley&lt;br /&gt;
* Xiujuan Geng&lt;br /&gt;
* James Harris&lt;br /&gt;
* Gary Christensen&lt;br /&gt;
* Paul Song&lt;br /&gt;
* Alex. Gouaillard&lt;br /&gt;
* Vincent Magnotta&lt;br /&gt;
* Kiran Shivanna&lt;br /&gt;
* Katie Hayes&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
=== Agenda ===&lt;br /&gt;
&lt;br /&gt;
* Roadmap (to help KWWidgets developers prioritize their work)&lt;br /&gt;
* Widget feature requests / feedback&lt;br /&gt;
* Talk about best approaches to making some widget behavior appear consistent across platforms.&lt;br /&gt;
* Separate Tutorial Session for New Users (to happen possibly on Wednesday).&amp;lt;br&amp;gt;'''Hint:''' ''Seb: I just added a tentative Tutorial 1 that tackles creating a very simple composite widget. See [http://kwwidgets.org/cgi-bin/viewcvs.cgi/Examples/Cxx/Tutorial1/?root=KWWidgets Examples/Cxx/Tutorial1]. I need to write the corresponding documentation.''&lt;br /&gt;
&lt;br /&gt;
=== Specific Issues ===&lt;br /&gt;
&lt;br /&gt;
==== From Nicole Aucoin====&lt;br /&gt;
Directory selection dialog box on linux:&lt;br /&gt;
&lt;br /&gt;
* Bug: it pops up with a default width such that the right scroll bar isn't visible (see this [http://www.na-mic.org/Wiki/index.php/Image:KWDirectoryBrowserLinuxTooShort.jpg screenshot]; to reproduce it, start up Slicer3, go to the Models module, click on &amp;quot;Load Directory&amp;quot;).&amp;lt;br&amp;gt;'''Hint:''' ''Seb: the quickest workaround (Yumin?) at this point would be to make the default width a tad larger so that the right scrollbar button shows up.''  ''Yumin: Fixed.''&lt;br /&gt;
&lt;br /&gt;
* Request: an entry box where I can type a path to reduce clicking through the tree (useful before setting up a favourite)&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Very doable (Yumin?). Let's put all requests in the TODO list and prioritize.''&lt;br /&gt;
&lt;br /&gt;
==== From Curtis Lisle====&lt;br /&gt;
&lt;br /&gt;
* I have had trouble initializing widgets to specific values in advance of user input.  For example, I've created interfaces  with sliders and buttons but I have had trouble getting the widgets toinitialize in a state different then the default state.  For example, setting a slider to value=26 in the middle of its range without dragging the mouse.  The API looks like it is there, but I couldn't get it to work for me.  I'm sure I tried setting the state before and after creation, if I remember, but no luck.  It may be that I'm not updating the GUI successfully after changing values. Update: see [http://www.na-mic.org/Wiki/index.php/Image:KWMeshViewer030607.png screenshot]; by state, I mean the widget-specific state, such as a check button is checked, or a slider is set at a particular value within its range. For example, the &amp;quot;Outline Display&amp;quot; button could be checked  ON via API control of the program, not the user clicking on it. Before this picture was taken, I dragged the &amp;quot;element size&amp;quot;  slider to 93% via the mouse.  I'd like to instantiate the GUI, then set the actual positions and state values of the widgets. I just need clarity on the order of events to invoke through the API or help figuring out what I'm doing wrong.  I notice that for KWWidgets, State usually means enabled/disabled to process user events. Instead, I am thinking about setting widget values from the program. I guess for CheckButtons, this would be Get/SetSelectedState(). For a vtkKWScale, this would be SetValue(). I tried setting these but didn't see the effect on the GUI. Maybe I am just not invoking Modified() correctly afterwards.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Not sure on this one. Setting the values programmatically is something that is done in all our apps and it is a pretty important part of how the application works through callbacks. For most widgets, setting a value before calling Create() *should* work, but it never hurts do make sure it is done *after* Create(), to be on the safe side. There is no need to call Modified(), at least on the core widgets like checkbuttons or scales, the UI should be updated right away. You can even do it at runtime through the Tcl interpreter. So I guess we would need to see the code: it is possible that as soon you set a new value, an event is triggered (like ModifiedEvent) and some other part of your app that would listen to this event would set that widget back to its previous value. In term of Model/View/Controller pattern, the UI/view is supposed to reflect the state/values of a model; if you designed your app that way and it is possible that your controller is always resetting the UI to the current model's value.''&lt;br /&gt;
&lt;br /&gt;
* discuss when UI elements need to have Modified() / Update()invoked to refresh their appearance. I used a histogram widget on a project and had to experiment a lot calling the panel and RenderWidowWidget, etc. before I finally got the histogram to update when the input changed.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: it's mostly widget dependent, but for the core widgets, you should not have to call Modified(), or Update() (which is not part of the vtkKWWidget superclass anyway). For some composite widgets, they should be smart enough to be always 'up to date', but sometimes being up to date is so costly that a manual call to a method is needed (which might be called Update()). The histogram, to my knowledge, is indeed the trickiest one, sorry :) You do not want to have the histogram updated automatically each time somebody modifies one pixel in an image/vtkDataArray, for example. There is nothing in VTK that really says, asynchronously, &amp;quot;this image has been modified enough that it might be time to refresh your histogram&amp;quot;. Granularity issues...''.&lt;br /&gt;
&lt;br /&gt;
==== From Brad Davis ====&lt;br /&gt;
&lt;br /&gt;
* Bug: Double-clicking does not work with slicer3 and linux.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: The KWWidgets demo/examples handle double-clicks fine, so my guess is that Slicer3 is intercepting them. Yumin to investigate this issue.'' &lt;br /&gt;
* Bug: File-&amp;gt;Add Data does not use new file browser.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Sounds like a quick fix (Yumin?).''  ''Steve: this has been fixed.''&lt;br /&gt;
* Request: Tree with additional columns widget&amp;lt;br&amp;gt;'''Hint:''' ''Seb: The TkTreeCtrl library is in KWW and allows that, but one need to wrap it inside a C++ class, and this is a lot of work (Seb?). Let's put all requests in the TODO list and prioritize.''  ''Steve: there was discussion about exposing the TkTreeCtrl in the tcl interp so users can access it directly with Script() - is this an easy thing to do now?'' ''Seb: yes, that's very easy, but that means we are going to see tons of ugly Tcl code in the middle of C++ code :)'' ''Seb: OK, DONE, it's in. I compiled and tested on Win32. I compiled but could not test on Linux. TkTreeCtrl documentation can be found [http://tktreectrl.sourceforge.net/ here]. Download the TkTreeCtrl distribution, then from Slicer3/KWWidgets interactor, source demos/demo.tcl, then issue: wm deiconify .'' ''Steve: Thanks!  I'll give it a try.  My plan, actually, is to have some very pretty tcl code that uses this feature (no comment on the aesthetic qualities of C++ code!).'' ''Seb: I had to disable it until the VS7 build is fixed. To play with it though, edit Utilities\TkTreeCtrl\TkTreeCtrl.cmake and change the code to SET(${supported} 1). This is such a huge (50,000 lines) library that I would suggest you guys start playing with it at the Tcl level and that we use that feedback to create a C++ API that would not have to expose every thing features but the ones you use the most.''&lt;br /&gt;
&lt;br /&gt;
====From Alex:====&lt;br /&gt;
&lt;br /&gt;
* Request: I would like to address the performance of building GUI in slicer3 Modules. When selecting a module for the first time (Volumes or Models) it takes noticable time before the UI panel is displayed.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Well, you can't have your cake and eat it too :)) We delayed the creation of modules so that Slicer3 starts up faster. But one way or the other, the modules GUI has to be created. I just tried on my laptop on Win32, and I did not notice anything slow when I selected a few modules. Which ones are slow? Maybe one of the slow modules is actually doing more than just creating GUI when it is initialized.'' &lt;br /&gt;
&lt;br /&gt;
* Request: Customizable tree widget similar to slicer2 model hierarchy editor: allow to add push-buttons or check boxes for the individual tree leaves.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: The TkTreeCtrl library is in KWW and allows that, but one need to wrap it inside a C++ class, and this is a lot of work (Seb?). Unless, as suggested by Steve, you want to expose the TkTreeCtrl library directly and do it from Tcl. Let's put all requests in the TODO list and prioritize.'' &lt;br /&gt;
&lt;br /&gt;
====From Wendy:====&lt;br /&gt;
&lt;br /&gt;
Mostly pesky things: &lt;br /&gt;
* Request: Creating special versions of menubutton drop-down menus with scroll capability.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: There is no such native widget, so we would have to create a composite widget mixing a button and a scroll list (Seb or Yumin?). A day or two worth probably. Let's put all requests in the TODO list and prioritize.'' &lt;br /&gt;
* Request: checkbuttons and radiobuttons with consistent &amp;quot;on/off&amp;quot; visual representation across platforms. (either special Slicer widgets or KWWidgets).&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Tcl/Tk does not provide an API to modify that visual representation (called the 'indicator'), since it is trying to use the native widgets when possible. However, you can emulate that behavior by setting an image for both unselected and selected state (SetImageToPredefinedIcon, SetSelectImageToPredefinedIcon), then make sure the image does not override the text (SetCompoundModeToLeft), remove the usual indicator (SetIndicatorVisibility), and  remove the border of what is now a button (SetBorderWidth). All of those calls can be made into a theme. I've updated the KWThemeExample (check the green theme) to show how it is done. I would recommend against it, as a lot of Slicer3 GUI already uses SetImage and SetSelectImage to provide graphical checkbuttons instead of textual ones. I'm not confident this would play well, but let's try.''   &lt;br /&gt;
&lt;br /&gt;
It would be good to decide on a strategy for addressing these things.&lt;br /&gt;
&lt;br /&gt;
* Request: Also, if a radiobutton's indicator visibility is off, the widget gets rendered with a 3D effect (even if we're using an icon to display the button's on/off state). Can we turn that 3D effect off?&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Not to my knowledge, it might be a Tk &amp;quot;feature&amp;quot; but try SetBorderWidth 0''&lt;br /&gt;
&lt;br /&gt;
==== From KWW-Users mailing list====&lt;br /&gt;
&lt;br /&gt;
* http://public.kitware.com/pipermail/kwwidgets/2007-June/000456.html&amp;lt;br&amp;gt;'''Hint:''' ''Seb: To be investigrated by the File Browser Master aka Yumin.'' &lt;br /&gt;
* http://public.kitware.com/pipermail/kwwidgets/2007-June/000461.html&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Gonna need some source code/example to reproduce it (Seb?).'' ''Kevin: Source code is in that mail, and I can send you a .tar.gz with a CMake file in it if you'd like. Thanks.''  ''Yumin: Fixed''&lt;br /&gt;
* http://public.kitware.com/pipermail/kwwidgets/2007-May/000433.html&amp;lt;br&amp;gt;'''Hint:''' ''Seb: I've heard this has been done but usually no, the command has to be a Tcl command. We would need a Python guru on this one.''&lt;br /&gt;
&lt;br /&gt;
==== From Steve:====&lt;br /&gt;
&lt;br /&gt;
I'd like to have a discussion of [http://www.kwwidgets.org/Wiki/KWWidgets/Tracing GUI Tracing].  In slicer3 we've started to experiment with a MRML-based tracing structure using the scene snapshot infrastructure, but we should consider if this is preferable to a GUI-based solution or not.  See, for example, [http://www.na-mic.org/ViewVC/index.cgi/trunk/Base/GUI/vtkSlicerRecordSnapshotWidget.cxx?annotate=3621 the vtkSlicerRecordSnapshotWidget].&lt;br /&gt;
&lt;br /&gt;
Performance of the file browser could be improved (request for multi-threaded solution or a helper process that does the glob'ing so the main application does not block).&lt;br /&gt;
&lt;br /&gt;
Look and feel issues:&lt;br /&gt;
* On windows, the menu bar and scroll bar do not get the appearance.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Nope, that was investigated in the past, menu bar and scroll bar are not themable on Windows, it's a Tk &amp;quot;feature&amp;quot;.'' &lt;br /&gt;
* On linux, font size is sometimes way too small.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Fonts are themable, did you try assigning a bigger one globally?.''  ''Steve: see Vince's notes below''&lt;br /&gt;
&lt;br /&gt;
* Maybe just me, but I find the new file browser sometimes ignores doubleclicks -- perhaps it is more picky about any small mouse movement between clicks?&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Would the be related to the whole double-click problem mentioned already, i.e. Slicer3 might be capturing double-clicks.'' &lt;br /&gt;
&lt;br /&gt;
* Configure event management is still a problem - dragging the split frame or hiding the left panel (with F5) causes a lot of extraneous ConfigureEvents.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: pretty much all the widgets are inside those split frames, hence repacked/relayout by Tk, and that may trigger a ton of ConfigureEvents (not actual 'pack' calls but just Tk re-doing its whole layout, which triggers events). There are so many widgets and different packing parameters, some &amp;quot;rubber-band&amp;quot; effect may be going on where the layout is adjusted iteratively until it stabilizes.''&lt;br /&gt;
&lt;br /&gt;
==== From Gary and James:====&lt;br /&gt;
&lt;br /&gt;
* I'd like to have a discussion of how to make a widget that reads one image plane at a time from a volume to make a multi-data set display.  We have an implementation in wxWidgets that reads data from multiple files as a slider that changes the slice number without having to read the entire volumes into memory.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: I think that is demonstrated by the MedicalImageViewer example. The reading/caching/streaming strategy is not KWW related, but VTK related though.'' &lt;br /&gt;
&lt;br /&gt;
* When displaying multiple vtkKWRenderWindows at once, the KWwidgets base class generates an error. Being able to display multiple renderwindows at one time is an essential requirement for our project. &amp;lt;br&amp;gt;'''Hint:''' ''Seb: Displaying multiple render windows is done by pretty much all our medical apps at Kitware, so yes, this is doable and we can help. What error message are you referring to?'' &lt;br /&gt;
&lt;br /&gt;
* The order of linking the ITK, VTK, TCL, TK and KWwidget libraries so that they do not conflict.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: I'm not aware of ordering conflicts. Have a look at the KWW examples and how they are linked: there is *no* explicit mention to VTK and Tcl/Tk, they are pulled automatically by CMake as part of the dependencies.'' &lt;br /&gt;
&lt;br /&gt;
* We want to access the KWwidgets' device client/handles for drawing on the controls.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: if you draw directly, you would probably lose it the next time the UI is refreshed. However, you can use vtkKWCanvas, which is a canvas on top of which you can draw, insert images, etc., and they would be displayed properly. Or you can even embed a render window inside a UI to do 2D or 3D scenes using VTK actors, etc.''&lt;br /&gt;
&lt;br /&gt;
==== From Vincent ====&lt;br /&gt;
&lt;br /&gt;
* There are issues with Slicer3 and fonts under Ubuntu Linux (Fiesty Fawn). The fonts are unreadable under this system. On the same system, Paraview fonts appear just fine. After performing some testing and evaluation, it appears that this is related to the order that fonts are resolved under Linux. We have a little script that will work around this by removing the X11 fonts on this sytem and only using the other system fonts for Slicer3. This is an ugly hack, but was close as we managed to get to track down the issue after approximately 3-4 hours of investigation. &amp;lt;br&amp;gt;'''Hint:''' ''Seb: If we are talking ParaView 2 (the old ones), then they may be specifying their own fonts explicitly at startup, and that can be done by Slicer3 as well, fonts are themable. If ParaView3, then it's a different story since it is using Qt.'' &lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 mv /usr/share/fonts/X11 /usr/share/fonts/X11-Slicer3&lt;br /&gt;
 /opt/Slicer3/Slicer3&lt;br /&gt;
 mv /usr/share/fonts/X11-Slicer3 /usr/share/fonts/X11&lt;/div&gt;</summary>
		<author><name>Yumin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Special_topic_breakout:_KWWidgets&amp;diff=12660</id>
		<title>Special topic breakout: KWWidgets</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Special_topic_breakout:_KWWidgets&amp;diff=12660"/>
		<updated>2007-06-27T03:52:15Z</updated>

		<summary type="html">&lt;p&gt;Yumin: /* From Nicole Aucoin */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:ProjectWeek-2007.png|thumb|300px|left|Return to [[2007_Programming/Project_Week_MIT|Project Week Main Page]]]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KWWidgets Breakout Session&lt;br /&gt;
&lt;br /&gt;
June 26th, 1-2pm&lt;br /&gt;
&lt;br /&gt;
Location: [[Meeting_Locations:MIT_Grier_A_%26B|Grier Rooms A &amp;amp; B: 34-401A &amp;amp; 34-401B]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Attendees: ===&lt;br /&gt;
* Yumin Yuan&lt;br /&gt;
* Steve Pieper&lt;br /&gt;
* Alex Yarmarkovich&lt;br /&gt;
* Wendy Plesniak&lt;br /&gt;
* Nicole Aucoin&lt;br /&gt;
* Curt Lisle&lt;br /&gt;
* Csaba Csoma&lt;br /&gt;
* Brad Davis&lt;br /&gt;
* David Gobbi&lt;br /&gt;
* Kiran Shivanna&lt;br /&gt;
* Kevin Teich&lt;br /&gt;
* Jeff Hawley&lt;br /&gt;
* Xiujuan Geng&lt;br /&gt;
* James Harris&lt;br /&gt;
* Gary Christensen&lt;br /&gt;
* Paul Song&lt;br /&gt;
* Alex. Gouaillard&lt;br /&gt;
* Vincent Magnotta&lt;br /&gt;
* Kiran Shivanna&lt;br /&gt;
* Katie Hayes&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
=== Agenda ===&lt;br /&gt;
&lt;br /&gt;
* Roadmap (to help KWWidgets developers prioritize their work)&lt;br /&gt;
* Widget feature requests / feedback&lt;br /&gt;
* Talk about best approaches to making some widget behavior appear consistent across platforms.&lt;br /&gt;
* Separate Tutorial Session for New Users (to happen possibly on Wednesday).&amp;lt;br&amp;gt;'''Hint:''' ''Seb: I just added a tentative Tutorial 1 that tackles creating a very simple composite widget. See [http://kwwidgets.org/cgi-bin/viewcvs.cgi/Examples/Cxx/Tutorial1/?root=KWWidgets Examples/Cxx/Tutorial1]. I need to write the corresponding documentation.''&lt;br /&gt;
&lt;br /&gt;
=== Specific Issues ===&lt;br /&gt;
&lt;br /&gt;
==== From Nicole Aucoin====&lt;br /&gt;
Directory selection dialog box on linux:&lt;br /&gt;
&lt;br /&gt;
* Bug: it pops up with a default width such that the right scroll bar isn't visible (see this [http://www.na-mic.org/Wiki/index.php/Image:KWDirectoryBrowserLinuxTooShort.jpg screenshot]; to reproduce it, start up Slicer3, go to the Models module, click on &amp;quot;Load Directory&amp;quot;).&amp;lt;br&amp;gt;'''Hint:''' ''Seb: the quickest workaround (Yumin?) at this point would be to make the default width a tad larger so that the right scrollbar button shows up.''  ''Yumin: Fixed.''&lt;br /&gt;
&lt;br /&gt;
* Request: an entry box where I can type a path to reduce clicking through the tree (useful before setting up a favourite)&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Very doable (Yumin?). Let's put all requests in the TODO list and prioritize.''&lt;br /&gt;
&lt;br /&gt;
==== From Curtis Lisle====&lt;br /&gt;
&lt;br /&gt;
* I have had trouble initializing widgets to specific values in advance of user input.  For example, I've created interfaces  with sliders and buttons but I have had trouble getting the widgets toinitialize in a state different then the default state.  For example, setting a slider to value=26 in the middle of its range without dragging the mouse.  The API looks like it is there, but I couldn't get it to work for me.  I'm sure I tried setting the state before and after creation, if I remember, but no luck.  It may be that I'm not updating the GUI successfully after changing values. Update: see [http://www.na-mic.org/Wiki/index.php/Image:KWMeshViewer030607.png screenshot]; by state, I mean the widget-specific state, such as a check button is checked, or a slider is set at a particular value within its range. For example, the &amp;quot;Outline Display&amp;quot; button could be checked  ON via API control of the program, not the user clicking on it. Before this picture was taken, I dragged the &amp;quot;element size&amp;quot;  slider to 93% via the mouse.  I'd like to instantiate the GUI, then set the actual positions and state values of the widgets. I just need clarity on the order of events to invoke through the API or help figuring out what I'm doing wrong.  I notice that for KWWidgets, State usually means enabled/disabled to process user events. Instead, I am thinking about setting widget values from the program. I guess for CheckButtons, this would be Get/SetSelectedState(). For a vtkKWScale, this would be SetValue(). I tried setting these but didn't see the effect on the GUI. Maybe I am just not invoking Modified() correctly afterwards.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Not sure on this one. Setting the values programmatically is something that is done in all our apps and it is a pretty important part of how the application works through callbacks. For most widgets, setting a value before calling Create() *should* work, but it never hurts do make sure it is done *after* Create(), to be on the safe side. There is no need to call Modified(), at least on the core widgets like checkbuttons or scales, the UI should be updated right away. You can even do it at runtime through the Tcl interpreter. So I guess we would need to see the code: it is possible that as soon you set a new value, an event is triggered (like ModifiedEvent) and some other part of your app that would listen to this event would set that widget back to its previous value. In term of Model/View/Controller pattern, the UI/view is supposed to reflect the state/values of a model; if you designed your app that way and it is possible that your controller is always resetting the UI to the current model's value.''&lt;br /&gt;
&lt;br /&gt;
* discuss when UI elements need to have Modified() / Update()invoked to refresh their appearance. I used a histogram widget on a project and had to experiment a lot calling the panel and RenderWidowWidget, etc. before I finally got the histogram to update when the input changed.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: it's mostly widget dependent, but for the core widgets, you should not have to call Modified(), or Update() (which is not part of the vtkKWWidget superclass anyway). For some composite widgets, they should be smart enough to be always 'up to date', but sometimes being up to date is so costly that a manual call to a method is needed (which might be called Update()). The histogram, to my knowledge, is indeed the trickiest one, sorry :) You do not want to have the histogram updated automatically each time somebody modifies one pixel in an image/vtkDataArray, for example. There is nothing in VTK that really says, asynchronously, &amp;quot;this image has been modified enough that it might be time to refresh your histogram&amp;quot;. Granularity issues...''.&lt;br /&gt;
&lt;br /&gt;
==== From Brad Davis ====&lt;br /&gt;
&lt;br /&gt;
* Bug: Double-clicking does not work with slicer3 and linux.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: The KWWidgets demo/examples handle double-clicks fine, so my guess is that Slicer3 is intercepting them. Yumin to investigate this issue.'' &lt;br /&gt;
* Bug: File-&amp;gt;Add Data does not use new file browser.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Sounds like a quick fix (Yumin?).''  ''Steve: this has been fixed.''&lt;br /&gt;
* Request: Tree with additional columns widget&amp;lt;br&amp;gt;'''Hint:''' ''Seb: The TkTreeCtrl library is in KWW and allows that, but one need to wrap it inside a C++ class, and this is a lot of work (Seb?). Let's put all requests in the TODO list and prioritize.''  ''Steve: there was discussion about exposing the TkTreeCtrl in the tcl interp so users can access it directly with Script() - is this an easy thing to do now?'' ''Seb: yes, that's very easy, but that means we are going to see tons of ugly Tcl code in the middle of C++ code :)'' ''Seb: OK, DONE, it's in. I compiled and tested on Win32. I compiled but could not test on Linux. TkTreeCtrl documentation can be found [http://tktreectrl.sourceforge.net/ here]. Download the TkTreeCtrl distribution, then from Slicer3/KWWidgets interactor, source demos/demo.tcl, then issue: wm deiconify .'' ''Steve: Thanks!  I'll give it a try.  My plan, actually, is to have some very pretty tcl code that uses this feature (no comment on the aesthetic qualities of C++ code!).'' ''Seb: I had to disable it until the VS7 build is fixed. To play with it though, edit Utilities\TkTreeCtrl\TkTreeCtrl.cmake and change the code to SET(${supported} 1). This is such a huge (50,000 lines) library that I would suggest you guys start playing with it at the Tcl level and that we use that feedback to create a C++ API that would not have to expose every thing features but the ones you use the most.''&lt;br /&gt;
&lt;br /&gt;
====From Alex:====&lt;br /&gt;
&lt;br /&gt;
* Request: I would like to address the performance of building GUI in slicer3 Modules. When selecting a module for the first time (Volumes or Models) it takes noticable time before the UI panel is displayed.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Well, you can't have your cake and eat it too :)) We delayed the creation of modules so that Slicer3 starts up faster. But one way or the other, the modules GUI has to be created. I just tried on my laptop on Win32, and I did not notice anything slow when I selected a few modules. Which ones are slow? Maybe one of the slow modules is actually doing more than just creating GUI when it is initialized.'' &lt;br /&gt;
&lt;br /&gt;
* Request: Customizable tree widget similar to slicer2 model hierarchy editor: allow to add push-buttons or check boxes for the individual tree leaves.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: The TkTreeCtrl library is in KWW and allows that, but one need to wrap it inside a C++ class, and this is a lot of work (Seb?). Unless, as suggested by Steve, you want to expose the TkTreeCtrl library directly and do it from Tcl. Let's put all requests in the TODO list and prioritize.'' &lt;br /&gt;
&lt;br /&gt;
====From Wendy:====&lt;br /&gt;
&lt;br /&gt;
Mostly pesky things: &lt;br /&gt;
* Request: Creating special versions of menubutton drop-down menus with scroll capability.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: There is no such native widget, so we would have to create a composite widget mixing a button and a scroll list (Seb or Yumin?). A day or two worth probably. Let's put all requests in the TODO list and prioritize.'' &lt;br /&gt;
* Request: checkbuttons and radiobuttons with consistent &amp;quot;on/off&amp;quot; visual representation across platforms. (either special Slicer widgets or KWWidgets).&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Tcl/Tk does not provide an API to modify that visual representation (called the 'indicator'), since it is trying to use the native widgets when possible. However, you can emulate that behavior by setting an image for both unselected and selected state (SetImageToPredefinedIcon, SetSelectImageToPredefinedIcon), then make sure the image does not override the text (SetCompoundModeToLeft), remove the usual indicator (SetIndicatorVisibility), and  remove the border of what is now a button (SetBorderWidth). All of those calls can be made into a theme. I've updated the KWThemeExample (check the green theme) to show how it is done. I would recommend against it, as a lot of Slicer3 GUI already uses SetImage and SetSelectImage to provide graphical checkbuttons instead of textual ones. I'm not confident this would play well, but let's try.''   &lt;br /&gt;
&lt;br /&gt;
It would be good to decide on a strategy for addressing these things.&lt;br /&gt;
&lt;br /&gt;
* Request: Also, if a radiobutton's indicator visibility is off, the widget gets rendered with a 3D effect (even if we're using an icon to display the button's on/off state). Can we turn that 3D effect off?&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Not to my knowledge, it might be a Tk &amp;quot;feature&amp;quot; but try SetBorderWidth 0''&lt;br /&gt;
&lt;br /&gt;
==== From KWW-Users mailing list====&lt;br /&gt;
&lt;br /&gt;
* http://public.kitware.com/pipermail/kwwidgets/2007-June/000456.html&amp;lt;br&amp;gt;'''Hint:''' ''Seb: To be investigrated by the File Browser Master aka Yumin.'' &lt;br /&gt;
* http://public.kitware.com/pipermail/kwwidgets/2007-June/000461.html&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Gonna need some source code/example to reproduce it (Seb?).'' ''Kevin: Source code is in that mail, and I can send you a .tar.gz with a CMake file in it if you'd like. Thanks.''&lt;br /&gt;
* http://public.kitware.com/pipermail/kwwidgets/2007-May/000433.html&amp;lt;br&amp;gt;'''Hint:''' ''Seb: I've heard this has been done but usually no, the command has to be a Tcl command. We would need a Python guru on this one.''&lt;br /&gt;
&lt;br /&gt;
==== From Steve:====&lt;br /&gt;
&lt;br /&gt;
I'd like to have a discussion of [http://www.kwwidgets.org/Wiki/KWWidgets/Tracing GUI Tracing].  In slicer3 we've started to experiment with a MRML-based tracing structure using the scene snapshot infrastructure, but we should consider if this is preferable to a GUI-based solution or not.  See, for example, [http://www.na-mic.org/ViewVC/index.cgi/trunk/Base/GUI/vtkSlicerRecordSnapshotWidget.cxx?annotate=3621 the vtkSlicerRecordSnapshotWidget].&lt;br /&gt;
&lt;br /&gt;
Performance of the file browser could be improved (request for multi-threaded solution or a helper process that does the glob'ing so the main application does not block).&lt;br /&gt;
&lt;br /&gt;
Look and feel issues:&lt;br /&gt;
* On windows, the menu bar and scroll bar do not get the appearance.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Nope, that was investigated in the past, menu bar and scroll bar are not themable on Windows, it's a Tk &amp;quot;feature&amp;quot;.'' &lt;br /&gt;
* On linux, font size is sometimes way too small.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Fonts are themable, did you try assigning a bigger one globally?.''  ''Steve: see Vince's notes below''&lt;br /&gt;
&lt;br /&gt;
* Maybe just me, but I find the new file browser sometimes ignores doubleclicks -- perhaps it is more picky about any small mouse movement between clicks?&amp;lt;br&amp;gt;'''Hint:''' ''Seb: Would the be related to the whole double-click problem mentioned already, i.e. Slicer3 might be capturing double-clicks.'' &lt;br /&gt;
&lt;br /&gt;
* Configure event management is still a problem - dragging the split frame or hiding the left panel (with F5) causes a lot of extraneous ConfigureEvents.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: pretty much all the widgets are inside those split frames, hence repacked/relayout by Tk, and that may trigger a ton of ConfigureEvents (not actual 'pack' calls but just Tk re-doing its whole layout, which triggers events). There are so many widgets and different packing parameters, some &amp;quot;rubber-band&amp;quot; effect may be going on where the layout is adjusted iteratively until it stabilizes.''&lt;br /&gt;
&lt;br /&gt;
==== From Gary and James:====&lt;br /&gt;
&lt;br /&gt;
* I'd like to have a discussion of how to make a widget that reads one image plane at a time from a volume to make a multi-data set display.  We have an implementation in wxWidgets that reads data from multiple files as a slider that changes the slice number without having to read the entire volumes into memory.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: I think that is demonstrated by the MedicalImageViewer example. The reading/caching/streaming strategy is not KWW related, but VTK related though.'' &lt;br /&gt;
&lt;br /&gt;
* When displaying multiple vtkKWRenderWindows at once, the KWwidgets base class generates an error. Being able to display multiple renderwindows at one time is an essential requirement for our project. &amp;lt;br&amp;gt;'''Hint:''' ''Seb: Displaying multiple render windows is done by pretty much all our medical apps at Kitware, so yes, this is doable and we can help. What error message are you referring to?'' &lt;br /&gt;
&lt;br /&gt;
* The order of linking the ITK, VTK, TCL, TK and KWwidget libraries so that they do not conflict.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: I'm not aware of ordering conflicts. Have a look at the KWW examples and how they are linked: there is *no* explicit mention to VTK and Tcl/Tk, they are pulled automatically by CMake as part of the dependencies.'' &lt;br /&gt;
&lt;br /&gt;
* We want to access the KWwidgets' device client/handles for drawing on the controls.&amp;lt;br&amp;gt;'''Hint:''' ''Seb: if you draw directly, you would probably lose it the next time the UI is refreshed. However, you can use vtkKWCanvas, which is a canvas on top of which you can draw, insert images, etc., and they would be displayed properly. Or you can even embed a render window inside a UI to do 2D or 3D scenes using VTK actors, etc.''&lt;br /&gt;
&lt;br /&gt;
==== From Vincent ====&lt;br /&gt;
&lt;br /&gt;
* There are issues with Slicer3 and fonts under Ubuntu Linux (Fiesty Fawn). The fonts are unreadable under this system. On the same system, Paraview fonts appear just fine. After performing some testing and evaluation, it appears that this is related to the order that fonts are resolved under Linux. We have a little script that will work around this by removing the X11 fonts on this sytem and only using the other system fonts for Slicer3. This is an ugly hack, but was close as we managed to get to track down the issue after approximately 3-4 hours of investigation. &amp;lt;br&amp;gt;'''Hint:''' ''Seb: If we are talking ParaView 2 (the old ones), then they may be specifying their own fonts explicitly at startup, and that can be done by Slicer3 as well, fonts are themable. If ParaView3, then it's a different story since it is using Qt.'' &lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 &lt;br /&gt;
 mv /usr/share/fonts/X11 /usr/share/fonts/X11-Slicer3&lt;br /&gt;
 /opt/Slicer3/Slicer3&lt;br /&gt;
 mv /usr/share/fonts/X11-Slicer3 /usr/share/fonts/X11&lt;/div&gt;</summary>
		<author><name>Yumin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Special_topic_breakout:_KWWidgets&amp;diff=11842</id>
		<title>Special topic breakout: KWWidgets</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Special_topic_breakout:_KWWidgets&amp;diff=11842"/>
		<updated>2007-06-19T02:11:48Z</updated>

		<summary type="html">&lt;p&gt;Yumin: /* Agenda */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:ProjectWeek-2007.png|thumb|300px|left|Return to [[2007_Programming/Project_Week_MIT|Project Week Main Page]]]] &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
KWWidgets Breakout Session&lt;br /&gt;
&lt;br /&gt;
June 26th, 1-2pm&lt;br /&gt;
&lt;br /&gt;
Location: [[Meeting_Locations:MIT_Grier_A_%26B|Grier Rooms A &amp;amp; B: 34-401A &amp;amp; 34-401B]]&lt;br /&gt;
&lt;br /&gt;
Attendees:&lt;br /&gt;
* Yumin Yuan&lt;br /&gt;
* Steve Pieper&lt;br /&gt;
* Alex Yarmarkovich&lt;br /&gt;
* Wendy Plesniak&lt;br /&gt;
* Nicole Aucoin&lt;br /&gt;
* Curt Lisle&lt;br /&gt;
* Csaba Csoma&lt;br /&gt;
* Brad Davis&lt;br /&gt;
* David Gobbi&lt;br /&gt;
* Kiran Shivanna&lt;br /&gt;
* Kevin Teich&lt;br /&gt;
&lt;br /&gt;
= Agenda =&lt;br /&gt;
&lt;br /&gt;
* Roadmap (to help KWWidgets developers prioritize their work)&lt;br /&gt;
* Widget feature requests / feedback&lt;br /&gt;
* Talk about best approaches to making some widget behavior appear consistent across platforms (menus, checkboxes, radiobuttons).&lt;br /&gt;
* Separate Tutorial Session for New Users (to happen possibly on Wednesday)&lt;br /&gt;
&lt;br /&gt;
= Specific Issues =&lt;br /&gt;
&lt;br /&gt;
* From Curtis Lisle&lt;br /&gt;
idea #1 - I have had trouble initializing widgets to specific values&lt;br /&gt;
in advance of user input.  For example, I've created interfaces with&lt;br /&gt;
sliders and buttons but I have had trouble getting the widgets to&lt;br /&gt;
initialize in a state different then the default state.  For example,&lt;br /&gt;
setting a slider to value=26 in the middle of its range without&lt;br /&gt;
dragging the mouse.  The API looks like it is there, but I couldn't&lt;br /&gt;
get it to work for me.  I'm sure I tried setting the state before and&lt;br /&gt;
after creation, if I remember, but no luck.  It may be that I'm not&lt;br /&gt;
updating the GUI successfully after changing values.&lt;br /&gt;
&lt;br /&gt;
idea #2 - discuss when UI elements need to have Modified() / Update()&lt;br /&gt;
invoked to refresh their appearance.  I used a histogram widget on a&lt;br /&gt;
project and had to experiment a lot calling the panel and&lt;br /&gt;
RenderWidowWidget, etc. before I finally got the histogram to update&lt;br /&gt;
when the input changed.&lt;br /&gt;
&lt;br /&gt;
* From Brad Davis &lt;br /&gt;
File selection dialog boxes: same on windows and linux&lt;br /&gt;
File selection dialog boxes: allow selection of multiple files in windows&lt;br /&gt;
&lt;br /&gt;
Double-clicking does not work with slicer3 and linux&lt;br /&gt;
&lt;br /&gt;
* From KWW-Users mailing list&lt;br /&gt;
http://public.kitware.com/pipermail/kwwidgets/2007-June/000456.html&lt;br /&gt;
&lt;br /&gt;
http://public.kitware.com/pipermail/kwwidgets/2007-June/000457.html&lt;br /&gt;
&lt;br /&gt;
http://public.kitware.com/pipermail/kwwidgets/2007-June/000460.html&lt;br /&gt;
&lt;br /&gt;
http://public.kitware.com/pipermail/kwwidgets/2007-June/000461.html&lt;br /&gt;
&lt;br /&gt;
http://public.kitware.com/pipermail/kwwidgets/2007-June/000462.html&lt;br /&gt;
&lt;br /&gt;
http://public.kitware.com/pipermail/kwwidgets/2007-May/000433.html&lt;/div&gt;</summary>
		<author><name>Yumin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=AHM_2007:Slicer3_Developer_Feedback&amp;diff=6032</id>
		<title>AHM 2007:Slicer3 Developer Feedback</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=AHM_2007:Slicer3_Developer_Feedback&amp;diff=6032"/>
		<updated>2007-01-08T16:14:31Z</updated>

		<summary type="html">&lt;p&gt;Yumin: /* EM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[AHM_2007#Wednesday.2C_Jan_10_2007:Project_Activities]]&lt;br /&gt;
&lt;br /&gt;
=Topics for this session:=&lt;br /&gt;
&lt;br /&gt;
* Information to the developer community about how these projects have approached developing their code for slicer3 (what's the architecture of their modules)&lt;br /&gt;
* Feedback to the base developers about what was easy or hard in the code writing&lt;br /&gt;
* What would they like to see in the slicer3 base and/or in VTK, ITK, KKWidgets, etc to make the module development more effective&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DTI=&lt;br /&gt;
==DTI Module: Raul San Jose==&lt;br /&gt;
&lt;br /&gt;
==Tractography Module: [http://www.na-mic.org/Wiki/index.php/User:Lauren Lauren O'Donnell]==&lt;br /&gt;
&lt;br /&gt;
===Module Architecture ===&lt;br /&gt;
* Tractography is represented as a vtkMRMLFiberBundleNode.  Display parameters are stored in a vtkMRMLFiberBundleDisplayNode, and storage (load/save) handled by vtkMRMLFiberBundleStorageNode.  Basic operations of adding new fiber bundles, etc. are in vtkMRMLFiberBundleLogic.&lt;br /&gt;
* vtkMRMLFiberBundleDisplayLogic is needed to create &amp;quot;hidden&amp;quot; slicer models that will be rendered in the MRML scene. Otherwise base classes would have to be heavily edited to handle tractography display using the display node. &lt;br /&gt;
* There will be several slicer module units to handle tractography.  The division will be by Load/Save/Display, Editing (to manually add, select, delete, or to use ROI selection), Seeding, etc.&lt;br /&gt;
* Initial work is on the Load/Save/Display and the entire MRML infrastructure.&lt;br /&gt;
&lt;br /&gt;
===Feedback on Slicer3 ===&lt;br /&gt;
* When adding a new module and a new datatype, it is difficult to find the places in Base code that must be edited.&lt;br /&gt;
* It is also difficult to understand how the MRML callback happens, and how to set a new one up.  It would be great to have a simple overview on the observers somewhere (or even the SVN web for easier code navigation).&lt;br /&gt;
* If a vtkMRMLNode inherits from another one used in slicer (for example mine inherits from the modelNode currently) then the subclass will show up on all of the superclass menus. This is because the vtk &amp;quot;IsA&amp;quot; function is used rather than a direct match.  I believe this is feature that is not desired.&lt;br /&gt;
&lt;br /&gt;
===What I would like in Slicer3 base...===&lt;br /&gt;
* More documentation, comments, etc.&lt;br /&gt;
&lt;br /&gt;
=EM=&lt;br /&gt;
&lt;br /&gt;
===Primary Developers===&lt;br /&gt;
&lt;br /&gt;
Yumin Yuan, Sebastien Barre, Brad Davis&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
&lt;br /&gt;
The following description is from the [[Slicer3:EM |project wiki page]]:&lt;br /&gt;
&lt;br /&gt;
The goal of this project is the creation of a module in Slicer 3 integrating the EMSegment algorithm (Pohl et al.), an automatic segmentation algorithm for medical images that previously existed in Slicer 2. As in Slicer 2, the user is able to adjust the algorithm to a variety of imaging protocols as well as anatomical structures and run the segmenter on large data set. However, the configuration of the algorithm is greatly simplified in Slicer 3 as the user is guided by a work flow. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist.&lt;br /&gt;
&lt;br /&gt;
As of January 1, 2007, the EMSegment module is substantially complete and has been checked into the Slicer3 SVN repository. It was previewed at the December 2006 NAMIC meeting in Clifton Park and will be a demonstration at the NAMIC All-Hands meeting in Salt Lake City on Wednesday 10 January 2007. Future work includes adding advanced and experimental algorithm parameters, improving visualization of parameter settings, and incorporating tissue labels from a controlled vocabulary.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
&lt;br /&gt;
The module is implemented as a programmatic Slicer3 module because it&lt;br /&gt;
requires a large degree of interaction with the user, the data stored&lt;br /&gt;
in the MRML tree, and the Slicer3 GUI itself.  Because the MRML node&lt;br /&gt;
structure is rather complicated (for example the anatomical tissue&lt;br /&gt;
hierarchy and a large number of interdependent nodes) the Logic class&lt;br /&gt;
is solely responsible for maintaining and accessing these nodes.  The&lt;br /&gt;
Logic class provides an API that the GUI code uses to access and&lt;br /&gt;
modify data.  The Logic class also wraps the algorithm code itself.&lt;br /&gt;
&lt;br /&gt;
*the parameters for the algorithm are stored in a number of MRML nodes:&lt;br /&gt;
**EMSGlobalParametersNode (global algorithm parameters)&lt;br /&gt;
**EMSTreeNode (tree structure for hierarchy of anatomical structures)&lt;br /&gt;
**EMSTreeParametersNode (algorithm parameters assigned to each tree node)&lt;br /&gt;
**EMSAtlasNode (image data and parameters for atlas)&lt;br /&gt;
**EMSTargetNode (image data for target images (to be segmented))&lt;br /&gt;
**EMSVolumeCollectionNode (essentially a hash map of image volumes, used for atlas and target nodes)&lt;br /&gt;
**EMSTemplateNode (collects global parameters and tree structure)&lt;br /&gt;
**EMSSegmenterNode (collectes template and output data)&lt;br /&gt;
**EMSNode (highest level node, reference to EMSegmenterNode and storage location for module specific data)&lt;br /&gt;
*the logic is responsible for	 &lt;br /&gt;
**maintaining and traversing the data in the mrml scene	 &lt;br /&gt;
**providing an interface for the GUI to access the data	 &lt;br /&gt;
**providing an interface for the segmentation algorithm&lt;br /&gt;
&lt;br /&gt;
===GUI===&lt;br /&gt;
&lt;br /&gt;
The EM GUI includes eight steps implemented with KWWidgets and vtkKWWizardWorkflow framework. Each step is written as a single class, derived from a super class vtkEMSegmentStep. All steps are initialized with parameters from the vtkKWEMSegmentLogic class, and once a user interacts with the UI, the new parameters (if there are) will be passed to the logic class immediately.&lt;br /&gt;
&lt;br /&gt;
There is also a brief description of these steps in the [[Slicer3:EM |project wiki page]]:&lt;br /&gt;
&lt;br /&gt;
*1/8 vtkEMSegmentParametersSetStep: Select parameter set or create new parameters&lt;br /&gt;
This can be used as a convenient method to reload all the parameters of a previous EM procedure.&lt;br /&gt;
*2/8 vtkEMSegmentAnatomicalStructureStep: Define a hierarchy of anatomical structures&lt;br /&gt;
The anatomical structures are represented with a  a tree structure using vtkKWTree, which can be directly manipulated to assign attributes to each anatomical structure, such as name, color, etc.&lt;br /&gt;
*3/8 vtkEMSegmentSpatialPriorsStep: Assign atlases for anatomical structures&lt;br /&gt;
Again, the same tree structure is used here to assign atlas to each anatomical structure.&lt;br /&gt;
*4/8 vtkEMSegmentIntensityImagesStep: Choose the set of images that will be segmented&lt;br /&gt;
The widget used here, vtkKWListBoxToListBoxSelectionEditor, allows selection of images in different orders, which is actually important in following steps.&lt;br /&gt;
*5/8 vtkEMSegmentIntensityDistributionsStep: Define intensity distribution for each anatomical structure&lt;br /&gt;
Same tree structure is used for anatomical structures. This step is where EM module is interacting &lt;br /&gt;
directly with Slicer3 main application, namely the mouse events from vtkSlicerSliceGUI are processed &lt;br /&gt;
to get sampling intensities and coordinates.&lt;br /&gt;
*6/8 vtkEMSegmentNodeParametersStep: Specify node-based segmentation parameters&lt;br /&gt;
There are many KWWidgets used here (vtkKWTree, vtkKWNotebook, vtkKWMultiColumnList, vtkKWEntryWithScale etc), and given the limited UI space we have , it does take some creativity to arrange everything nicely.&lt;br /&gt;
*7/8 vtkEMSegmentRegistrationParametersStep: Specify atlas-to-target registration parameters&lt;br /&gt;
A simple step to assign registration parameters.&lt;br /&gt;
*8/8 vtkEMSegmentRunSegmentationStep: Save work and apply EM Algorithm to segment target images&lt;br /&gt;
Again, this step has many gui components.&lt;br /&gt;
&lt;br /&gt;
===Feedback===&lt;br /&gt;
&lt;br /&gt;
*the community was extreemly helpful!&lt;br /&gt;
*over all our experience was very positive, but more examples and documentation would be helpful&lt;br /&gt;
*used wiki page describing how to build a module---this documentation was helpful&lt;br /&gt;
*used GradientAnisotropic module as a template---more examples (and more complicated examples) would be helpful&lt;br /&gt;
*we had to write new MRML classes because the slicer2 classes used nested tags and Slicer3 uses references&lt;br /&gt;
*could our mrml tree class be generalized for others to use? &lt;br /&gt;
*it seems like the creation of most MRML classes could be automated&lt;br /&gt;
*it will be very helpful to have a wiki page describing how to observe and process events from main application, such as MRML nodes events, mouse events, progress events etc.&lt;br /&gt;
&lt;br /&gt;
=IGT=&lt;br /&gt;
[[Image:Slicer3-IGT-Architecture.png|300px|thumb| Blockdiagram of the IGT module]]&lt;br /&gt;
&lt;br /&gt;
Noby Hata, Haiying Liu, Simon DiMaio and Raimundo Sierra &lt;br /&gt;
==Hisotory of our involvement==&lt;br /&gt;
*Summer 2006: Haiying Liu joined the core development team and translated '''MRAblation''' module from the Slicer 2.6. There he&lt;br /&gt;
**Learned the architecture of Slicer 3&lt;br /&gt;
**Got familiar with KWWidgets&lt;br /&gt;
&lt;br /&gt;
*Fall 2006: Haiying Liu implemented '''IGT Demo''' module. There he&lt;br /&gt;
**Contributed vtkIGTDemoLogic and vtkIGTDemoGUI classes in the Base&lt;br /&gt;
**Added an option for CMake to link the external library [http://studierstube.icg.tu-graz.ac.at/opentracker/ '''OpenTracker''']&lt;br /&gt;
&lt;br /&gt;
*December 2006: Two additional members joined IGT-Slier3 task force&lt;br /&gt;
**Simon DiMaio representing prostate robot project [[http://crisp.cit.nih.gov/crisp/CRISP_LIB.getdoc?textkey=7070178&amp;amp;p_grant_num=1R01CA111288-01A1&amp;amp;p_query=&amp;amp;ticket=29242393&amp;amp;p_audit_session_id=195929678&amp;amp;p_keywords=| PI Tempany1R01CA111288]]&lt;br /&gt;
**Raimundo Sierra representing Neuroendoscope project [[http://crisp.cit.nih.gov/crisp/CRISP_LIB.getdoc?textkey=7126732&amp;amp;p_grant_num=5U41RR019703-02&amp;amp;p_query=&amp;amp;ticket=29242406&amp;amp;p_audit_session_id=195929678&amp;amp;p_keywords=| PI Jolesz 5U41RR019703]]&lt;br /&gt;
&lt;br /&gt;
*January 4th, 2007 at 1249 Boylston Office: Implementation strategy for IGT-Slicer has been discussed and preliminary design proposed by Hata and Liu (see the figure at the left)&lt;br /&gt;
**Slicer3/Base/GUI/vtkSlicerIGTGUI: cxx class&lt;br /&gt;
***Creates GUI components for IGT application modules&lt;br /&gt;
***Handles interface update&lt;br /&gt;
**Slicer3/Base/Logic/vtkSlicerIGTLogic: cxx class&lt;br /&gt;
***Processes shared logics for IGT applications, such as handling communication with tracking server&lt;br /&gt;
***Wraps tracker-specific logics&lt;br /&gt;
**Slicer3/Libs/IGT: IGT lib ('''Place holder classes committed to SVN (NH)'''&lt;br /&gt;
***Patient to image registration&lt;br /&gt;
***Tool calibration&lt;br /&gt;
***Specific tracker logics&lt;br /&gt;
***Online image I/O&lt;br /&gt;
***Special image processing&lt;br /&gt;
***More...&lt;br /&gt;
**Slicer3/Modules: IGT applications&lt;br /&gt;
***MRAbration&lt;br /&gt;
***Neurosurgery&lt;br /&gt;
***ProstateBiosy&lt;br /&gt;
***More...&lt;br /&gt;
&lt;br /&gt;
==Our timeline==&lt;br /&gt;
*IGT tutorial demo on alpha (done)&lt;br /&gt;
*IGT tutorial demo on beta (during AHM week by Liu)&lt;br /&gt;
*Neurosurgical navigation with GE Nav  (spring to summer)&lt;br /&gt;
*Building with IGSTK (during AHM week, by Hata)&lt;br /&gt;
*Neurosurgical navigationi with JHU robot (by March)&lt;br /&gt;
*Integration to MR/T (fall)&lt;br /&gt;
&lt;br /&gt;
==Feedback==&lt;br /&gt;
*genutiltest.tcl is great! &lt;br /&gt;
*Guideline for creating library and modules would be helpful for those joining Slicer community. Template (blank) code may be helpful.&lt;br /&gt;
*Don't understand what &amp;quot;NA-MIC sandbox&amp;quot; means...&lt;br /&gt;
*Application-specific customization and streamlining of the GUI will be important for IGT applications. To what extent is this possible?&lt;br /&gt;
*Performance bounds are important to understand for IGT applications. Can we talk about determinism and performance as Slicer scales?&lt;br /&gt;
*How to specify module dependency&lt;br /&gt;
*README.txt to add a module&lt;br /&gt;
*What we can do and cannot do with a command line module&lt;/div&gt;</summary>
		<author><name>Yumin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=AHM_2007:Slicer3_Developer_Feedback&amp;diff=6021</id>
		<title>AHM 2007:Slicer3 Developer Feedback</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=AHM_2007:Slicer3_Developer_Feedback&amp;diff=6021"/>
		<updated>2007-01-08T15:40:32Z</updated>

		<summary type="html">&lt;p&gt;Yumin: /* EM */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Back to [[AHM_2007#Wednesday.2C_Jan_10_2007:Project_Activities]]&lt;br /&gt;
&lt;br /&gt;
=Topics for this session:=&lt;br /&gt;
&lt;br /&gt;
* Information to the developer community about how these projects have approached developing their code for slicer3 (what's the architecture of their modules)&lt;br /&gt;
* Feedback to the base developers about what was easy or hard in the code writing&lt;br /&gt;
* What would they like to see in the slicer3 base and/or in VTK, ITK, KKWidgets, etc to make the module development more effective&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=DTI=&lt;br /&gt;
==DTI Module: Raul San Jose==&lt;br /&gt;
&lt;br /&gt;
==Tractography Module: [http://www.na-mic.org/Wiki/index.php/User:Lauren Lauren O'Donnell]==&lt;br /&gt;
&lt;br /&gt;
===Module Architecture ===&lt;br /&gt;
* Tractography is represented as a vtkMRMLFiberBundleNode.  Display parameters are stored in a vtkMRMLFiberBundleDisplayNode, and storage (load/save) handled by vtkMRMLFiberBundleStorageNode.  Basic operations of adding new fiber bundles, etc. are in vtkMRMLFiberBundleLogic.&lt;br /&gt;
* vtkMRMLFiberBundleDisplayLogic is needed to create &amp;quot;hidden&amp;quot; slicer models that will be rendered in the MRML scene. Otherwise base classes would have to be heavily edited to handle tractography display using the display node. &lt;br /&gt;
* There will be several slicer module units to handle tractography.  The division will be by Load/Save/Display, Editing (to manually add, select, delete, or to use ROI selection), Seeding, etc.&lt;br /&gt;
* Initial work is on the Load/Save/Display and the entire MRML infrastructure.&lt;br /&gt;
&lt;br /&gt;
===Feedback on Slicer3 ===&lt;br /&gt;
* When adding a new module and a new datatype, it is difficult to find the places in Base code that must be edited.&lt;br /&gt;
* It is also difficult to understand how the MRML callback happens, and how to set a new one up.  It would be great to have a simple overview on the observers somewhere (or even the SVN web for easier code navigation).&lt;br /&gt;
* If a vtkMRMLNode inherits from another one used in slicer (for example mine inherits from the modelNode currently) then the subclass will show up on all of the superclass menus. This is because the vtk &amp;quot;IsA&amp;quot; function is used rather than a direct match.  I believe this is feature that is not desired.&lt;br /&gt;
&lt;br /&gt;
===What I would like in Slicer3 base...===&lt;br /&gt;
* More documentation, comments, etc.&lt;br /&gt;
&lt;br /&gt;
=EM=&lt;br /&gt;
&lt;br /&gt;
===Primary Developers===&lt;br /&gt;
&lt;br /&gt;
Yumin Yuan, Sebastien Barre, Brad Davis&lt;br /&gt;
&lt;br /&gt;
===Module Description===&lt;br /&gt;
&lt;br /&gt;
The following description is from the [[Slicer3:EM |project wiki page]]:&lt;br /&gt;
&lt;br /&gt;
The goal of this project is the creation of a module in Slicer 3 integrating the EMSegment algorithm (Pohl et al.), an automatic segmentation algorithm for medical images that previously existed in Slicer 2. As in Slicer 2, the user is able to adjust the algorithm to a variety of imaging protocols as well as anatomical structures and run the segmenter on large data set. However, the configuration of the algorithm is greatly simplified in Slicer 3 as the user is guided by a work flow. The target audience for this module is someone familiar with brain atlases and tissue labels, not a computer scientist.&lt;br /&gt;
&lt;br /&gt;
As of January 1, 2007, the EMSegment module is substantially complete and has been checked into the Slicer3 SVN repository. It was previewed at the December 2006 NAMIC meeting in Clifton Park and will be a demonstration at the NAMIC All-Hands meeting in Salt Lake City on Wednesday 10 January 2007. Future work includes adding advanced and experimental algorithm parameters, improving visualization of parameter settings, and incorporating tissue labels from a controlled vocabulary.&lt;br /&gt;
&lt;br /&gt;
===Architecture===&lt;br /&gt;
&lt;br /&gt;
The module is implemented as a programmatic Slicer3 module because it&lt;br /&gt;
requires a large degree of interaction with the user, the data stored&lt;br /&gt;
in the MRML tree, and the Slicer3 GUI itself.  Because the MRML node&lt;br /&gt;
structure is rather complicated (for example the anatomical tissue&lt;br /&gt;
hierarchy and a large number of interdependent nodes) the Logic class&lt;br /&gt;
is solely responsible for maintaining and accessing these nodes.  The&lt;br /&gt;
Logic class provides an API that the GUI code uses to access and&lt;br /&gt;
modify data.  The Logic class also wraps the algorithm code itself.&lt;br /&gt;
&lt;br /&gt;
*the parameters for the algorithm are stored in a number of MRML nodes:&lt;br /&gt;
**EMSGlobalParametersNode (global algorithm parameters)&lt;br /&gt;
**EMSTreeNode (tree structure for hierarchy of anatomical structures)&lt;br /&gt;
**EMSTreeParametersNode (algorithm parameters assigned to each tree node)&lt;br /&gt;
**EMSAtlasNode (image data and parameters for atlas)&lt;br /&gt;
**EMSTargetNode (image data for target images (to be segmented))&lt;br /&gt;
**EMSVolumeCollectionNode (essentially a hash map of image volumes, used for atlas and target nodes)&lt;br /&gt;
**EMSTemplateNode (collects global parameters and tree structure)&lt;br /&gt;
**EMSSegmenterNode (collectes template and output data)&lt;br /&gt;
**EMSNode (highest level node, reference to EMSegmenterNode and storage location for module specific data)&lt;br /&gt;
*the logic is responsible for	 &lt;br /&gt;
**maintaining and traversing the data in the mrml scene	 &lt;br /&gt;
**providing an interface for the GUI to access the data	 &lt;br /&gt;
**providing an interface for the segmentation algorithm&lt;br /&gt;
&lt;br /&gt;
===GUI===&lt;br /&gt;
&lt;br /&gt;
The EM GUI includes eight steps implemented with KWWWidgets and workflow framework (see Sebastein's description). Each step is written as a single class, derived from a super class vtkEMSegmentStep. All steps are initialized with parameters from the vtkKWEMSegmentLogic class, and once a user interacts with the UI, the new parameters (if there are) will be passed to the logic class immediately.&lt;br /&gt;
&lt;br /&gt;
There is also a brief description of these steps in the [[Slicer3:EM |project wiki page]]:&lt;br /&gt;
&lt;br /&gt;
*1/8 vtkEMSegmentParametersSetStep: Select parameter set or create new parameters&lt;br /&gt;
This can be used as a convenient method to reload all the parameters of a previous EM procedure.&lt;br /&gt;
*2/8 vtkEMSegmentAnatomicalStructureStep: Define a hierarchy of anatomical structures&lt;br /&gt;
The anatomical structures are represented with a  a tree structure using vtkKWTree, which can be directly manipulated to assign attributes to each anatomical structure, such as name, color, etc.&lt;br /&gt;
*3/8 vtkEMSegmentSpatialPriorsStep: Assign atlases for anatomical structures&lt;br /&gt;
Again, the same tree structure is used here to assign atlas to each anatomical structure.&lt;br /&gt;
*4/8 vtkEMSegmentIntensityImagesStep: Choose the set of images that will be segmented&lt;br /&gt;
The widget used here, vtkKWListBoxToListBoxSelectionEditor, allows selection of images in different orders, which is actually important in following steps.&lt;br /&gt;
*5/8 vtkEMSegmentIntensityDistributionsStep: Define intensity distribution for each anatomical structure&lt;br /&gt;
Same tree structure is used for anatomical structures. This step is where EM module is interacting &lt;br /&gt;
directly with Slicer3 main application, namely the mouse events from vtkSlicerSliceGUI are processed &lt;br /&gt;
to get sampling intensities and coordinates.&lt;br /&gt;
*6/8 vtkEMSegmentNodeParametersStep: Specify node-based segmentation parameters&lt;br /&gt;
There are many KWWidgets used here (vtkKWTree, vtkKWNotebook, vtkKWMultiColumnList, vtkKWEntryWithScale etc), and given the limited UI space we have , it does take some creativity to arrange everything nicely.&lt;br /&gt;
*7/8 vtkEMSegmentRegistrationParametersStep: Specify atlas-to-target registration parameters&lt;br /&gt;
A simple step to assign registration parameters.&lt;br /&gt;
*8/8 vtkEMSegmentRunSegmentationStep: Save work and apply EM Algorithm to segment target images&lt;br /&gt;
Again, this step has many gui components.&lt;br /&gt;
&lt;br /&gt;
===Feedback===&lt;br /&gt;
&lt;br /&gt;
*the community was extreemly helpful!&lt;br /&gt;
*over all our experience was very positive, but more examples and documentation would be helpful&lt;br /&gt;
*used wiki page describing how to build a module---this documentation was helpful&lt;br /&gt;
*used GradientAnisotropic module as a template---more examples (and more complicated examples) would be helpful&lt;br /&gt;
*we had to write new MRML classes because the slicer2 classes used nested tags and Slicer3 uses references&lt;br /&gt;
*could our mrml tree class be generalized for others to use? &lt;br /&gt;
*it seems like the creation of most MRML classes could be automated&lt;br /&gt;
*it will be very helpful to have a wiki page describing how to observe and process events from main application, such as MRML nodes events, mouse events, progress events etc.&lt;br /&gt;
&lt;br /&gt;
=IGT=&lt;br /&gt;
[[Image:Slicer3-IGT-Architecture.png|300px|thumb| Blockdiagram of the IGT module]]&lt;br /&gt;
&lt;br /&gt;
Noby Hata, Haiying Liu, Simon DiMaio and Raimundo Sierra &lt;br /&gt;
==Hisotory of our involvement==&lt;br /&gt;
*Summer 2006: Haiying Liu joined the core development team and translated '''MRAblation''' module from the Slicer 2.6. There he&lt;br /&gt;
**Learned the architecture of Slicer 3&lt;br /&gt;
**Got familiar with KWWidgets&lt;br /&gt;
&lt;br /&gt;
*Fall 2006: Haiying Liu implemented '''IGT Demo''' module. There he&lt;br /&gt;
**Contributed vtkIGTDemoLogic and vtkIGTDemoGUI classes in the Base&lt;br /&gt;
**Added an option for CMake to link the external library [http://studierstube.icg.tu-graz.ac.at/opentracker/ '''OpenTracker''']&lt;br /&gt;
&lt;br /&gt;
*December 2006: Two additional members joined IGT-Slier3 task force&lt;br /&gt;
**Simon DiMaio representing prostate robot project [[http://crisp.cit.nih.gov/crisp/CRISP_LIB.getdoc?textkey=7070178&amp;amp;p_grant_num=1R01CA111288-01A1&amp;amp;p_query=&amp;amp;ticket=29242393&amp;amp;p_audit_session_id=195929678&amp;amp;p_keywords=| PI Tempany1R01CA111288]]&lt;br /&gt;
**Raimundo Sierra representing Neuroendoscope project [[http://crisp.cit.nih.gov/crisp/CRISP_LIB.getdoc?textkey=7126732&amp;amp;p_grant_num=5U41RR019703-02&amp;amp;p_query=&amp;amp;ticket=29242406&amp;amp;p_audit_session_id=195929678&amp;amp;p_keywords=| PI Jolesz 5U41RR019703]]&lt;br /&gt;
&lt;br /&gt;
*January 4th, 2007 at 1249 Boylston Office: Implementation strategy for IGT-Slicer has been discussed and preliminary design proposed by Hata and Liu (see the figure at the left)&lt;br /&gt;
**Slicer3/Base/GUI/vtkSlicerIGTGUI: cxx class&lt;br /&gt;
***Creates GUI components for IGT application modules&lt;br /&gt;
***Handles interface update&lt;br /&gt;
**Slicer3/Base/Logic/vtkSlicerIGTLogic: cxx class&lt;br /&gt;
***Processes shared logics for IGT applications, such as handling communication with tracking server&lt;br /&gt;
***Wraps tracker-specific logics&lt;br /&gt;
**Slicer3/Libs/IGT: IGT lib ('''Place holder classes committed to SVN (NH)'''&lt;br /&gt;
***Patient to image registration&lt;br /&gt;
***Tool calibration&lt;br /&gt;
***Specific tracker logics&lt;br /&gt;
***Online image I/O&lt;br /&gt;
***Special image processing&lt;br /&gt;
***More...&lt;br /&gt;
**Slicer3/Modules: IGT applications&lt;br /&gt;
***MRAbration&lt;br /&gt;
***Neurosurgery&lt;br /&gt;
***ProstateBiosy&lt;br /&gt;
***More...&lt;br /&gt;
&lt;br /&gt;
==Our timeline==&lt;br /&gt;
*IGT tutorial demo on alpha (done)&lt;br /&gt;
*IGT tutorial demo on beta (during AHM week by Liu)&lt;br /&gt;
*Neurosurgical navigation with GE Nav  (spring to summer)&lt;br /&gt;
*Building with IGSTK (during AHM week, by Hata)&lt;br /&gt;
*Neurosurgical navigationi with JHU robot (by March)&lt;br /&gt;
*Integration to MR/T (fall)&lt;br /&gt;
&lt;br /&gt;
==Feedback==&lt;br /&gt;
*genutiltest.tcl is great! &lt;br /&gt;
*Guideline for creating library and modules would be helpful for those joining Slicer community. Template (blank) code may be helpful.&lt;br /&gt;
*Don't understand what &amp;quot;NA-MIC sandbox&amp;quot; means...&lt;br /&gt;
*Application-specific customization and streamlining of the GUI will be important for IGT applications. To what extent is this possible?&lt;br /&gt;
*Performance bounds are important to understand for IGT applications. Can we talk about determinism and performance as Slicer scales?&lt;br /&gt;
*How to specify module dependency&lt;br /&gt;
*README.txt to add a module&lt;br /&gt;
*What we can do and cannot do with a command line module&lt;/div&gt;</summary>
		<author><name>Yumin</name></author>
		
	</entry>
</feed>