Difference between revisions of "2013 Project Week:SimplifyMRMLReference"
(Created page with '__NOTOC__ <gallery> Image:PW-SLC2013.png|Projects List <!--Image:genuFAp.jpg|Scatter plot of the original FA data through the genu of the co…') |
|||
(5 intermediate revisions by the same user not shown) | |||
Line 7: | Line 7: | ||
==Key Investigators== | ==Key Investigators== | ||
− | * | + | * Isomics: Alex Yarmarkovich, Steve Pieper |
− | * | + | * Andras Lasso |
− | * | + | * Kitware: Julien Finet, Jean-Christophe Fillion-Robin |
− | |||
<div style="margin: 20px;"> | <div style="margin: 20px;"> | ||
Line 16: | Line 15: | ||
<h3>Objective</h3> | <h3>Objective</h3> | ||
− | The goal is to discuss the details and | + | Slicer4 MRML node referencing mechanism needs some design improvement, as for each referenced node in each node type about 10 methods shall be added/updated manually. This is very difficult to do, often done incorrectly. |
− | + | The goal is to discuss the details and design robust, simple, centralized implementation of all node reference updates for save/load, undo/redo, scene import features | |
</div> | </div> | ||
Line 23: | Line 22: | ||
<h3>Approach, Plan</h3> | <h3>Approach, Plan</h3> | ||
− | + | A potential solution would be to introduce a "ReferencedNodes" list, which would store pointer, ID string, node type name, and observers for each referenced node instead of adding separate member variables for these manually. This list could be fully maintained by the Copy, UpdateScene, UpdateReferenceID, UpdateReferences, ReadXMLAttributes, WriteXML, etc. methods implementation in vtkMRMLNode base class. Developers would just need to add an item to the ReferencedNodes list and all the rest would be handled by the MRML framework. | |
− | |||
</div> | </div> | ||
Line 30: | Line 28: | ||
<h3>Progress</h3> | <h3>Progress</h3> | ||
− | + | * Design meeting held on 01/08/2013 with the particpants: Alex Yarmarkovich, Steve Pieper, Andras Lasso, Julien Finet, Jean-Christophe Fillion-Robin. | |
+ | * A more general MRML node reference architecture was proposed and discussed. | ||
+ | * Reference node API should be developed in the base vtkMRMLNode class including: | ||
+ | ** creating and managing references for a particular reference category, for example "displayNode" or "transformNode". | ||
+ | ** managing references together with observers and events | ||
+ | * A developer should be able to associate reference category with the node. All the management of references will be done automatically after that. | ||
+ | * Alex created a github topic branch with the prototype API: | ||
+ | https://github.com/ayarmarkovich/Slicer/tree/mrml_ref_branch | ||
+ | * Success criteris: implementation of vtkMRMLDisplayableNode should utilize new reference API and the tests associated with it should still pass. | ||
+ | * Next steps could include extending the reference API for MRML Logic and Displayable Manager calsses. | ||
+ | |||
</div> | </div> | ||
Line 42: | Line 50: | ||
==References== | ==References== | ||
* [https://www.assembla.com/spaces/slicerrt/wiki SlicerRT] | * [https://www.assembla.com/spaces/slicerrt/wiki SlicerRT] | ||
− | * [https://www.assembla.com/spaces/slicerrt/tickets/125#/activity/ticket: | + | * [https://www.assembla.com/spaces/slicerrt/tickets/125#/activity/ticket: http://www.na-mic.org/Bug/view.php?id=2727] |
Latest revision as of 21:55, 8 January 2013
Home < 2013 Project Week:SimplifyMRMLReferenceKey Investigators
- Isomics: Alex Yarmarkovich, Steve Pieper
- Andras Lasso
- Kitware: Julien Finet, Jean-Christophe Fillion-Robin
Objective
Slicer4 MRML node referencing mechanism needs some design improvement, as for each referenced node in each node type about 10 methods shall be added/updated manually. This is very difficult to do, often done incorrectly. The goal is to discuss the details and design robust, simple, centralized implementation of all node reference updates for save/load, undo/redo, scene import features
Approach, Plan
A potential solution would be to introduce a "ReferencedNodes" list, which would store pointer, ID string, node type name, and observers for each referenced node instead of adding separate member variables for these manually. This list could be fully maintained by the Copy, UpdateScene, UpdateReferenceID, UpdateReferences, ReadXMLAttributes, WriteXML, etc. methods implementation in vtkMRMLNode base class. Developers would just need to add an item to the ReferencedNodes list and all the rest would be handled by the MRML framework.
Progress
- Design meeting held on 01/08/2013 with the particpants: Alex Yarmarkovich, Steve Pieper, Andras Lasso, Julien Finet, Jean-Christophe Fillion-Robin.
- A more general MRML node reference architecture was proposed and discussed.
- Reference node API should be developed in the base vtkMRMLNode class including:
- creating and managing references for a particular reference category, for example "displayNode" or "transformNode".
- managing references together with observers and events
- A developer should be able to associate reference category with the node. All the management of references will be done automatically after that.
- Alex created a github topic branch with the prototype API:
https://github.com/ayarmarkovich/Slicer/tree/mrml_ref_branch
- Success criteris: implementation of vtkMRMLDisplayableNode should utilize new reference API and the tests associated with it should still pass.
- Next steps could include extending the reference API for MRML Logic and Displayable Manager calsses.
Delivery Mechanism
This work will be delivered to the NA-MIC Kit as changes in the Slicer4 core and in the SlicerRT extension