Difference between revisions of "Projects:ARRA:SlicerEM:Developer"
From NAMIC Wiki
Line 22: | Line 22: | ||
== Julien == | == Julien == | ||
;Current week - Week 4 | ;Current week - Week 4 | ||
+ | : In progress | ||
+ | :: NA | ||
+ | : Done | ||
+ | :: NA | ||
+ | : ToBeDone | ||
+ | :: NA | ||
+ | |||
;Week 3 | ;Week 3 | ||
Line 34: | Line 41: | ||
== Jc == | == Jc == | ||
;Current week - Week 4 | ;Current week - Week 4 | ||
− | :Design static UI panel | + | :In progress |
− | ::Port dynamic list of Input Channels to Qt. See [[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#DynamicListOfInputChannel|DynamicListOfInputChannel]] | + | ::Design static UI panel |
− | : Define python task skeleton | + | :::Port dynamic list of Input Channels to Qt. See [[Projects:ARRA:SlicerEM:Developer:WidgetsToPort#DynamicListOfInputChannel|DynamicListOfInputChannel]] |
+ | :: Define python task skeleton | ||
+ | : Done | ||
+ | :: NA | ||
+ | : ToBeDone | ||
+ | :: NA | ||
;Week 3 | ;Week 3 | ||
:Define a clear agenda for the [[Projects:ARRA:SlicerEM_Meeting_08092010|August 9th meeting]] | :Define a clear agenda for the [[Projects:ARRA:SlicerEM_Meeting_08092010|August 9th meeting]] | ||
Line 58: | Line 70: | ||
== Danielle == | == Danielle == | ||
− | ;Current week - Week | + | ;Current week - Week 4 |
− | :integrate workflow manager into EMSegment module | + | : In progress |
− | :integrate workflow manager with Qt Designer | + | ::integrate workflow manager into EMSegment module |
− | :jumping directly to "finish" state | + | ::integrate workflow manager with Qt Designer |
− | :ctkWorkflowWidgets based on QDialog | + | ::jumping directly to "finish" state |
+ | ::ctkWorkflowWidgets based on QDialog | ||
+ | : Done | ||
+ | :: NA | ||
+ | : ToBeDone | ||
+ | :: NA | ||
;Week 3 | ;Week 3 |
Revision as of 21:23, 16 August 2010
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 - 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 - Week 4
- In progress
- NA
- Done
- NA
- ToBeDone
- NA
- 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 week - Week 4
- In progress
- Design static UI panel
- Port dynamic list of Input Channels to Qt. See DynamicListOfInputChannel
- Define python task skeleton
- Design static UI panel
- Done
- NA
- ToBeDone
- NA
- 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 week - Week 4
- In progress
- integrate workflow manager into EMSegment module
- integrate workflow manager with Qt Designer
- jumping directly to "finish" state
- ctkWorkflowWidgets based on QDialog
- Done
- NA
- ToBeDone
- NA
- 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
Team meeting
lists the team meeting and includes a pointer to the associated notes
Coming
- 8/9/2010 - Meeting / Midterm meeting with Kilian
Past
- 8/3/2010 - Meeting / Weekly meeting #3
- 7/27/2010 - Meeting / Weekly meeting #2
- 7/20/2010 - Meeting / Weekly meeting #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%
- August 13th
- Port: AnatomicalTree 50%, IntensityDistribution
- Workflow manager: Start integration with Static UI Panel
- Panel: Define preprocessing, Edit registration parameter, Specify intensity distribution (without Manual sampling)
- Python scripting: 75%
- August 20th
- Port: WeightEditor, AnatomicalTree 100%, PlotClassDistribution1D
- Panel: Define Anatomical tree
- Python scripting: 100%
- August 27th
- Port: WorkingDirSelector, ClassWeightsOverview, OutputLabelMapSelector
- Workflow manager: Complete integration
- Panel: Edit node-based parameters (Need to define exactly content of Advanced Tab)
- September 3rd
- Port: VOIEditor
- Panel:Run segmentation
- Green dashboard expected
- September 10th
- Polish
- Review Doxygen, Style
- If time permit:
- PrintConfig
- ManualSampling, StoppingConditionsEditor
- 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>