Difference between revisions of "Documentation/4.5/Modules/SubjectHierarchy"
(Nightly -> 4.5) |
m (Text replacement - "slicerWiki/index.php" to "wiki") |
||
(4 intermediate revisions by one other user not shown) | |||
Line 30: | Line 30: | ||
{{documentation/{{documentation/version}}/module-section|Use Cases}} | {{documentation/{{documentation/version}}/module-section|Use Cases}} | ||
− | {| | + | {| |
| | | | ||
* Load DICOM data and need to see in the same hierarchy | * Load DICOM data and need to see in the same hierarchy | ||
Line 42: | Line 42: | ||
<!-- ---------------------------- --> | <!-- ---------------------------- --> | ||
{{documentation/{{documentation/version}}/module-section|Tutorials}} | {{documentation/{{documentation/version}}/module-section|Tutorials}} | ||
− | + | ||
+ | * 2016 Jan 8th: [http://www.na-mic.org/Wiki/index.php/Winter2016TutorialContest This tutorial] demonstrates the basic usage and potential of Slicer’s data manager module Subject Hierarchy using a two-timepoint radiotherapy phantom dataset. | ||
<!-- ---------------------------- --> | <!-- ---------------------------- --> | ||
Line 90: | Line 91: | ||
; Apply transform on node or branch | ; Apply transform on node or branch | ||
− | : Double-click the cell of the node or branch to transform in the column | + | : Double-click the cell of the node or branch to transform in the transform column (same icon as Transforms module), then set the desired transform. If the column is not visible, check the 'Transforms' checkbox under the tree. An example can be seen in the top screenshot at Patient 2 |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
| | | | ||
Line 118: | Line 105: | ||
{{documentation/{{documentation/version}}/module-section|References}} | {{documentation/{{documentation/version}}/module-section|References}} | ||
* Additional information on [[Documentation/Labs/SubjectHierarchy|Subject hierarchy labs page]] | * Additional information on [[Documentation/Labs/SubjectHierarchy|Subject hierarchy labs page]] | ||
− | * Manual editing of | + | * Manual editing of segmentations can be done in the [http://www.slicer.org/wiki/Documentation/Nightly/Modules/Segmentations Segmentations module] |
<!-- ---------------------------- --> | <!-- ---------------------------- --> | ||
{{documentation/{{documentation/version}}/module-section|Information for Developers}} | {{documentation/{{documentation/version}}/module-section|Information for Developers}} | ||
− | * | + | * '''Important note''': Instead of the usual New function, vtkMRMLSubjectHierarchyNode::CreateSubjectHierarchyNode should be used for instantiating an SH node. The reason is that when SH auto creation is turned on, then there is no need to create an SH node, but only to set up its properties (parent, level, name, association), but when it is turned off, then creating an SH node is necessary if the module relies on it. The CreateSubjectHierarchyNode function takes care of this, and only creates a node if it doesn't exist, otherwise just updates its properties. |
+ | * '''Implementing new plugins''': Plugins are the real power of subject hierarchy, as they provide support for data node types, and add functionality to the context menu items.<br>To create a C++ plugin, implement a child class of qSlicerSubjectHierarchyAbstractPlugin, for python plugin see below. Many examples can be found in Slicer core and in the SlicerRT extension, look for folders named SubjectHierarchyPlugins. | ||
+ | ** Role plugins: add support for new data node types | ||
+ | *** Defines: ownership, icon, tooltip, edit properties, help text (in the yellow question mark popup), visibility icon, set/get display visibility, displayed node name (if different than name of the node object) | ||
+ | *** Existing plugins in Slicer core: Markups, Models, SceneViews, Charts, Folder, Tables, Transforms, LabelMaps, Volumes | ||
+ | ** Function plugins: add feature in right-click context menu for certain types of nodes | ||
+ | *** Defines: list of contect menu actions for nodes and the scene, types of nodes for which the action shows up, functions handling the defined action | ||
+ | *** Existing plugins in Slicer core: CloneNode, ParseLocalData, Register, Segment, DICOM | ||
+ | ** Writing plugins in python: | ||
+ | *** Child class of AbstractScriptedSubjectHierarchyPlugin which is a python adaptor of the C++ qSlicerSubjectHierarchyScriptedPlugin class | ||
+ | *** Example: https://subversion.assembla.com/svn/slicerrt/trunk/VolumeClip/src/SubjectHierarchyPlugins | ||
* [https://www.assembla.com/spaces/slicerrt/wiki/SlicerRt_naming_conventions Glossary of all the used terms in SlicerRT] | * [https://www.assembla.com/spaces/slicerrt/wiki/SlicerRt_naming_conventions Glossary of all the used terms in SlicerRT] | ||
Latest revision as of 17:34, 21 November 2019
Home < Documentation < 4.5 < Modules < SubjectHierarchy
For the latest Slicer documentation, visit the read-the-docs. |
Introduction and Acknowledgements
| |||||||
|
Module Description
The SubjectHierarchy module acts as a central data-organizing point in Slicer. All DICOM data is automatically added to the tree. Non-DICOM data can be parsed if loaded from a local directory structure, or has to be manually added (non-SH nodes are the ones on the bottom with no icons). Subject hierarchy nodes provide features for the underlying data nodes, including cloning, bulk transforming, bulk show/hide, type-specific features, and basic node operations such as delete or rename. Additional plugins can provide other type-specific features and general operations, see Subject hierarchy labs page
Use Cases
Tutorials
Panels and their use
Contains all the objects in the Subject hierarchy in a tree representation
How to
|
Similar Modules
References
- Additional information on Subject hierarchy labs page
- Manual editing of segmentations can be done in the Segmentations module
Information for Developers
- Important note: Instead of the usual New function, vtkMRMLSubjectHierarchyNode::CreateSubjectHierarchyNode should be used for instantiating an SH node. The reason is that when SH auto creation is turned on, then there is no need to create an SH node, but only to set up its properties (parent, level, name, association), but when it is turned off, then creating an SH node is necessary if the module relies on it. The CreateSubjectHierarchyNode function takes care of this, and only creates a node if it doesn't exist, otherwise just updates its properties.
- Implementing new plugins: Plugins are the real power of subject hierarchy, as they provide support for data node types, and add functionality to the context menu items.
To create a C++ plugin, implement a child class of qSlicerSubjectHierarchyAbstractPlugin, for python plugin see below. Many examples can be found in Slicer core and in the SlicerRT extension, look for folders named SubjectHierarchyPlugins.- Role plugins: add support for new data node types
- Defines: ownership, icon, tooltip, edit properties, help text (in the yellow question mark popup), visibility icon, set/get display visibility, displayed node name (if different than name of the node object)
- Existing plugins in Slicer core: Markups, Models, SceneViews, Charts, Folder, Tables, Transforms, LabelMaps, Volumes
- Function plugins: add feature in right-click context menu for certain types of nodes
- Defines: list of contect menu actions for nodes and the scene, types of nodes for which the action shows up, functions handling the defined action
- Existing plugins in Slicer core: CloneNode, ParseLocalData, Register, Segment, DICOM
- Writing plugins in python:
- Child class of AbstractScriptedSubjectHierarchyPlugin which is a python adaptor of the C++ qSlicerSubjectHierarchyScriptedPlugin class
- Example: https://subversion.assembla.com/svn/slicerrt/trunk/VolumeClip/src/SubjectHierarchyPlugins
- Role plugins: add support for new data node types
- Glossary of all the used terms in SlicerRT