<?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=Kerstin</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=Kerstin"/>
	<link rel="alternate" type="text/html" href="https://www.na-mic.org/wiki/Special:Contributions/Kerstin"/>
	<updated>2026-05-06T13:22:15Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.33.0</generator>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=24386</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=24386"/>
		<updated>2008-05-05T00:41:04Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;see new wiki on slicer.org: [http://www.slicer.org/slicerWiki/index.php/Modules:Volumes:Diffusion_Editor-Documentation http://www.slicer.org/slicerWiki/index.php/Modules:Volumes:Diffusion_Editor-Documentation]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=24385</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=24385"/>
		<updated>2008-05-05T00:40:07Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: Removing all content from page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Developers&amp;diff=24047</id>
		<title>Slicer3:Developers</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Developers&amp;diff=24047"/>
		<updated>2008-04-24T21:45:10Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Slicer 3 Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;toccolours&amp;quot; style=&amp;quot;margin-right: 25px&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
! bgcolor=&amp;quot;#ccccff&amp;quot; align=&amp;quot;center&amp;quot; | Slicer3&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3|Home]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3:About|About]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3:FAQ|FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3:Status|Status]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3:Downloads|Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3:Documentation|Documentation]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3:Community_Support|Community Support]]&lt;br /&gt;
|-&lt;br /&gt;
| '''Developers'''&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3:Acknowledgements|Acknowledgements]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3:Links|Links]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Slicer 3 Overview ==&lt;br /&gt;
[[Image:Slicer3LogoHorizontalBeta.png]]&lt;br /&gt;
&lt;br /&gt;
* For more details on the slicer architecture see: [[media:Slicer 3-beta-2007-04-16.ppt | Architecture Slides]] (updated April, 2007).&lt;br /&gt;
* Highlights of the new architecture&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:Slicer3-Architecture.jpg|thumb|200px]]&lt;br /&gt;
|[[Image:Slicer3-Architecture-MRML.jpg|thumb|200px]]&lt;br /&gt;
|[[Image:Slicer3-Architecture-Layers.jpg|200px|thumb]]&lt;br /&gt;
|[[Image:ExecutionModelPlugins.png|200px|thumb]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Information for Developers ==&lt;br /&gt;
This section centrally locates many existing (and developing) wiki pages useful to Slicer3 developers. The content  developed for the January 2007 AHM.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Slicer3 ===&lt;br /&gt;
* [[Media:SlicerHistoricalTimeline.ppt | Slicer3 Historical Timeline]]&lt;br /&gt;
* [[Slicer3:Status_Summary | Status overview]] and [http://slicerl.bwh.harvard.edu/tmp/slicer3-PreAHMBeta%20Demo/slicer3-PreAHMBeta.htm Demo]&lt;br /&gt;
* [[Media:GUIMap.png|Schematic of application interface &amp;amp; functionality]]&lt;br /&gt;
* [[Media:SliceGUI.png|Schematic of slice GUI]]&lt;br /&gt;
* [[Slicer3:Build_Instructions | Getting the software and troubleshooting]]&lt;br /&gt;
* [[media:Slicer 3-beta-2007-01-10.ppt | Overall Architecture]] and [[Slicer3:Style|Slicer 3 Coding Style]]&lt;br /&gt;
* [[Slicer3:Contributing_codes_to_Slicer3| Contributing codes to Slicer3]]&lt;br /&gt;
&lt;br /&gt;
=== Two module types (Command line and Interactive) ===&lt;br /&gt;
* [[Slicer3:Execution_Model_Documentation | Command line modules and how to implement one]] (Jim and Bill) [[media:Slicer3-ExecutionModelJune2006.ppt| Intro]]&lt;br /&gt;
*[[Slicer3:How_to_implement_an_Interactive_Module_GUI | How to implement an interactive module]] (wjp)&lt;br /&gt;
&lt;br /&gt;
=== MRML [http://www.na-mic.org/Wiki/images/e/e3/Slicer3_MRML.ppt  MRML Slides](Alex) ===&lt;br /&gt;
Medical Reality Modeling Language (MRML) is a language implemented as a type of XML document, with new tags defined to handle medical image data types such as volumes, models or coordinate transforms.&lt;br /&gt;
&lt;br /&gt;
* [[Slicer3:Data_Model#Creating_Custom_MRML_Node_Classes | Creating and using new MRML node types]] (Alex)&lt;br /&gt;
* [[Slicer3:Data_Model#References_to_MRML_Nodes | Keeping references to MRML nodes ]] (Alex)&lt;br /&gt;
* [[Slicer3:Data_Model#Undo/Redo_Mechanism  | How undo/redo works, and how to enable it in your code]] (Alex)&lt;br /&gt;
&lt;br /&gt;
=== GUI ===&lt;br /&gt;
* [[Slicer3:StatelessGUI | Keeping the GUI stateless]] (wjp)&lt;br /&gt;
* [[Slicer3:EventBindings | Adding keyboard shortcuts]] (wjp)&lt;br /&gt;
* [[Slicer3:Human_Interface_and_Style_Guide_for_Developers | GUI style guidelines]] (wjp)&lt;br /&gt;
* [[Slicer3:Usability#User-centered_design_practice_for_3DSlicer | User-centered design practice]] (wjp)&lt;br /&gt;
* [[Slicer3:Slicer3Brand | 3DSlicer's logo and visual communication guidelines]] (wjp)&lt;br /&gt;
* [[Slicer3:Execution_Model_Documentation#Adding_Module_Logos_to_Slicer3 | Incorporating your group's logo and attributions]] (Jim)&lt;br /&gt;
* [[Slicer3:GUI_Experiments | Some experiments/advanced techniques for developing slicer3 interfaces]] (Steve)&lt;br /&gt;
&lt;br /&gt;
=== Engineering ===&lt;br /&gt;
* Tips for avoiding memory leaks&lt;br /&gt;
** Current Practice (Steve)&lt;br /&gt;
** [[Slicer3:Memory Management | Suggested change to SmartPointers]] (Jim)&lt;br /&gt;
* Generating tests (Bill)&lt;br /&gt;
* [[Slicer3:Testing | Setting up Testing]]&lt;br /&gt;
* [[Slicer3:Launcher| The Launcher]]&lt;br /&gt;
&lt;br /&gt;
=== Documenting your module ===&lt;br /&gt;
* As soon as the wiki page template is finalized, and the infrastructure is added to link to this wiki page from the &amp;quot;Help &amp;amp; Acknowledgment&amp;quot; panel in your module's GUI, we will ask developers to fill out a brief document describing your module and its use. Stay tuned for developments...&lt;br /&gt;
* [[Slicer3:DocumentationWink|Documenting a module with wink]]&lt;br /&gt;
&lt;br /&gt;
=== Integrate Slicer3 into a development environment ===&lt;br /&gt;
* [[Slicer3::Eclipse | Eclipse]] (keilhack)&lt;br /&gt;
* [[Slicer3::MSVS200X | Microsoft Visual Studio 200x]]&lt;br /&gt;
&lt;br /&gt;
== Slicer 3 Projects ==&lt;br /&gt;
&lt;br /&gt;
Projects should correspond to the outstanding issues listed on the '''[[Slicer3:Status_Summary|Status Summary]]'''. Please refer to the '''[[Slicer3:FeatureRequests|Feature Requests]]''' from users when planning your implementations.&lt;br /&gt;
&lt;br /&gt;
''If your name is in bold, you are responsible for that aspect of the project''&lt;br /&gt;
&lt;br /&gt;
* '''[[Slicer3:Architecture/Features|Architecture/Features]]''' ('''Steve Pieper''', Group: Bill Lorensen, Ron Kikinis, Mike Halle, Noby Hata)&lt;br /&gt;
* '''[[Slicer3:Data_Model|Data Model / libMRML]]''' ('''Alex''', Steve)&lt;br /&gt;
* '''[[Slicer3:Execution_Model|Execution Model / Command Line Modules]]''' ('''Jim Miller''', Bill Lorensen)&lt;br /&gt;
* '''[[Slicer3:Interface_Design|Interface Design and Usability ]]''' ('''Wendy Plesniak''', KWWidgets: Sebastien Barre, Yumin Yuan)&lt;br /&gt;
* '''[[Slicer3:Transition_of_Slicer2.x_Modules|Transition of Selected Slicer2.x Modules to Slicer3]]''' ('''Nicole''', Katie, Wendy, Mathieu)&lt;br /&gt;
** [[Slicer3:DTMRI|DTMRI]]&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;'''Alex''' with help from Diffusion Images:  '''Raul''', Tractography: '''Lauren''' [http://lmi.bwh.harvard.edu LMI]&lt;br /&gt;
** [[Slicer3:Editor|Editor]]&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;'''Steve'''&lt;br /&gt;
** [[Slicer3:ColorsFiducialsFreesurferModelmaker|Colors, Fiducials, FreeSurfer, ModelMaker]]&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;'''Nicole'''&lt;br /&gt;
** [[Slicer3:_Image_Guided_Therapy_%28IGT%29|IGT, Trackers]]&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;'''Haiying'''&lt;br /&gt;
** [[Slicer3:EM|EMSegment Interface]]&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;'''Brad Davis'''&lt;br /&gt;
** [[Slicer3:Slicer_Daemon|SlicerDaemon Interface (for unu, matlab)]]&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;'''Steve Pieper'''&lt;br /&gt;
* '''[[Slicer3:Build/Test/Deploy|Build/Test/Deploy System]]''' ('''Andy''', Katie)&lt;br /&gt;
* '''[[Slicer3:Pipeline_Integration|Loni Pipeline Integration]]''' ('''Jags''')&lt;br /&gt;
* '''[[Slicer3:Batchmake_Integration|Batchmake/GRID Integration]]''' ('''Julien Jomier''')&lt;br /&gt;
* '''[[Slicer3:Registration|Registration Modules]]''' ('''Jim Miller''', Steve Pieper)&lt;br /&gt;
* '''[http://www.na-mic.org/Wiki/index.php/ITK_Registration_Optimization Improvements to the registration framework]''' ('''Stephen Aylward''')&lt;br /&gt;
* '''[[Slicer3:Python|Python Integration]]''' ('''Dan Blezek''')&lt;br /&gt;
* '''[[Slicer3:Grid_Interface|Grid Integration]]''' ('''Jeff Grethe''', Neil)&lt;br /&gt;
* '''[[Slicer3:Performance_Analysis|Slicer3:Performance Analysis]]''' ('''Katie''')&lt;br /&gt;
* '''[[Slicer3:ThreadingToolKit|Threading ToolKit]]''' ('''Dan Blezek, James Miller, Stephen Aylward''')&lt;br /&gt;
* '''[[Slicer3:Volume Rendering |Volume Rendering]]''' ('''Andy''')&lt;br /&gt;
* '''[[Slicer3:Volume Rendering With Cuda|Volume Rendering With CUDA]]''' ('''Ben''')&lt;br /&gt;
* '''[[Slicer3:XNAT |XNAT Interface]]''' ('''Steve''', Wendy, Dan Marcus, Tim Olsen)&lt;br /&gt;
* '''[[Slicer3:LDDMM |LDDMM Interface]]''' ('''Steve''', Anthony Kolasny)&lt;br /&gt;
* '''[[Slicer3:Web Presence |Web Presence]]''' ('''Nicole Aucoin'''), Zack Galbreath&lt;br /&gt;
* '''[[Slicer3:Loadable Modules |Loadable Modules]]''' ('''Alex Yarmarkovich'''), Steve Pieper&lt;br /&gt;
* '''[http://www.slicer.org/slicerWiki/index.php/Modules:Volumes:Diffusion_Editor-Documentation Diffusion Editor]''' ('''Kerstin''')&lt;br /&gt;
* '''[[Slicer3:TimeSeries and Multi-Volume Data | TimeSeries and Multi-Volume Data]]''' (Steve Pieper, Daniel Blezek, Dominik Meier, Wendy Plesniak)&lt;br /&gt;
* '''[[Slicer3:Remote Data Handling | Remote Data Handling]]''' (Steve Pieper, Nicole Aucoin, Wendy Plesniak)&lt;br /&gt;
* '''[[Slicer3:Module:QueryAtlas |Query Atlas]]''' ('''Wendy Plesniak''')&lt;br /&gt;
&lt;br /&gt;
== Slicer 3 Quick links to the Source code ==&lt;br /&gt;
&lt;br /&gt;
The Slicer3 svn repository:&lt;br /&gt;
&lt;br /&gt;
 svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
&lt;br /&gt;
Use [http://www.na-mic.org/ViewVC/index.cgi/ ViewVC to browse the repository]&lt;br /&gt;
&lt;br /&gt;
[[Engineering:SandBox|Instructions for NA-MIC svn]]&lt;br /&gt;
&lt;br /&gt;
[[Slicer3:Build_Instructions|Slicer3 build instructions]]&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Doxygen documentation for Slicer3].&lt;br /&gt;
&lt;br /&gt;
The [[Slicer3:VisualBlog|Slicer3 VisualBlog]] shows screenshots of slicer developments.&lt;br /&gt;
&lt;br /&gt;
Developers should follow the [[Slicer3:Style|Slicer 3 Coding Style]].&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer3/Dashboard Slicer3 Dashboard]&lt;br /&gt;
&lt;br /&gt;
[http://na-mic.org/Mantis/main_page.php Slicer Bug Tracker]&lt;br /&gt;
&lt;br /&gt;
Discussion of slicer3 takes place on the slicer-devel@massmail.spl.harvard.edu list. To join developer's mailing list, send a request to: [mailto:slicer-devel-request@massmail.spl.harvard.edu slicer-devel-request@massmail.spl.harvard.edu] with the keyword ''subscribe'' as the subject.  Or access the [http://massmail.spl.harvard.edu/mailman/listinfo/slicer-devel slicer-devel archives and web administration interface].&lt;br /&gt;
&lt;br /&gt;
== Design Information ==&lt;br /&gt;
&lt;br /&gt;
May 23, 2006: [[Algorithms:Core1Visit_May06|Algorithm Core workshop.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; April 3, 2006: [[Media:Slicer_3-alpha-2006-04-03.ppt| Slicer 3 alpha]] technical powerpoint presentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Events =&lt;br /&gt;
&lt;br /&gt;
== Upcoming ==&lt;br /&gt;
&lt;br /&gt;
=== Slicer3.0 ===&lt;br /&gt;
&lt;br /&gt;
* the first product release of Slicer3 is scheduled for the AHM in January of 2008&lt;br /&gt;
* there will be a code freeze on Nov. 15 2007&lt;br /&gt;
** if you want your module to be part of Slicer3.0 submit it by then&lt;br /&gt;
** After that date, we will only accept bug fixes. It means that there will be no features added after the freeze in the main trunk.&lt;br /&gt;
&lt;br /&gt;
** Any people working on new features can do so in their own branch and they will be responsible for merging these back into the trunk after the freeze is lifted (at which point the release will be in a maintenance branch). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Retrospective ==&lt;br /&gt;
&lt;br /&gt;
=== Slicer 3 Snapshot Builds ===&lt;br /&gt;
&lt;br /&gt;
* Initial releases began end of March 2007&lt;br /&gt;
** Base code functional and usable&lt;br /&gt;
** Several usable modules include (auto segmentaiton, editor, registration...)&lt;br /&gt;
** Image Guided Therapy example modules&lt;br /&gt;
* Updated versions summer 2007&lt;br /&gt;
** With DTI and other application modules&lt;br /&gt;
** Bug fixes and performance enhancements&lt;br /&gt;
&lt;br /&gt;
=== Migration Tutorials (from Slicer 2.x to 3.0)  ===&lt;br /&gt;
&lt;br /&gt;
The first set of user tutorials will be released in Fall 2007. &lt;br /&gt;
Slicer3 programming courses will be released in January 2008.&lt;br /&gt;
&lt;br /&gt;
== Past ==&lt;br /&gt;
&lt;br /&gt;
=== Slicer3.0 Beta ===&lt;br /&gt;
&lt;br /&gt;
* Official release at [[AHM_2007 | AHM January 2007]]&lt;br /&gt;
&lt;br /&gt;
=== April 3, 2006 ===&lt;br /&gt;
&lt;br /&gt;
There was a [[Slicer3:_Alpha1_Meeting|Slicer3 Alpha1 Design Review]] meeting.&lt;br /&gt;
&lt;br /&gt;
'''[[Slicer3:Alpha|Definition of Alpha Milestone]]'''&lt;br /&gt;
&lt;br /&gt;
=== Slicer3 Alpha2/Beta1 by End of July 2006 ===&lt;br /&gt;
&lt;br /&gt;
* Initial Testing with Core 3 participation&lt;br /&gt;
* Base functionality in place, but still subject to API changes and other improvements.&lt;br /&gt;
* Packaged versions not yet available, but testers are able to easily build their own versions.&lt;br /&gt;
&lt;br /&gt;
=== Implementation of Slicer3 Alpha1 by end of March 2006 ===&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Developers&amp;diff=23973</id>
		<title>Slicer3:Developers</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Developers&amp;diff=23973"/>
		<updated>2008-04-24T15:44:56Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Slicer 3 Projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;toccolours&amp;quot; style=&amp;quot;margin-right: 25px&amp;quot; align=&amp;quot;right&amp;quot;&lt;br /&gt;
! bgcolor=&amp;quot;#ccccff&amp;quot; align=&amp;quot;center&amp;quot; | Slicer3&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3|Home]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3:About|About]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3:FAQ|FAQ]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3:Status|Status]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3:Downloads|Downloads]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3:Documentation|Documentation]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3:Community_Support|Community Support]]&lt;br /&gt;
|-&lt;br /&gt;
| '''Developers'''&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3:Acknowledgements|Acknowledgements]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
[[Slicer3:Links|Links]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Slicer 3 Overview ==&lt;br /&gt;
[[Image:Slicer3LogoHorizontalBeta.png]]&lt;br /&gt;
&lt;br /&gt;
* For more details on the slicer architecture see: [[media:Slicer 3-beta-2007-04-16.ppt | Architecture Slides]] (updated April, 2007).&lt;br /&gt;
* Highlights of the new architecture&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Image:Slicer3-Architecture.jpg|thumb|200px]]&lt;br /&gt;
|[[Image:Slicer3-Architecture-MRML.jpg|thumb|200px]]&lt;br /&gt;
|[[Image:Slicer3-Architecture-Layers.jpg|200px|thumb]]&lt;br /&gt;
|[[Image:ExecutionModelPlugins.png|200px|thumb]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Information for Developers ==&lt;br /&gt;
This section centrally locates many existing (and developing) wiki pages useful to Slicer3 developers. The content  developed for the January 2007 AHM.&lt;br /&gt;
&lt;br /&gt;
=== Introduction to Slicer3 ===&lt;br /&gt;
* [[Media:SlicerHistoricalTimeline.ppt | Slicer3 Historical Timeline]]&lt;br /&gt;
* [[Slicer3:Status_Summary | Status overview]] and [http://slicerl.bwh.harvard.edu/tmp/slicer3-PreAHMBeta%20Demo/slicer3-PreAHMBeta.htm Demo]&lt;br /&gt;
* [[Media:GUIMap.png|Schematic of application interface &amp;amp; functionality]]&lt;br /&gt;
* [[Media:SliceGUI.png|Schematic of slice GUI]]&lt;br /&gt;
* [[Slicer3:Build_Instructions | Getting the software and troubleshooting]]&lt;br /&gt;
* [[media:Slicer 3-beta-2007-01-10.ppt | Overall Architecture]] and [[Slicer3:Style|Slicer 3 Coding Style]]&lt;br /&gt;
* [[Slicer3:Contributing_codes_to_Slicer3| Contributing codes to Slicer3]]&lt;br /&gt;
&lt;br /&gt;
=== Two module types (Command line and Interactive) ===&lt;br /&gt;
* [[Slicer3:Execution_Model_Documentation | Command line modules and how to implement one]] (Jim and Bill) [[media:Slicer3-ExecutionModelJune2006.ppt| Intro]]&lt;br /&gt;
*[[Slicer3:How_to_implement_an_Interactive_Module_GUI | How to implement an interactive module]] (wjp)&lt;br /&gt;
&lt;br /&gt;
=== MRML [http://www.na-mic.org/Wiki/images/e/e3/Slicer3_MRML.ppt  MRML Slides](Alex) ===&lt;br /&gt;
Medical Reality Modeling Language (MRML) is a language implemented as a type of XML document, with new tags defined to handle medical image data types such as volumes, models or coordinate transforms.&lt;br /&gt;
&lt;br /&gt;
* [[Slicer3:Data_Model#Creating_Custom_MRML_Node_Classes | Creating and using new MRML node types]] (Alex)&lt;br /&gt;
* [[Slicer3:Data_Model#References_to_MRML_Nodes | Keeping references to MRML nodes ]] (Alex)&lt;br /&gt;
* [[Slicer3:Data_Model#Undo/Redo_Mechanism  | How undo/redo works, and how to enable it in your code]] (Alex)&lt;br /&gt;
&lt;br /&gt;
=== GUI ===&lt;br /&gt;
* [[Slicer3:StatelessGUI | Keeping the GUI stateless]] (wjp)&lt;br /&gt;
* [[Slicer3:EventBindings | Adding keyboard shortcuts]] (wjp)&lt;br /&gt;
* [[Slicer3:Human_Interface_and_Style_Guide_for_Developers | GUI style guidelines]] (wjp)&lt;br /&gt;
* [[Slicer3:Usability#User-centered_design_practice_for_3DSlicer | User-centered design practice]] (wjp)&lt;br /&gt;
* [[Slicer3:Slicer3Brand | 3DSlicer's logo and visual communication guidelines]] (wjp)&lt;br /&gt;
* [[Slicer3:Execution_Model_Documentation#Adding_Module_Logos_to_Slicer3 | Incorporating your group's logo and attributions]] (Jim)&lt;br /&gt;
* [[Slicer3:GUI_Experiments | Some experiments/advanced techniques for developing slicer3 interfaces]] (Steve)&lt;br /&gt;
&lt;br /&gt;
=== Engineering ===&lt;br /&gt;
* Tips for avoiding memory leaks&lt;br /&gt;
** Current Practice (Steve)&lt;br /&gt;
** [[Slicer3:Memory Management | Suggested change to SmartPointers]] (Jim)&lt;br /&gt;
* Generating tests (Bill)&lt;br /&gt;
* [[Slicer3:Testing | Setting up Testing]]&lt;br /&gt;
* [[Slicer3:Launcher| The Launcher]]&lt;br /&gt;
&lt;br /&gt;
=== Documenting your module ===&lt;br /&gt;
* As soon as the wiki page template is finalized, and the infrastructure is added to link to this wiki page from the &amp;quot;Help &amp;amp; Acknowledgment&amp;quot; panel in your module's GUI, we will ask developers to fill out a brief document describing your module and its use. Stay tuned for developments...&lt;br /&gt;
* [[Slicer3:DocumentationWink|Documenting a module with wink]]&lt;br /&gt;
&lt;br /&gt;
=== Integrate Slicer3 into a development environment ===&lt;br /&gt;
* [[Slicer3::Eclipse | Eclipse]] (keilhack)&lt;br /&gt;
* [[Slicer3::MSVS200X | Microsoft Visual Studio 200x]]&lt;br /&gt;
&lt;br /&gt;
== Slicer 3 Projects ==&lt;br /&gt;
&lt;br /&gt;
Projects should correspond to the outstanding issues listed on the '''[[Slicer3:Status_Summary|Status Summary]]'''. Please refer to the '''[[Slicer3:FeatureRequests|Feature Requests]]''' from users when planning your implementations.&lt;br /&gt;
&lt;br /&gt;
''If your name is in bold, you are responsible for that aspect of the project''&lt;br /&gt;
&lt;br /&gt;
* '''[[Slicer3:Architecture/Features|Architecture/Features]]''' ('''Steve Pieper''', Group: Bill Lorensen, Ron Kikinis, Mike Halle, Noby Hata)&lt;br /&gt;
* '''[[Slicer3:Data_Model|Data Model / libMRML]]''' ('''Alex''', Steve)&lt;br /&gt;
* '''[[Slicer3:Execution_Model|Execution Model / Command Line Modules]]''' ('''Jim Miller''', Bill Lorensen)&lt;br /&gt;
* '''[[Slicer3:Interface_Design|Interface Design and Usability ]]''' ('''Wendy Plesniak''', KWWidgets: Sebastien Barre, Yumin Yuan)&lt;br /&gt;
* '''[[Slicer3:Transition_of_Slicer2.x_Modules|Transition of Selected Slicer2.x Modules to Slicer3]]''' ('''Nicole''', Katie, Wendy, Mathieu)&lt;br /&gt;
** [[Slicer3:DTMRI|DTMRI]]&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;'''Alex''' with help from Diffusion Images:  '''Raul''', Tractography: '''Lauren''' [http://lmi.bwh.harvard.edu LMI]&lt;br /&gt;
** [[Slicer3:Editor|Editor]]&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;'''Steve'''&lt;br /&gt;
** [[Slicer3:ColorsFiducialsFreesurferModelmaker|Colors, Fiducials, FreeSurfer, ModelMaker]]&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;'''Nicole'''&lt;br /&gt;
** [[Slicer3:_Image_Guided_Therapy_%28IGT%29|IGT, Trackers]]&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;'''Haiying'''&lt;br /&gt;
** [[Slicer3:EM|EMSegment Interface]]&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;'''Brad Davis'''&lt;br /&gt;
** [[Slicer3:Slicer_Daemon|SlicerDaemon Interface (for unu, matlab)]]&amp;lt;nowiki&amp;gt;: &amp;lt;/nowiki&amp;gt;'''Steve Pieper'''&lt;br /&gt;
* '''[[Slicer3:Build/Test/Deploy|Build/Test/Deploy System]]''' ('''Andy''', Katie)&lt;br /&gt;
* '''[[Slicer3:Pipeline_Integration|Loni Pipeline Integration]]''' ('''Jags''')&lt;br /&gt;
* '''[[Slicer3:Batchmake_Integration|Batchmake/GRID Integration]]''' ('''Julien Jomier''')&lt;br /&gt;
* '''[[Slicer3:Registration|Registration Modules]]''' ('''Jim Miller''', Steve Pieper)&lt;br /&gt;
* '''[http://www.na-mic.org/Wiki/index.php/ITK_Registration_Optimization Improvements to the registration framework]''' ('''Stephen Aylward''')&lt;br /&gt;
* '''[[Slicer3:Python|Python Integration]]''' ('''Dan Blezek''')&lt;br /&gt;
* '''[[Slicer3:Grid_Interface|Grid Integration]]''' ('''Jeff Grethe''', Neil)&lt;br /&gt;
* '''[[Slicer3:Performance_Analysis|Slicer3:Performance Analysis]]''' ('''Katie''')&lt;br /&gt;
* '''[[Slicer3:ThreadingToolKit|Threading ToolKit]]''' ('''Dan Blezek, James Miller, Stephen Aylward''')&lt;br /&gt;
* '''[[Slicer3:Volume Rendering |Volume Rendering]]''' ('''Andy''')&lt;br /&gt;
* '''[[Slicer3:Volume Rendering With Cuda|Volume Rendering With CUDA]]''' ('''Ben''')&lt;br /&gt;
* '''[[Slicer3:XNAT |XNAT Interface]]''' ('''Steve''', Wendy, Dan Marcus, Tim Olsen)&lt;br /&gt;
* '''[[Slicer3:LDDMM |LDDMM Interface]]''' ('''Steve''', Anthony Kolasny)&lt;br /&gt;
* '''[[Slicer3:Web Presence |Web Presence]]''' ('''Nicole Aucoin'''), Zack Galbreath&lt;br /&gt;
* '''[[Slicer3:Loadable Modules |Loadable Modules]]''' ('''Alex Yarmarkovich'''), Steve Pieper&lt;br /&gt;
* '''[[Slicer3:Diffusion Editor |Diffusion Editor]]''' ('''Kerstin''')&lt;br /&gt;
* '''[[Slicer3:TimeSeries and Multi-Volume Data | TimeSeries and Multi-Volume Data]]''' (Steve Pieper, Daniel Blezek, Dominik Meier, Wendy Plesniak)&lt;br /&gt;
* '''[[Slicer3:Remote Data Handling | Remote Data Handling]]''' (Steve Pieper, Nicole Aucoin, Wendy Plesniak)&lt;br /&gt;
* '''[[Slicer3:Module:QueryAtlas |Query Atlas]]''' ('''Wendy Plesniak''')&lt;br /&gt;
&lt;br /&gt;
== Slicer 3 Quick links to the Source code ==&lt;br /&gt;
&lt;br /&gt;
The Slicer3 svn repository:&lt;br /&gt;
&lt;br /&gt;
 svn co http://www.na-mic.org/svn/Slicer3/trunk Slicer3&lt;br /&gt;
&lt;br /&gt;
Use [http://www.na-mic.org/ViewVC/index.cgi/ ViewVC to browse the repository]&lt;br /&gt;
&lt;br /&gt;
[[Engineering:SandBox|Instructions for NA-MIC svn]]&lt;br /&gt;
&lt;br /&gt;
[[Slicer3:Build_Instructions|Slicer3 build instructions]]&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Doxygen documentation for Slicer3].&lt;br /&gt;
&lt;br /&gt;
The [[Slicer3:VisualBlog|Slicer3 VisualBlog]] shows screenshots of slicer developments.&lt;br /&gt;
&lt;br /&gt;
Developers should follow the [[Slicer3:Style|Slicer 3 Coding Style]].&lt;br /&gt;
&lt;br /&gt;
[http://www.na-mic.org/Slicer3/Dashboard Slicer3 Dashboard]&lt;br /&gt;
&lt;br /&gt;
[http://na-mic.org/Mantis/main_page.php Slicer Bug Tracker]&lt;br /&gt;
&lt;br /&gt;
Discussion of slicer3 takes place on the slicer-devel@massmail.spl.harvard.edu list. To join developer's mailing list, send a request to: [mailto:slicer-devel-request@massmail.spl.harvard.edu slicer-devel-request@massmail.spl.harvard.edu] with the keyword ''subscribe'' as the subject.  Or access the [http://massmail.spl.harvard.edu/mailman/listinfo/slicer-devel slicer-devel archives and web administration interface].&lt;br /&gt;
&lt;br /&gt;
== Design Information ==&lt;br /&gt;
&lt;br /&gt;
May 23, 2006: [[Algorithms:Core1Visit_May06|Algorithm Core workshop.]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt; April 3, 2006: [[Media:Slicer_3-alpha-2006-04-03.ppt| Slicer 3 alpha]] technical powerpoint presentation.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Events =&lt;br /&gt;
&lt;br /&gt;
== Upcoming ==&lt;br /&gt;
&lt;br /&gt;
=== Slicer3.0 ===&lt;br /&gt;
&lt;br /&gt;
* the first product release of Slicer3 is scheduled for the AHM in January of 2008&lt;br /&gt;
* there will be a code freeze on Nov. 15 2007&lt;br /&gt;
** if you want your module to be part of Slicer3.0 submit it by then&lt;br /&gt;
** After that date, we will only accept bug fixes. It means that there will be no features added after the freeze in the main trunk.&lt;br /&gt;
&lt;br /&gt;
** Any people working on new features can do so in their own branch and they will be responsible for merging these back into the trunk after the freeze is lifted (at which point the release will be in a maintenance branch). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Retrospective ==&lt;br /&gt;
&lt;br /&gt;
=== Slicer 3 Snapshot Builds ===&lt;br /&gt;
&lt;br /&gt;
* Initial releases began end of March 2007&lt;br /&gt;
** Base code functional and usable&lt;br /&gt;
** Several usable modules include (auto segmentaiton, editor, registration...)&lt;br /&gt;
** Image Guided Therapy example modules&lt;br /&gt;
* Updated versions summer 2007&lt;br /&gt;
** With DTI and other application modules&lt;br /&gt;
** Bug fixes and performance enhancements&lt;br /&gt;
&lt;br /&gt;
=== Migration Tutorials (from Slicer 2.x to 3.0)  ===&lt;br /&gt;
&lt;br /&gt;
The first set of user tutorials will be released in Fall 2007. &lt;br /&gt;
Slicer3 programming courses will be released in January 2008.&lt;br /&gt;
&lt;br /&gt;
== Past ==&lt;br /&gt;
&lt;br /&gt;
=== Slicer3.0 Beta ===&lt;br /&gt;
&lt;br /&gt;
* Official release at [[AHM_2007 | AHM January 2007]]&lt;br /&gt;
&lt;br /&gt;
=== April 3, 2006 ===&lt;br /&gt;
&lt;br /&gt;
There was a [[Slicer3:_Alpha1_Meeting|Slicer3 Alpha1 Design Review]] meeting.&lt;br /&gt;
&lt;br /&gt;
'''[[Slicer3:Alpha|Definition of Alpha Milestone]]'''&lt;br /&gt;
&lt;br /&gt;
=== Slicer3 Alpha2/Beta1 by End of July 2006 ===&lt;br /&gt;
&lt;br /&gt;
* Initial Testing with Core 3 participation&lt;br /&gt;
* Base functionality in place, but still subject to API changes and other improvements.&lt;br /&gt;
* Packaged versions not yet available, but testers are able to easily build their own versions.&lt;br /&gt;
&lt;br /&gt;
=== Implementation of Slicer3 Alpha1 by end of March 2006 ===&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=23971</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=23971"/>
		<updated>2008-04-24T15:44:06Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: Slicer3:DWI Gradient Editor moved to Slicer3:Diffusion Editor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v5.jpg|new features added&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## '''Idendity''': Set the measurement frame to the idendity matrix.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Undo''': Undo the last change of measurement/gradient values.&lt;br /&gt;
#'''Redo''': Redo the last change of measurement/gradient values.&lt;br /&gt;
#'''Restore''': All parameters are restored to original.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Display DTI''': Select a DTI volume from the current mrml scene and see its tracts.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 100%&lt;br /&gt;
*gradients (gui/load/change/save): 100%&lt;br /&gt;
*undo/redo/restore mechanism: 100%&lt;br /&gt;
*test: 75%&lt;br /&gt;
** tensor estimation with existing clm: 100%&lt;br /&gt;
** glyphs view in all32 planes with the possibility to change resolution: 100%&lt;br /&gt;
** alternative tensor estimation with new filter: 0%&lt;br /&gt;
*** filter for tensor rotation: 0%&lt;br /&gt;
** tractography fiducial seeding: 100%&lt;br /&gt;
*testing: 0%&lt;br /&gt;
*documentation, demo video: 40%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:DWI_Gradient_Editor&amp;diff=23972</id>
		<title>Slicer3:DWI Gradient Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:DWI_Gradient_Editor&amp;diff=23972"/>
		<updated>2008-04-24T15:44:06Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: Slicer3:DWI Gradient Editor moved to Slicer3:Diffusion Editor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Slicer3:Diffusion Editor]]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=23947</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=23947"/>
		<updated>2008-04-21T22:12:30Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Status / Implementation Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v5.jpg|new features added&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## '''Idendity''': Set the measurement frame to the idendity matrix.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Undo''': Undo the last change of measurement/gradient values.&lt;br /&gt;
#'''Redo''': Redo the last change of measurement/gradient values.&lt;br /&gt;
#'''Restore''': All parameters are restored to original.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Display DTI''': Select a DTI volume from the current mrml scene and see its tracts.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 100%&lt;br /&gt;
*gradients (gui/load/change/save): 100%&lt;br /&gt;
*undo/redo/restore mechanism: 100%&lt;br /&gt;
*test: 75%&lt;br /&gt;
** tensor estimation with existing clm: 100%&lt;br /&gt;
** glyphs view in all32 planes with the possibility to change resolution: 100%&lt;br /&gt;
** alternative tensor estimation with new filter: 0%&lt;br /&gt;
*** filter for tensor rotation: 0%&lt;br /&gt;
** tractography fiducial seeding: 100%&lt;br /&gt;
*testing: 0%&lt;br /&gt;
*documentation, demo video: 40%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=23623</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=23623"/>
		<updated>2008-04-06T22:47:03Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Status / Implementation Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v5.jpg|new features added&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## '''Idendity''': Set the measurement frame to the idendity matrix.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Undo''': Undo the last change of measurement/gradient values.&lt;br /&gt;
#'''Redo''': Redo the last change of measurement/gradient values.&lt;br /&gt;
#'''Restore''': All parameters are restored to original.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Display DTI''': Select a DTI volume from the current mrml scene and see its tracts.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 100%&lt;br /&gt;
*gradients (gui/load/change/save): 100%&lt;br /&gt;
*undo/redo/restore mechanism: 100%&lt;br /&gt;
*test: 60%&lt;br /&gt;
** tensor estimation with existing clm: 95%&lt;br /&gt;
** alternative tensor estimation with new filter: 0%&lt;br /&gt;
*** filter for tensor rotation: 0%&lt;br /&gt;
** tractography fiducial seeding: 100%&lt;br /&gt;
*testing: 0%&lt;br /&gt;
*documentation, demo video: 0%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=23424</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=23424"/>
		<updated>2008-03-29T12:57:22Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Status / Implementation Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v5.jpg|new features added&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## '''Idendity''': Set the measurement frame to the idendity matrix.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Undo''': Undo the last change of measurement/gradient values.&lt;br /&gt;
#'''Redo''': Redo the last change of measurement/gradient values.&lt;br /&gt;
#'''Restore''': All parameters are restored to original.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Display DTI''': Select a DTI volume from the current mrml scene and see its tracts.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 100%&lt;br /&gt;
*gradients (gui/load/change/save): 100%&lt;br /&gt;
*undo/redo/restore mechanism: 100%&lt;br /&gt;
*test: 60%&lt;br /&gt;
** tensor estimation with existing clm: 95%&lt;br /&gt;
** alternative tensor estimation with new filter: 0%&lt;br /&gt;
*** filter for tensor rotation: 0%&lt;br /&gt;
** tractography fiducial seeding: 100%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22962</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22962"/>
		<updated>2008-03-17T01:42:52Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Status / Implementation Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v5.jpg|new features added&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## '''Idendity''': Set the measurement frame to the idendity matrix.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Undo''': Undo the last change of measurement/gradient values.&lt;br /&gt;
#'''Redo''': Redo the last change of measurement/gradient values.&lt;br /&gt;
#'''Restore''': All parameters are restored to original.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Display DTI''': Select a DTI volume from the current mrml scene and see its tracts.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 100%&lt;br /&gt;
*gradients (gui/load/change/save): 100%&lt;br /&gt;
*undo/redo/restore mechanism: 30%&lt;br /&gt;
*test: 60%&lt;br /&gt;
** tensor estimation with existing clm: 95%&lt;br /&gt;
** alternative tensor estimation with new filter: 0%&lt;br /&gt;
*** filter for tensor rotation: 0%&lt;br /&gt;
** tractography fiducial seeding: 100%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22958</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22958"/>
		<updated>2008-03-16T23:55:45Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Status / Implementation Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v5.jpg|new features added&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## '''Idendity''': Set the measurement frame to the idendity matrix.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Undo''': Undo the last change of measurement/gradient values.&lt;br /&gt;
#'''Redo''': Redo the last change of measurement/gradient values.&lt;br /&gt;
#'''Restore''': All parameters are restored to original.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Display DTI''': Select a DTI volume from the current mrml scene and see its tracts.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 95%&lt;br /&gt;
*undo/redo/restore mechanism: 30%&lt;br /&gt;
*test: 60%&lt;br /&gt;
** tensor estimation with existing clm: 95%&lt;br /&gt;
** alternative tensor estimation with new filter: 0%&lt;br /&gt;
*** filter for tensor rotation: 0%&lt;br /&gt;
** tractography fiducial seeding: 80%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22957</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22957"/>
		<updated>2008-03-16T23:54:22Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* What you can do with the Gradient Editor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v5.jpg|new features added&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## '''Idendity''': Set the measurement frame to the idendity matrix.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Undo''': Undo the last change of measurement/gradient values.&lt;br /&gt;
#'''Redo''': Redo the last change of measurement/gradient values.&lt;br /&gt;
#'''Restore''': All parameters are restored to original.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Display DTI''': Select a DTI volume from the current mrml scene and see its tracts.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 95%&lt;br /&gt;
*test: 60%&lt;br /&gt;
** tensor estimation with existing clm: 95%&lt;br /&gt;
** alternative tensor estimation with new filter: 0%&lt;br /&gt;
*** filter for tensor rotation: 0%&lt;br /&gt;
** tractography fiducial seeding: 80%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22953</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22953"/>
		<updated>2008-03-16T23:44:47Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v5.jpg|new features added&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Undo''': Undo the last change of measurement/gradient values.&lt;br /&gt;
#'''Restore''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 95%&lt;br /&gt;
*test: 60%&lt;br /&gt;
** tensor estimation with existing clm: 95%&lt;br /&gt;
** alternative tensor estimation with new filter: 0%&lt;br /&gt;
*** filter for tensor rotation: 0%&lt;br /&gt;
** tractography fiducial seeding: 80%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22952</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22952"/>
		<updated>2008-03-16T23:44:16Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
%Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v5.jpg|new features added&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Undo''': Undo the last change of measurement/gradient values.&lt;br /&gt;
#'''Restore''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 95%&lt;br /&gt;
*test: 60%&lt;br /&gt;
** tensor estimation with existing clm: 95%&lt;br /&gt;
** alternative tensor estimation with new filter: 0%&lt;br /&gt;
*** filter for tensor rotation: 0%&lt;br /&gt;
** tractography fiducial seeding: 80%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22951</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22951"/>
		<updated>2008-03-16T23:43:18Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v5.jpg|new features added&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Undo''': Undo the last change of measurement/gradient values.&lt;br /&gt;
#'''Restore''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 95%&lt;br /&gt;
*test: 60%&lt;br /&gt;
** tensor estimation with existing clm: 95%&lt;br /&gt;
** alternative tensor estimation with new filter: 0%&lt;br /&gt;
*** filter for tensor rotation: 0%&lt;br /&gt;
** tractography fiducial seeding: 80%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22950</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22950"/>
		<updated>2008-03-16T23:43:05Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|new features added&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Undo''': Undo the last change of measurement/gradient values.&lt;br /&gt;
#'''Restore''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 95%&lt;br /&gt;
*test: 60%&lt;br /&gt;
** tensor estimation with existing clm: 95%&lt;br /&gt;
** alternative tensor estimation with new filter: 0%&lt;br /&gt;
*** filter for tensor rotation: 0%&lt;br /&gt;
** tractography fiducial seeding: 80%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=File:DWI_Gradient_Editor_v5.jpg&amp;diff=22949</id>
		<title>File:DWI Gradient Editor v5.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=File:DWI_Gradient_Editor_v5.jpg&amp;diff=22949"/>
		<updated>2008-03-16T23:42:12Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22878</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22878"/>
		<updated>2008-03-13T02:58:03Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Status / Implementation Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Undo''': Undo the last change of measurement/gradient values.&lt;br /&gt;
#'''Restore''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 95%&lt;br /&gt;
*test: 60%&lt;br /&gt;
** tensor estimation with existing clm: 95%&lt;br /&gt;
** alternative tensor estimation with new filter: 0%&lt;br /&gt;
*** filter for tensor rotation: 0%&lt;br /&gt;
** tractography fiducial seeding: 80%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22877</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22877"/>
		<updated>2008-03-13T02:54:29Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Status / Implementation Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Undo''': Undo the last change of measurement/gradient values.&lt;br /&gt;
#'''Restore''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 95%&lt;br /&gt;
*test: 75%&lt;br /&gt;
** tensor estimation with existing clm: 70%&lt;br /&gt;
** tractography fiducial seeding: 90%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Documentation:Programmatic_Invocation&amp;diff=22790</id>
		<title>Slicer3:Execution Model Documentation:Programmatic Invocation</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Documentation:Programmatic_Invocation&amp;diff=22790"/>
		<updated>2008-03-10T18:19:30Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Implementation Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
&lt;br /&gt;
A large amount of functionality is available in command line modules for processing images and models.  Some applications would like to use several modules together in a workflow or as a background processing task.&lt;br /&gt;
&lt;br /&gt;
== Implementation Example ==&lt;br /&gt;
&lt;br /&gt;
This example shows calling the Model Maker (from the Editor).  This example is in Tcl, but the same API can be used from C++ or Python.  The idea is to query for the Model Maker module (and bail out if it is not loaded).  Then to create a MRMLNode with the parameters you want for the model maker.  These would be the same parameters you would set interactively.  The model maker logic and gui classes are then told about the node and told to start processing.  The processing then goes on in the background.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  # create a model using the command line module&lt;br /&gt;
  # based on the current editor parameters&lt;br /&gt;
  #&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  # get the image data for the label layer&lt;br /&gt;
  #&lt;br /&gt;
  set sliceLogic [lindex [vtkSlicerSliceLogic ListInstances] 0]&lt;br /&gt;
  set layerLogic [$sliceLogic GetLabelLayer]&lt;br /&gt;
  set volumeNode [$layerLogic GetVolumeNode]&lt;br /&gt;
  if { $volumeNode == &amp;quot;&amp;quot; } {&lt;br /&gt;
    errorDialog &amp;quot;Cannot make model - no volume node for $layerLogic in $sliceLogic.&amp;quot;&lt;br /&gt;
    return&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  # find the Model Maker&lt;br /&gt;
  # - call Enter to be sure GUI has been built&lt;br /&gt;
  # - find the GUI - for non-tcl use, try vtkSlicerApplication::GetModuleGUIByName&lt;br /&gt;
  set modelMaker &amp;quot;&amp;quot;&lt;br /&gt;
  foreach gui [vtkCommandLineModuleGUI ListInstances] {&lt;br /&gt;
    if { [$gui GetGUIName] == &amp;quot;Model Maker&amp;quot; } {&lt;br /&gt;
      set modelMaker $gui&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if { $modelMaker == &amp;quot;&amp;quot; } {&lt;br /&gt;
    errorDialog &amp;quot;Cannot make model: no Model Maker Module found.&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $modelMaker Enter&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  # set up the model maker node&lt;br /&gt;
  #&lt;br /&gt;
  set moduleNode [$::slicer3::MRMLScene CreateNodeByClass &amp;quot;vtkMRMLCommandLineModuleNode&amp;quot;]&lt;br /&gt;
  $::slicer3::MRMLScene AddNode $moduleNode&lt;br /&gt;
  $moduleNode SetModuleDescription &amp;quot;Model Maker&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  $moduleNode SetParameterAsString &amp;quot;Name&amp;quot; &amp;quot;Quick Model&amp;quot;&lt;br /&gt;
  $moduleNode SetParameterAsString &amp;quot;FilterType&amp;quot; &amp;quot;Sinc&amp;quot;&lt;br /&gt;
  $moduleNode SetParameterAsBool &amp;quot;GenerateAll&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  $moduleNode SetParameterAsString &amp;quot;Labels&amp;quot; [EditorGetPaintLabel]&lt;br /&gt;
  $moduleNode SetParameterAsBool &amp;quot;JointSmooth&amp;quot; 1&lt;br /&gt;
  $moduleNode SetParameterAsBool &amp;quot;SplitNormals&amp;quot; 1&lt;br /&gt;
  $moduleNode SetParameterAsBool &amp;quot;PointNormals&amp;quot; 1&lt;br /&gt;
  $moduleNode SetParameterAsBool &amp;quot;SkipUnNamed&amp;quot; 1&lt;br /&gt;
  $moduleNode SetParameterAsInt &amp;quot;Start&amp;quot; -1&lt;br /&gt;
  $moduleNode SetParameterAsInt &amp;quot;End&amp;quot; -1&lt;br /&gt;
  if { [[$o(smooth) GetWidget] GetSelectedState] } {&lt;br /&gt;
    $moduleNode SetParameterAsDouble &amp;quot;Decimate&amp;quot; 0.25&lt;br /&gt;
    $moduleNode SetParameterAsDouble &amp;quot;Smooth&amp;quot; 10&lt;br /&gt;
  } else {&lt;br /&gt;
    $moduleNode SetParameterAsDouble &amp;quot;Decimate&amp;quot; 0&lt;br /&gt;
    $moduleNode SetParameterAsDouble &amp;quot;Smooth&amp;quot; 0&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $moduleNode SetParameterAsString &amp;quot;InputVolume&amp;quot; [$volumeNode GetID]&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  # output &lt;br /&gt;
  # - make a new hierarchy node if needed&lt;br /&gt;
  #&lt;br /&gt;
  set outHierarchy [[$::slicer3::MRMLScene GetNodesByClassByName &amp;quot;vtkMRMLModelHierarchyNode&amp;quot; &amp;quot;Editor Models&amp;quot;] GetItemAsObject 0]&lt;br /&gt;
  if { $outHierarchy == &amp;quot;&amp;quot; } {&lt;br /&gt;
    set outHierarchy [$::slicer3::MRMLScene CreateNodeByClass &amp;quot;vtkMRMLModelHierarchyNode&amp;quot;]&lt;br /&gt;
    $outHierarchy SetScene $::slicer3::MRMLScene&lt;br /&gt;
    $outHierarchy SetName &amp;quot;Editor Models&amp;quot;&lt;br /&gt;
    $::slicer3::MRMLScene AddNode $outHierarchy&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $moduleNode SetParameterAsString &amp;quot;ModelSceneFile&amp;quot; [$outHierarchy GetID]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  # &lt;br /&gt;
  # run the task (in the background)&lt;br /&gt;
  # - use the GUI to provide progress feedback&lt;br /&gt;
  # - use the GUI's Logic to invoke the task&lt;br /&gt;
  # - model will show up when the processing is finished&lt;br /&gt;
  #&lt;br /&gt;
  $modelMaker SetCommandLineModuleNode $moduleNode&lt;br /&gt;
  [$modelMaker GetLogic] SetCommandLineModuleNode $moduleNode&lt;br /&gt;
  [$modelMaker GetLogic] Apply $moduleNode&lt;br /&gt;
&lt;br /&gt;
  $this statusText &amp;quot;Model Making Started...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  # clean up our references&lt;br /&gt;
  #&lt;br /&gt;
  $moduleNode Delete&lt;br /&gt;
  $outHierarchy Delete&lt;br /&gt;
  $modelMaker Enter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22760</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22760"/>
		<updated>2008-03-09T03:45:22Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Status / Implementation Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Undo''': Undo the last change of measurement/gradient values.&lt;br /&gt;
#'''Restore''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 95%&lt;br /&gt;
*test: 95%&lt;br /&gt;
** tensor estimation with existing clm: 95%&lt;br /&gt;
** tractography fiducial seeding: 95%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Documentation:Programmatic_Invocation&amp;diff=22746</id>
		<title>Slicer3:Execution Model Documentation:Programmatic Invocation</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Execution_Model_Documentation:Programmatic_Invocation&amp;diff=22746"/>
		<updated>2008-03-07T19:28:34Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Implementation Example */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Goal ==&lt;br /&gt;
&lt;br /&gt;
A large amount of functionality is available in command line modules for processing images and models.  Some applications would like to use several modules together in a workflow or as a background processing task.&lt;br /&gt;
&lt;br /&gt;
== Implementation Example ==&lt;br /&gt;
&lt;br /&gt;
This example shows calling the Model Maker (from the Editor).  This example is in Tcl, but the same API can be used from C++ or Python.  The idea is to query for the Model Maker module (and bail out if it is not loaded).  Then to create a MRMLNode with the parameters you want for the model maker.  These would be the same parameters you would set interactively.  The model maker logic and gui classes are then told about the node and told to start processing.  The processing then goes on in the background.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  # create a model using the command line module&lt;br /&gt;
  # based on the current editor parameters&lt;br /&gt;
  #&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  # get the image data for the label layer&lt;br /&gt;
  #&lt;br /&gt;
  set sliceLogic [lindex [vtkSlicerSliceLogic ListInstances] 0]&lt;br /&gt;
  set layerLogic [$sliceLogic GetLabelLayer]&lt;br /&gt;
  set volumeNode [$layerLogic GetVolumeNode]&lt;br /&gt;
  if { $volumeNode == &amp;quot;&amp;quot; } {&lt;br /&gt;
    errorDialog &amp;quot;Cannot make model - no volume node for $layerLogic in $sliceLogic.&amp;quot;&lt;br /&gt;
    return&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  # find the Model Maker&lt;br /&gt;
  # - call Enter to be sure GUI has been built&lt;br /&gt;
  # - find the GUI - for non-tcl use, try vtkSlicerApplication::GetModuleByName&lt;br /&gt;
  set modelMaker &amp;quot;&amp;quot;&lt;br /&gt;
  foreach gui [vtkCommandLineModuleGUI ListInstances] {&lt;br /&gt;
    if { [$gui GetGUIName] == &amp;quot;Model Maker&amp;quot; } {&lt;br /&gt;
      set modelMaker $gui&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if { $modelMaker == &amp;quot;&amp;quot; } {&lt;br /&gt;
    errorDialog &amp;quot;Cannot make model: no Model Maker Module found.&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $modelMaker Enter&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  # set up the model maker node&lt;br /&gt;
  #&lt;br /&gt;
  set moduleNode [$::slicer3::MRMLScene CreateNodeByClass &amp;quot;vtkMRMLCommandLineModuleNode&amp;quot;]&lt;br /&gt;
  $::slicer3::MRMLScene AddNode $moduleNode&lt;br /&gt;
  $moduleNode SetModuleDescription &amp;quot;Model Maker&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  $moduleNode SetParameterAsString &amp;quot;Name&amp;quot; &amp;quot;Quick Model&amp;quot;&lt;br /&gt;
  $moduleNode SetParameterAsString &amp;quot;FilterType&amp;quot; &amp;quot;Sinc&amp;quot;&lt;br /&gt;
  $moduleNode SetParameterAsBool &amp;quot;GenerateAll&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
  $moduleNode SetParameterAsString &amp;quot;Labels&amp;quot; [EditorGetPaintLabel]&lt;br /&gt;
  $moduleNode SetParameterAsBool &amp;quot;JointSmooth&amp;quot; 1&lt;br /&gt;
  $moduleNode SetParameterAsBool &amp;quot;SplitNormals&amp;quot; 1&lt;br /&gt;
  $moduleNode SetParameterAsBool &amp;quot;PointNormals&amp;quot; 1&lt;br /&gt;
  $moduleNode SetParameterAsBool &amp;quot;SkipUnNamed&amp;quot; 1&lt;br /&gt;
  $moduleNode SetParameterAsInt &amp;quot;Start&amp;quot; -1&lt;br /&gt;
  $moduleNode SetParameterAsInt &amp;quot;End&amp;quot; -1&lt;br /&gt;
  if { [[$o(smooth) GetWidget] GetSelectedState] } {&lt;br /&gt;
    $moduleNode SetParameterAsDouble &amp;quot;Decimate&amp;quot; 0.25&lt;br /&gt;
    $moduleNode SetParameterAsDouble &amp;quot;Smooth&amp;quot; 10&lt;br /&gt;
  } else {&lt;br /&gt;
    $moduleNode SetParameterAsDouble &amp;quot;Decimate&amp;quot; 0&lt;br /&gt;
    $moduleNode SetParameterAsDouble &amp;quot;Smooth&amp;quot; 0&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $moduleNode SetParameterAsString &amp;quot;InputVolume&amp;quot; [$volumeNode GetID]&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  # output &lt;br /&gt;
  # - make a new hierarchy node if needed&lt;br /&gt;
  #&lt;br /&gt;
  set outHierarchy [[$::slicer3::MRMLScene GetNodesByClassByName &amp;quot;vtkMRMLModelHierarchyNode&amp;quot; &amp;quot;Editor Models&amp;quot;] GetItemAsObject 0]&lt;br /&gt;
  if { $outHierarchy == &amp;quot;&amp;quot; } {&lt;br /&gt;
    set outHierarchy [$::slicer3::MRMLScene CreateNodeByClass &amp;quot;vtkMRMLModelHierarchyNode&amp;quot;]&lt;br /&gt;
    $outHierarchy SetScene $::slicer3::MRMLScene&lt;br /&gt;
    $outHierarchy SetName &amp;quot;Editor Models&amp;quot;&lt;br /&gt;
    $::slicer3::MRMLScene AddNode $outHierarchy&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  $moduleNode SetParameterAsString &amp;quot;ModelSceneFile&amp;quot; [$outHierarchy GetID]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  # &lt;br /&gt;
  # run the task (in the background)&lt;br /&gt;
  # - use the GUI to provide progress feedback&lt;br /&gt;
  # - use the GUI's Logic to invoke the task&lt;br /&gt;
  # - model will show up when the processing is finished&lt;br /&gt;
  #&lt;br /&gt;
  $modelMaker SetCommandLineModuleNode $moduleNode&lt;br /&gt;
  [$modelMaker GetLogic] SetCommandLineModuleNode $moduleNode&lt;br /&gt;
  [$modelMaker GetLogic] Apply $moduleNode&lt;br /&gt;
&lt;br /&gt;
  $this statusText &amp;quot;Model Making Started...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  # clean up our references&lt;br /&gt;
  #&lt;br /&gt;
  $moduleNode Delete&lt;br /&gt;
  $outHierarchy Delete&lt;br /&gt;
  $modelMaker Enter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22524</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22524"/>
		<updated>2008-03-02T02:56:44Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* What you can do with the Gradient Editor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Undo''': Undo the last change of measurement/gradient values.&lt;br /&gt;
#'''Restore''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 95%&lt;br /&gt;
*test: 50%&lt;br /&gt;
** tensor estimation with existing clm: 80%&lt;br /&gt;
** tractography fiducial seeding: 10%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22523</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22523"/>
		<updated>2008-03-02T02:49:19Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Status / Implementation Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 95%&lt;br /&gt;
*test: 50%&lt;br /&gt;
** tensor estimation with existing clm: 80%&lt;br /&gt;
** tractography fiducial seeding: 10%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22521</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22521"/>
		<updated>2008-03-01T19:21:49Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Status / Implementation Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 95%&lt;br /&gt;
*test (gui/...): 50%&lt;br /&gt;
*writing master thesis: 5% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22520</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22520"/>
		<updated>2008-03-01T19:21:03Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Status / Implementation Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 95%&lt;br /&gt;
*test (gui/...): 50%&lt;br /&gt;
*writing master thesis: 0% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Data_Model&amp;diff=22516</id>
		<title>Slicer3:Data Model</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Data_Model&amp;diff=22516"/>
		<updated>2008-02-29T22:32:05Z</updated>

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

		<summary type="html">&lt;p&gt;Kerstin: /* Adding the module to the rest of Slicer3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How to implement an Interactive Module GUI for Slicer3 =&lt;br /&gt;
&lt;br /&gt;
== Virtual Methods ==&lt;br /&gt;
&lt;br /&gt;
At the slicer-developers tcon 2007-02-13, we discussed some adjustments to the virtual methods in vtkSlicerModuleGUI for better consistency and utility.  The following list defines the methods that a module needs to implement so the main application (Slicer3.cxx) can operate on all modules generically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
The following methods are defined by the vtkSlicerModuleGUI and typically won't be overriden:&lt;br /&gt;
&lt;br /&gt;
* '''Enter'''&lt;br /&gt;
** ''called when module is raised''&lt;br /&gt;
** ''calls CreateGUI if needed (instance variable tracks create state)''&lt;br /&gt;
** ''calls AddGUIObservers''&lt;br /&gt;
** ''calls UpdateGUI''&lt;br /&gt;
* '''Exit'''&lt;br /&gt;
** ''called when module is replaced by another''&lt;br /&gt;
** ''calls RemoveMRMLObservers''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following methods should be defined by the Module to implement the specific behavior:&lt;br /&gt;
&lt;br /&gt;
* '''CreateGUI'''&lt;br /&gt;
** ''instances and packs widgets''&lt;br /&gt;
* '''DestroyGUI'''&lt;br /&gt;
** ''typically called only by destructor''&lt;br /&gt;
** ''breaks any reference cycles''&lt;br /&gt;
** ''Deletes widgets''&lt;br /&gt;
* '''ProcessGUIEvents'''&lt;br /&gt;
** ''responds to events from widgets or slicer GUI classes''&lt;br /&gt;
** ''propagates data from GUI into MRML nodes''&lt;br /&gt;
* '''ProcessMRMLEvents'''&lt;br /&gt;
** ''responds to updates to MRML nodes''&lt;br /&gt;
** ''propagates data from MRML to widgets''&lt;br /&gt;
* '''AddGUIObservers'''&lt;br /&gt;
** ''set observers on widgets and GUI classes (use GUICallbackCommand local instance -- it will call ProcessGUIEvents)''&lt;br /&gt;
* '''AddMRMLObservers'''&lt;br /&gt;
** ''set observers on MRML nodes and scene (use MRMLCallbackCommand local instance -- it will call ProcessMRMLEvents)''&lt;br /&gt;
* '''RemoveGUIObservers'''&lt;br /&gt;
* '''RemoveMRMLObservers'''&lt;br /&gt;
* '''UpdateGUI'''&lt;br /&gt;
** ''copy state from MRML nodes to GUI/Widgets''&lt;br /&gt;
** ''if needed for efficiency, check the MTime for the MRML Node and the corresponding GUI and only update if needed (e.g. for a MultiColumnList or other widget the holds a lot of data)'' &lt;br /&gt;
* '''UpdateMRML'''&lt;br /&gt;
** ''copy state from GUI/Widgets to MRML''&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;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
'''NOTE: this description may change as Slicer3 moves from Beta to official release.'''&lt;br /&gt;
The figure below shows a current overview of the three classes a new module (called MyModule for example) will need to define (vtkSlicerMyModuleGUI, vtkSlicerMyModuleLogic and vtkMRMLMyModuleNode) and some of the methods those classes should include to utilize the Slicer3 infrastructure. These classes should reside in the Slicer3/Modules/MyModule/ directory. If there are only one or two MRML class files, these can be in the top directory; if there are many files, you can create a Slicer3/Modules/MyModule/MRML directory. Slicer3/Libs/MRML should only include nodes that are part of the &amp;quot;primary&amp;quot; MRML support, ''i.e.'' things that make sense to include in the MRML file for data interchange.&lt;br /&gt;
&lt;br /&gt;
[[Image:Slicer3MyModule.png|[[Image:Slicer3MyModule.png| Base classes for GUI, Logic and MRML ]]]]&lt;br /&gt;
&lt;br /&gt;
===Deriving your GUI class===&lt;br /&gt;
To create a Module GUI that expresses its interface in Slicer's shared UIpanel, derive your class (vtkSlicerMyModuleGUI) from vtkSlicerModuleGUI. For a Module GUI that expresses its interface in a different panel of the Main Slicer Window, or in a toplevel widget, derive vtkSlicerMyModuleGUI from vtkSlicerComponentGUI instead. Your GUI class will inherit application logic and MRML pointers, an API for setting and observing them, and a framework for defining MRML, Logic and GUI callbacks from its parent class. Specific mediator methods, other logic and MRML node pointers can be added to the module's class definition. Importantly, keep logic and MRML classes independent of the GUI to facilitate testing and command-line execution possible *without* instantiating the Slicer3 GUI.&lt;br /&gt;
&lt;br /&gt;
'''Example:''' An early example to work from is the GradientAnisotropicDiffusionFilter Module; define all the widgets you need within the class and create Get Macros for each of them. Define the methods you need from vtkSlicerModuleGUI and its parent class vtkSlicerComponentGUI, including BuildGUI(); in this method, you'll first add a page to the class's UIPanel (for now, only create one page).&lt;br /&gt;
&lt;br /&gt;
=== Two GUI styles ===&lt;br /&gt;
'''Two styles:''' Depending on whether you want a notebook-style GUI for your module (similar to the style used in Slicer2) or a set of stacked collapsible frames to contain different logical sections of your interface like &amp;quot;help&amp;quot; and &amp;quot;display&amp;quot;, your BuildGUI() method can be written in one of two ways. The '''notebook style''' may be appropriate for modules with long logical sections within their GUI, to minimize the amount of scrolling required of a user. The '''collapsing style''' may be appropriate for modules that have numerous logical sections, since the amount of horizontal space across which a notebook would array them is limited. The way these two styles are expressed in Slicer3's GUI panel is shown below.&lt;br /&gt;
&lt;br /&gt;
[[Image:S3ModuleStyles.png]]&lt;br /&gt;
&lt;br /&gt;
'''''Collapsing style:''''' The GradientAnisotropicDiffusionFilter Module example implements the collapsible style, first adding a single new Page in its UIPanel:&lt;br /&gt;
&lt;br /&gt;
  this-&amp;gt;UIPanel-&amp;gt;AddPage ( &amp;quot;MyModule&amp;quot;, &amp;quot;MyModule&amp;quot;, NULL );&lt;br /&gt;
&lt;br /&gt;
then creating a vtkSlicerModuleCollapsibleFrame widget for each logical section in the GUI, parenting each to the UIPanel's single PageWidget, then creating, configuring and packing them from top to bottom in the UIPanel's PageWidget. Each logical section's widgets can be organized inside each of the vtkSlicerModuleCollapsibleFrames. The superclass has some helper methods to construct consisten Help&amp;amp;About Frames across modules.&lt;br /&gt;
&lt;br /&gt;
  //--- help and about frame&lt;br /&gt;
  const char *help = &amp;quot;MyModule does the following...&amp;quot;;&lt;br /&gt;
  const char *about = &amp;quot;This work was supported by...&amp;quot;;&lt;br /&gt;
  vtkKWWidget *page = this-&amp;gt;UIPanel-&amp;gt;GetPageWidget (&amp;quot;MyModule&amp;quot;);&lt;br /&gt;
  this-&amp;gt;BuildHelpAndAboutFrame ( page, help, about );&lt;br /&gt;
&lt;br /&gt;
  //--- rest of the frames&lt;br /&gt;
  vtkSlicerModuleCollapsibleFrame *firstFrame = vtkSlicerModuleCollapsibleFrame::New ( );&lt;br /&gt;
  vtkSlicerModuleCollapsibleFrame *secondFrame = vtkSlicerModuleCollapsibleFrame::New ( );&lt;br /&gt;
  vtkSlicerModuleCollapsibleFrame *thirdFrame = vtkSlicerModuleCollapsibleFrame::New ( );&lt;br /&gt;
  vtkSlicerModuleCollapsibleFrame *forthFrame = vtkSlicerModuleCollapsibleFrame::New ( );&lt;br /&gt;
  ...&lt;br /&gt;
  //--- parenting the frames to the same UIpanel page&lt;br /&gt;
  firstFrame-&amp;gt;SetParent ( page );&lt;br /&gt;
  secondFrame-&amp;gt;SetParent ( page );&lt;br /&gt;
  ...&lt;br /&gt;
  //--- parenting widgets to the various frames&lt;br /&gt;
  this-&amp;gt;widget2-&amp;gt;SetParent ( firstFrame-&amp;gt;GetFrame () );&lt;br /&gt;
  this-&amp;gt;widget3-&amp;gt;SetParent ( secondFrame-&amp;gt;GetFrame () );&lt;br /&gt;
&lt;br /&gt;
'''''Notebook style:''''' To create a notebook style GUI (as there is no example yet, a little code will be included here), a new Page must be added to the UIPanel for every tab in the notebook:&lt;br /&gt;
&lt;br /&gt;
  //--- get a pointer to the KWUserInterfaceManagerNotebook&lt;br /&gt;
  vtkKWUserInterfaceManagerNotebook *nbm = vtkKWUserInterfaceManagerNotebook::SafeDownCast ( this-&amp;gt;UIPanel-&amp;gt;GetUserInterfaceManager());&lt;br /&gt;
  //--- help and about frame&lt;br /&gt;
  this-&amp;gt;UIPanel-&amp;gt;AddPage ( &amp;quot;Help&amp;amp;About&amp;quot;, &amp;quot;Information about using this module&amp;quot;, NULL );&lt;br /&gt;
  const char *help = &amp;quot;MyModule does the following...&amp;quot;;&lt;br /&gt;
  const char *about = &amp;quot;This work was supported by...&amp;quot;;&lt;br /&gt;
  vtkKWWidget *page = this-&amp;gt;UIPanel-&amp;gt;GetPageWidget (&amp;quot;Help&amp;quot;);&lt;br /&gt;
  this-&amp;gt;BuildHelpAndAboutFrame ( page, help, about );&lt;br /&gt;
&lt;br /&gt;
  //--- pages for other frames&lt;br /&gt;
  int page1ID = this-&amp;gt;UIPanel-&amp;gt;AddPage ( &amp;quot;First&amp;quot;, &amp;quot;Functionality for some logical piece of module&amp;quot;, NULL );&lt;br /&gt;
  int page2ID = this-&amp;gt;UIPanel-&amp;gt;AddPage ( &amp;quot;Second&amp;quot;, &amp;quot;Functionality for another logical piece of module&amp;quot;, NULL );&lt;br /&gt;
&lt;br /&gt;
  //--- enabling or disabling notebook tabs&lt;br /&gt;
  nbm-&amp;gt;GetNotebook()-&amp;gt;SetPageEnabled ( page1ID, 1 );&lt;br /&gt;
  nbm-&amp;gt;GetNotebook()-&amp;gt;SetPageEnabled ( page2ID, 0 );&lt;br /&gt;
&lt;br /&gt;
Widgets to be packed within each notebook page are parented to the PageWidget:&lt;br /&gt;
&lt;br /&gt;
  this-&amp;gt;widget2-&amp;gt;SetParent ( this-&amp;gt;UIPanel-&amp;gt;GetPageWidget ( &amp;quot;First&amp;quot; ) );&lt;br /&gt;
  this-&amp;gt;widget3-&amp;gt;SetParent ( this-&amp;gt;UIPanel-&amp;gt;GetPageWidget ( &amp;quot;Second&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
or can be parented to a widget already parented to the PageWidget. Then they themselves can be created, configured, and packed in the same manner as they are in the GradientAnisotropicDiffusionFilter Module.&lt;br /&gt;
&lt;br /&gt;
=== Defining methods ===&lt;br /&gt;
'''Methods to define:''' Define the methods you require from vtkSlicerComponentGUI base class, like: AddGUIObservers(), RemoveGUIObservers(), ProcessLogicEvents(), ProcessGUIEevents(), ProcessMRMLEvents(), Enter() and Exit(); and whatever else your module needs. (Eventually, available modules will be automatically detected, but this is not yet implemented; then, the Enter() method will probably be made to call the BuildGUI() method. For now, instantiate your class in Slicer3.cxx and call its BuildGUI() and other methods, following the pattern for other modules established there.)&lt;br /&gt;
&lt;br /&gt;
=== Adding and removing observers ===&lt;br /&gt;
'''Adding observers:''' In AddGUIObservers, add an observer on each widget whose events you want to process. When an event is observed, the ProcessGUIEvents() method is called via the GUICallbackCommand; define this class to propagate information from the GUI to logic and MRML. Though it is tempting, try not to use ProcessGUIEvents() to update the GUI state directly -- just modify the Logic state, and allow observers on the logic and subsequent processing in ProcessLogicEvents() and ProcessMRMLEvents() to bring that state change BACK into the GUI.&lt;br /&gt;
&lt;br /&gt;
'''Removing observers:''' In RemoveGUIObservers, make sure you remove every observer you've added to widgets in the GUI before calling Delete() on your widget. Make sure you call SetAndObserveMRML() and SetAndObserveLogic( ) with NULL pointers in your GUI class destructor to remove all observers on MRML and Logic that you have created.&lt;br /&gt;
&lt;br /&gt;
=== Adding and removing references ===&lt;br /&gt;
For convenience, you may want to define pointers to Slicer's MainViewer, or to the SliceViewers, etc. Before Delete() can be called on anything you are referencing, you'll need to release the references. (Failure to release references can result in vtkDebugLeak reports on Application exit). The virtual method TearDownGUI() (inherited from vtkSlicerComponentGUI) can be defined for this purpose. References may be released in this method, and you can also use this method to call RemoveGUIObservers() if you don't want to explicitly call that method.&lt;br /&gt;
&lt;br /&gt;
=== Defining new widgets ===&lt;br /&gt;
'''Defining your own widgets:''' The framework for doing this is still evolving. Currently there are two types of new widgets, those defined as extensions to vtkKW (like vtkKWWindowLevelThresholdEditor.h/cxx) and those defined as Slicer-specific widgets, (like vtkSlicerSliceControlWidget.h/cxx, derived from the vtkSlicerWidget.h/cxx base class). The Slicer widgets have methods for putting observers on their widget components, Logic and MRML, and processing events as well. Thus GUI classes that instance them do not have to manage events for them if the widgets' methods are used instead.&lt;br /&gt;
&lt;br /&gt;
=== Using Undo and Redo ===&lt;br /&gt;
'''Undo:''' Make sure you process those events that mark junctures at which MRML state should be saved for Undo/Redo (using MRML's SaveStateForUndo() method. For instance, when an entry widget's value has changed, before changing a parameter in the appropriate MRML node, make a call to the MRMLScene's SaveStateForUndo() method with that node as a parameter. Save MRML state at reasonable junctures: for instance, for scale widgets, save MRML state when the scale starts changing, rather than continuously as the scale changes. For an example of they way SaveStateForUndo() is called, see slicer3/Base/GUI/vtkSlicerSliceControllerWidget.cxx. A detailed description of how undo/redo works, and how to use it in your module is available [[Slicer3:Data_Model#Undo.2FRedo_Mechanism | here]].&lt;br /&gt;
&lt;br /&gt;
=== Adding the module to the rest of Slicer3 ===&lt;br /&gt;
'''Other files you will have to touch:''' For now, to add your module to Slicer3, create a new instance of vtkSlicer''MyModule''Logic and vtkSlicer''MyModule''GUI in Applications/GUI/Slicer3.cxx, and follow the pattern used by the GradientAnisotropicDiffusionFilter module for now, until the framework is developed for Slicer3 to autodetect your module and do the right things. Then:&lt;br /&gt;
&lt;br /&gt;
* create your own module folder in the Slicer3/Modules directory&lt;br /&gt;
* create your own CMakeLists.txt file &lt;br /&gt;
* create the following files: vtk''MyModule''Win32Header.h, vtk''MyModule''Configure.h.in and vtk''MyModule''.h following the pattern set by other Modules (See [[Slicer3:Module Link Setup for Windows]])&lt;br /&gt;
* add your module SUBDIR to the CMakeLists.txt file in the Slicer3/Modules directory above.&lt;br /&gt;
* include relevant .h files in Slicer3/Applications/GUI/Slicer3.cxx&lt;br /&gt;
* specify your module's source and binary Include directories in Slicer3/Application/GUI/CMakeLists.txt&lt;br /&gt;
* and include your module in the CMakeLists.txt target link libraries&lt;br /&gt;
&lt;br /&gt;
===Add a module-switch in CMake===&lt;br /&gt;
You can add an automatic on/off switch to the ccmake configuration GUI, which will make compilation and development for the user easier.&lt;br /&gt;
To do this add the following to two CMakeLists.txt und the Slicer3.cxx files:&lt;br /&gt;
&lt;br /&gt;
* add the following lines to your Slicer3/Module/MyModule/CMakeLists.txt&lt;br /&gt;
 PROJECT(MyModule)&lt;br /&gt;
 &lt;br /&gt;
 OPTION(MYMODULE &amp;quot;Do you want to build the MyModule?&amp;quot;)&lt;br /&gt;
 IF(MYMODULE)&lt;br /&gt;
 ... (Rest of the file)&lt;br /&gt;
 ENDIF(MYMODULE)&lt;br /&gt;
&lt;br /&gt;
* after this you have MYMODULE as a variable which says if your module is build or not&lt;br /&gt;
* but we want also to exclude the module library and our source in the Slicer3.cxx file if the module is not build&lt;br /&gt;
* in /Slicer3/Applications/GUI/CMakeLists.txt add the following directly above TARGET_LINK_LIBRARIES(...&lt;br /&gt;
 IF(MYMODULE)&lt;br /&gt;
  SET(MYMODULE_LINK_LIB MyModule)&lt;br /&gt;
 ELSE(MYMODULE)&lt;br /&gt;
  ADD_DEFINITIONS(-DMYMODULE_DEBUG)&lt;br /&gt;
 ENDIF(MYMODULE)&lt;br /&gt;
* then add to the TARGET_LINK_LIBRARIES(...${MYMODULE_LINK_LIB}) instead of your previous entry&lt;br /&gt;
* the ''ADD_DEFINITIONS'' declaration adds a preprocessor symbol to the compile which we use to exclude our code from the /Slicer3/Applications/GUI/Slicer3.cxx&lt;br /&gt;
* just border your code in /Slicer3/Applications/GUI/Slicer3.cxx with the following:&lt;br /&gt;
 #ifndef MYMODULE_DEBUG&lt;br /&gt;
 ...(your code/includes)&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
'''Helpful tips:'''&lt;br /&gt;
* Make the vtkModuleCollapsibleFrames which contain the major logical sections of your module members of your module GUI class and expose them through your API. Doing so helps other developers, who may want to offer a jump to your module's functionality, to programmatically raise your UIpanel and expand the frame they're interested in. This paradigm will help to promote fluid navigation of slicer's interface and the reuse of existing functionality.&lt;br /&gt;
&lt;br /&gt;
* See [[Slicer3:Module Link Setup for Windows]]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:How_to_implement_an_Interactive_Module_GUI&amp;diff=22503</id>
		<title>Slicer3:How to implement an Interactive Module GUI</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:How_to_implement_an_Interactive_Module_GUI&amp;diff=22503"/>
		<updated>2008-02-29T21:11:29Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Adding the module to the rest of Slicer3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How to implement an Interactive Module GUI for Slicer3 =&lt;br /&gt;
&lt;br /&gt;
== Virtual Methods ==&lt;br /&gt;
&lt;br /&gt;
At the slicer-developers tcon 2007-02-13, we discussed some adjustments to the virtual methods in vtkSlicerModuleGUI for better consistency and utility.  The following list defines the methods that a module needs to implement so the main application (Slicer3.cxx) can operate on all modules generically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
The following methods are defined by the vtkSlicerModuleGUI and typically won't be overriden:&lt;br /&gt;
&lt;br /&gt;
* '''Enter'''&lt;br /&gt;
** ''called when module is raised''&lt;br /&gt;
** ''calls CreateGUI if needed (instance variable tracks create state)''&lt;br /&gt;
** ''calls AddGUIObservers''&lt;br /&gt;
** ''calls UpdateGUI''&lt;br /&gt;
* '''Exit'''&lt;br /&gt;
** ''called when module is replaced by another''&lt;br /&gt;
** ''calls RemoveMRMLObservers''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following methods should be defined by the Module to implement the specific behavior:&lt;br /&gt;
&lt;br /&gt;
* '''CreateGUI'''&lt;br /&gt;
** ''instances and packs widgets''&lt;br /&gt;
* '''DestroyGUI'''&lt;br /&gt;
** ''typically called only by destructor''&lt;br /&gt;
** ''breaks any reference cycles''&lt;br /&gt;
** ''Deletes widgets''&lt;br /&gt;
* '''ProcessGUIEvents'''&lt;br /&gt;
** ''responds to events from widgets or slicer GUI classes''&lt;br /&gt;
** ''propagates data from GUI into MRML nodes''&lt;br /&gt;
* '''ProcessMRMLEvents'''&lt;br /&gt;
** ''responds to updates to MRML nodes''&lt;br /&gt;
** ''propagates data from MRML to widgets''&lt;br /&gt;
* '''AddGUIObservers'''&lt;br /&gt;
** ''set observers on widgets and GUI classes (use GUICallbackCommand local instance -- it will call ProcessGUIEvents)''&lt;br /&gt;
* '''AddMRMLObservers'''&lt;br /&gt;
** ''set observers on MRML nodes and scene (use MRMLCallbackCommand local instance -- it will call ProcessMRMLEvents)''&lt;br /&gt;
* '''RemoveGUIObservers'''&lt;br /&gt;
* '''RemoveMRMLObservers'''&lt;br /&gt;
* '''UpdateGUI'''&lt;br /&gt;
** ''copy state from MRML nodes to GUI/Widgets''&lt;br /&gt;
** ''if needed for efficiency, check the MTime for the MRML Node and the corresponding GUI and only update if needed (e.g. for a MultiColumnList or other widget the holds a lot of data)'' &lt;br /&gt;
* '''UpdateMRML'''&lt;br /&gt;
** ''copy state from GUI/Widgets to MRML''&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;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
'''NOTE: this description may change as Slicer3 moves from Beta to official release.'''&lt;br /&gt;
The figure below shows a current overview of the three classes a new module (called MyModule for example) will need to define (vtkSlicerMyModuleGUI, vtkSlicerMyModuleLogic and vtkMRMLMyModuleNode) and some of the methods those classes should include to utilize the Slicer3 infrastructure. These classes should reside in the Slicer3/Modules/MyModule/ directory. If there are only one or two MRML class files, these can be in the top directory; if there are many files, you can create a Slicer3/Modules/MyModule/MRML directory. Slicer3/Libs/MRML should only include nodes that are part of the &amp;quot;primary&amp;quot; MRML support, ''i.e.'' things that make sense to include in the MRML file for data interchange.&lt;br /&gt;
&lt;br /&gt;
[[Image:Slicer3MyModule.png|[[Image:Slicer3MyModule.png| Base classes for GUI, Logic and MRML ]]]]&lt;br /&gt;
&lt;br /&gt;
===Deriving your GUI class===&lt;br /&gt;
To create a Module GUI that expresses its interface in Slicer's shared UIpanel, derive your class (vtkSlicerMyModuleGUI) from vtkSlicerModuleGUI. For a Module GUI that expresses its interface in a different panel of the Main Slicer Window, or in a toplevel widget, derive vtkSlicerMyModuleGUI from vtkSlicerComponentGUI instead. Your GUI class will inherit application logic and MRML pointers, an API for setting and observing them, and a framework for defining MRML, Logic and GUI callbacks from its parent class. Specific mediator methods, other logic and MRML node pointers can be added to the module's class definition. Importantly, keep logic and MRML classes independent of the GUI to facilitate testing and command-line execution possible *without* instantiating the Slicer3 GUI.&lt;br /&gt;
&lt;br /&gt;
'''Example:''' An early example to work from is the GradientAnisotropicDiffusionFilter Module; define all the widgets you need within the class and create Get Macros for each of them. Define the methods you need from vtkSlicerModuleGUI and its parent class vtkSlicerComponentGUI, including BuildGUI(); in this method, you'll first add a page to the class's UIPanel (for now, only create one page).&lt;br /&gt;
&lt;br /&gt;
=== Two GUI styles ===&lt;br /&gt;
'''Two styles:''' Depending on whether you want a notebook-style GUI for your module (similar to the style used in Slicer2) or a set of stacked collapsible frames to contain different logical sections of your interface like &amp;quot;help&amp;quot; and &amp;quot;display&amp;quot;, your BuildGUI() method can be written in one of two ways. The '''notebook style''' may be appropriate for modules with long logical sections within their GUI, to minimize the amount of scrolling required of a user. The '''collapsing style''' may be appropriate for modules that have numerous logical sections, since the amount of horizontal space across which a notebook would array them is limited. The way these two styles are expressed in Slicer3's GUI panel is shown below.&lt;br /&gt;
&lt;br /&gt;
[[Image:S3ModuleStyles.png]]&lt;br /&gt;
&lt;br /&gt;
'''''Collapsing style:''''' The GradientAnisotropicDiffusionFilter Module example implements the collapsible style, first adding a single new Page in its UIPanel:&lt;br /&gt;
&lt;br /&gt;
  this-&amp;gt;UIPanel-&amp;gt;AddPage ( &amp;quot;MyModule&amp;quot;, &amp;quot;MyModule&amp;quot;, NULL );&lt;br /&gt;
&lt;br /&gt;
then creating a vtkSlicerModuleCollapsibleFrame widget for each logical section in the GUI, parenting each to the UIPanel's single PageWidget, then creating, configuring and packing them from top to bottom in the UIPanel's PageWidget. Each logical section's widgets can be organized inside each of the vtkSlicerModuleCollapsibleFrames. The superclass has some helper methods to construct consisten Help&amp;amp;About Frames across modules.&lt;br /&gt;
&lt;br /&gt;
  //--- help and about frame&lt;br /&gt;
  const char *help = &amp;quot;MyModule does the following...&amp;quot;;&lt;br /&gt;
  const char *about = &amp;quot;This work was supported by...&amp;quot;;&lt;br /&gt;
  vtkKWWidget *page = this-&amp;gt;UIPanel-&amp;gt;GetPageWidget (&amp;quot;MyModule&amp;quot;);&lt;br /&gt;
  this-&amp;gt;BuildHelpAndAboutFrame ( page, help, about );&lt;br /&gt;
&lt;br /&gt;
  //--- rest of the frames&lt;br /&gt;
  vtkSlicerModuleCollapsibleFrame *firstFrame = vtkSlicerModuleCollapsibleFrame::New ( );&lt;br /&gt;
  vtkSlicerModuleCollapsibleFrame *secondFrame = vtkSlicerModuleCollapsibleFrame::New ( );&lt;br /&gt;
  vtkSlicerModuleCollapsibleFrame *thirdFrame = vtkSlicerModuleCollapsibleFrame::New ( );&lt;br /&gt;
  vtkSlicerModuleCollapsibleFrame *forthFrame = vtkSlicerModuleCollapsibleFrame::New ( );&lt;br /&gt;
  ...&lt;br /&gt;
  //--- parenting the frames to the same UIpanel page&lt;br /&gt;
  firstFrame-&amp;gt;SetParent ( page );&lt;br /&gt;
  secondFrame-&amp;gt;SetParent ( page );&lt;br /&gt;
  ...&lt;br /&gt;
  //--- parenting widgets to the various frames&lt;br /&gt;
  this-&amp;gt;widget2-&amp;gt;SetParent ( firstFrame-&amp;gt;GetFrame () );&lt;br /&gt;
  this-&amp;gt;widget3-&amp;gt;SetParent ( secondFrame-&amp;gt;GetFrame () );&lt;br /&gt;
&lt;br /&gt;
'''''Notebook style:''''' To create a notebook style GUI (as there is no example yet, a little code will be included here), a new Page must be added to the UIPanel for every tab in the notebook:&lt;br /&gt;
&lt;br /&gt;
  //--- get a pointer to the KWUserInterfaceManagerNotebook&lt;br /&gt;
  vtkKWUserInterfaceManagerNotebook *nbm = vtkKWUserInterfaceManagerNotebook::SafeDownCast ( this-&amp;gt;UIPanel-&amp;gt;GetUserInterfaceManager());&lt;br /&gt;
  //--- help and about frame&lt;br /&gt;
  this-&amp;gt;UIPanel-&amp;gt;AddPage ( &amp;quot;Help&amp;amp;About&amp;quot;, &amp;quot;Information about using this module&amp;quot;, NULL );&lt;br /&gt;
  const char *help = &amp;quot;MyModule does the following...&amp;quot;;&lt;br /&gt;
  const char *about = &amp;quot;This work was supported by...&amp;quot;;&lt;br /&gt;
  vtkKWWidget *page = this-&amp;gt;UIPanel-&amp;gt;GetPageWidget (&amp;quot;Help&amp;quot;);&lt;br /&gt;
  this-&amp;gt;BuildHelpAndAboutFrame ( page, help, about );&lt;br /&gt;
&lt;br /&gt;
  //--- pages for other frames&lt;br /&gt;
  int page1ID = this-&amp;gt;UIPanel-&amp;gt;AddPage ( &amp;quot;First&amp;quot;, &amp;quot;Functionality for some logical piece of module&amp;quot;, NULL );&lt;br /&gt;
  int page2ID = this-&amp;gt;UIPanel-&amp;gt;AddPage ( &amp;quot;Second&amp;quot;, &amp;quot;Functionality for another logical piece of module&amp;quot;, NULL );&lt;br /&gt;
&lt;br /&gt;
  //--- enabling or disabling notebook tabs&lt;br /&gt;
  nbm-&amp;gt;GetNotebook()-&amp;gt;SetPageEnabled ( page1ID, 1 );&lt;br /&gt;
  nbm-&amp;gt;GetNotebook()-&amp;gt;SetPageEnabled ( page2ID, 0 );&lt;br /&gt;
&lt;br /&gt;
Widgets to be packed within each notebook page are parented to the PageWidget:&lt;br /&gt;
&lt;br /&gt;
  this-&amp;gt;widget2-&amp;gt;SetParent ( this-&amp;gt;UIPanel-&amp;gt;GetPageWidget ( &amp;quot;First&amp;quot; ) );&lt;br /&gt;
  this-&amp;gt;widget3-&amp;gt;SetParent ( this-&amp;gt;UIPanel-&amp;gt;GetPageWidget ( &amp;quot;Second&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
or can be parented to a widget already parented to the PageWidget. Then they themselves can be created, configured, and packed in the same manner as they are in the GradientAnisotropicDiffusionFilter Module.&lt;br /&gt;
&lt;br /&gt;
=== Defining methods ===&lt;br /&gt;
'''Methods to define:''' Define the methods you require from vtkSlicerComponentGUI base class, like: AddGUIObservers(), RemoveGUIObservers(), ProcessLogicEvents(), ProcessGUIEevents(), ProcessMRMLEvents(), Enter() and Exit(); and whatever else your module needs. (Eventually, available modules will be automatically detected, but this is not yet implemented; then, the Enter() method will probably be made to call the BuildGUI() method. For now, instantiate your class in Slicer3.cxx and call its BuildGUI() and other methods, following the pattern for other modules established there.)&lt;br /&gt;
&lt;br /&gt;
=== Adding and removing observers ===&lt;br /&gt;
'''Adding observers:''' In AddGUIObservers, add an observer on each widget whose events you want to process. When an event is observed, the ProcessGUIEvents() method is called via the GUICallbackCommand; define this class to propagate information from the GUI to logic and MRML. Though it is tempting, try not to use ProcessGUIEvents() to update the GUI state directly -- just modify the Logic state, and allow observers on the logic and subsequent processing in ProcessLogicEvents() and ProcessMRMLEvents() to bring that state change BACK into the GUI.&lt;br /&gt;
&lt;br /&gt;
'''Removing observers:''' In RemoveGUIObservers, make sure you remove every observer you've added to widgets in the GUI before calling Delete() on your widget. Make sure you call SetAndObserveMRML() and SetAndObserveLogic( ) with NULL pointers in your GUI class destructor to remove all observers on MRML and Logic that you have created.&lt;br /&gt;
&lt;br /&gt;
=== Adding and removing references ===&lt;br /&gt;
For convenience, you may want to define pointers to Slicer's MainViewer, or to the SliceViewers, etc. Before Delete() can be called on anything you are referencing, you'll need to release the references. (Failure to release references can result in vtkDebugLeak reports on Application exit). The virtual method TearDownGUI() (inherited from vtkSlicerComponentGUI) can be defined for this purpose. References may be released in this method, and you can also use this method to call RemoveGUIObservers() if you don't want to explicitly call that method.&lt;br /&gt;
&lt;br /&gt;
=== Defining new widgets ===&lt;br /&gt;
'''Defining your own widgets:''' The framework for doing this is still evolving. Currently there are two types of new widgets, those defined as extensions to vtkKW (like vtkKWWindowLevelThresholdEditor.h/cxx) and those defined as Slicer-specific widgets, (like vtkSlicerSliceControlWidget.h/cxx, derived from the vtkSlicerWidget.h/cxx base class). The Slicer widgets have methods for putting observers on their widget components, Logic and MRML, and processing events as well. Thus GUI classes that instance them do not have to manage events for them if the widgets' methods are used instead.&lt;br /&gt;
&lt;br /&gt;
=== Using Undo and Redo ===&lt;br /&gt;
'''Undo:''' Make sure you process those events that mark junctures at which MRML state should be saved for Undo/Redo (using MRML's SaveStateForUndo() method. For instance, when an entry widget's value has changed, before changing a parameter in the appropriate MRML node, make a call to the MRMLScene's SaveStateForUndo() method with that node as a parameter. Save MRML state at reasonable junctures: for instance, for scale widgets, save MRML state when the scale starts changing, rather than continuously as the scale changes. For an example of they way SaveStateForUndo() is called, see slicer3/Base/GUI/vtkSlicerSliceControllerWidget.cxx. A detailed description of how undo/redo works, and how to use it in your module is available [[Slicer3:Data_Model#Undo.2FRedo_Mechanism | here]].&lt;br /&gt;
&lt;br /&gt;
=== Adding the module to the rest of Slicer3 ===&lt;br /&gt;
'''Other files you will have to touch:''' For now, to add your module to Slicer3, create a new instance of vtkSlicerMyModuleLogic and vtkSlicerMyModuleGUI in Applications/GUI/Slicer3.cxx, and follow the pattern used by the GradientAnisotropicDiffusionFilter module for now, until the framework is developed for Slicer3 to autodetect your module and do the right things. Then:&lt;br /&gt;
&lt;br /&gt;
* create your own module folder in the Slicer3/Modules directory&lt;br /&gt;
* create your own CMakeLists.txt file &lt;br /&gt;
* create the following files: vtkMyModuleWin32Header.h, vtkMyModuleConfigure.h.in, vtkMyModule.h following the pattern set by other Modules (See [[Slicer3:Module Link Setup for Windows]])&lt;br /&gt;
* add your module SUBDIR to the CMakeLists.txt file in the Slicer3/Modules directory above.&lt;br /&gt;
* include relevant .h files in Slicer3/Applications/GUI/Slicer3.cxx&lt;br /&gt;
* specify your module's source and binary Include directories in Slicer3/Application/GUI/CMakeLists.txt&lt;br /&gt;
* and include your module in the CMakeLists.txt target link libraries&lt;br /&gt;
&lt;br /&gt;
===Add a module-switch in CMake===&lt;br /&gt;
You can add an automatic on/off switch to the ccmake configuration GUI, which will make compilation and development for the user easier.&lt;br /&gt;
To do this add the following to two CMakeLists.txt und the Slicer3.cxx files:&lt;br /&gt;
&lt;br /&gt;
* add the following lines to your Slicer3/Module/MyModule/CMakeLists.txt&lt;br /&gt;
 PROJECT(MyModule)&lt;br /&gt;
 &lt;br /&gt;
 OPTION(MYMODULE &amp;quot;Do you want to build the MyModule?&amp;quot;)&lt;br /&gt;
 IF(MYMODULE)&lt;br /&gt;
 ... (Rest of the file)&lt;br /&gt;
 ENDIF(MYMODULE)&lt;br /&gt;
&lt;br /&gt;
* after this you have MYMODULE as a variable which says if your module is build or not&lt;br /&gt;
* but we want also to exclude the module library and our source in the Slicer3.cxx file if the module is not build&lt;br /&gt;
* in /Slicer3/Applications/GUI/CMakeLists.txt add the following directly above TARGET_LINK_LIBRARIES(...&lt;br /&gt;
 IF(MYMODULE)&lt;br /&gt;
  SET(MYMODULE_LINK_LIB MyModule)&lt;br /&gt;
 ELSE(MYMODULE)&lt;br /&gt;
  ADD_DEFINITIONS(-DMYMODULE_DEBUG)&lt;br /&gt;
 ENDIF(MYMODULE)&lt;br /&gt;
* then add to the TARGET_LINK_LIBRARIES(...${MYMODULE_LINK_LIB}) instead of your previous entry&lt;br /&gt;
* the ''ADD_DEFINITIONS'' declaration adds a preprocessor symbol to the compile which we use to exclude our code from the /Slicer3/Applications/GUI/Slicer3.cxx&lt;br /&gt;
* just border your code in /Slicer3/Applications/GUI/Slicer3.cxx with the following:&lt;br /&gt;
 #ifndef MYMODULE_DEBUG&lt;br /&gt;
 ...(your code/includes)&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
'''Helpful tips:'''&lt;br /&gt;
* Make the vtkModuleCollapsibleFrames which contain the major logical sections of your module members of your module GUI class and expose them through your API. Doing so helps other developers, who may want to offer a jump to your module's functionality, to programmatically raise your UIpanel and expand the frame they're interested in. This paradigm will help to promote fluid navigation of slicer's interface and the reuse of existing functionality.&lt;br /&gt;
&lt;br /&gt;
* See [[Slicer3:Module Link Setup for Windows]]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:How_to_implement_an_Interactive_Module_GUI&amp;diff=22502</id>
		<title>Slicer3:How to implement an Interactive Module GUI</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:How_to_implement_an_Interactive_Module_GUI&amp;diff=22502"/>
		<updated>2008-02-29T21:09:54Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Adding the module to the rest of Slicer3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How to implement an Interactive Module GUI for Slicer3 =&lt;br /&gt;
&lt;br /&gt;
== Virtual Methods ==&lt;br /&gt;
&lt;br /&gt;
At the slicer-developers tcon 2007-02-13, we discussed some adjustments to the virtual methods in vtkSlicerModuleGUI for better consistency and utility.  The following list defines the methods that a module needs to implement so the main application (Slicer3.cxx) can operate on all modules generically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
The following methods are defined by the vtkSlicerModuleGUI and typically won't be overriden:&lt;br /&gt;
&lt;br /&gt;
* '''Enter'''&lt;br /&gt;
** ''called when module is raised''&lt;br /&gt;
** ''calls CreateGUI if needed (instance variable tracks create state)''&lt;br /&gt;
** ''calls AddGUIObservers''&lt;br /&gt;
** ''calls UpdateGUI''&lt;br /&gt;
* '''Exit'''&lt;br /&gt;
** ''called when module is replaced by another''&lt;br /&gt;
** ''calls RemoveMRMLObservers''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following methods should be defined by the Module to implement the specific behavior:&lt;br /&gt;
&lt;br /&gt;
* '''CreateGUI'''&lt;br /&gt;
** ''instances and packs widgets''&lt;br /&gt;
* '''DestroyGUI'''&lt;br /&gt;
** ''typically called only by destructor''&lt;br /&gt;
** ''breaks any reference cycles''&lt;br /&gt;
** ''Deletes widgets''&lt;br /&gt;
* '''ProcessGUIEvents'''&lt;br /&gt;
** ''responds to events from widgets or slicer GUI classes''&lt;br /&gt;
** ''propagates data from GUI into MRML nodes''&lt;br /&gt;
* '''ProcessMRMLEvents'''&lt;br /&gt;
** ''responds to updates to MRML nodes''&lt;br /&gt;
** ''propagates data from MRML to widgets''&lt;br /&gt;
* '''AddGUIObservers'''&lt;br /&gt;
** ''set observers on widgets and GUI classes (use GUICallbackCommand local instance -- it will call ProcessGUIEvents)''&lt;br /&gt;
* '''AddMRMLObservers'''&lt;br /&gt;
** ''set observers on MRML nodes and scene (use MRMLCallbackCommand local instance -- it will call ProcessMRMLEvents)''&lt;br /&gt;
* '''RemoveGUIObservers'''&lt;br /&gt;
* '''RemoveMRMLObservers'''&lt;br /&gt;
* '''UpdateGUI'''&lt;br /&gt;
** ''copy state from MRML nodes to GUI/Widgets''&lt;br /&gt;
** ''if needed for efficiency, check the MTime for the MRML Node and the corresponding GUI and only update if needed (e.g. for a MultiColumnList or other widget the holds a lot of data)'' &lt;br /&gt;
* '''UpdateMRML'''&lt;br /&gt;
** ''copy state from GUI/Widgets to MRML''&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;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
'''NOTE: this description may change as Slicer3 moves from Beta to official release.'''&lt;br /&gt;
The figure below shows a current overview of the three classes a new module (called MyModule for example) will need to define (vtkSlicerMyModuleGUI, vtkSlicerMyModuleLogic and vtkMRMLMyModuleNode) and some of the methods those classes should include to utilize the Slicer3 infrastructure. These classes should reside in the Slicer3/Modules/MyModule/ directory. If there are only one or two MRML class files, these can be in the top directory; if there are many files, you can create a Slicer3/Modules/MyModule/MRML directory. Slicer3/Libs/MRML should only include nodes that are part of the &amp;quot;primary&amp;quot; MRML support, ''i.e.'' things that make sense to include in the MRML file for data interchange.&lt;br /&gt;
&lt;br /&gt;
[[Image:Slicer3MyModule.png|[[Image:Slicer3MyModule.png| Base classes for GUI, Logic and MRML ]]]]&lt;br /&gt;
&lt;br /&gt;
===Deriving your GUI class===&lt;br /&gt;
To create a Module GUI that expresses its interface in Slicer's shared UIpanel, derive your class (vtkSlicerMyModuleGUI) from vtkSlicerModuleGUI. For a Module GUI that expresses its interface in a different panel of the Main Slicer Window, or in a toplevel widget, derive vtkSlicerMyModuleGUI from vtkSlicerComponentGUI instead. Your GUI class will inherit application logic and MRML pointers, an API for setting and observing them, and a framework for defining MRML, Logic and GUI callbacks from its parent class. Specific mediator methods, other logic and MRML node pointers can be added to the module's class definition. Importantly, keep logic and MRML classes independent of the GUI to facilitate testing and command-line execution possible *without* instantiating the Slicer3 GUI.&lt;br /&gt;
&lt;br /&gt;
'''Example:''' An early example to work from is the GradientAnisotropicDiffusionFilter Module; define all the widgets you need within the class and create Get Macros for each of them. Define the methods you need from vtkSlicerModuleGUI and its parent class vtkSlicerComponentGUI, including BuildGUI(); in this method, you'll first add a page to the class's UIPanel (for now, only create one page).&lt;br /&gt;
&lt;br /&gt;
=== Two GUI styles ===&lt;br /&gt;
'''Two styles:''' Depending on whether you want a notebook-style GUI for your module (similar to the style used in Slicer2) or a set of stacked collapsible frames to contain different logical sections of your interface like &amp;quot;help&amp;quot; and &amp;quot;display&amp;quot;, your BuildGUI() method can be written in one of two ways. The '''notebook style''' may be appropriate for modules with long logical sections within their GUI, to minimize the amount of scrolling required of a user. The '''collapsing style''' may be appropriate for modules that have numerous logical sections, since the amount of horizontal space across which a notebook would array them is limited. The way these two styles are expressed in Slicer3's GUI panel is shown below.&lt;br /&gt;
&lt;br /&gt;
[[Image:S3ModuleStyles.png]]&lt;br /&gt;
&lt;br /&gt;
'''''Collapsing style:''''' The GradientAnisotropicDiffusionFilter Module example implements the collapsible style, first adding a single new Page in its UIPanel:&lt;br /&gt;
&lt;br /&gt;
  this-&amp;gt;UIPanel-&amp;gt;AddPage ( &amp;quot;MyModule&amp;quot;, &amp;quot;MyModule&amp;quot;, NULL );&lt;br /&gt;
&lt;br /&gt;
then creating a vtkSlicerModuleCollapsibleFrame widget for each logical section in the GUI, parenting each to the UIPanel's single PageWidget, then creating, configuring and packing them from top to bottom in the UIPanel's PageWidget. Each logical section's widgets can be organized inside each of the vtkSlicerModuleCollapsibleFrames. The superclass has some helper methods to construct consisten Help&amp;amp;About Frames across modules.&lt;br /&gt;
&lt;br /&gt;
  //--- help and about frame&lt;br /&gt;
  const char *help = &amp;quot;MyModule does the following...&amp;quot;;&lt;br /&gt;
  const char *about = &amp;quot;This work was supported by...&amp;quot;;&lt;br /&gt;
  vtkKWWidget *page = this-&amp;gt;UIPanel-&amp;gt;GetPageWidget (&amp;quot;MyModule&amp;quot;);&lt;br /&gt;
  this-&amp;gt;BuildHelpAndAboutFrame ( page, help, about );&lt;br /&gt;
&lt;br /&gt;
  //--- rest of the frames&lt;br /&gt;
  vtkSlicerModuleCollapsibleFrame *firstFrame = vtkSlicerModuleCollapsibleFrame::New ( );&lt;br /&gt;
  vtkSlicerModuleCollapsibleFrame *secondFrame = vtkSlicerModuleCollapsibleFrame::New ( );&lt;br /&gt;
  vtkSlicerModuleCollapsibleFrame *thirdFrame = vtkSlicerModuleCollapsibleFrame::New ( );&lt;br /&gt;
  vtkSlicerModuleCollapsibleFrame *forthFrame = vtkSlicerModuleCollapsibleFrame::New ( );&lt;br /&gt;
  ...&lt;br /&gt;
  //--- parenting the frames to the same UIpanel page&lt;br /&gt;
  firstFrame-&amp;gt;SetParent ( page );&lt;br /&gt;
  secondFrame-&amp;gt;SetParent ( page );&lt;br /&gt;
  ...&lt;br /&gt;
  //--- parenting widgets to the various frames&lt;br /&gt;
  this-&amp;gt;widget2-&amp;gt;SetParent ( firstFrame-&amp;gt;GetFrame () );&lt;br /&gt;
  this-&amp;gt;widget3-&amp;gt;SetParent ( secondFrame-&amp;gt;GetFrame () );&lt;br /&gt;
&lt;br /&gt;
'''''Notebook style:''''' To create a notebook style GUI (as there is no example yet, a little code will be included here), a new Page must be added to the UIPanel for every tab in the notebook:&lt;br /&gt;
&lt;br /&gt;
  //--- get a pointer to the KWUserInterfaceManagerNotebook&lt;br /&gt;
  vtkKWUserInterfaceManagerNotebook *nbm = vtkKWUserInterfaceManagerNotebook::SafeDownCast ( this-&amp;gt;UIPanel-&amp;gt;GetUserInterfaceManager());&lt;br /&gt;
  //--- help and about frame&lt;br /&gt;
  this-&amp;gt;UIPanel-&amp;gt;AddPage ( &amp;quot;Help&amp;amp;About&amp;quot;, &amp;quot;Information about using this module&amp;quot;, NULL );&lt;br /&gt;
  const char *help = &amp;quot;MyModule does the following...&amp;quot;;&lt;br /&gt;
  const char *about = &amp;quot;This work was supported by...&amp;quot;;&lt;br /&gt;
  vtkKWWidget *page = this-&amp;gt;UIPanel-&amp;gt;GetPageWidget (&amp;quot;Help&amp;quot;);&lt;br /&gt;
  this-&amp;gt;BuildHelpAndAboutFrame ( page, help, about );&lt;br /&gt;
&lt;br /&gt;
  //--- pages for other frames&lt;br /&gt;
  int page1ID = this-&amp;gt;UIPanel-&amp;gt;AddPage ( &amp;quot;First&amp;quot;, &amp;quot;Functionality for some logical piece of module&amp;quot;, NULL );&lt;br /&gt;
  int page2ID = this-&amp;gt;UIPanel-&amp;gt;AddPage ( &amp;quot;Second&amp;quot;, &amp;quot;Functionality for another logical piece of module&amp;quot;, NULL );&lt;br /&gt;
&lt;br /&gt;
  //--- enabling or disabling notebook tabs&lt;br /&gt;
  nbm-&amp;gt;GetNotebook()-&amp;gt;SetPageEnabled ( page1ID, 1 );&lt;br /&gt;
  nbm-&amp;gt;GetNotebook()-&amp;gt;SetPageEnabled ( page2ID, 0 );&lt;br /&gt;
&lt;br /&gt;
Widgets to be packed within each notebook page are parented to the PageWidget:&lt;br /&gt;
&lt;br /&gt;
  this-&amp;gt;widget2-&amp;gt;SetParent ( this-&amp;gt;UIPanel-&amp;gt;GetPageWidget ( &amp;quot;First&amp;quot; ) );&lt;br /&gt;
  this-&amp;gt;widget3-&amp;gt;SetParent ( this-&amp;gt;UIPanel-&amp;gt;GetPageWidget ( &amp;quot;Second&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
or can be parented to a widget already parented to the PageWidget. Then they themselves can be created, configured, and packed in the same manner as they are in the GradientAnisotropicDiffusionFilter Module.&lt;br /&gt;
&lt;br /&gt;
=== Defining methods ===&lt;br /&gt;
'''Methods to define:''' Define the methods you require from vtkSlicerComponentGUI base class, like: AddGUIObservers(), RemoveGUIObservers(), ProcessLogicEvents(), ProcessGUIEevents(), ProcessMRMLEvents(), Enter() and Exit(); and whatever else your module needs. (Eventually, available modules will be automatically detected, but this is not yet implemented; then, the Enter() method will probably be made to call the BuildGUI() method. For now, instantiate your class in Slicer3.cxx and call its BuildGUI() and other methods, following the pattern for other modules established there.)&lt;br /&gt;
&lt;br /&gt;
=== Adding and removing observers ===&lt;br /&gt;
'''Adding observers:''' In AddGUIObservers, add an observer on each widget whose events you want to process. When an event is observed, the ProcessGUIEvents() method is called via the GUICallbackCommand; define this class to propagate information from the GUI to logic and MRML. Though it is tempting, try not to use ProcessGUIEvents() to update the GUI state directly -- just modify the Logic state, and allow observers on the logic and subsequent processing in ProcessLogicEvents() and ProcessMRMLEvents() to bring that state change BACK into the GUI.&lt;br /&gt;
&lt;br /&gt;
'''Removing observers:''' In RemoveGUIObservers, make sure you remove every observer you've added to widgets in the GUI before calling Delete() on your widget. Make sure you call SetAndObserveMRML() and SetAndObserveLogic( ) with NULL pointers in your GUI class destructor to remove all observers on MRML and Logic that you have created.&lt;br /&gt;
&lt;br /&gt;
=== Adding and removing references ===&lt;br /&gt;
For convenience, you may want to define pointers to Slicer's MainViewer, or to the SliceViewers, etc. Before Delete() can be called on anything you are referencing, you'll need to release the references. (Failure to release references can result in vtkDebugLeak reports on Application exit). The virtual method TearDownGUI() (inherited from vtkSlicerComponentGUI) can be defined for this purpose. References may be released in this method, and you can also use this method to call RemoveGUIObservers() if you don't want to explicitly call that method.&lt;br /&gt;
&lt;br /&gt;
=== Defining new widgets ===&lt;br /&gt;
'''Defining your own widgets:''' The framework for doing this is still evolving. Currently there are two types of new widgets, those defined as extensions to vtkKW (like vtkKWWindowLevelThresholdEditor.h/cxx) and those defined as Slicer-specific widgets, (like vtkSlicerSliceControlWidget.h/cxx, derived from the vtkSlicerWidget.h/cxx base class). The Slicer widgets have methods for putting observers on their widget components, Logic and MRML, and processing events as well. Thus GUI classes that instance them do not have to manage events for them if the widgets' methods are used instead.&lt;br /&gt;
&lt;br /&gt;
=== Using Undo and Redo ===&lt;br /&gt;
'''Undo:''' Make sure you process those events that mark junctures at which MRML state should be saved for Undo/Redo (using MRML's SaveStateForUndo() method. For instance, when an entry widget's value has changed, before changing a parameter in the appropriate MRML node, make a call to the MRMLScene's SaveStateForUndo() method with that node as a parameter. Save MRML state at reasonable junctures: for instance, for scale widgets, save MRML state when the scale starts changing, rather than continuously as the scale changes. For an example of they way SaveStateForUndo() is called, see slicer3/Base/GUI/vtkSlicerSliceControllerWidget.cxx. A detailed description of how undo/redo works, and how to use it in your module is available [[Slicer3:Data_Model#Undo.2FRedo_Mechanism | here]].&lt;br /&gt;
&lt;br /&gt;
=== Adding the module to the rest of Slicer3 ===&lt;br /&gt;
'''Other files you will have to touch:''' For now, to add your module to Slicer3, create a new instance of vtkSlicerMyModuleLogic and vtkSlicerMyModuleGUI in Applications/GUI/Slicer3.cxx, and follow the pattern used by the GradientAnisotropicDiffusionFilter module for now, until the framework is developed for Slicer3 to autodetect your module and do the right things. Then:&lt;br /&gt;
&lt;br /&gt;
* create your own module folder in the Slicer3/Modules directory&lt;br /&gt;
* create your own CMakeLists.txt file &lt;br /&gt;
* create your own vtkMyModuleWin32Header.h file following the pattern set by other Modules (See [[Slicer3:Module Link Setup for Windows]])&lt;br /&gt;
* add your module SUBDIR to the CMakeLists.txt file in the Slicer3/Modules directory above.&lt;br /&gt;
* include relevant .h files in Slicer3/Applications/GUI/Slicer3.cxx&lt;br /&gt;
* specify your module's source and binary Include directories in Slicer3/Application/GUI/CMakeLists.txt&lt;br /&gt;
* and include your module in the CMakeLists.txt target link libraries&lt;br /&gt;
&lt;br /&gt;
===Add a module-switch in CMake===&lt;br /&gt;
You can add an automatic on/off switch to the ccmake configuration GUI, which will make compilation and development for the user easier.&lt;br /&gt;
To do this add the following to two CMakeLists.txt und the Slicer3.cxx files:&lt;br /&gt;
&lt;br /&gt;
* add the following lines to your Slicer3/Module/MyModule/CMakeLists.txt&lt;br /&gt;
 PROJECT(MyModule)&lt;br /&gt;
 &lt;br /&gt;
 OPTION(MYMODULE &amp;quot;Do you want to build the MyModule?&amp;quot;)&lt;br /&gt;
 IF(MYMODULE)&lt;br /&gt;
 ... (Rest of the file)&lt;br /&gt;
 ENDIF(MYMODULE)&lt;br /&gt;
&lt;br /&gt;
* after this you have MYMODULE as a variable which says if your module is build or not&lt;br /&gt;
* but we want also to exclude the module library and our source in the Slicer3.cxx file if the module is not build&lt;br /&gt;
* in /Slicer3/Applications/GUI/CMakeLists.txt add the following directly above TARGET_LINK_LIBRARIES(...&lt;br /&gt;
 IF(MYMODULE)&lt;br /&gt;
  SET(MYMODULE_LINK_LIB MyModule)&lt;br /&gt;
 ELSE(MYMODULE)&lt;br /&gt;
  ADD_DEFINITIONS(-DMYMODULE_DEBUG)&lt;br /&gt;
 ENDIF(MYMODULE)&lt;br /&gt;
* then add to the TARGET_LINK_LIBRARIES(...${MYMODULE_LINK_LIB}) instead of your previous entry&lt;br /&gt;
* the ''ADD_DEFINITIONS'' declaration adds a preprocessor symbol to the compile which we use to exclude our code from the /Slicer3/Applications/GUI/Slicer3.cxx&lt;br /&gt;
* just border your code in /Slicer3/Applications/GUI/Slicer3.cxx with the following:&lt;br /&gt;
 #ifndef MYMODULE_DEBUG&lt;br /&gt;
 ...(your code/includes)&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
'''Helpful tips:'''&lt;br /&gt;
* Make the vtkModuleCollapsibleFrames which contain the major logical sections of your module members of your module GUI class and expose them through your API. Doing so helps other developers, who may want to offer a jump to your module's functionality, to programmatically raise your UIpanel and expand the frame they're interested in. This paradigm will help to promote fluid navigation of slicer's interface and the reuse of existing functionality.&lt;br /&gt;
&lt;br /&gt;
* See [[Slicer3:Module Link Setup for Windows]]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:How_to_implement_an_Interactive_Module_GUI&amp;diff=22475</id>
		<title>Slicer3:How to implement an Interactive Module GUI</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:How_to_implement_an_Interactive_Module_GUI&amp;diff=22475"/>
		<updated>2008-02-29T01:53:54Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Adding the module to the rest of Slicer3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= How to implement an Interactive Module GUI for Slicer3 =&lt;br /&gt;
&lt;br /&gt;
== Virtual Methods ==&lt;br /&gt;
&lt;br /&gt;
At the slicer-developers tcon 2007-02-13, we discussed some adjustments to the virtual methods in vtkSlicerModuleGUI for better consistency and utility.  The following list defines the methods that a module needs to implement so the main application (Slicer3.cxx) can operate on all modules generically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
The following methods are defined by the vtkSlicerModuleGUI and typically won't be overriden:&lt;br /&gt;
&lt;br /&gt;
* '''Enter'''&lt;br /&gt;
** ''called when module is raised''&lt;br /&gt;
** ''calls CreateGUI if needed (instance variable tracks create state)''&lt;br /&gt;
** ''calls AddGUIObservers''&lt;br /&gt;
** ''calls UpdateGUI''&lt;br /&gt;
* '''Exit'''&lt;br /&gt;
** ''called when module is replaced by another''&lt;br /&gt;
** ''calls RemoveMRMLObservers''&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;width: 40%; float: left; padding-right: 3%;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following methods should be defined by the Module to implement the specific behavior:&lt;br /&gt;
&lt;br /&gt;
* '''CreateGUI'''&lt;br /&gt;
** ''instances and packs widgets''&lt;br /&gt;
* '''DestroyGUI'''&lt;br /&gt;
** ''typically called only by destructor''&lt;br /&gt;
** ''breaks any reference cycles''&lt;br /&gt;
** ''Deletes widgets''&lt;br /&gt;
* '''ProcessGUIEvents'''&lt;br /&gt;
** ''responds to events from widgets or slicer GUI classes''&lt;br /&gt;
** ''propagates data from GUI into MRML nodes''&lt;br /&gt;
* '''ProcessMRMLEvents'''&lt;br /&gt;
** ''responds to updates to MRML nodes''&lt;br /&gt;
** ''propagates data from MRML to widgets''&lt;br /&gt;
* '''AddGUIObservers'''&lt;br /&gt;
** ''set observers on widgets and GUI classes (use GUICallbackCommand local instance -- it will call ProcessGUIEvents)''&lt;br /&gt;
* '''AddMRMLObservers'''&lt;br /&gt;
** ''set observers on MRML nodes and scene (use MRMLCallbackCommand local instance -- it will call ProcessMRMLEvents)''&lt;br /&gt;
* '''RemoveGUIObservers'''&lt;br /&gt;
* '''RemoveMRMLObservers'''&lt;br /&gt;
* '''UpdateGUI'''&lt;br /&gt;
** ''copy state from MRML nodes to GUI/Widgets''&lt;br /&gt;
** ''if needed for efficiency, check the MTime for the MRML Node and the corresponding GUI and only update if needed (e.g. for a MultiColumnList or other widget the holds a lot of data)'' &lt;br /&gt;
* '''UpdateMRML'''&lt;br /&gt;
** ''copy state from GUI/Widgets to MRML''&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;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
'''NOTE: this description may change as Slicer3 moves from Beta to official release.'''&lt;br /&gt;
The figure below shows a current overview of the three classes a new module (called MyModule for example) will need to define (vtkSlicerMyModuleGUI, vtkSlicerMyModuleLogic and vtkMRMLMyModuleNode) and some of the methods those classes should include to utilize the Slicer3 infrastructure. These classes should reside in the Slicer3/Modules/MyModule/ directory. If there are only one or two MRML class files, these can be in the top directory; if there are many files, you can create a Slicer3/Modules/MyModule/MRML directory. Slicer3/Libs/MRML should only include nodes that are part of the &amp;quot;primary&amp;quot; MRML support, ''i.e.'' things that make sense to include in the MRML file for data interchange.&lt;br /&gt;
&lt;br /&gt;
[[Image:Slicer3MyModule.png|[[Image:Slicer3MyModule.png| Base classes for GUI, Logic and MRML ]]]]&lt;br /&gt;
&lt;br /&gt;
===Deriving your GUI class===&lt;br /&gt;
To create a Module GUI that expresses its interface in Slicer's shared UIpanel, derive your class (vtkSlicerMyModuleGUI) from vtkSlicerModuleGUI. For a Module GUI that expresses its interface in a different panel of the Main Slicer Window, or in a toplevel widget, derive vtkSlicerMyModuleGUI from vtkSlicerComponentGUI instead. Your GUI class will inherit application logic and MRML pointers, an API for setting and observing them, and a framework for defining MRML, Logic and GUI callbacks from its parent class. Specific mediator methods, other logic and MRML node pointers can be added to the module's class definition. Importantly, keep logic and MRML classes independent of the GUI to facilitate testing and command-line execution possible *without* instantiating the Slicer3 GUI.&lt;br /&gt;
&lt;br /&gt;
'''Example:''' An early example to work from is the GradientAnisotropicDiffusionFilter Module; define all the widgets you need within the class and create Get Macros for each of them. Define the methods you need from vtkSlicerModuleGUI and its parent class vtkSlicerComponentGUI, including BuildGUI(); in this method, you'll first add a page to the class's UIPanel (for now, only create one page).&lt;br /&gt;
&lt;br /&gt;
=== Two GUI styles ===&lt;br /&gt;
'''Two styles:''' Depending on whether you want a notebook-style GUI for your module (similar to the style used in Slicer2) or a set of stacked collapsible frames to contain different logical sections of your interface like &amp;quot;help&amp;quot; and &amp;quot;display&amp;quot;, your BuildGUI() method can be written in one of two ways. The '''notebook style''' may be appropriate for modules with long logical sections within their GUI, to minimize the amount of scrolling required of a user. The '''collapsing style''' may be appropriate for modules that have numerous logical sections, since the amount of horizontal space across which a notebook would array them is limited. The way these two styles are expressed in Slicer3's GUI panel is shown below.&lt;br /&gt;
&lt;br /&gt;
[[Image:S3ModuleStyles.png]]&lt;br /&gt;
&lt;br /&gt;
'''''Collapsing style:''''' The GradientAnisotropicDiffusionFilter Module example implements the collapsible style, first adding a single new Page in its UIPanel:&lt;br /&gt;
&lt;br /&gt;
  this-&amp;gt;UIPanel-&amp;gt;AddPage ( &amp;quot;MyModule&amp;quot;, &amp;quot;MyModule&amp;quot;, NULL );&lt;br /&gt;
&lt;br /&gt;
then creating a vtkSlicerModuleCollapsibleFrame widget for each logical section in the GUI, parenting each to the UIPanel's single PageWidget, then creating, configuring and packing them from top to bottom in the UIPanel's PageWidget. Each logical section's widgets can be organized inside each of the vtkSlicerModuleCollapsibleFrames. The superclass has some helper methods to construct consisten Help&amp;amp;About Frames across modules.&lt;br /&gt;
&lt;br /&gt;
  //--- help and about frame&lt;br /&gt;
  const char *help = &amp;quot;MyModule does the following...&amp;quot;;&lt;br /&gt;
  const char *about = &amp;quot;This work was supported by...&amp;quot;;&lt;br /&gt;
  vtkKWWidget *page = this-&amp;gt;UIPanel-&amp;gt;GetPageWidget (&amp;quot;MyModule&amp;quot;);&lt;br /&gt;
  this-&amp;gt;BuildHelpAndAboutFrame ( page, help, about );&lt;br /&gt;
&lt;br /&gt;
  //--- rest of the frames&lt;br /&gt;
  vtkSlicerModuleCollapsibleFrame *firstFrame = vtkSlicerModuleCollapsibleFrame::New ( );&lt;br /&gt;
  vtkSlicerModuleCollapsibleFrame *secondFrame = vtkSlicerModuleCollapsibleFrame::New ( );&lt;br /&gt;
  vtkSlicerModuleCollapsibleFrame *thirdFrame = vtkSlicerModuleCollapsibleFrame::New ( );&lt;br /&gt;
  vtkSlicerModuleCollapsibleFrame *forthFrame = vtkSlicerModuleCollapsibleFrame::New ( );&lt;br /&gt;
  ...&lt;br /&gt;
  //--- parenting the frames to the same UIpanel page&lt;br /&gt;
  firstFrame-&amp;gt;SetParent ( page );&lt;br /&gt;
  secondFrame-&amp;gt;SetParent ( page );&lt;br /&gt;
  ...&lt;br /&gt;
  //--- parenting widgets to the various frames&lt;br /&gt;
  this-&amp;gt;widget2-&amp;gt;SetParent ( firstFrame-&amp;gt;GetFrame () );&lt;br /&gt;
  this-&amp;gt;widget3-&amp;gt;SetParent ( secondFrame-&amp;gt;GetFrame () );&lt;br /&gt;
&lt;br /&gt;
'''''Notebook style:''''' To create a notebook style GUI (as there is no example yet, a little code will be included here), a new Page must be added to the UIPanel for every tab in the notebook:&lt;br /&gt;
&lt;br /&gt;
  //--- get a pointer to the KWUserInterfaceManagerNotebook&lt;br /&gt;
  vtkKWUserInterfaceManagerNotebook *nbm = vtkKWUserInterfaceManagerNotebook::SafeDownCast ( this-&amp;gt;UIPanel-&amp;gt;GetUserInterfaceManager());&lt;br /&gt;
  //--- help and about frame&lt;br /&gt;
  this-&amp;gt;UIPanel-&amp;gt;AddPage ( &amp;quot;Help&amp;amp;About&amp;quot;, &amp;quot;Information about using this module&amp;quot;, NULL );&lt;br /&gt;
  const char *help = &amp;quot;MyModule does the following...&amp;quot;;&lt;br /&gt;
  const char *about = &amp;quot;This work was supported by...&amp;quot;;&lt;br /&gt;
  vtkKWWidget *page = this-&amp;gt;UIPanel-&amp;gt;GetPageWidget (&amp;quot;Help&amp;quot;);&lt;br /&gt;
  this-&amp;gt;BuildHelpAndAboutFrame ( page, help, about );&lt;br /&gt;
&lt;br /&gt;
  //--- pages for other frames&lt;br /&gt;
  int page1ID = this-&amp;gt;UIPanel-&amp;gt;AddPage ( &amp;quot;First&amp;quot;, &amp;quot;Functionality for some logical piece of module&amp;quot;, NULL );&lt;br /&gt;
  int page2ID = this-&amp;gt;UIPanel-&amp;gt;AddPage ( &amp;quot;Second&amp;quot;, &amp;quot;Functionality for another logical piece of module&amp;quot;, NULL );&lt;br /&gt;
&lt;br /&gt;
  //--- enabling or disabling notebook tabs&lt;br /&gt;
  nbm-&amp;gt;GetNotebook()-&amp;gt;SetPageEnabled ( page1ID, 1 );&lt;br /&gt;
  nbm-&amp;gt;GetNotebook()-&amp;gt;SetPageEnabled ( page2ID, 0 );&lt;br /&gt;
&lt;br /&gt;
Widgets to be packed within each notebook page are parented to the PageWidget:&lt;br /&gt;
&lt;br /&gt;
  this-&amp;gt;widget2-&amp;gt;SetParent ( this-&amp;gt;UIPanel-&amp;gt;GetPageWidget ( &amp;quot;First&amp;quot; ) );&lt;br /&gt;
  this-&amp;gt;widget3-&amp;gt;SetParent ( this-&amp;gt;UIPanel-&amp;gt;GetPageWidget ( &amp;quot;Second&amp;quot; ) );&lt;br /&gt;
&lt;br /&gt;
or can be parented to a widget already parented to the PageWidget. Then they themselves can be created, configured, and packed in the same manner as they are in the GradientAnisotropicDiffusionFilter Module.&lt;br /&gt;
&lt;br /&gt;
=== Defining methods ===&lt;br /&gt;
'''Methods to define:''' Define the methods you require from vtkSlicerComponentGUI base class, like: AddGUIObservers(), RemoveGUIObservers(), ProcessLogicEvents(), ProcessGUIEevents(), ProcessMRMLEvents(), Enter() and Exit(); and whatever else your module needs. (Eventually, available modules will be automatically detected, but this is not yet implemented; then, the Enter() method will probably be made to call the BuildGUI() method. For now, instantiate your class in Slicer3.cxx and call its BuildGUI() and other methods, following the pattern for other modules established there.)&lt;br /&gt;
&lt;br /&gt;
=== Adding and removing observers ===&lt;br /&gt;
'''Adding observers:''' In AddGUIObservers, add an observer on each widget whose events you want to process. When an event is observed, the ProcessGUIEvents() method is called via the GUICallbackCommand; define this class to propagate information from the GUI to logic and MRML. Though it is tempting, try not to use ProcessGUIEvents() to update the GUI state directly -- just modify the Logic state, and allow observers on the logic and subsequent processing in ProcessLogicEvents() and ProcessMRMLEvents() to bring that state change BACK into the GUI.&lt;br /&gt;
&lt;br /&gt;
'''Removing observers:''' In RemoveGUIObservers, make sure you remove every observer you've added to widgets in the GUI before calling Delete() on your widget. Make sure you call SetAndObserveMRML() and SetAndObserveLogic( ) with NULL pointers in your GUI class destructor to remove all observers on MRML and Logic that you have created.&lt;br /&gt;
&lt;br /&gt;
=== Adding and removing references ===&lt;br /&gt;
For convenience, you may want to define pointers to Slicer's MainViewer, or to the SliceViewers, etc. Before Delete() can be called on anything you are referencing, you'll need to release the references. (Failure to release references can result in vtkDebugLeak reports on Application exit). The virtual method TearDownGUI() (inherited from vtkSlicerComponentGUI) can be defined for this purpose. References may be released in this method, and you can also use this method to call RemoveGUIObservers() if you don't want to explicitly call that method.&lt;br /&gt;
&lt;br /&gt;
=== Defining new widgets ===&lt;br /&gt;
'''Defining your own widgets:''' The framework for doing this is still evolving. Currently there are two types of new widgets, those defined as extensions to vtkKW (like vtkKWWindowLevelThresholdEditor.h/cxx) and those defined as Slicer-specific widgets, (like vtkSlicerSliceControlWidget.h/cxx, derived from the vtkSlicerWidget.h/cxx base class). The Slicer widgets have methods for putting observers on their widget components, Logic and MRML, and processing events as well. Thus GUI classes that instance them do not have to manage events for them if the widgets' methods are used instead.&lt;br /&gt;
&lt;br /&gt;
=== Using Undo and Redo ===&lt;br /&gt;
'''Undo:''' Make sure you process those events that mark junctures at which MRML state should be saved for Undo/Redo (using MRML's SaveStateForUndo() method. For instance, when an entry widget's value has changed, before changing a parameter in the appropriate MRML node, make a call to the MRMLScene's SaveStateForUndo() method with that node as a parameter. Save MRML state at reasonable junctures: for instance, for scale widgets, save MRML state when the scale starts changing, rather than continuously as the scale changes. For an example of they way SaveStateForUndo() is called, see slicer3/Base/GUI/vtkSlicerSliceControllerWidget.cxx. A detailed description of how undo/redo works, and how to use it in your module is available [[Slicer3:Data_Model#Undo.2FRedo_Mechanism | here]].&lt;br /&gt;
&lt;br /&gt;
=== Adding the module to the rest of Slicer3 ===&lt;br /&gt;
'''Other files you will have to touch:''' For now, to add your module to Slicer3, create a new instance of vtkSlicerMyModuleLogic and vtkSlicerMyModuleGUI in Applications/GUI/Slicer3.cxx, and follow the pattern used by the GradientAnisotropicDiffusionFilter module for now, until the framework is developed for Slicer3 to autodetect your module and do the right things. Then:&lt;br /&gt;
&lt;br /&gt;
* create your own module folder in the Slicer3/Modules directory&lt;br /&gt;
* create your own CMakeLists.txt file and your own vtkMyModuleWin32Header.h file following the pattern set by other Modules.&lt;br /&gt;
* add your module SUBDIR to the CMakeLists.txt file in the Slicer3/Modules directory above.&lt;br /&gt;
* include relevant .h files in Slicer3/Applications/GUI/Slicer3.cxx&lt;br /&gt;
* specify your module's source and binary Include directories in Slicer3/Application/GUI/CMakeLists.txt&lt;br /&gt;
* and include your module in the CMakeLists.txt target link libraries&lt;br /&gt;
&lt;br /&gt;
===Add a module-switch in CMake===&lt;br /&gt;
You can add an automatic on/off switch to the ccmake configuration GUI, which will make compilation and development for the user easier.&lt;br /&gt;
To do this add the following to two CMakeLists.txt und the Slicer3.cxx files:&lt;br /&gt;
&lt;br /&gt;
* add the following lines to your Slicer3/Module/MyModule/CMakeLists.txt&lt;br /&gt;
 PROJECT(MyModule)&lt;br /&gt;
 &lt;br /&gt;
 OPTION(MYMODULE &amp;quot;Do you want to build the MyModule?&amp;quot;)&lt;br /&gt;
 IF(MYMODULE)&lt;br /&gt;
 ... (Rest of the file)&lt;br /&gt;
 ENDIF(MYMODULE)&lt;br /&gt;
&lt;br /&gt;
* after this you have MYMODULE as a variable which says if your module is build or not&lt;br /&gt;
* but we want also to exclude the module library and our source in the Slicer3.cxx file if the module is not build&lt;br /&gt;
* in /Slicer3/Applications/GUI/CMakeLists.txt add the following directly above TARGET_LINK_LIBRARIES(...&lt;br /&gt;
 IF(MYMODULE)&lt;br /&gt;
  SET(MYMODULE_LINK_LIB MyModule)&lt;br /&gt;
 ELSE(MYMODULE)&lt;br /&gt;
  ADD_DEFINITIONS(-DMYMODULE_DEBUG)&lt;br /&gt;
 ENDIF(MYMODULE)&lt;br /&gt;
* then add to the TARGET_LINK_LIBRARIES(...${MYMODULE_LINK_LIB}) instead of your previous entry&lt;br /&gt;
* the ''ADD_DEFINITIONS'' declaration adds a preprocessor symbol to the compile which we use to exclude our code from the /Slicer3/Applications/GUI/Slicer3.cxx&lt;br /&gt;
* just border your code in /Slicer3/Applications/GUI/Slicer3.cxx with the following:&lt;br /&gt;
 #ifndef MYMODULE_DEBUG&lt;br /&gt;
 ...(your code/includes)&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
'''Helpful tips:'''&lt;br /&gt;
* Make the vtkModuleCollapsibleFrames which contain the major logical sections of your module members of your module GUI class and expose them through your API. Doing so helps other developers, who may want to offer a jump to your module's functionality, to programmatically raise your UIpanel and expand the frame they're interested in. This paradigm will help to promote fluid navigation of slicer's interface and the reuse of existing functionality.&lt;br /&gt;
&lt;br /&gt;
* See [[Slicer3:Module Link Setup for Windows]]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22021</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=22021"/>
		<updated>2008-02-08T16:57:12Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Status / Implementation Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 95%&lt;br /&gt;
*test (gui/...): 10% BIG TODO&lt;br /&gt;
*writing master thesis: 0% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21802</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21802"/>
		<updated>2008-02-05T00:10:46Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 90%&lt;br /&gt;
*test (gui/...): 10% BIG TODO&lt;br /&gt;
*writing master thesis: 0% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21600</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21600"/>
		<updated>2008-01-30T01:49:28Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Background - why specific editor features are needed */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background (why specific editor features are needed) ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 70%&lt;br /&gt;
*test (gui/...): 10% BIG TODO&lt;br /&gt;
*writing master thesis: 0% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21598</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21598"/>
		<updated>2008-01-29T23:09:44Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* What you can do with the Gradient Editor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background - why specific editor features are needed ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
''TODO: more details.''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 70%&lt;br /&gt;
*test (gui/...): 10% BIG TODO&lt;br /&gt;
*writing master thesis: 0% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21597</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21597"/>
		<updated>2008-01-29T23:08:28Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
=== Background - why specific editor features are needed ===&lt;br /&gt;
''TODO''&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
'''TODO: more details.'''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 70%&lt;br /&gt;
*test (gui/...): 10% BIG TODO&lt;br /&gt;
*writing master thesis: 0% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21596</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21596"/>
		<updated>2008-01-29T23:05:57Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
'''TODO: more details.'''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 70%&lt;br /&gt;
*test (gui/...): 10% BIG TODO&lt;br /&gt;
*writing master thesis: 0% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21595</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21595"/>
		<updated>2008-01-29T23:04:51Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* What you can do with the Gradient Editor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
'''TODO: more details.'''&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 70%&lt;br /&gt;
*test (gui/...): 10% BIG TODO&lt;br /&gt;
*writing master thesis: 0% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21594</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21594"/>
		<updated>2008-01-29T23:04:13Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Status / Implementation Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 70%&lt;br /&gt;
*test (gui/...): 10% BIG TODO&lt;br /&gt;
*writing master thesis: 0% :-)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21593</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21593"/>
		<updated>2008-01-29T23:03:32Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Status / Implementation Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 70%&lt;br /&gt;
*test (gui/...): 10% BIG TODO&lt;br /&gt;
*writing master thesis: 0% :)&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21563</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21563"/>
		<updated>2008-01-25T04:30:47Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Status / Implementation Progress */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 95%&lt;br /&gt;
*gradients (gui/load/change/save): 60%&lt;br /&gt;
*test (gui/...): 10%&lt;br /&gt;
*writing master thesis: 0%&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21561</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21561"/>
		<updated>2008-01-24T22:23:12Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes module of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Fiducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 90%&lt;br /&gt;
*gradients (gui/load/change/save): 50%&lt;br /&gt;
*test (gui/...): 5%&lt;br /&gt;
*writing master thesis: 0%&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21560</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21560"/>
		<updated>2008-01-24T22:18:24Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Additional Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes modul of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Feducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 90%&lt;br /&gt;
*gradients (gui/load/change/save): 50%&lt;br /&gt;
*test (gui/...): 5%&lt;br /&gt;
*writing master thesis: 0%&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;br /&gt;
&lt;br /&gt;
DICOM for DWI and DTI : [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:DICOM_for_DWI_and_DTI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21559</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21559"/>
		<updated>2008-01-24T22:16:25Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Additional Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes modul of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Feducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 90%&lt;br /&gt;
*gradients (gui/load/change/save): 50%&lt;br /&gt;
*test (gui/...): 5%&lt;br /&gt;
*writing master thesis: 0%&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21558</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21558"/>
		<updated>2008-01-24T22:16:14Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Additional Information */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes modul of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Feducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 90%&lt;br /&gt;
*gradients (gui/load/change/save): 50%&lt;br /&gt;
*test (gui/...): 5%&lt;br /&gt;
*writing master thesis: 0%&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;br /&gt;
DTMRI: [http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI http://wiki.na-mic.org/Wiki/index.php/Slicer3:DTMRI]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21557</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21557"/>
		<updated>2008-01-24T22:10:15Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* Interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes modul of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements are no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Feducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 90%&lt;br /&gt;
*gradients (gui/load/change/save): 50%&lt;br /&gt;
*test (gui/...): 5%&lt;br /&gt;
*writing master thesis: 0%&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21556</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21556"/>
		<updated>2008-01-24T22:07:46Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* How to use the editor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes modul of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements were no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A .nhdr file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Feducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 90%&lt;br /&gt;
*gradients (gui/load/change/save): 50%&lt;br /&gt;
*test (gui/...): 5%&lt;br /&gt;
*writing master thesis: 0%&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21555</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21555"/>
		<updated>2008-01-24T22:06:02Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* What you can do with the Gradient Editor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes modul of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements were no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A nhdr-file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
#'''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Feducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 90%&lt;br /&gt;
*gradients (gui/load/change/save): 50%&lt;br /&gt;
*test (gui/...): 5%&lt;br /&gt;
*writing master thesis: 0%&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21554</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21554"/>
		<updated>2008-01-24T22:05:46Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* What you can do with the Gradient Editor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes modul of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements were no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A nhdr-file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
&lt;br /&gt;
#'''Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
# '''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Feducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 90%&lt;br /&gt;
*gradients (gui/load/change/save): 50%&lt;br /&gt;
*test (gui/...): 5%&lt;br /&gt;
*writing master thesis: 0%&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
	<entry>
		<id>https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21553</id>
		<title>Slicer3:Diffusion Editor</title>
		<link rel="alternate" type="text/html" href="https://www.na-mic.org/w/index.php?title=Slicer3:Diffusion_Editor&amp;diff=21553"/>
		<updated>2008-01-24T22:05:11Z</updated>

		<summary type="html">&lt;p&gt;Kerstin: /* What you can do with the Gradient Editor */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
The goal of this project is to add a Gradient Editor for DWI data in the Volumes modul of Slicer3.&lt;br /&gt;
As the documentation of gradients in dicom data is not standardized, MRI scanners handle them differently. Because of that there is a big need to add/modify gradients manually.&lt;br /&gt;
&lt;br /&gt;
== Interface ==&lt;br /&gt;
This screenshots show the interface and its changes during the last months.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery caption=&amp;quot;Interface&amp;quot; widths=&amp;quot;150px&amp;quot; heights=&amp;quot;150px&amp;quot; perrow=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
Image:DWI_Gradient_Editor_v4.jpg|integrated in Slicer3 trunk, some GUI elements were no longer necessary&lt;br /&gt;
Image:DWI_Gradient_Editor_v3.jpg&lt;br /&gt;
Image:DWI_Gradient_Editor_v2.jpg|integrated in Slicer3 branch&lt;br /&gt;
Image:DWI_Gradient_Editor.jpg|1st Version (tcl)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to use the editor==&lt;br /&gt;
*1.Step: Generate a Nrrd-header of your DWI data. Use the &amp;quot;Dicom to Nrrd&amp;quot; module in Slicer3 (Modules-&amp;gt;Converters-&amp;gt;Dicom to Nrrd).&lt;br /&gt;
**-&amp;gt; A nhdr-file will be created.&lt;br /&gt;
*2.Step: Use the output (.nhdr file) as an input of the Volumes module.&lt;br /&gt;
**-&amp;gt; The Gradient Editor will be enabled. If you load any other type of dataset the editor will be disabled.&lt;br /&gt;
&lt;br /&gt;
=== What you can do with the Gradient Editor===&lt;br /&gt;
&lt;br /&gt;
#''' Choose measurement frame'''.&lt;br /&gt;
## '''Negative''': Select the columns you want to negative.&lt;br /&gt;
## '''Swap''': Select two columns you want to swap.&lt;br /&gt;
## '''Rotate''': Select one column you want to rotate by an angle you can choose from a given set of values or set yourself.&lt;br /&gt;
## Set your own values.&lt;br /&gt;
# '''Define gradients'''.&lt;br /&gt;
## If the .nhdr file has the information about the gradients, the editor will put them in the text field.&lt;br /&gt;
## You can copy/paste your own gradients in the text field.&lt;br /&gt;
## You can load gradients from a plain text file or .nhdr file.&lt;br /&gt;
#'''Run test'''. &lt;br /&gt;
## Add a Feducial List. To see if the chosen parameters are reasonable, you can run a test that automatically&lt;br /&gt;
### computes the Tensor and&lt;br /&gt;
### visualizes them by Tractography Seeding. (both with standard values)&lt;br /&gt;
#'''Cancel''': All parameters are restored to original.&lt;br /&gt;
&lt;br /&gt;
== Status / Implementation Progress ==&lt;br /&gt;
The editor is now successfully integrated in the Volumes module of the trunk version of Slicer3.&lt;br /&gt;
*measurement frame (gui/load/change/save): 90%&lt;br /&gt;
*gradients (gui/load/change/save): 50%&lt;br /&gt;
*test (gui/...): 5%&lt;br /&gt;
*writing master thesis: 0%&lt;br /&gt;
&lt;br /&gt;
== Additional Information ==&lt;br /&gt;
&lt;br /&gt;
Nrrd format: [http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format http://wiki.na-mic.org/Wiki/index.php/NAMIC_Wiki:DTI:Nrrd_format]&lt;/div&gt;</summary>
		<author><name>Kerstin</name></author>
		
	</entry>
</feed>