This list of all available MeqTree node classes is a small Reference Manual on its own, perhaps in combination with the ./NodeBehaviour. The main MeqTree functions may be gleaned from the node categories below, each of which has a terse summary of essential information. In addition, there are numerous links to pages with more detailed information per category and per node, and also to demonstration scripts.

Leaf nodes (no children)

In order to satisfy a Request, these nodes either use their internal information, or interface an external data source like a table or an image. See MeqLeaf for more detail.

Node

nc

Description

Example Tree

MeqParm

0

a [possibly solvable] parameter

MeqParm, MeqParm.py

MeqConstant

0

all domain cells have the same constant value

MeqConstant.py

MeqRandomNoise

0

random noise per domain cell (lower bound, upper bound)

MeqGaussNoise

0

gaussian noise per domain cell (stddev, mean)

MeqTime

0

cell values are their domain time values (s)

MeqFreq

0

cell values are their domain freq values (Hz)

MeqGrid

0

generalisation: e.g. Meq.Grid(axis='time') is equivalent to Meq.Time()

MeqSpigot

0

read data, e.g. uv-data from a MS, via the VisTable interface

MeqFITSReader

1

Read a FITS Image, see MeqImage

MeqFITSImage

1

Read in a (I,Q,U,V) source-model, see MeqImage

MeqFITSSpigot

1

Similar to MeqFITSImage, see MeqImage

NB: The various interface nodes with FITS images (see MeqImage) are still somewhat special.

Unary math operations (one child).

The operation is performed on each cell. An illegal operation (e.g. sqrt(-1)) produces a NaN (Not A Number) for that cell, which is then carried all the way downstream (i.e. towards the root of the tree). It does NOT produce a FAIL. See also RefMan/UnaryMathNodes.

Node

nc

Description

Example Tree

MeqAbs

1

abs(z)

MeqAcos

1

acos(z), abs(z)<1

MeqArg

1

arg(z), the phase of the complex z

MeqAsin

1

asin(z), abs(z)<1

MeqAtan

1

atan(z)

MeqCeil

1

ceil(z), the nearest integer

MeqConj

1

conj(z), the complex conjugate

MeqCos

1

cos(z), z in rad

MeqCosh

1

cosh(z)

MeqExp

1

exp(z)

MeqFabs

1

abs(z)

MeqFloor

1

floor(z), nearest integer

MeqImag

1

imag(z), imaginary part

MeqInvert

1

1/z

MeqLog

1

elog(z)

MeqNegate

1

-z

MeqNorm

1

same as abs(z)

MeqPow2

1

z^2

MeqPow3

1

z^3

MeqPow4

1

z^4

MeqPow5

1

z^5

MeqPow6

1

z^6

MeqPow7

1

z^7

MeqPow8

1

z^8

MeqReal

1

real(z), real part

MeqSin

1

sin(z), z in rad

MeqSinh

1

sinh(z)

MeqSqr

1

sqr(z), same as MeqPow2

MeqSqrt

1

sqrt(z), square root (z>0)

MeqTan

1

tan(z), z in rad

MeqTanh

1

tanh(z)

binary math operations (two children)

The operation is performed cell-by-cell. If the first child has a Result with multiple vellsets, there are two possibilities: If the second child is a scalar, its single vellset is applied to all the vellsets of the first. Otherwise, the Result of the second child must have the same number of vellsets as the first, and the operation is performed between corresponding vellsets. The final Result has the same shape (number of vellsets) as the first child.

Node

nc

Description

Example Tree

MeqSubtract

2

c0 - c1

MeqDivide

2

c0 / c1

MeqPow

2

c0 ^ c1

MeqFMod

2

c0 % c1

MeqToComplex

2

complex(real imag)

MeqPolar

2

express a complex number in polar coordinates (amplitude, phase)

math operations on one or more children

The operation is performed cell-by-cell. If the number of children is two, the same rules apply as for binary operations (see above). If the number of children is greater than two, the Results of all children must have the same shape (number of vellsets).

Node

nc

Description

Example Tree

MeqAdd

1+

c0+c1+c2+..

MeqMultiply

1+

c0*c1*c2*...

MeqNElements

1+

Gives the number of 'cells'(!) in the domain. Not quite safe with flags.

MeqWMean

1+

same as MeqWSum, but divided by (w[0]+w[1]+w[2]+...)

MeqWSum

1+

w[0]*c0 + w[1]*c1 + w[2]*c2 + ... (w is vector of doubles)

tensor math

As explained above, a Result may have multiple vellsets, and an optional shape. Most nodes can handle such "tensor" Results, within the rules outlined above. Some nodes are specialized for operations on Results with a specific shape, e.g. 2x2 matrices. The introduction of tensor Results has greatly simplified the trees, and speeded up operation.

