Difference between revisions of "Slicer3:Developers"

From Slicer Wiki
Jump to: navigation, search
m (Text replacement - "\[http:\/\/wiki\.slicer\.org\/slicerWiki\/index\.php\/([^ ]+) ([^]]+)]" to "$2")
 
(98 intermediate revisions by 15 users not shown)
Line 1: Line 1:
== Slicer 3 Overview ==
+
__NOTOC__
[[Image:Slicer3LogoHorizontalBeta.png]]
+
= Slicer 3 Developer Page =
 +
[[Image:3DSlicerLogo-H-Color-212x121.png|right]]
 +
*This page contains links to Slicer3 developer resources and events.
 +
*For information about other versions of Slicer see [[Developers|here]]
 +
*Click here for <big>'''[[Slicer3:Events|Slicer3 Events]]'''</big>
  
* For more details on the slicer architecture see: [[media:Slicer 3-beta-2007-04-16.ppt | Architecture Slides]] (updated April, 2007).
+
== Slicer 3 Architecture Overview ==
<br>
+
For more details on the slicer architecture see: [[media:Slicer 3-beta-2007-04-16.ppt | Architecture Slides]] (updated April, 2007).
  
<gallery caption="Highlights of the new architecture" widths="200px"  perrow="4">
+
<gallery caption="Highlights of the new architecture" widths="300px" heights="200px"  perrow="3">
 
Image:Slicer3-Architecture.jpg
 
Image:Slicer3-Architecture.jpg
 
Image:Slicer3-Architecture-MRML.jpg
 
Image:Slicer3-Architecture-MRML.jpg
Image:Slicer3-Architecture-Layers.jpg
 
 
Image:ExecutionModelPlugins.png
 
Image:ExecutionModelPlugins.png
 
</gallery>
 
</gallery>
  
== Information for Developers ==
+
= Quick Links for Developers =
This section centrally locates many existing (and developing) wiki pages useful to Slicer3 developers. The content  developed for the January 2007 AHM.
+
This section centrally locates many existing (and developing) wiki pages useful to Slicer3 developers.
 
 
=== Introduction to Slicer3 ===
 
* [[Media:SlicerHistoricalTimeline.ppt | Slicer3 Historical Timeline]]
 
