dkazanc / TomoPhantom

Software to generate 2D/3D/4D analytical phantoms and their Radon transforms (parallel beam) for image processing
https://dkazanc.github.io/TomoPhantom/
Apache License 2.0
116 stars 53 forks source link

Data are transposed if passed as python dicts #15

Closed paskino closed 6 years ago

paskino commented 6 years ago

in branch typecheck, passing model/object parameters as python dicts results in a transposition of the model/object. running https://github.com/dkazanc/TomoPhantom/blob/typecheck/python/Demos/DemoModel2.py image

instead of https://github.com/dkazanc/TomoPhantom/blob/typecheck/python/Demos/DemoModel.py image

paskino commented 6 years ago

I did some more investigation. I put a couple of printf's in the TomoP2D_core.c. On line 52 and 238. I use model = 6 which is a single rectangle:

Object : rectangle 1.00 -0.15 0.2 0.4 0.3 45;

Now, if I use this code


model = 6
N_size = 512
#specify a full path to the parameters file
pathTP = '../../functions/models/Phantom2DLibrary.dat'
#This will generate a N_size x N_size phantom (2D)
phantom_2D = TomoP2D.Model(model, N_size, pathTP)

We get this output:

C0 1.00e+00 x0 -1.50e-01 y0 2.00e-01 a 4.00e-01 b 3.00e-01 phi 4.50e+01
Base C0 1.00e+00 x0 2.00e-01 y0 -1.50e-01 a 4.00e-01 b 3.00e-01 phi 4.50e+01

It means that the call at line 238 gets the parameters in the order we are expecting, while the code at line 52 has the x0 -> y0 swapped.

This code I was developing extracts these parmeters

[{'C0': 1.0, 'y0': 0.2, 'phi': 45.0, 'x0': -0.15, 'a': 0.4, 'b': 0.3, 'Obj': <Objects2D.RECTANGLE: 'rectangle'>}]
Base C0 1.00e+00 x0 -1.50e-01 y0 2.00e-01 a 4.00e-01 b 3.00e-01 phi 4.50e+01

So x0 and y0 are exactly as in the parameter file.

paskino commented 6 years ago

Now, I've done a wild guess and swapped x0 and y0 here and now the DemoModel2.py works fine. Please check if that's correct.

dkazanc commented 6 years ago

a new capability of creating new object is added, issues have been fixed including the current one