Difference between revisions of "Projects:ARRA:SlicerEM:Developer"
From NAMIC Wiki
m (Text replacement - "http://www.slicer.org/slicerWiki/index.php/" to "https://www.slicer.org/wiki/") |
|||
(161 intermediate revisions by 3 users not shown) | |||
Line 8: | Line 8: | ||
= Unassigned Items = | = Unassigned Items = | ||
''lists tasks that need to be done'' | ''lists tasks that need to be done'' | ||
− | |||
− | |||
= Work in Progress = | = 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 [[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 | ||
== 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 == | ||
− | + | ;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 [[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 == | ||
+ | ;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 [[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 = | ||
''lists the team meeting and includes a pointer to the associated notes'' | ''lists the team meeting and includes a pointer to the associated notes'' | ||
+ | == Coming == | ||
+ | * 9/07/2010 - [[Projects:ARRA:SlicerEM_Meeting_09072010|Meeting Week #7]] | ||
+ | |||
+ | == 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/8/2010 - [[Projects:ARRA:SlicerEM_Meeting_07082010|Kickoff meeting]] | * 7/8/2010 - [[Projects:ARRA:SlicerEM_Meeting_07082010|Kickoff meeting]] | ||
− | = | + | = Milestones = |
+ | |||
+ | ''Please note that the current list may be refined'' | ||
+ | |||
+ | * July 16th | ||
+ | ** <del>Create QtModule skeleton</del> | ||
+ | ** <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 = | ||
+ | * [[Projects:ARRA:SlicerEM:Developer:ExampleWorkflow|Example workflow: MRI Human brain]] | ||
+ | * [[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 38: | Line 222: | ||
** publish and share its work | ** publish and share its work | ||
− | * | + | * Refer to the follow document: http://www.commontk.org/index.php/Contributing_to_CTK. |
− | * | + | * WorkflowManager code should be added to ctkWorkflowManager branch. |
+ | ** That branch has been created on http://github.com/jcfr/CTK. | ||
+ | ** See [http://www.commontk.org/index.php/Contributing_to_CTK#Checkout_a_branch_from_a_different_fork] to obtain details on how to checkout a branch from a different fork | ||
== Working on Slicer / CTK in parallel == | == Working on Slicer / CTK in parallel == | ||
− | * Step1: Build slicer following [ | + | * 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] - | + | * 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 |
+ | ** 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>''' | ||
<pre> | <pre> | ||
cd MyProjects | cd MyProjects | ||
Line 51: | Line 240: | ||
mkdir CTK-Superbuild | mkdir CTK-Superbuild | ||
cd CTK-Superbuild | cd CTK-Superbuild | ||
− | ccmake -DCTK_LIB_PluginFramework:BOOL=OFF -DCTK_PLUGIN_org.commontk. | + | 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 | make | ||
</pre> | </pre> | ||
Line 63: | 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 | + | * 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:DeveloperContents
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
- 9/07/2010 - Meeting Week #7
Past
- 8/31/2010 - Meeting Week #6
- 8/30/2010 - Meeting / EMSegment-QtPort Review
- 8/24/2010 - Meeting Week #5
- 8/19/2010 - Meeting Week #4
- 8/9/2010 - Midterm meeting with Kilian
- 8/3/2010 - Meeting Week #3
- 7/27/2010 - Meeting Week #2
- 7/20/2010 - Meeting Week #1
- 7/14/2010 - WorkflowManager meeting
- 7/8/2010 - Kickoff meeting
Milestones
Please note that the current list may be refined
- July 16th
Create QtModule skeletonWrite developer documentation
- July 23th
Factor out EMSegment{Algorithm, Graph, MRML, Registration} librariesWorkflow manager: Class skeletons (ctkWorkflowManager, ctkWorkflowStep)
- July 30th
- Port:
TaskSelector,NodeAttributes,ProbabilityMapSelector Python scripting: 10%
- Port:
- August 6th
- Port:
AtlasToInputRegistration,Segmentation_Mode,InputChannelSelector,DynamicListOfInputChannel - Panel:
Define Task,Define Input Channel (static version) Python scripting: 50%
- Port:
- August 13th
- Port:
AnatomicalTree 50%,IntensityDistribution Workflow manager: Start integration with Static UI Panel- Panel:
Define preprocessing, Specify intensity distribution (without Manual sampling) Python scripting 60%
- Port:
- August 20th
- Port:
WeightEditor 20%,AnatomicalTree 85%,PlotClassDistribution1D 50% - Panel:
Define Anatomical tree,Define Atlas
- Port:
- August 27th
- Port:
AnatomicalTree 85%,OutputLabelMapSelector 50%,PlotClassDistribution1D 100%,WeightEditor 60%,WorkingDirSelector Workflow manager: Complete integration- Panel:
Edit node-based parameters 50%,Run segmentation 35%,Define Input Channel 100%,Edit registration parameter
- Port:
- September 3rd
- Port:
AnatomicalTree 100%, ClassWeightsOverview, StoppingConditionsEditor,VOIEditor (just UI part), WeightEditor 100%,OutputLabelMapSelector 100% - Panel:
Run segmentation 100%, Edit node-based parameters 100% - Python scripting ???%
- Green dashboard expected
- Port:
- September 10th
- Polish
- Review Doxygen, Style
- If time permit:
- Python scripting - complete integration
- PrintConfig
- ManualSampling
- ColorMapViewOnly,
Colormap selector - AdvancedNodeParameterEditor
- PlotClassDistribution2D
- Panel: Integrate Manual sampling to Define Anatomical tree panel
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
- Refer to the follow document: http://www.commontk.org/index.php/Contributing_to_CTK.
- WorkflowManager code should be added to ctkWorkflowManager branch.
- That branch has been created on http://github.com/jcfr/CTK.
- See [3] to obtain details on how to checkout a branch from a different fork
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>
- Make sure you set the following options
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>