# How to remove the SubjectHierarchyNode (e.g. folder)and its items?

**URL:** <https://discourse.slicer.org/t/how-to-remove-the-subjecthierarchynode-e-g-folder-and-its-items/21070>\
**Category:** Development\
**Tags:** python\
**Created:** [December 15, 2021, 5:58am UTC](https://discourse.slicer.org/t/how-to-remove-the-subjecthierarchynode-e-g-folder-and-its-items/21070 "2021-12-15T05:58:45Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![jumbojing](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jumbojing/32/10811_2.png) [@jumbojing](https://discourse.slicer.org/u/jumbojing)\
**Post date:** [December 15, 2021, 5:58am UTC](https://discourse.slicer.org/t/how-to-remove-the-subjecthierarchynode-e-g-folder-and-its-items/21070/1 "2021-12-15T05:58:45Z")

</div>

# How to remove the SubjectHierarchyNode (e.g. folder)and its items?

可能是Subject Hierarchy太大了吧, 进行到一个数量就会崩掉, 所以我想分阶段, 把前面那个节段的nodes放到一个folder, 保存后删除再进行下个节段的操作, 我已经把它们装进了一个folder, 该怎么删掉这个folder呢?

> It may be that the Subject Hierarchy is too large, and it will crash when it reaches a certain large amount, so I want to put the nodes of the previous section into a folder in stages, save it and delete it before proceeding to the next section. I have a folder including the nodes of the previous section, how can I delete this folder and its items?

---

<div class="post-metadata">

**Author:** ![Alex\_Vergara](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/alex_vergara/32/15205_2.png) [@Alex\_Vergara](https://discourse.slicer.org/u/Alex_Vergara)\
**Post date:** [December 15, 2021, 8:17am UTC](https://discourse.slicer.org/t/how-to-remove-the-subjecthierarchynode-e-g-folder-and-its-items/21070/2 "2021-12-15T08:17:58Z")

</div>

```auto
def deleteFolder(folderID, removeDataNode=True, recursive=True):
    shNode = slicer.vtkMRMLSubjectHierarchyNode.GetSubjectHierarchyNode(slicer.mrmlScene)
    shNode.RemoveItem(folderID, removeDataNode, recursive)

```

---

<div class="post-metadata">

**Author:** ![cpinter](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/cpinter/32/7995_2.png) [@cpinter](https://discourse.slicer.org/u/cpinter)\
**Post date:** [December 15, 2021, 11:22am UTC](https://discourse.slicer.org/t/how-to-remove-the-subjecthierarchynode-e-g-folder-and-its-items/21070/3 "2021-12-15T11:22:41Z")

</div>

I’d modernize the above snippet by:

`shNode = slicer.mrmlScene.GetSubjectHierarchyNode()`

Also I don’t really see the use of a function for this two-liner (that could be one), but it’s a matter of taste.

---

<div class="post-metadata">

**Author:** ![jumbojing](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jumbojing/32/10811_2.png) [@jumbojing](https://discourse.slicer.org/u/jumbojing)\
**Post date:** [December 15, 2021, 1:13pm UTC](https://discourse.slicer.org/t/how-to-remove-the-subjecthierarchynode-e-g-folder-and-its-items/21070/4 "2021-12-15T13:13:41Z")

</div>

> [@cpinter](#):
>
> shNode = slicer.mrmlScene.GetSubjectHierarchyNode()

\ ***folderID**? How to get it? Why don’t use folderName?

@cpinter  
@Alex_Vergara

---

<div class="post-metadata">

**Author:** ![cpinter](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/cpinter/32/7995_2.png) [@cpinter](https://discourse.slicer.org/u/cpinter)\
**Post date:** [December 15, 2021, 1:27pm UTC](https://discourse.slicer.org/t/how-to-remove-the-subjecthierarchynode-e-g-folder-and-its-items/21070/5 "2021-12-15T13:27:12Z")

</div>

Learn about Subject Hierarchy here  
[https://slicer.readthedocs.io/en/latest/developer\_guide/script\_repository.html#subject-hierarchy](https://slicer.readthedocs.io/en/latest/developer_guide/script_repository.html#subject-hierarchy)

---

<div class="post-metadata">

**Author:** ![jumbojing](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jumbojing/32/10811_2.png) [@jumbojing](https://discourse.slicer.org/u/jumbojing)\
**Post date:** [December 15, 2021, 1:30pm UTC](https://discourse.slicer.org/t/how-to-remove-the-subjecthierarchynode-e-g-folder-and-its-items/21070/6 "2021-12-15T13:30:38Z")

</div>

```auto
def deleteFolder(folderName, removeDataNode=True, recursive=True):
    shNode = slicer.mrmlScene.GetSubjectHierarchyNode()
    sceneItemID = shNode.GetSceneItemID()
    folderID = shNode.GetItemChildWithName(sceneItemID,folderName)
    shNode.RemoveItem(folderID, removeDataNode, recursive)

```

This is my code…

---

<div class="post-metadata">

**Author:** ![jumbojing](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jumbojing/32/10811_2.png) [@jumbojing](https://discourse.slicer.org/u/jumbojing)\
**Post date:** [December 15, 2021, 1:36pm UTC](https://discourse.slicer.org/t/how-to-remove-the-subjecthierarchynode-e-g-folder-and-its-items/21070/7 "2021-12-15T13:36:19Z")

</div>

> [@cpinter](#):
>
> **two-line**

**tow-line**?what’s mean?

---

<div class="post-metadata">

**Author:** ![jumbojing](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/jumbojing/32/10811_2.png) [@jumbojing](https://discourse.slicer.org/u/jumbojing)\
**Post date:** [December 15, 2021, 2:01pm UTC](https://discourse.slicer.org/t/how-to-remove-the-subjecthierarchynode-e-g-folder-and-its-items/21070/8 "2021-12-15T14:01:18Z")

</div>

```auto
NNs=[]
nodes = slicer.util.getNodes("*")
for key in nodes.keys():
  if key != "12: Unnamed Series":
    modNode = slicer.util.getNode(key)
    if isinstance(modNode, slicer.vtkMRMLTransformableNode):
      NNs.append(modNode)
shNode = slicer.vtkMRMLSubjectHierarchyNode.GetSubjectHierarchyNode(slicer.mrmlScene)
newParentFolderItem = shNode.CreateFolderItem(shNode.GetSceneItemID(), "folder")
for node in NNs:
  nodeItem = shNode.GetItemByDataNode(node)
  shNode.SetItemParent(nodeItem, newParentFolderItem)

```

 ![image](https://us1.discourse-cdn.com/flex002/uploads/slicer/original/3X/1/4/14426bfab6793bf5a43874d29c5c80b3c681da4e.png)

这貌似是另一个问题, 如图和code, 有一些重名的nodes没包括到folder里面,怎么整呀?@lassoan@Juicy@jamesobutler @jcfr @pieper

> This seems to be another problem. As shown in the figure and code, some nodes with the same name are not included in the folder. How to fix it?  
> @lassoan@Juicy@jamesobutler @jcfr @pieper@cpinter@Alex\_Vergara