* [[Slicer3:Status_Summary | Status overview]] and [http://slicerl.bwh.harvard.edu/tmp/slicer3-PreAHMBeta%20Demo/slicer3-PreAHMBeta.htm Demo]
 
* [[Media:GUIMap.png|Schematic of application interface & functionality]]
 
* [[Media:SliceGUI.png|Schematic of slice GUI]]
 
* [[Slicer3:Build_Instructions | Getting the software and troubleshooting]]
 
* [[media:Slicer 3-beta-2007-01-10.ppt | Overall Architecture]] and [[Slicer3:Style|Slicer 3 Coding Style]]
 
* [[Slicer3:Contributing_codes_to_Slicer3| Contributing codes to Slicer3]]
 
 
 
=== Two module types (Command line and Interactive) ===
 
* [[Slicer3:Execution_Model_Documentation | Command line modules and how to implement one]] (Jim and Bill) [[media:Slicer3-ExecutionModelJune2006.ppt| Intro]]
 
*[[Slicer3:How_to_implement_an_Interactive_Module_GUI | How to implement an interactive module]] (wjp)
 
 
 
=== MRML [http://www.na-mic.org/Wiki/images/e/e3/Slicer3_MRML.ppt  MRML Slides](Alex) ===
 
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.
 
 
 
* [[Slicer3:Data_Model#Creating_Custom_MRML_Node_Classes | Creating and using new MRML node types]] (Alex)
 
* [[Slicer3:Data_Model#References_to_MRML_Nodes | Keeping references to MRML nodes ]] (Alex)
 
* [[Slicer3:Data_Model#Undo/Redo_Mechanism  | How undo/redo works, and how to enable it in your code]] (Alex)
 
 
 
=== GUI ===
 
* [[Slicer3:StatelessGUI | Keeping the GUI stateless]] (wjp)
 
* [[Slicer3:EventBindings | Adding keyboard shortcuts]] (wjp)
 
* [[Slicer3:Human_Interface_and_Style_Guide_for_Developers | GUI style guidelines]] (wjp)
 
* [[Slicer3:Usability#User-centered_design_practice_for_3DSlicer | User-centered design practice]] (wjp)
 
* [[Slicer3:Slicer3Brand | 3DSlicer's logo and visual communication guidelines]] (wjp)
 
* [[Slicer3:Execution_Model_Documentation#Adding_Module_Logos_to_Slicer3 | Incorporating your group's logo and attributions]] (Jim)
 
* [[Slicer3:GUI_Experiments | Some experiments/advanced techniques for developing slicer3 interfaces]] (Steve)
 
 
 
=== Engineering ===
 
* Tips for avoiding memory leaks
 
** Current Practice (Steve)
 
** [[Slicer3:Memory Management | Suggested change to SmartPointers]] (Jim)
 
* Generating tests (Bill)
 
* [[Slicer3:Testing | Setting up Testing]]
 
* [[Slicer3:Builds | Build Information]]
 
* [[Slicer3:Launcher| The Launcher]]
 
 
 
=== Documenting your module ===
 
* As soon as the wiki page template is finalized, and the infrastructure is added to link to this wiki page from the "Help & Acknowledgment" 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...
 
* [[Slicer3:DocumentationWink|Documenting a module with wink]]
 
 
 
=== Integrate Slicer3 into a development environment ===
 
* [[Slicer3::Eclipse | Eclipse]] (keilhack)
 
* [[Slicer3::MSVS200X | Microsoft Visual Studio 200x]]
 
 
 
== Slicer 3 Projects ==
 
 
 
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.
 
 
 
''If your name is in bold, you are responsible for that aspect of the project''
 
 
 
* '''[[Slicer3:Architecture/Features|Architecture/Features]]''' ('''Steve Pieper''', Group: Bill Lorensen, Ron Kikinis, Mike Halle, Noby Hata)
 
* '''[[Slicer3:Data_Model|Data Model / libMRML]]''' ('''Alex''', Steve)
 
* '''[[Slicer3:Execution_Model|Execution Model / Command Line Modules]]''' ('''Jim Miller''', Bill Lorensen)
 
* '''[[Slicer3:Interface_Design|Interface Design and Usability ]]''' ('''Wendy Plesniak''', KWWidgets: Sebastien Barre, Yumin Yuan)
 
* '''[[Slicer3:Transition_of_Slicer2.x_Modules|Transition of Selected Slicer2.x Modules to Slicer3]]''' ('''Nicole''', Katie, Wendy, Mathieu)
 
** [[Slicer3:DTMRI|DTMRI]]<nowiki>: </nowiki>'''Alex''' with help from Diffusion Images:  '''Raul''', Tractography: '''Lauren''' [http://lmi.bwh.harvard.edu LMI]
 
** [[Slicer3:Editor|Editor]]<nowiki>: </nowiki>'''Steve'''
 
** [[Slicer3:ColorsFiducialsFreesurferModelmaker|Colors, Fiducials, FreeSurfer, ModelMaker]]<nowiki>: </nowiki>'''Nicole'''
 
** [[Slicer3:_Image_Guided_Therapy_%28IGT%29|IGT, Trackers]]<nowiki>: </nowiki>'''Haiying'''
 
** [[Slicer3:EM|EMSegment Interface]]<nowiki>: </nowiki>'''Brad Davis'''
 
** [[Slicer3:Slicer_Daemon|SlicerDaemon Interface (for unu, matlab)]]<nowiki>: </nowiki>'''Steve Pieper'''
 
* '''[[Slicer3:Build/Test/Deploy|Build/Test/Deploy System]]''' ('''Andy''', Katie)
 
* '''[[Slicer3:Pipeline_Integration|Loni Pipeline Integration]]''' ('''Jags''')
 
* '''[[Slicer3:Batchmake_Integration|Batchmake/GRID Integration]]''' ('''Julien Jomier''')
 
* '''[[Slicer3:Registration|Registration Modules]]''' ('''Jim Miller''', Steve Pieper)
 
* '''[http://www.na-mic.org/Wiki/index.php/ITK_Registration_Optimization Improvements to the registration framework]''' ('''Stephen Aylward''')
 
* '''[[Slicer3:Python|Python Integration]]''' ('''Dan Blezek''')
 
* '''[[Slicer3:Grid_Interface|Grid Integration]]''' ('''Jeff Grethe''', Neil)
 
* '''[[Slicer3:Performance_Analysis|Slicer3:Performance Analysis]]''' ('''Katie''')
 
* '''[[Slicer3:ThreadingToolKit|Threading ToolKit]]''' ('''Dan Blezek, James Miller, Stephen Aylward''')
 
* '''[[Slicer3:Volume Rendering |Volume Rendering]]''' ('''Andy''')
 
* '''[[Slicer3:Volume Rendering With Cuda|Volume Rendering With CUDA]]''' ('''Ben''')
 
* '''[[Slicer3:XNAT |XNAT Interface]]''' ('''Steve''', Wendy, Dan Marcus, Tim Olsen)
 
* '''[[Slicer3:LDDMM |LDDMM Interface]]''' ('''Steve''', Anthony Kolasny)
 
* '''[[Slicer3:Web Presence |Web Presence]]''' ('''Nicole Aucoin'''), Zack Galbreath
 
* '''[[Slicer3:Loadable Modules |Loadable Modules]]''' ('''Alex Yarmarkovich'''), Steve Pieper
 
* '''[http://www.slicer.org/slicerWiki/index.php/Modules:Volumes:Diffusion_Editor-Documentation Diffusion Editor]''' ('''Kerstin''')
 
* '''[[Slicer3:TimeSeries and Multi-Volume Data | TimeSeries and Multi-Volume Data]]''' (Steve Pieper, Daniel Blezek, Dominik Meier, Wendy Plesniak)
 
* '''[[Slicer3:Remote Data Handling | Remote Data Handling]]''' (Steve Pieper, Nicole Aucoin, Wendy Plesniak)
 
* '''[[Slicer3:Module:QueryAtlas |Query Atlas]]''' ('''Wendy Plesniak''')
 
  
 
== Slicer 3 Quick links to the Source code ==
 
== Slicer 3 Quick links to the Source code ==
 
 
The Slicer3 svn repository:
 
The Slicer3 svn repository:
  
 
  svn co http://svn.slicer.org/Slicer3/trunk Slicer3
 
  svn co http://svn.slicer.org/Slicer3/trunk Slicer3
  
Use [http://viewvc.slicer.org ViewVC to browse the repository]
+
{|width="800px" border="1"
 +
|-
 +
|style="background:#ddf" width="60%"|'''General Slicer3 Quick Links'''
 +
|style="background:#ddf" width="40%"|'''Debugging Slicer3 Quick Links'''
 +
|-
 +
||[[Slicer3:Build_Instructions|Slicer3 build instructions]]
 +
||[http://www.cdash.org/CDash/index.php?project=Slicer3 Slicer3 Dashboard (After May 2, 2008)]
 +
|-
 +
||Use [http://viewvc.slicer.org ViewVC to browse the repository]
 +
||[http://www.na-mic.org/Slicer3/Dashboard Slicer3 Dashboard (Before May 2, 2008)]
 +
|-
 +
||[http://www.na-mic.org/Wiki/index.php/Engineering:SandBox Instructions for NA-MIC svn]
 +
||[http://na-mic.org/Mantis/main_page.php Slicer Bug Tracker]
 +
|-
 +
||[http://www.na-mic.org/Slicer/Documentation/Slicer3-doc/html/ Doxygen documentation for Slicer3].
 +
||
 +
|-
 +
||The [[Slicer3:VisualBlog|Slicer3 VisualBlog]] shows screenshots of slicer developments.
 +
||
 +
|-
 +
||Developers should follow the [[Slicer3:Style|Slicer 3 Coding Style]].
 +
|
 +
|}
  
[http://www.na-mic.org/Wiki/index.php/Engineering:SandBox Instructions for NA-MIC svn]
+
==Developers' Mailing List ==
 +
Discussion of Slicer3 takes place on the slicer-devel at massmail.spl.harvard.edu list. To join developer's mailing list, send a request to: slicer-devel-request at massmail.spl.harvard.edu  with the keyword '''''subscribe''''' as the subject.  Or access the [http://massmail.spl.harvard.edu/mailman/listinfo/slicer-devel slicer-devel archives and web administration interface].
 +
<br>
 +
<br>
  
[[Slicer3:Build_Instructions|Slicer3 build instructions]]
+
== Developer Documentation ==
  
[http://www.na-mic.org/Slicer/Documentation/Slicer3/html/ Doxygen documentation for Slicer3].
+
The following links provide more detail on internal aspects of the code. If you need more information, please follow up with email to the listed developers or the developer mailing list.
  
The [[Slicer3:VisualBlog|Slicer3 VisualBlog]] shows screenshots of slicer developments.
+
{|width="800px" border="1"
 +
|-
 +
|style="background:#ddf" width="60%"|'''Introduction to Slicer3'''
 +
|bgcolor="#ddf" valign="top"|'''Key People'''
 +
|-
 +
||[[Slicer3:Build_Instructions | Getting the software and troubleshooting]]
 +
||
 +
|-
 +
||[[media:Slicer 3-beta-2007-01-10.ppt | Overall Architecture]] and [[Slicer3:Style|Slicer 3 Coding Style]]
 +
||
 +
|-
 +
||[[Slicer3:Contributing_codes_to_Slicer3| Contributing codes to Slicer3]]
 +
||
 +
|-
 +
|style="background:#ddf"|'''Three module types (Command line, Loadable, Scriptable)'''
 +
|bgcolor="#ddf" valign="top"|'''Key People'''
 +
|-
 +
||[[Media:Integrating with Slicer3.ppt | Integrating with the 3D Slicer]] || Jim and Steve
 +
|-
 +
||[[Slicer3:Execution_Model_Documentation | Command line modules and how to implement one]] and [[media:Slicer3Plugins.ppt|Tutorial]]
 +
||Jim
 +
|-
 +
|style="background:#ddf"|'''MRML'''<br/>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. [http://www.na-mic.org/Wiki/images/e/e3/Slicer3_MRML.ppt MRML Slides]
 +
|bgcolor="#ddf" valign="top"|'''Key People'''
 +
|-
 +
||[[Slicer3:Data_Model#Creating_Custom_MRML_Node_Classes | Creating and using new MRML node types]]
 +
||Alex
 +
|-
 +
||[[Slicer3:Data_Model#References_to_MRML_Nodes | Keeping references to MRML nodes ]]
 +
||Alex
 +
|-
 +
||[[Slicer3:Data_Model#Undo/Redo_Mechanism  | How undo/redo works, and how to enable it in your code]]
 +
||Alex
 +
|-
 +
|style="background:#ddf"|'''GUI'''
 +
|bgcolor="#ddf" valign="top"|'''Key People'''
 +
|-
 +
||[[Slicer3:EventBindings | Adding keyboard shortcuts]]
 +
||Wendy
 +
|-
 +
||[[Slicer3:Human_Interface_and_Style_Guide_for_Developers | GUI style guidelines (undergoing change for move to Qt)]]
 +
||Wendy
 +
|-
 +
||[[Slicer3:Usability#User-centered_design_practice_for_3DSlicer | User-centered design practice]]
 +
||Wendy
 +
|-
 +
||[[Slicer3:Slicer3Brand | 3DSlicer's logo and visual communication guidelines]]
 +
||Wendy
 +
|-
 +
||[[Slicer3:Execution_Model_Documentation#Adding_Module_Logos_to_Slicer3 | Incorporating your group's logo and attributions]]
 +
||Jim
 +
|-
 +
||[[Slicer3:GUI_Experiments | Some experiments/advanced techniques for developing slicer3 interfaces]]
 +
||Steve
 +
|-
 +
|style="background:#ddf"|'''Engineering'''
 +
|bgcolor="#ddf" valign="top"|'''Key People'''
 +
|-
 +
||Tips for avoiding memory leaks:  Current Practice
 +
||Steve
 +
|-
 +
||Tips for avoiding memory leaks:  [[Slicer3:Memory Management | Suggested change to SmartPointers]]
 +
||Jim
 +
|-
 +
||Generating tests
 +
||Bill
 +
|-
 +
||[[Slicer3:Testing | Setting up Testing]]
 +
||
 +
|-
 +
||[[Slicer3:Builds | Build Information]]
 +
||
 +
|-
 +
||[[Slicer3:Launcher| The Launcher]]
 +
||
 +
|-
 +
|style="background:#ddf"|'''Documenting your module'''<br/>Infrastructure has been added to link to wiki pages from the "Help & Acknowledgment" panel in your module's GUI. We ask developers to fill out a brief document describing your module and its use. [[Documentation-3.5#Requirements_for_Modules|See here for more information.]]
 +
|bgcolor="#ddf" valign="top"|'''Key People'''
 +
|-
 +
||[[Slicer3:DocumentationWink|Documenting a module with wink]]
 +
||
 +
|-
 +
|style="background:#ddf"|'''Integrate Slicer3 into a development environment'''
 +
|bgcolor="#ddf" valign="top"|'''Key People'''
 +
|-
 +
||[[Slicer3::Eclipse | Original Eclipse]]
 +
||Michael Keilhack
 +
|-
 +
||[[Slicer3::New Eclipse Instructions | Revised Eclipse Instructions]]
 +
||Curtis Lisle
 +
|-
 +
||[[Slicer3::Debugging with Eclipse Instructions | Debugging Slicer with Eclipse Instructions]]
 +
||Curtis Lisle
 +
|-
 +
||[[Slicer3::MSVS200X | Microsoft Visual Studio 200x]]
 +
||
 +
|}
 +
<br>
  
Developers should follow the [[Slicer3:Style|Slicer 3 Coding Style]].
+
== Quick Links to Slicer3 Projects ==
 +
 +
Pending feature requests are [http://www.na-mic.org/Bug/search.php?project_id=1&severity_id=10&sticky_issues=on&sortby=last_updated&dir=DESC&hide_status_id=90 stored in the slicer bug tracker with severity setting of 'feature'].  Please also refer to the '''[[Slicer3:FeatureRequests|Feature Requests]]''' from users when planning your implementations.  
  
[http://www.cdash.org/CDash/index.php?project=Slicer3 Slicer3 Dashboard (As Of May 2, 2008)]
+
Many Slicer related projects are worked on during the '''[http://wiki.na-mic.org/Wiki/index.php/Engineering:Programming_Events NA-MIC Project Events]''', please check there for recent updates.
  
[http://www.na-mic.org/Slicer3/Dashboard Slicer3 Dashboard (Before May 2, 2008)]
+
<br>
 
+
{|width="800px" border="1"
[http://na-mic.org/Mantis/main_page.php Slicer Bug Tracker]
+
|-
 
+
|style="background:#ddf" width="60%"|'''Slicer3 Projects'''
Discussion of slicer3 takes place on the slicer-devel at massmail.spl.harvard.edu list. To join developer's mailing list, send a request to: slicer-devel-request at massmail.spl.harvard.edu  with the keyword '''''subscribe''''' as the subject. Or access the [http://massmail.spl.harvard.edu/mailman/listinfo/slicer-devel slicer-devel archives and web administration interface].
+
|bgcolor="#ddf" valign="top"|'''Key People'''<br/>Bold names are responsible for an aspect of the project.
 +
|-
 +
||[[Slicer3:LUTs_and_Ontologies|Lookup tables and Ontologies]]
 +
||'''Michael Halle'''
 +
|-
 +
||[[Slicer3:Data_Model|Data Model / libMRML]]
 +
||'''Alex Yarmarkovich''', Steve Pieper
 +
|-
 +
||[[Slicer3:Execution_Model_Documentation|Execution Model / Command Line Modules]]
 +
||'''Jim Miller''', Bill Lorensen
 +
|-
 +
||[[Slicer3:UIDesign|User Interface Design]]
 +
||'''Wendy Plesniak''', Qt: Julien Finet, Jean-Christophe Fillion-Robin. KWWidgets: Sebastien Barre, Yumin Yuan
 +
|-
 +
||[[Slicer3:DTMRI|DTMRI]]
 +
||'''Alex Yarmarkovich''' with help from Diffusion Images:  '''Raul San Jose Estepar''', Tractography: '''Lauren O'Donnell''' [http://lmi.bwh.harvard.edu LMI]
 +
|-
 +
||[[Slicer3:Editor|Editor]]
 +
||'''Steve Pieper'''
 +
|-
 +
||[http://www.na-mic.org/Wiki/index.php/IGT:ToolKit Image Guided Therapy]
 +
||'''Haiying Liu'''
 +
|-
 +
||[[Slicer3:Slicer_Daemon|SlicerDaemon Interface (for unu, matlab)]]
 +
||'''Steve Pieper'''
 +
|-
 +
||[[Slicer3:Batchmake_Integration|Batchmake/GRID Integration]]
 +
||'''Julien Jomier''', Stephen Aylward
 +
|-
 +
||[[Slicer3:Registration|Registration Modules]]
 +
||'''Domink Meier'''
 +
|-
 +
||[[Slicer3:Python|Python Integration]]
 +
||'''Dan Blezek''', Steve Pieper
 +
|-
 +
||[[Slicer3:GPURayCaster | Volume Rendering using the VTK GPU acclerated Ray Caster]]
 +
||'''Lisa Avila / Sebastien Barre'''
 +
|-
 +
||[[Slicer3:Loadable Modules |Loadable Modules]]
 +
||'''Alex Yarmarkovich''', Steve Pieper, Terry Lorber
 +
|-
 +
||[[Slicer3:Extensions |Extensions]]
 +
||'''Steve Pieper''', Terry Lorber
 +
|-
 +
|style="background:#ddf" width="60%"|'''Project Snapshots'''
 +
|bgcolor="#ddf" valign="top"|This is list of projects which are not active at this time, or the linked pages show a snapshot of the project at a certain time.
 +
|-
 +
||[[Slicer3:Architecture/Features|Architecture/Features]]
 +
||'''Steve Pieper''', Group: Bill Lorensen, Ron Kikinis, Mike Halle, Noby Hata
 +
|-
 +
||[[Slicer3:Execution_Model|Execution Model / Command Line Modules]]
 +
||'''Jim Miller''', Bill Lorensen
 +
|-
 +
||[[Slicer3:Interface_Design|Interface Design and Usability ]]
 +
||'''Wendy Plesniak''', KWWidgets: Sebastien Barre, Yumin Yuan
 +
|-
 +
||[[Slicer3:ColorsFiducialsFreesurferModelmaker|Colors, Fiducials, FreeSurfer, ModelMaker]]
 +
||'''Nicole Aucoin'''
 +
|-
 +
||[[Slicer3:_Image_Guided_Therapy_%28IGT%29|IGT, Trackers]]
 +
||'''Haiying Liu'''
 +
|-
 +
||[[EMSegmenter-Overview|EMSegment Interface]]
 +
||'''Kilian Pohl'''
 +
|-
 +
||[[Slicer3:Build/Test/Deploy|Build/Test/Deploy System]]
 +
||'''Katie Hayes'''
 +
|-
 +
||[[Slicer3:Grid_Interface|Grid Interface]]
 +
||'''Jeff Grethe''', Marco Ruiz
 +
|-
 +
||[[Slicer3:Volume Rendering |Volume Rendering]]
 +
||'''Yanling Liu'''
 +
|-
 +
||[[Slicer3:XNAT |XNAT Interface]]
 +
||'''Steve''', Wendy, Dan Marcus, Tim Olsen
 +
|-
 +
||[[Slicer3:Web Presence |Web Presence]]
 +
||'''Nicole Aucoin''', Zack Galbreath
 +
|-
 +
||[[Slicer3:TimeSeries and Multi-Volume Data | TimeSeries and Multi-Volume Data]]
 +
||Junichi Tokuda, Steve Pieper, Daniel Blezek, Dominik Meier, Wendy Plesniak
 +
|-
 +
||[[Slicer3:Remote Data Handling | Remote Data Handling]]
 +
||'''Steve Pieper, Nicole Aucoin, Wendy Plesniak'''
 +
|-
 +
||[[Slicer3:Module:QueryAtlas |Query Atlas]]
 +
||'''Wendy Plesniak'''
 +
|-
 +
||[[Slicer3:RadiologicalReview | Radiological review]]
 +
||'''Jim Miller'''
 +
|-
 +
||[[Slicer3:Transition_of_Slicer2.x_Modules|Transition of Selected Slicer2.x Modules to Slicer3]]
 +
||'''Nicole Aucoin''', Katie Hayes, Wendy Plesniak, Mathieu Malaterre
 +
|-
 +
||[[Modules:Volumes:Diffusion_Editor-Documentation-3.6|Diffusion Editor]]
 +
||'''Kerstin'''
 +
|-
 +
||[[Slicer3:MistSlicer | MistSlicer]]
 +
||'''Yuichiro Hayashi''', Kensaku Mori, Nobuhiko Hata
 +
|-
 +
||[[Slicer3:LDDMM |LDDMM Interface]]
 +
||'''Steve''', Anthony Kolasny
 +
|-
 +
||[[Slicer3:Volume Rendering With Cuda|Volume Rendering With CUDA (NOT Active)]]
 +
||'''Ben'''
 +
|-
 +
||[[Slicer3:Pipeline_Integration|Loni Pipeline Integration]]
 +
||'''Jags'''
 +
|-
 +
||[[Slicer3:Performance_Analysis|Slicer3:Performance Analysis]]
 +
||'''Katie Hayes'''
 +
|-
 +
||[[Slicer3:ThreadingToolKit|Threading ToolKit]]
 +
||'''Dan Blezek, James Miller, Stephen Aylward'''
 +
|-
 +
||[[Slicer3:BrainlabModule|Brainlab Integration]]
 +
||'''Haiying Liu, Noby Hata, Ron Kikinis'''
 +
|}
  
 
== Design Information ==
 
== Design Information ==
 +
*May 23, 2006: [http://www.na-mic.org/Wiki/index.php/Algorithms:Core1Visit_May06 Algorithm Core workshop.]
 +
*April 3, 2006: [[Media:Slicer_3-alpha-2006-04-03.ppt| Slicer 3 alpha]] technical powerpoint presentation.
 +
*Discussion page about using [[Qt in Slicer3|Slicer3:Qt]].
 +
*Implementation priorities from the slicer3 port are shown in this '''[[Slicer3:Status_Summary|Status Summary]]'''.
  
May 23, 2006: [http://www.na-mic.org/Wiki/index.php/Algorithms:Core1Visit_May06 Algorithm Core workshop.]
+
== Resources ==
 
 
April 3, 2006: [[Media:Slicer_3-alpha-2006-04-03.ppt| Slicer 3 alpha]] technical powerpoint presentation.
 
 
 
= Events =
 
 
 
== Upcoming ==
 
 
 
=== Slicer3.0 ===
 
 
 
* the first product release of Slicer3 is scheduled for the AHM in January of 2008
 
* there will be a code freeze on Nov. 15 2007
 
** if you want your module to be part of Slicer3.0 submit it by then
 
** 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.
 
** Anyone 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).
 
 
 
 
 
== Retrospective ==
 
 
 
=== Slicer 3 Snapshot Builds ===
 
 
 
* Initial releases began end of March 2007
 
** Base code functional and usable
 
** Several usable modules include (auto segmentaiton, editor, registration...)
 
** Image Guided Therapy example modules
 
* Updated versions summer 2007
 
** With DTI and other application modules
 
** Bug fixes and performance enhancements
 
 
 
=== Migration Tutorials (from Slicer 2.x to 3.0)  ===
 
 
 
The first set of user tutorials will be released in Fall 2007.
 
Slicer3 programming courses will be released in January 2008.
 
 
 
== Past ==
 
 
 
=== Slicer3.0 Beta ===
 
 
 
* Official release at [http://www.na-mic.org/Wiki/index.php/AHM_2007  AHM January 2007]
 
 
 
=== April 3, 2006 ===
 
 
 
There was a [[Slicer3:_Alpha1_Meeting|Slicer3 Alpha1 Design Review]] meeting.
 
 
 
'''[[Slicer3:Alpha|Definition of Alpha Milestone]]'''
 
 
 
=== Slicer3 Alpha2/Beta1 by End of July 2006 ===
 
  
* Initial Testing with Core 3 participation
+
Several books are available on the core topics related to slicer programming:
* Base functionality in place, but still subject to API changes and other improvements.
 
* Packaged versions not yet available, but testers are able to easily build their own versions.
 
  
=== Implementation of Slicer3 Alpha1 by end of March 2006 ===
+
* [http://kitware.com/products/books.html Kitware's books on VTK, ITK, CMake]
 +
* [http://www.akpeters.com/product.asp?ProdCode=2175 the ITK theory book]
 +
* [http://bioimagesuite.org/vtkbook5/index.html Xenios's book on Medical Imaging and VTK - many useful examples in tcl]

Latest revision as of 02:13, 27 November 2019

Home < Slicer3:Developers

Slicer 3 Developer Page

3DSlicerLogo-H-Color-212x121.png
  • This page contains links to Slicer3 developer resources and events.
  • For information about other versions of Slicer see here
  • Click here for Slicer3 Events

Slicer 3 Architecture Overview

For more details on the slicer architecture see: Architecture Slides (updated April, 2007).

Quick Links for Developers

This section centrally locates many existing (and developing) wiki pages useful to Slicer3 developers.

Slicer 3 Quick links to the Source code

The Slicer3 svn repository:

svn co http://svn.slicer.org/Slicer3/trunk Slicer3
General Slicer3 Quick Links Debugging Slicer3 Quick Links
Slicer3 build instructions Slicer3 Dashboard (After May 2, 2008)
Use ViewVC to browse the repository Slicer3 Dashboard (Before May 2, 2008)
Instructions for NA-MIC svn Slicer Bug Tracker
Doxygen documentation for Slicer3.
The Slicer3 VisualBlog shows screenshots of slicer developments.
Developers should follow the Slicer 3 Coding Style.

Developers' Mailing List

Discussion of Slicer3 takes place on the slicer-devel at massmail.spl.harvard.edu list. To join developer's mailing list, send a request to: slicer-devel-request at massmail.spl.harvard.edu with the keyword subscribe as the subject. Or access the slicer-devel archives and web administration interface.

Developer Documentation

The following links provide more detail on internal aspects of the code. If you need more information, please follow up with email to the listed developers or the developer mailing list.

Introduction to Slicer3 Key People
Getting the software and troubleshooting
Overall Architecture and Slicer 3 Coding Style
Contributing codes to Slicer3
Three module types (Command line, Loadable, Scriptable) Key People
Integrating with the 3D Slicer Jim and Steve
Command line modules and how to implement one and Tutorial Jim
MRML
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. MRML Slides
Key People
Creating and using new MRML node types Alex
Keeping references to MRML nodes Alex
How undo/redo works, and how to enable it in your code Alex
GUI Key People
Adding keyboard shortcuts Wendy
GUI style guidelines (undergoing change for move to Qt) Wendy
User-centered design practice Wendy
3DSlicer's logo and visual communication guidelines Wendy
Incorporating your group's logo and attributions Jim
Some experiments/advanced techniques for developing slicer3 interfaces Steve
Engineering Key People
Tips for avoiding memory leaks: Current Practice Steve
Tips for avoiding memory leaks: Suggested change to SmartPointers Jim
Generating tests Bill
Setting up Testing
Build Information
The Launcher
Documenting your module
Infrastructure has been added to link to wiki pages from the "Help & Acknowledgment" panel in your module's GUI. We ask developers to fill out a brief document describing your module and its use. See here for more information.
Key People
Documenting a module with wink
Integrate Slicer3 into a development environment Key People
Original Eclipse Michael Keilhack
Revised Eclipse Instructions Curtis Lisle
Debugging Slicer with Eclipse Instructions Curtis Lisle
Microsoft Visual Studio 200x


Quick Links to Slicer3 Projects

Pending feature requests are stored in the slicer bug tracker with severity setting of 'feature'. Please also refer to the Feature Requests from users when planning your implementations.

Many Slicer related projects are worked on during the NA-MIC Project Events, please check there for recent updates.


Slicer3 Projects Key People
Bold names are responsible for an aspect of the project.
Lookup tables and Ontologies Michael Halle
Data Model / libMRML Alex Yarmarkovich, Steve Pieper
Execution Model / Command Line Modules Jim Miller, Bill Lorensen
User Interface Design Wendy Plesniak, Qt: Julien Finet, Jean-Christophe Fillion-Robin. KWWidgets: Sebastien Barre, Yumin Yuan
DTMRI Alex Yarmarkovich with help from Diffusion Images: Raul San Jose Estepar, Tractography: Lauren O'Donnell LMI
Editor Steve Pieper
Image Guided Therapy Haiying Liu
SlicerDaemon Interface (for unu, matlab) Steve Pieper
Batchmake/GRID Integration Julien Jomier, Stephen Aylward
Registration Modules Domink Meier
Python Integration Dan Blezek, Steve Pieper
Volume Rendering using the VTK GPU acclerated Ray Caster Lisa Avila / Sebastien Barre
Loadable Modules Alex Yarmarkovich, Steve Pieper, Terry Lorber
Extensions Steve Pieper, Terry Lorber
Project Snapshots This is list of projects which are not active at this time, or the linked pages show a snapshot of the project at a certain time.
Architecture/Features Steve Pieper, Group: Bill Lorensen, Ron Kikinis, Mike Halle, Noby Hata
Execution Model / Command Line Modules Jim Miller, Bill Lorensen
Interface Design and Usability Wendy Plesniak, KWWidgets: Sebastien Barre, Yumin Yuan
Colors, Fiducials, FreeSurfer, ModelMaker Nicole Aucoin
IGT, Trackers Haiying Liu
EMSegment Interface Kilian Pohl
Build/Test/Deploy System Katie Hayes
Grid Interface Jeff Grethe, Marco Ruiz
Volume Rendering Yanling Liu
XNAT Interface Steve, Wendy, Dan Marcus, Tim Olsen
Web Presence Nicole Aucoin, Zack Galbreath
TimeSeries and Multi-Volume Data Junichi Tokuda, Steve Pieper, Daniel Blezek, Dominik Meier, Wendy Plesniak
Remote Data Handling Steve Pieper, Nicole Aucoin, Wendy Plesniak
Query Atlas Wendy Plesniak
Radiological review Jim Miller
Transition of Selected Slicer2.x Modules to Slicer3 Nicole Aucoin, Katie Hayes, Wendy Plesniak, Mathieu Malaterre
Diffusion Editor Kerstin
MistSlicer Yuichiro Hayashi, Kensaku Mori, Nobuhiko Hata
LDDMM Interface Steve, Anthony Kolasny
Volume Rendering With CUDA (NOT Active) Ben
Loni Pipeline Integration Jags
Slicer3:Performance Analysis Katie Hayes
Threading ToolKit Dan Blezek, James Miller, Stephen Aylward
Brainlab Integration Haiying Liu, Noby Hata, Ron Kikinis

Design Information

Resources

Several books are available on the core topics related to slicer programming: