Difference between revisions of "2011 Winter Project Week:Breakout Slicer"
Line 51: | Line 51: | ||
*Colors - to: Nicole, cc: Julien | *Colors - to: Nicole, cc: Julien | ||
*Data/Dicom import/load - to:Steve [Effort focused on CTK/DICOM - Will be integrated to slicer] | *Data/Dicom import/load - to:Steve [Effort focused on CTK/DICOM - Will be integrated to slicer] | ||
− | *Editor - to:Steve [] | + | *Editor - to:Steve [Using compatibility layer - Will be ported to a pure python implementation later ...] |
*Models - to:Alex, cc:Julien | *Models - to:Alex, cc:Julien | ||
*Mouse Modes - to:Wendy, cc:Nicole | *Mouse Modes - to:Wendy, cc:Nicole | ||
*ROI - to:Alex, Daniel, cc:Nicole, Julien (to be transitioned to the Annotation module) | *ROI - to:Alex, Daniel, cc:Nicole, Julien (to be transitioned to the Annotation module) | ||
− | *SlicerWelcome - to:Wendy, cc: JC | + | *SlicerWelcome - to:Wendy, cc: JC [Screenshot will need to be updated] |
− | *Slices - to:Jim, cc: JC | + | *Slices - to:Jim, cc: JC [Need to dynamically add other slices controller] |
*Transforms - to:Alex, cc: JC | *Transforms - to:Alex, cc: JC | ||
*Volume rendering: Redesign? | *Volume rendering: Redesign? |
Revision as of 19:40, 7 April 2011
Home < 2011 Winter Project Week:Breakout SlicerBack to Project Week Agenda
Session Leaders: Steve Pieper, Julien Finet
This session looks at the development of Slicer4.
People interested in the use of Slicer3.6 should consider attending the Monday breakout session with Ron.
Contents
Slicer4 Architecture & Status - Steve
This talk will provide an overview of the technologies included in slicer4 and the transition path from slicer3 to slicer4. slides
See this page for status of slicer4 development and the Qt port.
Creating a Loadable C++ Module - J2
- File:2011 01-AHM-QtPortInSlicer.ppt
- Other resources
- Slicer 4.0 beta binaries
- Progress report
- SlicerQt image gallery
- Qt port Wiki pages
- Qt port tutorials
- Previous presentations
Python Scripting - Jc
Command line modules / Slicer Execution Model - Jim
- What can it do?
- What do we have plans for?
- What do you want?
- Slides
ITK4 Integration - Bill
Afternoon Qt Loadable Module Tutorial
How to write a loadable module
Plans
Plans for the time between Jan 2011 and June 2011. Identify a list of modules that are still missing and must be available, when we roll out Slicer 4 for end users. We need to identify owners for each of these:
Developer Contacts for Slicer4
For modules currently scheduled for porting or already ported.
to: primary contact going forward
cc: was involved with the porting to Qt
- Colors - to: Nicole, cc: Julien
- Data/Dicom import/load - to:Steve [Effort focused on CTK/DICOM - Will be integrated to slicer]
- Editor - to:Steve [Using compatibility layer - Will be ported to a pure python implementation later ...]
- Models - to:Alex, cc:Julien
- Mouse Modes - to:Wendy, cc:Nicole
- ROI - to:Alex, Daniel, cc:Nicole, Julien (to be transitioned to the Annotation module)
- SlicerWelcome - to:Wendy, cc: JC [Screenshot will need to be updated]
- Slices - to:Jim, cc: JC [Need to dynamically add other slices controller]
- Transforms - to:Alex, cc: JC
- Volume rendering: Redesign?
- GPU mappers (NCI: Yanling; Kitware: J2)
- Nodes and Displayable Managers to:Alex Y, cc: JC
- Qt GUI to:Julien, cc:JC
- Volumes - to:Julien, cc:Alex
- Diffusion frame work: Redesign? - to:Demian, Lauren cc:CF
- FibreBundles - To: Isaiah, cc:Alex
- DiffusionWelcome - to:Demian
- Tractography - to: Alex
- Wizards, Workflows, New Features: to: Demian, Lauren, CF, cc: Alex
- Endoscopy - to: Steve, cc:JC
- Brainsfit - to:Hans
- EM segementation - to:Dominique, cc:Kilian, cc:JC (Qt only)
- AtlasCreator - to:Daniel
- Fast Marching - to:Andrey
- GrowCutSegement - to:Harini, cc: Jim, Steve
- RSS (robust statistical segmentation): to:Yi Gao
- CompareView - to:JC, cc:Julien, Jim, Steve, Wendy
- Wizards
- NeuroNav - to:Laurent Chauvin?, cc:Noby Hata
- ProstateNav? - to:Andras,Andrey
- ChangeTracker? - to:Andrey
- IGT
- OpenIGTLinkIF - to: Junichi
- Extensions
- Factory - to: Dave P, cc: JC, Steve
- VMTK? - to:Daniel, cc:Suares,Luca
- TubeTK - to:Danielle, cc: StephenA
- FetchMI - to:Wendy, cc:JC
- LabelStatistics - to:Steve
- Annotations - to:Daniel, cc:Nicole, Kilian
- SceneView - to:Daniel
- Command line module - to:Jim, cc:Julien
- CropVolume - to:Andrey
- PETCTFusion - to: Wendy
- RegistrationWelcome - to: Dominik Meier
- SegmentationWelcome - to: Dominik Meier
Not Currently Scheduled For Porting
- QueryAtlas?
- CaptureBetaProbe - to:Laurent
- ClipModel - to:Alex
- CollectFiducials - to:?
- DistanceTransformModel - to:Steve
- FourDImage - to: Junichi
- IGT
- IGTRecorder - to:Steve
- IGTToolSelector - to:Brian (Northern Digital), cc: Steve
- ModelIntoLabelVolume - to: Nicole
- SlicerDaemon - to: Steve
- IntensityNormalization - to: Andrey
- Meshing - to: Curtis
- ModelMirror - to: Wendy
- Pharmacokinetics - to: Wendy
- ModelTransform - to: Alex
- UDPServer - to: Laurent
- Python - to:Steve
- BinarizeScalarValues.py
- ConvertFiducialToLabelMap.py
- ConvertVolumeToArray.py
- CreateROIPerLabel.py
- ExplodeVolumeTransform.py
- LoadVolumeFromArray.py
- NumpyScript.py
- PythonScript.py
- RecenterMaskToDWI.py
- ShiftDWIValues.py
- SliceDWIPerVolume.py
- StochasticTractoGraphyGenerator.py
- StochasticTractoGraphyGeneratorWithLabels.py
- StochasticTractography.py
- StochasticTractographyServer
- StochasticTractographyServerMP
- SurfaceConnectivity.py
- SurfaceICPRegistration.py
- SurfaceToolbox.py
ToBeRemoved
DONE - See r15925[1] - The module code have been moved to Slicer4/Attic
- ExtractSubvolume
- ExtractSubvolumeROI
- GradientAnisotropicDiffusion
- Measurements
- PythonGADScriptedModule
- QueryAtlas
- ScriptedModule
- ScriptedModuleExample
- VolumeRendering1
New Modules
- Annotation
- SceneViews
- TubeTK?
MRML and Annotation Breakout
From Nicole's notes:
Ordering of nodes discussion
- need some notion of order for: drag and drop, processing longitudinal data sets, pre op and post ops, need sort by time sequence - can get up to thousands of hierarchy elements if have fiducials in a hierarchy - there's a hierarchy logic helper that caches tree information - put the sorting in the hierarchy node? redo the nodes so that they have a list of child node ids - hierarchies manage grouping, inheritance and ordering of nodes - could add order number to hierarchy node, parent node keeps cached list - when rendering, needed to get the display properties of parent if the hierarchy is collapsed - getchildren will always returned the sorted order - search in the Qt tree widget to jump/select to a given name of node: Julien - when add a node to a hierarchy, how to set the priority? - setparent needs to be over ridden to add a priority - then add setpriority - Nicole will write the test and Alex will write the code - vtkMRMLHierarchyNode will have an order number, sort priority (Steve wants a double so it's a time stamp, I want an unsigned integer index), have both, could have a priority that's a double and an unsigned long integer that's the sort index - index is private - when drop a new node recompute the indices of the children - only index, recompute index when drop - write helper classes that recalculate the index based on various factors, like name, priority, provenance - when remove a node, recalc indices - if read in a mrml scene that doesn't have indices, set them as read in, increasing + 1 with each one read in - drag and drop with annotation hierarchies needs to be fixed - in the qt tree, the hierarchy is a line in the display and should have an edit display properites - when collaspe use the hierarhcy, use the display manager
API Meeting at 1249 Boylston, January 25th
- Attendees: Alex, Daniel, Nicole
- keep Get/Set ParentNodeID should append by default but we want to be able to use an index as well
- maybe renaming ("I want to be the third child of this parent")
- we want "I want to be the last child", "..first child..", "child number X"
- Alex moves ModelHierarchyLogic in the MRML
- and uses the following and combines it with caching
/// these are from the vtkMRMLDisplayableHierarchyNode and in use /// /// Find all child displayable nodes in the hierarchy void GetChildrenDisplayableNodes(vtkCollection *children); /// /// Get Hierarchy node for a given displayable node static vtkMRMLDisplayableHierarchyNode* GetDisplayableHierarchyNode(vtkMRMLScene *scene, const char *displayableNodeID);
- we need GetAllChildren (runs through the whole node) and GetImmediateChildren
- DeleteAllChildren and DeleteImmediateChildren
- On MRMLHierarchyNode
- On MRMLDisplayableHierarchyNode
- when deleting immediate children and a child has children itself, regroup to parent of the deleted node
- it is important to delete the actual MRML nodes as well
- parent->GetChildren() will always return hierarchyNodes in order if there is an order
- only immediate children by default? flag to return all
- parent->GetChild(int position) will return hierarchyNode
- MoveNodeBefore, MoveNodeAfter, InsertNodeAt, InsertNodeBefore and InsertNodeAfter on hierarchyNodes
- take indices
- parent should observe RemoveNodeEvent and then re-order/update indices if it was a child
Nodes not in scene when trying to observe their ids
- set and observe node id, the node that corresponds to the id doesn't correspond to the scene - there are a couple of times where you can check if the scene pointer is null, when update reference ids, ie when loading a scene and have a storage node id that doesn't exist in the scene yet - have a cache/pointer to a node: when set the node id and find it in the scene, when you set the scene, or call update references - when remove it, should have a place where remove the references, should be in removenode - when want to listen to node, set id, if can't find pointer, not a problem, next time ask for it, check again. - set and observe id can fail gracefully while saving the id, when update references add the observers - update references called when load, when delete, or restore a scene - if !scene is loading, make it an error case? - jf puts in asserts when hasn't handled a case, if take it out handle that case
Annotation module
- second timne put down caption widget/text annotation is using the wrong offset of the text box - property editor needs to be finished : Nicole - get fiducidals from annotation accessible from python, can't wrap the subdir: Steve - generalise the WriteXML - gui CLI allow selecting a hierarchy or multiple volumes - use hierarchies - combo box can only select one - vtkMRMLROINode is missing, ROI needs to use the annotation module roi - need to extend the annotation module, reimplement - get the four chosen annotation widgets really solid (from Ron) - used in volume rendering, in people's criticla path - update old one when read in to be a annotation roi node - issues with linking the annotation mrml library - if mrml scene version node is too old, convert? - when reading in the scene, just change a string for the tag? - same with fids? - writes out as new format - roi node has centre and three dimensions(?) - when see node added with an old node, trigger adding an annotation roi node and remove the old one? - or importer - object factory register import? - register node twice with different tags? - in annotation module when register with the old tag as well? add a new method that has an optional tag name - daniel has a displayale manager written, but not instantiated - daniel can update it this week