Node

nc

Description

Example Tree

MeqComposer

1+

compose a tensor from children (with optional shape, e.g. dims=[2,2])

MeqSelector

1

select one or more tensor element(s), index=1, or index=[2,1]

MeqPaster

2

paste tensor elements

MeqMatrix22

4

create a 2x2 matrix (same as MeqComposer with 4 children and dims=[2,2])

MatrixExample.py

MeqTranspose

1

matrix transpose

MeqConjTranspose

1

matrix conjugate transpose

MeqMatrixMultiply

1+

matrix multiplication

MatrixExample.py

MeqMatrixInvert22

1

2x2 matrix inversion

MatrixExample.py

reduction nodes (combine cells along specified axis/axes)

By default, these nodes reduce an entire vellset to a single scalar (e.g. by summing them). However, if one or more reduction_axes are specified, the reduction is only along these axes (e.g. reduction_axes=['time'] reduces only the time-axis to length 1. With a tensor, the operation is performed over all its vellsets.

Node

nc

Description

Example Tree

MeqSum

1+

sums vellset cells

MeqConstant.py

MeqProduct

1+

multiplies vellset cells

MeqStdDev

1

the standard deviation of vellset cells

MeqConstant.py

MeqRms

1

same as MeqStdDev (obsolete?)

MeqMean

1+

The mean of vellset cells

MeqConstant.py

MeqMax

1+

The max of vellset cells

MeqMin

1+

The min of vellset cells

regridding nodes (interpolation between cells)

Node

nc

Description

Example Tree

ModRes

1

changes the resolution of the REQUEST (e.g. num_cells=[2,3])

MeqResampler

1

resamples the Result of its children

MeqCompounder

2

implement implicit (compound) functions

FFT

Node

nc

Description

Example Tree

MeqUVBrick

.

...

MeqUVInterpol

.

...

MeqVisPhaseShift

.

...

coordinate operations

These are based on the AIPS++ Measures, written by Wim Brouw.

Node

nc

Description

Example Tree

MeqAzEl

2+

calculate Azimuth and Elevation from RA and DEC

MeqAzEl.py

MeqLST

3

calculate Local Sidereal Time from Earth position xyz=tensor, or observatory='VLA'

MeqLST.py

MeqCoordTransform

2

transforms coordinates

MeqLMN

.

Calculate L, M, N from RA and DEC

MeqLMRaDec.py

MeqLMRaDec

2

calculate RA, DEC from L and M

MeqLMRaDec.py

MeqObjectRADec

0

Give RA,Dec of standard objects like SUN,MOON

MeqParAngle

2

calculate Parallactic Angle from RA and DEC

MeqParAngle.py

MeqRADec

2

Calculates the RA,Dec given Az, El coordinates

MeqUVW

.

...

request generation

Node

nc

Description

Example Tree

MeqSink

1

make requests and write data

MeqVisDataMux

1+

parent of all MeqSink nodes

flow control

Node

nc

Description

Example Tree

MeqReqMux

1+

...

MeqReqSeq

1+

sends a sequence of requests

MatrixExample.py

solving for MeqParm coeff

At this moment, only one solving strategy is supported: Iterative (Levenberg-Marquardt) least-squares minimization.

Node

nc

Description

Example Tree

MeqCondeq

2

child of MeqSolver, produces one condition equation per cell

MeqSolver

1+

solves for (the coeff of) a subset of MeqParm nodes

MeqSolver.py

flagging

The user must supply a subtree that takes a Result with data, and produces a Result with values around zero. This subtree is the child of a ZeroFlagger node, which will then set a flag for all cells whose value is greater than zero. The MergeFlags node can be used to transfer these flags to the main data stream, i.e. the Result that contains the data.

Node

nc

Description

Example Tree

MeqZeroFlagger

1

Generates cell flags according to its child Result values

MeqMergeFlags

1+

Merge the cell flags of its children

visualisation

Node

nc

Description

Example Tree

MeqDataCollect

1+

visualise groups of nodes together

MeqDataConcat

1+

concatenates multiple datacollect nodes

MeqHistoryCollect

1

collects history into a list

inspector

1+

visualises a result with multiple (tensor) vellsets

miscellaneous

Node

nc

Description

Example Tree

MeqStripper

1

strip the perturbed values from the Vellset(s)

MeqIdentity

1

make a copy of a node, with a new name

user-defined behaviour

PrivateFunction

n

uses c/c++ function to operate on its children

MeqFunctional

n

interprets function string to operate on children

PyNodes

n

uses a named python script to operate on its children

RefMan/AvailableNodeClasses (last edited 2008-10-13 13:05:30 by MaaijkeMevius)