columns A1_PhiSector and A2_PhiSector are required
Return values
phi_masks
see the schema of the example output below
Parameters:
Input: required columns are the \(\phi\)-sectors of the antenna pairs, A1_PhiSector and A2_PhiSector.
Output schema: one column (masks) will be attached to the input dataframe,
$ A1_PhiSector <u8>
$ A2_PhiSector <u8>
$ masks <array[bool, (1, 360)]>
Explanation:
\(\phi\)-sector 1 is centered around 0 degrees azimuth, \(\phi\)-sector 2 around 15 degrees, and so on and so forth; the last \(\phi\) sector (24) is centered around 345 degrees.
Parameters: columns correlation and correlation maps will be added to the input, so the output schema looks like
$ A1_AntNum <enum>
$ A2_AntNum <enum>
$ Pol <enum>
$ A1_waveforms (volts) <array[f64, 3072]>
$ A2_waveforms (volts) <array[f64, 3072]>
$ time delays [samples] <array[i64, (180, 360)]>
$ masks <array[bool, (1, 360)]>
$ correlation <array[f64, 6143]>
$ correlation maps <array[f64, (180, 360)]>
correlation maps contain correlation skymaps. These are matrices with the same dimensions as the time delay maps of time delays [samples], as the former are made based on the latter via "fancy-indexing"
Each matrix element of a correlation skymap is the correlation score between two waveforms, given some particular time delaytime delay
, ie. phase shift.
masks can be used to mask the correlation maps, as shown in the bottom subplot in the Figure above. The masks are defined by supply_azimuthal_angle_masks.
Explanation:
Consider two waveforms,
Each row in the correlation column is an array of correlation scores.
By shifting the waveforms we may be able to get them to align perfectly, at which point maximum correlation is achieved.
The correlation score tells us how "aligned" the two waveforms are after we phase shift A1_waveforms (volts) against A2_waveforms (volts) by a certain amount of time.
The waveforms are zero-centered and normalized such that the cross-correlation is bounded between [-1,1]. Zero means the waveforms are not aligned at all.