A MeqSink node is associated with one interferometer. It is connected to an input visibility stream. The node has one child. For each matching tile in the stream, it generates a Request object with a Cells that matches the time/frequency gridding of the tile. Optionally, the Result of the request is then put back into the tile, and the tile is sent to the output stream.
Note: usually, a matching MeqSpigot node somewhere up the tree will read visibility data from the same tile. However, in some cases, such as predict-only (i.e. simulation) trees, input visibilities are ignored, and only the time-frequency grids are used.
A MeqSink is controlled by the following fields of its init-record:
|
field |
default |
description |
|
station_1_index |
|
interferometer pair |
|
station_2_index |
|
|
|
output_col |
"" |
tile column to store Result in, empty for none |
|
corr_index |
[] |
correlation map (see below) |
|
flag_mask |
0 |
see FlagManagement |
|
flag_bit |
0 |
A MeqSink does not necessarily have to deal in visibility data. For example, a sink that writes weights can be created by specifying "WEIGHT" for the output column. In case of visibility columns, however, MeqSink can gracefully handle tensor results (see TensorMath), and match their components to correlations in the tile. This is controlled by the corr_index field:
If empty: a one-to-one mapping is used, and an error will be thrown if the number of VellSets in the Result does not match the number of correlations.
If non-empty: must be a vector of indices. Tensor element i is then mapped to correlation corr_index[i] of the tile. If corr_index[i]<0 (or <=0 in Glish), the element is ignored.
Note that, as usual, tensor elements are decomposed in row-major order. I.e., the elements of a 2x2 tensor are numbered as follows:
|
0 |
1 |
|
2 |
3 |
See MeqSpigot for more information on dealing with correlations and tensors.
- Example 1
The tiles contain four correlations: XX XY YX YY. The MeqSink is attached to a full-polarization tree, and its child's Result is a 2x2 coherency matrix. The right correlation map in this case is [0,1,2,3] (or [1,2,3,4] in Glish). This happens to be equivalent to leaving corr_index empty.
- Example 2
The tiles contain two correlations: XX YY. The child will return a 2x2 coherency matrix, and the off-diagonal terms have to be ignored. The right correlation map in this case is [0,-1,-1,1] (or [1,0,0,2] in Glish).
- Example 3
The tiles contain four correlations: XX XY YX YY. The child returns a 2-vector of XX and YY coherencies. The right correlation map in this case is [0,3] (or [1,4] in Glish).
