-
Notifications
You must be signed in to change notification settings - Fork 2
MeqSpigot
A MeqSpigot node is associated with one interferometer. It is connected to an input visibility stream. The node is a leaf. For each matching tile in the stream, it waits for the right Request, and returns a Result object containing data from the tile. (It is up to the tree designer to ensure that each MeqSpigot has a matching MeqSink somewhere below, so that requests and results come in the right sequence.)
A MeqSpigot is controlled by the following fields of its init-record:
[[!table header="no" class="mointable" data="""
field | default | description
WARNING: rowspan not implemented
station_1_index | | interferometer pair
station_2_index |
input_col | | tile column to read
corr_index | [] | correlation map (see below)
dims | [2,2] | output tensor dimensions (see below)
WARNING: rowspan not implemented
flag_mask | 0 | see FlagManagement
flag_bit | 0
A MeqSpigot does not necessarily have to deal with visibility data. For example, a spigot that reads weights can be created by specifying "WEIGHT" for the input column. In general, three kinds of tile columns may be read:
one-dimensional
: one double or complex value per timeslot. A single time-variable [[Vells]] is generated, of type double or complex double.
two-dimensional
: N double or complex values per timeslot (corresponding to N frequencies). A single time-freq-variable [[Vells]] is generated, of type double or complex double.
three-dimensional
: NxM double or complex values per timeslots (N frequencies and M correlations). A tensor of time-freq-variable [[Vells]] can be generated, of type double or complex double.
In the latter case, the `corr_index` and `ndims` fields come into play. Tensor element `i` is mapped to correlation `corr_index[i]` in the tile. Note that, as usual, tensor elements are decomposed in row-major order. I.e., the elements of a 2x2 tensor are numbered as follows:
[[!table header="no" class="mointable" data="""
0 | 1
2 | 3
If specified, dims
gives the dimensions of the tensor. The product of dims
must be equal to the length of corr_index
. If no dims
are specified, the Result of the spigot is a vector or scalar. An index of -1 (0 in Glish) produces a NullVellSet in that tensor position. If corr_index
is empty (the default), a 1-1 mapping is used.
Example 1
:
The tiles contain four correlations: XX XY YX YY. dims
is [2,2], and corr_index
is either empty, or [0,1,2,3] (or [1,2,3,4] in Glish). The Result is arranged in a 2x2 coherency matrix, as XX,XY],[YX,YY.
Example 2
:
The tiles contain two correlations: XX YY. dims
is [2,2], and corr_index
is [0,-1,-1,1] (or [1,0,0,2] in Glish). The Result is arranged in a 2x2 coherency matrix, as XX,0],[0,YY.
Example 3
:
The tiles contain two correlations: XX YY. dims
is unset, and corr_index
is [0] (or [1] in Glish). The Result is a scalar containing the XX correlation only.