# Set linear transform parameter via python

**URL:** <https://discourse.slicer.org/t/set-linear-transform-parameter-via-python/12742>\
**Category:** Development\
**Created:** [July 27, 2020, 11:12am UTC](https://discourse.slicer.org/t/set-linear-transform-parameter-via-python/12742 "2020-07-27T11:12:35Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![PaoloZaffino](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/paolozaffino/32/81052_2.png) [@PaoloZaffino](https://discourse.slicer.org/u/PaoloZaffino)\
**Post date:** [July 27, 2020, 11:12am UTC](https://discourse.slicer.org/t/set-linear-transform-parameter-via-python/12742/1 "2020-07-27T11:12:35Z")

</div>

Hi all,  
I would like to set and control a linear transformation from python.

I created a linear transformation via the module GUI and then I changed a parameter (just to do a test).  
If I run this code nothing changes in the GUI (I would expect a reset to an identity matrix):

> t = slicer.mrmlScene.GetFirstNodeByName(“LinearTransform”)  
> m = vtk.vtkMatrix4x4()  
> t.SetMatrixTransformToParent(m)

Of course I am missing something!  
Thanks a lot.

Paolo

---

<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 27, 2020, 1:27pm UTC](https://discourse.slicer.org/t/set-linear-transform-parameter-via-python/12742/2 "2020-07-27T13:27:48Z")

</div>

What you do is correct.

Maybe `slicer.mrmlScene.GetFirstNodeByName()` does not return you the transform that you expect because you have multiple transforms by that name in the scene.

---

<div class="post-metadata">

**Author:** ![PaoloZaffino](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/paolozaffino/32/81052_2.png) [@PaoloZaffino](https://discourse.slicer.org/u/PaoloZaffino)\
**Post date:** [July 27, 2020, 1:43pm UTC](https://discourse.slicer.org/t/set-linear-transform-parameter-via-python/12742/3 "2020-07-27T13:43:53Z")

</div>

If I use GetNOdeByID it works, but it’s strange, because I’m trying this into an empty scene.

---

<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 27, 2020, 3:41pm UTC](https://discourse.slicer.org/t/set-linear-transform-parameter-via-python/12742/4 "2020-07-27T15:41:58Z")

</div>

By default, 3 transforms are created for some built-in nodes (cameras or slices). But other modules can create transforms by using any names any time, so `GetFirstNodeByName` is only recommended for debugging or testing.

---

<div class="post-metadata">

**Author:** ![PaoloZaffino](https://sea2.discourse-cdn.com/flex002/user_avatar/discourse.slicer.org/paolozaffino/32/81052_2.png) [@PaoloZaffino](https://discourse.slicer.org/u/PaoloZaffino)\
**Post date:** [July 28, 2020, 9:39am UTC](https://discourse.slicer.org/t/set-linear-transform-parameter-via-python/12742/5 "2020-07-28T09:39:21Z")

</div>

Thanks @lassoan,  
I’ll go for the ID, much safer.

Paolo
