Functionals
To simplify the creation of the functional string, there exists a Functional class in python. Features of this class will be discussed here.
I tested a gaussian beam for 3 different cases:
- 1 created with a MeqFunctional Node
- 2 written out as a complete tree
- 3 using a PrivateFunction that directly creates the beam using VellsMath Results:
simple tree just 1 Gaussian, so not many caching possibilities
[[!table header="no" class="mointable" data="""
| debug|| | opt||||
| solvable | non-solvable | solvable|| | non-solvable
1 | | | || |
2 | | | || |
3 | | | || |
**more realistic tree** _beamshape model for 14 antennas, 50 freq. channels, tile_size=60_
[[!table header="no" class="mointable" data="""
| debug|| | opt||||
| solvable | non-solvable | solvable|| | non-solvable
1 | 28 | 28.98 | 14.7|| | 12.05
2***** | 12 | 16.44 | 4.2|| | 5.13
3 | 4 | 3.6 | 0.8|| | 0.66
***** clear difference between X and Y beam (eg. ~8 and ~2.5 resp. for opt nonsolvable)
Option 2 gets faster the more you can use smart caching. The solvable case for the realistic tree was very close to its solution, so not many iterations. Since going from nonsolvable to solvable, 2 shows an improvement on the mean, whereas for 3 the mean time increases, the difference between the two methods could be less prominent in case of more iterations.