SlicerMONAIViz icon indicating copy to clipboard operation
SlicerMONAIViz copied to clipboard

support modifying transform arguments in different class types

Open nvahmadi opened this issue 2 years ago • 1 comments

Hi, great tool so far! I am trying to apply a Lambdad function in my transform chain. For example, after LoadImaged I want to apply the transform:

Lambdad(keys=["image"], func=lambda x: x.squeeze())

If I add the Lambdad transform in my stack in the MONAIViz panel, and I add the params keys=["image"] and func=lambda x: x.squeeze(), I receive the following error message:

Traceback (most recent call last):
  File "C:/Projects/SlicerMONAIViz/MONAIViz/MONAIViz.py", line 537, in onRunTransform
    t = eval(exp)
  File "<string>", line 1
    monai.transforms.Lambdad(keys=['image'], func=<function <lambda> at 0x0000017BD75F3280>)
                                                  ^
SyntaxError: invalid syntax

I am not sure what's happening under the hood in this module - would a lambda eval even be possible? Thanks in advance!

nvahmadi avatar Jun 27 '23 15:06 nvahmadi

Screenshot 2023-08-16 at 11 51 11

the textboxes doesn't seem to support anything beyond the built-in simple types, for example dtype=float will generate the error

  File "<string>", line 1
    foo(keys=['image', 'label'], dtype=<class 'float'>)
                                       ^
SyntaxError: invalid syntax

(I think this part could be enhanced with monai.bundle.ConfigParser https://docs.monai.io/en/stable/config_syntax.html)

wyli avatar Aug 16 '23 10:08 wyli