Difference between revisions of "Projects:ARRA:SlicerEM:Developer"

From NAMIC Wiki
Jump to: navigation, search
m (Text replacement - "http://www.slicer.org/slicerWiki/index.php/" to "https://www.slicer.org/wiki/")
 
(134 intermediate revisions by 3 users not shown)
Line 10: Line 10:
  
 
= Work in Progress =
 
= Work in Progress =
''What do you plan to do this week''
+
== Kilian ==
 +
;Current - week 7
 +
;week 6
 +
: Comments and suggestions associated with EMSegment-QtPort preview
 +
;week 5
 +
;week 4
 +
;week 3
 +
;week 2
 +
;week 1
 +
:Review [[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#List_of_Widgets_and_associated_panels_.28ordered_by_priority.29|list of widget]] and prioritize.
  
 
== Sebastien ==
 
== Sebastien ==
* Work with Danielle on the workflow manager
+
:Work with Danielle on the workflow manager
  
 
== Julien ==
 
== Julien ==
 +
;Current - Week 7
 +
:ToBeDone
 +
:: Plot2D
 +
;Week 6
 +
;Week 5
 +
:Graph panel design
 +
:Plot1D
 +
 +
;Week 4
 +
: Charts now work in CTK
 +
 +
;Week 3
 +
 +
;Week 2
 +
:Marcus (Kitware Inc.) has finished a pass on the design of vtkCharts (VTK trunk).
 +
:A local branch (github.com/finetjul/VTK) has been forked.
 +
:Added minor improvements/bug fixes into the VTK charts (on wait for contributing back to VTK trunk).
 +
 +
;Week 1
 +
:Discuss with vtkChart folks and see how existing CTK Charting [http://github.com/commontk/CTK/tree/master/Libs/Visualization/VTK/Widgets/] classes can be moved to VTKChart [http://vtk.org/gitweb?p=VTK.git;a=tree;f=Charts;h=f6f0ce2706b4d4e8141b38afc4d40ba7b3e7c8c6;hb=HEAD]
  
 
== Jc ==
 
== Jc ==
* <del>Create initial directory structure and QtModule skeleton.</del> See [http://viewvc.slicer.org/viewcvs.cgi?view=rev&rev=14138 14138]
+
;Current - Week7
* <del>Review UI - Added help and button (next, back, etc..)</del> See [http://viewvc.slicer.org/viewcvs.cgi?view=rev&rev=14195 14195]
+
:ToBeDone
* <del>Write down Developer page</del>
+
:: Define python task skeleton
* Milestones for project at next weeks meeting
+
 
* Review which widgets should be converted
+
;Week6
* Convert EMSegment/{Algorithm,Graph,MRML,Registration} to shared library. See [http://viewvc.slicer.org/viewcvs.cgi?rev=14245&view=rev 14245]
+
: Refine Anatomical tree widget
* Update QtModule to use EMSegment libraries.
+
: Work with Danielle to integrate workflow manager
* Design static UI panel
+
 
 +
;Week 5
 +
: Update anatomical tree to support editing of label + support of update checkbox
 +
: connect workflow manager
 +
: port the validation code
 +
 
 +
;Week 4
 +
:Port dynamic list of Input Channels to Qt. See [[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#DynamicListOfInputChannel|DynamicListOfInputChannel]]
 +
:Review workflowManager and integrate to CTK
 +
:Initial port of Anatomical tree widget
 +
 
 +
;Week 3
 +
:Define a clear agenda for the [[Projects:ARRA:SlicerEM_Meeting_08092010|August 9th meeting]]
 +
:Enable CTK/PythonQt wrapping of QtModules (Gui, UITools, ... ). See [http://viewvc.slicer.org/viewcvs.cgi?rev=14448&view=rev 14448], [http://viewvc.slicer.org/viewcvs.cgi?rev=14449&view=rev 14449], [http://github.com/commontk/CTK/commit/2b07c36f896667cc866b8016de643bf9ce557b72 CTK]
 +
 
 +
;Week 2
 +
:Update QtModule to use EMSegment libraries. See [http://viewvc.slicer.org/viewcvs.cgi?rev=14250&view=rev 14250], [http://viewvc.slicer.org/viewcvs.cgi?view=rev&rev=14251 14251]
 +
:Setup a priority list for the widget for Kilian to edit. See [[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#List_of_Widgets_and_associated_panels_.28ordered_by_priority.29|List of widget to prioritize]]
 +
:Updated logic to initialize properly. See [http://viewvc.slicer.org/viewcvs.cgi?rev=14353&view=rev 14353]
 +
:Design static UI panel
 +
::Created corresponding UI files, header and cxx files. See [http://viewvc.slicer.org/viewcvs.cgi?rev=14350&view=rev 14350]
 +
::Port Task selector to Qt. See [[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#TaskSelector|TaskSelector]]
 +
 
 +
;Week 1
 +
:Create initial directory structure and QtModule skeleton. See [http://viewvc.slicer.org/viewcvs.cgi?view=rev&rev=14138 14138]
 +
:Review UI - Added help and button (next, back, etc..) See [http://viewvc.slicer.org/viewcvs.cgi?view=rev&rev=14195 14195]
 +
:Write down Developer page
 +
:Milestones for project at next weeks meeting. See [[Projects:ARRA:SlicerEM:Developer#Milestones]]
 +
:Review which widgets should be converted. See [[Projects:ARRA:SlicerEM:Developer:WidgetsToPort]]
 +
:Convert EMSegment/{Algorithm,Graph,MRML,Registration} to shared library. See [http://viewvc.slicer.org/viewcvs.cgi?rev=14245&view=rev 14245], [http://viewvc.slicer.org/viewcvs.cgi?rev=14248&view=rev 14428], [http://viewvc.slicer.org/viewcvs.cgi?rev=14258&view=rev 14258]
  
 
== Danielle ==
 
== Danielle ==
* Get familiar with Git and how to contribute to CTK
+
;Current - Week7
* Evaluate QtStateMachine and identify what are its limitation
+
 
* Develop the skeleton / API of the ctkWorkflowManager / ctkWorkflowStep
+
;Week6
 +
:RunSegmentation panel
 +
:Finish integrating workflow manager with Qt designer
 +
 
 +
;Week 5
 +
:Started to port RunSegmentation panel (complete with the exception of the ROI widget)
 +
:Started to integrate workflow manager with Qt Designer
 +
:Port DefinePreprocessing panel (without tcl scripts)
 +
:Ported "startSegmentation" mechanism.
 +
:Integrate workflow manager into EMSegment module
 +
:Enable branching workflows in workflow manager, for use with "simple" and "advanced" EM Segment workflows
 +
 
 +
;Week 4
 +
:Integrate workflow manager into EMSegment module
 +
:jumping directly to "finish" state
 +
 
 +
;Week 3
 +
:Should provide a high-level and a low-level API
 +
:The High-level API should be very simple
 +
:All method related to QState should be protected.
 +
:Add a method lastStep()
 +
:Make sure it's possible to configure step (Test associated with button, should Next be enabled)
 +
:Remove any UI related function from CTKCore
 +
:Review API to review API validateForward / validateBackward / enter / exit
 +
:Specify validation, entryProcessing, exitProcessing, populateStepWidgetsList, showUI, hideUI function for custom steps via signal-slot mechanism, instead of requiring derivation of ctkWorkflowStep
 +
:allow user to set layouts instead of hard-coding the layout type
 +
:testing for ctkWorkflowManager / ctkWorkflowStep / ctkWorkflowWidget
 +
:example for using the workflow manager
 +
 
 +
;Week 2
 +
:Develop the skeleton / API of the ctkWorkflowManager / ctkWorkflowStep / ctkWorkflowWidget
 +
:Implement core functionality of ctkWorkflowManager / ctkWorkflowStep / ctkWorkflowWidget
 +
:ctkWorkflowWidget convenience class with integrated Back/Next/Finish buttons
 +
:Clean up code, documentation - See [[Projects:ARRA:SlicerEM:Developer:WorkflowManager|WorkflowManager]]
 +
 
 +
;Week 1
 +
:Get familiar with Git and how to contribute to CTK
 +
:Evaluate QtStateMachine and identify what are its limitation
 +
 
 +
== Johan ==
 +
;Current - Week7
 +
;Week6
 +
;Week 5
 +
: Create a widget qMRMLLabelComboBox able to display a vtkMRMLTableColorNode. See [http://viewvc.slicer.org/viewcvs.cgi?rev=14702&view=rev 14702]
 +
: Compile slicer
 +
: Start to port vtkMRMLColoreTableNode selector
  
 
= Team meeting =
 
= Team meeting =
Line 36: Line 139:
  
 
== Coming ==
 
== Coming ==
* 8/9/2010 - [[Projects:ARRA:SlicerEM_Meeting_08092010|Meeting / Midterm meeting with Kilian]]
+
* 9/07/2010 - [[Projects:ARRA:SlicerEM_Meeting_09072010|Meeting Week #7]]
  
 
== Past ==
 
== Past ==
 +
* 8/31/2010 - [[Projects:ARRA:SlicerEM_Meeting_08312010|Meeting Week #6]]
 +
* 8/30/2010 - [[Projects:ARRA:SlicerEM_Meeting_08302010|Meeting / EMSegment-QtPort Review]]
 +
* 8/24/2010 - [[Projects:ARRA:SlicerEM_Meeting_08242010|Meeting Week #5]]
 +
* 8/19/2010 - [[Projects:ARRA:SlicerEM_Meeting_08192010|Meeting Week #4]]
 +
* 8/9/2010 - [[Projects:ARRA:SlicerEM_Meeting_08092010|Midterm meeting with Kilian]]
 +
* 8/3/2010 - [[Projects:ARRA:SlicerEM_Meeting_08032010|Meeting Week #3]]
 +
* 7/27/2010 - [[Projects:ARRA:SlicerEM_Meeting_07272010|Meeting Week #2]]
 +
* 7/20/2010 - [[Projects:ARRA:SlicerEM_Meeting_07202010|Meeting Week #1]]
 
* 7/14/2010 - [[Projects:ARRA:SlicerEM_Meeting_07142010|WorkflowManager meeting]]
 
* 7/14/2010 - [[Projects:ARRA:SlicerEM_Meeting_07142010|WorkflowManager meeting]]
 
* 7/8/2010 - [[Projects:ARRA:SlicerEM_Meeting_07082010|Kickoff meeting]]
 
* 7/8/2010 - [[Projects:ARRA:SlicerEM_Meeting_07082010|Kickoff meeting]]
  
 
= Milestones =
 
= Milestones =
* Implementation of Workflow manager
+
 
* Port of KWWidgets widgets to Qt
+
''Please note that the current list may be refined''
* Static Panels
+
 
* Graphs
+
* July 16th
* Dynamic panels
+
** <del>Create QtModule skeleton</del>
* Tcl scripts
+
** <del>Write developer documentation</del>
 +
 
 +
* July 23th
 +
** <del>Factor out EMSegment{Algorithm, Graph, MRML, Registration} libraries</del>
 +
** <del>Workflow manager: Class skeletons (ctkWorkflowManager, ctkWorkflowStep)</del>
 +
 
 +
* July 30th
 +
** Port: <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#TaskSelector|TaskSelector]]</del>, <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#NodeAttributes|NodeAttributes]]</del>, <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#ProbabilityMapSelector|ProbabilityMapSelector]]</del>
 +
** <del>[[Projects:ARRA:SlicerEM:Developer:PythonScripting|Python scripting]]: 10%</del>
 +
 
 +
* August 6th
 +
** Port: <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#AtlasToInputRegistration|AtlasToInputRegistration]]</del>, <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#Segmentation_Mode|Segmentation_Mode]]</del>,<del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#InputChannel_selector|InputChannelSelector]]</del>,<del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#DynamicListOfInputChannel|DynamicListOfInputChannel]]</del>
 +
** Panel:<del>'''Define Task'''</del>, <del>'''Define Input Channel''' (static version)</del>
 +
** <del>[[Projects:ARRA:SlicerEM:Developer:PythonScripting|Python scripting]]: 50%</del>
 +
 
 +
* August 13th
 +
** Port: <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#AnatomicalTree|AnatomicalTree 50%]]</del>, <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#IntensityDistribution|IntensityDistribution]]</del>
 +
** <del>Workflow manager: Start integration with Static UI Panel</del>
 +
** Panel:  <del>'''Define preprocessing''', '''Specify intensity distribution''' (without Manual sampling)</del>
 +
** <del>[[Projects:ARRA:SlicerEM:Developer:PythonScripting|Python scripting 60%]]</del>
 +
 
 +
* August 20th
 +
** Port: <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#WeightEditor| WeightEditor 20%]]</del>, <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#AnatomicalTree|AnatomicalTree 85%]]</del>, <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#PlotClassDistribution1D| PlotClassDistribution1D 50%]]</del>
 +
** Panel: <del>'''Define Anatomical tree'''</del>, <del>'''Define Atlas'''</del>
 +
 
 +
* August 27th
 +
** Port: <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#AnatomicalTree|AnatomicalTree 85%]]</del>, <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#OutputLabelMapSelector| OutputLabelMapSelector 50%]]</del>, <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#PlotClassDistribution1D| PlotClassDistribution1D 100%]]</del>, <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#WeightEditor| WeightEditor 60%]]</del>, <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#WorkingDirSelector| WorkingDirSelector]]</del>
 +
** <del>Workflow manager: Complete integration</del>
 +
** Panel: <del>'''Edit node-based parameters 50%'''</del>, <del>'''Run segmentation 35%'''</del>, <del>'''Define Input Channel 100%'''</del>, <del>'''Edit registration parameter'''</del>
 +
 
 +
* September 3rd
 +
** Port: <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#AnatomicalTree|AnatomicalTree 100%]]</del>, [[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#ClassWeightsOverview| ClassWeightsOverview]],[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#StoppingConditionsEditor|  StoppingConditionsEditor]], <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#VOIEditor| VOIEditor]] (just UI part)</del>, [[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#WeightEditor| WeightEditor 100%]], <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#OutputLabelMapSelector| OutputLabelMapSelector 100%]]</del>
 +
** Panel: <del>'''Run segmentation 100%'''</del>, '''Edit node-based parameters 100%'''
 +
** [[Projects:ARRA:SlicerEM:Developer:PythonScripting|Python scripting ???%]]
 +
** Green dashboard expected
 +
 
 +
* September 10th
 +
** Polish
 +
** Review Doxygen, Style
 +
 
 +
* If time permit:
 +
** [[Projects:ARRA:SlicerEM:Developer:PythonScripting|Python scripting - complete integration]]
 +
** [[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#PrintConfig| PrintConfig]]
 +
** [[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#ManualSampling| ManualSampling]]
 +
** [[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#ColorMapViewOnly|ColorMapViewOnly]],  <del>[[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#Colormap selector|Colormap selector]]</del>
 +
** [[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#AdvancedNodeParameterEditor| AdvancedNodeParameterEditor]]
 +
** [[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#PlotClassDistribution2D| PlotClassDistribution2D]]
 +
** Panel: Integrate Manual sampling to '''Define Anatomical tree''' panel
  
 
= Project components =
 
= Project components =
 
+
* [[Projects:ARRA:SlicerEM:Developer:ExampleWorkflow|Example workflow: MRI Human brain]]
 
* [[Projects:ARRA:SlicerEM:Developer:WorkflowManager|Workflow manager]]
 
* [[Projects:ARRA:SlicerEM:Developer:WorkflowManager|Workflow manager]]
 +
* [[Projects:ARRA:SlicerEM:Developer:QtWidgets|Widgets to port]]
 +
* [[Projects:ARRA:SlicerEM:Developer:PythonScripting|Python scripting]]
 +
* [[Projects:ARRA:SlicerEM:Developer:ImageGallery|Image gallery]]
  
 
= Development environment =
 
= Development environment =
Line 68: Line 229:
  
 
== Working on Slicer / CTK in parallel ==
 
== Working on Slicer / CTK in parallel ==
* Step1: Build slicer following [http://www.slicer.org/slicerWiki/index.php/Slicer4:Build_Instructions these instruction]. Enable both Slicer3_USE_KWWIDGETS and Slicer3_USE_QT.
+
* Step1: Build slicer following [https://www.slicer.org/wiki/Slicer4:Build_Instructions these instruction]. Enable both Slicer3_USE_KWWIDGETS and Slicer3_USE_QT.
 
* Step2: Create a github user [http://help.github.com/] and fork CTK (http://github.com/commontk/CTK).  
 
* Step2: Create a github user [http://help.github.com/] and fork CTK (http://github.com/commontk/CTK).  
 
* Step3: Build CTK - See [http://www.commontk.org/index.php/Build_Instructions these instructions] - Consider also the instruction below to configure CTK as expected by Slicer
 
* Step3: Build CTK - See [http://www.commontk.org/index.php/Build_Instructions these instructions] - Consider also the instruction below to configure CTK as expected by Slicer
Line 91: Line 252:
 
== EMSegment source code ==
 
== EMSegment source code ==
 
* The name of the Qt module is EMSegment.  
 
* The name of the Qt module is EMSegment.  
* The associated source code, hosted on slicer3 repository (trunk) is located in the following directory: [http://viewvc.slicer.org/viewcvs.cgi?rev=14138&view=rev <SRC>/QTModules/EMSegment]
+
* The associated source code, hosted on slicer3 repository (trunk) is located in the following directory: [http://viewvc.slicer.org/viewcvs.cgi/trunk/QTModules/EMSegment/ /QTModules/EMSegment]
 
* Every commit related to EMSegment should be prefixed with either:
 
* Every commit related to EMSegment should be prefixed with either:
 
** ENH: EMSegment - <Message summary>
 
** ENH: EMSegment - <Message summary>

Latest revision as of 17:38, 10 July 2017

Home < Projects:ARRA:SlicerEM:Developer

Back to SlicerEM page

Kitware Team

  • Sebastien Barre - Workflow manager - 50%
  • Julien Finet - Chart/Plot export - work in // with vtkChart folks - 10%
  • Jean-Christophe Fillion-Robin (Project Lead) - Infrastructure / Python - 50%
  • Danielle Pace - Workflow manager - 100%

Unassigned Items

lists tasks that need to be done

Work in Progress

Kilian

Current - week 7
week 6
Comments and suggestions associated with EMSegment-QtPort preview
week 5
week 4
week 3
week 2
week 1
Review list of widget and prioritize.

Sebastien

Work with Danielle on the workflow manager

Julien

Current - Week 7
ToBeDone
Plot2D
Week 6
Week 5
Graph panel design
Plot1D
Week 4
Charts now work in CTK
Week 3
Week 2
Marcus (Kitware Inc.) has finished a pass on the design of vtkCharts (VTK trunk).
A local branch (github.com/finetjul/VTK) has been forked.
Added minor improvements/bug fixes into the VTK charts (on wait for contributing back to VTK trunk).
Week 1
Discuss with vtkChart folks and see how existing CTK Charting [1] classes can be moved to VTKChart [2]

Jc

Current - Week7
ToBeDone
Define python task skeleton
Week6
Refine Anatomical tree widget
Work with Danielle to integrate workflow manager
Week 5
Update anatomical tree to support editing of label + support of update checkbox
connect workflow manager
port the validation code
Week 4
Port dynamic list of Input Channels to Qt. See DynamicListOfInputChannel
Review workflowManager and integrate to CTK
Initial port of Anatomical tree widget
Week 3
Define a clear agenda for the August 9th meeting
Enable CTK/PythonQt wrapping of QtModules (Gui, UITools, ... ). See 14448, 14449, CTK
Week 2
Update QtModule to use EMSegment libraries. See 14250, 14251
Setup a priority list for the widget for Kilian to edit. See List of widget to prioritize
Updated logic to initialize properly. See 14353
Design static UI panel
Created corresponding UI files, header and cxx files. See 14350
Port Task selector to Qt. See TaskSelector
Week 1
Create initial directory structure and QtModule skeleton. See 14138
Review UI - Added help and button (next, back, etc..) See 14195
Write down Developer page
Milestones for project at next weeks meeting. See Projects:ARRA:SlicerEM:Developer#Milestones
Review which widgets should be converted. See Projects:ARRA:SlicerEM:Developer:WidgetsToPort
Convert EMSegment/{Algorithm,Graph,MRML,Registration} to shared library. See 14245, 14428, 14258

Danielle

Current - Week7
Week6
RunSegmentation panel
Finish integrating workflow manager with Qt designer
Week 5
Started to port RunSegmentation panel (complete with the exception of the ROI widget)
Started to integrate workflow manager with Qt Designer
Port DefinePreprocessing panel (without tcl scripts)
Ported "startSegmentation" mechanism.
Integrate workflow manager into EMSegment module
Enable branching workflows in workflow manager, for use with "simple" and "advanced" EM Segment workflows
Week 4
Integrate workflow manager into EMSegment module
jumping directly to "finish" state
Week 3
Should provide a high-level and a low-level API
The High-level API should be very simple
All method related to QState should be protected.
Add a method lastStep()
Make sure it's possible to configure step (Test associated with button, should Next be enabled)
Remove any UI related function from CTKCore
Review API to review API validateForward / validateBackward / enter / exit
Specify validation, entryProcessing, exitProcessing, populateStepWidgetsList, showUI, hideUI function for custom steps via signal-slot mechanism, instead of requiring derivation of ctkWorkflowStep
allow user to set layouts instead of hard-coding the layout type
testing for ctkWorkflowManager / ctkWorkflowStep / ctkWorkflowWidget
example for using the workflow manager
Week 2
Develop the skeleton / API of the ctkWorkflowManager / ctkWorkflowStep / ctkWorkflowWidget
Implement core functionality of ctkWorkflowManager / ctkWorkflowStep / ctkWorkflowWidget
ctkWorkflowWidget convenience class with integrated Back/Next/Finish buttons
Clean up code, documentation - See WorkflowManager
Week 1
Get familiar with Git and how to contribute to CTK
Evaluate QtStateMachine and identify what are its limitation

Johan

Current - Week7
Week6
Week 5
Create a widget qMRMLLabelComboBox able to display a vtkMRMLTableColorNode. See 14702
Compile slicer
Start to port vtkMRMLColoreTableNode selector

Team meeting

lists the team meeting and includes a pointer to the associated notes

Coming

Past

Milestones

Please note that the current list may be refined

  • July 16th
    • Create QtModule skeleton
    • Write developer documentation
  • July 23th
    • Factor out EMSegment{Algorithm, Graph, MRML, Registration} libraries
    • Workflow manager: Class skeletons (ctkWorkflowManager, ctkWorkflowStep)
  • September 10th
    • Polish
    • Review Doxygen, Style

Project components

Development environment

Contributing to CTK

  • Each developer should fork CTK official repository (github.com/commontk/CTK). Doing so will allow to:
    • backup its work before integration with CTK master.
    • publish and share its work
  • WorkflowManager code should be added to ctkWorkflowManager branch.

Working on Slicer / CTK in parallel

  • Step1: Build slicer following these instruction. Enable both Slicer3_USE_KWWIDGETS and Slicer3_USE_QT.
  • Step2: Create a github user [4] and fork CTK (http://github.com/commontk/CTK).
  • Step3: Build CTK - See these instructions - Consider also the instruction below to configure CTK as expected by Slicer
    • Make sure you set the following options
      • PluginFramework should be disable: CTK_LIB_PluginFramework:BOOL=OFF and CTK_PLUGIN_org.commontk.eventbus:BOOL=OFF
      • Enable VTK: CTK_LIB_Visualization/VTK/Widgets:BOOL=ON, VTK_DIR:PATH=<SlicerVTK_Binary_DIR>
cd MyProjects
git clone http://github.com/me/CTK
mkdir CTK-Superbuild
cd CTK-Superbuild
ccmake -DCTK_LIB_PluginFramework:BOOL=OFF -DCTK_PLUGIN_org.commontk.eventbus:BOOL=OFF -DCTK_LIB_Visualization/VTK/Widgets:BOOL=ON -DVTK_DIR:PATH=/home/me/MyProjects/Slicer3-SuperBuild/VTK-build ../CTK
make
  • Step4: Re-configure slicer4 passing CTK_DIR
cd MyProjects/Slicer3-Superbuild
ccmake -DCTK_DIR:PATH=/home/me/MyProjects/CTK-Superbuild .

EMSegment source code

  • The name of the Qt module is EMSegment.
  • The associated source code, hosted on slicer3 repository (trunk) is located in the following directory: /QTModules/EMSegment
  • Every commit related to EMSegment should be prefixed with either:
    • ENH: EMSegment - <Message summary>
    • COMP: EMSegment - <Message summary>
    • BUG: EMSegment - <Message summary>
    • STYLE: EMSegment - <Message summary>

Coding Style

Future idea / improvements