# Python - Get Node copy to Modify

**URL:** <https://discourse.slicer.org/t/python-get-node-copy-to-modify/687>\
**Category:** Support\
**Created:** [July 14, 2017, 12:22pm UTC](https://discourse.slicer.org/t/python-get-node-copy-to-modify/687 "2017-07-14T12:22:07Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Filipe\_Trocado\_Ferre](https://avatars.discourse-cdn.com/v4/letter/f/3be4f8/32.png) [@Filipe\_Trocado\_Ferre](https://discourse.slicer.org/u/Filipe_Trocado_Ferre)\
**Post date:** [July 14, 2017, 12:22pm UTC](https://discourse.slicer.org/t/python-get-node-copy-to-modify/687/1 "2017-07-14T12:22:07Z")

</div>

I want to modify a copy of the input node and output it. I’m not being able to do that without modifying the input node. How to make a copy?

---

<div class="post-metadata">

**Author:** ![pieper](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/pieper/32/8_2.png) [@pieper](https://discourse.slicer.org/u/pieper)\
**Post date:** [July 14, 2017, 12:42pm UTC](https://discourse.slicer.org/t/python-get-node-copy-to-modify/687/2 "2017-07-14T12:42:35Z")

</div>

What kind of node do you want to copy? What do you mean that the input is modified?

Maybe look at vtkSlicerVolumesLogic::CloneVolume

---

<div class="post-metadata">

**Author:** ![Filipe\_Trocado\_Ferre](https://avatars.discourse-cdn.com/v4/letter/f/3be4f8/32.png) [@Filipe\_Trocado\_Ferre](https://discourse.slicer.org/u/Filipe_Trocado_Ferre)\
**Post date:** [July 14, 2017, 12:50pm UTC](https://discourse.slicer.org/t/python-get-node-copy-to-modify/687/3 "2017-07-14T12:50:35Z")

</div>

I’m using python. I want to extract a numpy array from a volumeNode (CT Scan) and apply my modifications and then deploy in a different node but with the same characteristics as the input Volume. I’m not being able to ‘clone’ the volume. It always refer to the same data array and it modifies both input and output volume node

---

<div class="post-metadata">

**Author:** ![Filipe\_Trocado\_Ferre](https://avatars.discourse-cdn.com/v4/letter/f/3be4f8/32.png) [@Filipe\_Trocado\_Ferre](https://discourse.slicer.org/u/Filipe_Trocado_Ferre)\
**Post date:** [July 14, 2017, 12:57pm UTC](https://discourse.slicer.org/t/python-get-node-copy-to-modify/687/4 "2017-07-14T12:57:38Z")

</div>

ok, so using this:

` outputVolume = slicer.vtkSlicerVolumesLogic().CloneVolume(inputVolume,'out')`

`arr = vtk_to_numpy(outputVolume.GetImageData().GetPointData().GetScalars())`

results in

> :‘NoneType’ object has no attribute ‘GetImageData’

---

<div class="post-metadata">

**Author:** ![lassoan](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/lassoan/32/13_2.png) [@lassoan](https://discourse.slicer.org/u/lassoan)\
**Post date:** [July 14, 2017, 1:03pm UTC](https://discourse.slicer.org/t/python-get-node-copy-to-modify/687/5 "2017-07-14T13:03:17Z")

</div>

CloneVolume only works for scalar volume. Use [CloneVolumeGeneric()](http://apidocs.slicer.org/master/classvtkSlicerVolumesLogic.html#af08c6a610b25237da8153f8c6fc005ad) method to clone other types of volumes.

---

<div class="post-metadata">

**Author:** ![Filipe\_Trocado\_Ferre](https://avatars.discourse-cdn.com/v4/letter/f/3be4f8/32.png) [@Filipe\_Trocado\_Ferre](https://discourse.slicer.org/u/Filipe_Trocado_Ferre)\
**Post date:** [July 14, 2017, 1:04pm UTC](https://discourse.slicer.org/t/python-get-node-copy-to-modify/687/6 "2017-07-14T13:04:35Z")

</div>

This worked:

outputVolume = slicer.vtkSlicerVolumesLogic().CloneVolume(slicer.mrmlScene,inputVolume,‘out’,True)

Thanks @lassoan and @pieper . Great job!
