Skip to content
Gijs Molenaar edited this page Feb 12, 2014 · 5 revisions

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:

||<rowbgcolor="#FFFFE0"> '''field''' || '''default''' || '''description''' || ||station_1_index|| ||<(|2> 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)|| ||flag_mask||0||<(|2> 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: ||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.

Clone this wiki locally