; FLAGR
;---------------------------------------------------------------
;! Edit data based on internal RMS, amplitudes, weights
;# TASK CALIBRATION OOP EDITING UV
;-----------------------------------------------------------------------
;; Copyright (C) 2004-2007, 2010-2011
;; Associated Universities, Inc. Washington DC, USA.
;;
;; This program is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation; either version 2 of
;; the License, or (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public
;; License along with this program; if not, write to the Free
;; Software Foundation, Inc., 675 Massachusetts Ave, Cambridge,
;; MA 02139, USA.
;;
;; Correspondence concerning AIPS should be addressed as follows:
;; Internet email: aipsmail@nrao.edu.
;; Postal address: AIPS Project Office
;; National Radio Astronomy Observatory
;; 520 Edgemont Road
;; Charlottesville, VA 22903-2475 USA
;-----------------------------------------------------------------------
FLAGR LLLLLLLLLLLLUUUUUUUUUUUU CCCCCCCCCCCCCCCCCCCCCCCCCCCCC
FLAGR Use rms and amplitudes in uv data set to edit the data
INNAME Input UV data
INCLASS Input UV data (class)
INSEQ Input UV data (seq. #)
INDISK Input UV data disk drive #
SOURCES Source (pointings) list
QUAL -10.0 Source qualifier -1=>all
CALCODE Calibrator code ' '=>all
TIMERANG Time range to process.
SELBAND Bandwidth to select (kHz)
SELFREQ Frequency to select (MHz)
FREQID Freq. ID to select.
BIF 0.0 100.0 Lowest IF number 0=>all
EIF 0.0 100.0 Highest IF number 0=>all
BCHAN 0.0 2048.0 Lowest channel number 0=>all
ECHAN 0.0 2048.0 Highest channel number 0=>all
SUBARRAY 0.0 1000.0 Subarray, 0=>all
DOCALIB -1.0 101.0 > 0 calibrate data & weights
> 99 do NOT calibrate weights
GAINUSE CL/SN table to apply
DOPOL -1.0 10.0 If >0 correct polarization.
PDVER PD table to apply (DOPOL>0)
BLVER BL table to apply.
FLAGVER Flag table version
OUTFGVER 0.0 Output FG table version
DOBAND -1.0 10.0 If >0 apply bandpass cal.
Method used depends on value
of DOBAND (see HELP file).
BPVER Bandpass table version
SMOOTH Smoothing function. See
HELP SMOOTH for details.
UVRANGE 0. Min & max baseline (klambda)
SOLINT Time interval (sec)
SCANLENG Scan length (sec)
REFANT Reference antenna for VDIF
OPTYPE Type of operation on the rms
'RFI ' 'HIST' 'ANTE' 'GAIN'
'VDIF' 'VRFI'
'TIME' is default
DOCAT -1.0 1.0 > 0 => keep the XX file
VECTOR -1.0 1.0 > 0 -> vector averaging
<= 0 -> use amplitudes only
DOROBUST -1.0 1.0 > 0 -> robust spectral avg
BPARM (1) Fraction allowable ??
correlators
(2) Fraction allowable ??
baselines
(3) rms cutoff (Jy) for ???
(4) Amp. factor for cutoff
(5) rms cutoff (Jy) for bad
(6) Amp. factor for cutoff
(7) Min hist level Jy for ???
(8) Min hist level Jy for bad
(9) > 0 save 1-sample SOLINTs
(10) best left <= 0.
CPARM (1) Question if ampCPARM(2)
(3) Flag if amp < CPARM(3)
(4) Flag if amp > CPARM(4)
(5) min amp rms allowed
(6) min rms rms allowed
(7) Question if amp >
CPARM(7)*rms away from
mean amplitude
(8) Question if rms >
CPARM(8)*(rms of rms's)
away from mean rms
(9) Flag if amp >
CPARM(8)*rms away from
mean amplitude.
(10) Flag if rms >
CPARM(10)*(rms of rms's)
away from mean rms.
DPARM (1) Question if wtDPARM(2)
(3) Flag if wt < DPARM(3)
(4) Flag if wt > DPARM(4)
(5) Question if closure
fraction > DPARM(5)
(6) Flag if closure error
fraction > DPARM(6)
STOKES Correlators examined
' ' => RR/LL, XX/YY, I
DOSTOKES -1.0 4.0 -1 flag only bad corr.
1 flag cross if parallel bad
2 flag parallel if cross bad
3 both 1 and 2
4 flag all Stokes if one bad
0 -> 3
DOIFS -1.0 1.0 > 0 -> flag all IFs if one
is bad
DOALL -1.0 1.0 > Flag all channels, else
flag BCHAN - ECHAN
DOCRT -3.0 132.0 > 0 -> use the terminal,
> 72 => terminal width
0 -> no printing
else use the line printer
OUTPRINT
Printer disk file to save
PRTLEV > 0 => debug messages
BADDISK -1.0 1000.0 Disks to avoid for scratch.
----------------------------------------------------------------
FLAGR
Type: Task
Use: This task computes the visibility amplitude and rms
fluctuations in each baseline and correlator over a specified
range of spectral channels and time. It can then convert the
baseline-based quantities into apparent antenna-based
quantities. In some of the OPTYPEs these are then compared
with user-specified cutoffs. If a large enough fraction of the
data are "questionable" then all of those data are flagged. If
a given baseline/correlator or antenna/correlator is "bad", it
will be flagged. A time-based OPTYPE saves the amplitudes and
rmses and then reviews all of them over time, flagging
discrepant ones on a source-by-source and antenna-by-antenna
basis. Another time-based OPTYPE compares the complex
visibilities on an antenna basis with the average of those in a
range of time surrounding.
Adverbs:
INNAME.....Input UV data file
INCLASS....Input UV data file (class). Standard defaults.
INSEQ......Input UV data file (seq. #). 0 => highest.
INDISK.....Input UV data file disk drive #. 0 => any.
SOURCES....List of sources (pointings) to be processed.
'*' or blank = all; a "-" before a source name means all
except ANY source named.
QUAL.......Only sources with a source qualifier number in the SU
table matching QUAL will be used if QUAL is not -1.
CALCODE...."sources" may be selected on the basis of the calibrator
code given in the SU table.
' ' => any calibrator code selected
'* ' => any non blank code (cal. only)
'-CAL' => blank codes only (no calibrators)
NB: The CALCODE test is applied in addition to the other
tests, i.e. SOURCES and TIMERANG, in the selection of
sources to process. CALCODE affects only the selection
of calibrators.
TIMERANG...Time range of the data to be processed. In order: Start
day, hour, min. sec, end day, hour, min. sec. Days
relative to reference date.
SELBAND....Bandwidth of data to be selected. If more than one IF is
present SELBAND is the width of the first IF required.
Units = kHz. For data which contain multiple
bandwidths/frequencies the task will insist that some
form of selection be made by frequency or bandwidth.
SELFREQ....Frequency of data to be selected. If more than one IF is
present SELFREQ is the frequency of the first IF
required. Units = MHz.
FREQID.....Frequency identifier to select (you may determine which
is applicable from the OPTYPE='SCAN' listing produced by
LISTR). If either SELBAND or SELFREQ are set, their
values overide that of FREQID. However, setting SELBAND
and SELFREQ may result in an ambiguity. In that case,
the task will request that you use FREQID.
DOCALIB....If true (>0), calibrate the data using information in the
specified Cal (CL) table for multi-source or SN table for
single-source data. Also calibrate the weights unless
DOCALIB > 99 (use this for old non-physical weights).
BIF........First IF to select. 0=>all.
EIF........Highest IF to select. 0=>all higher than BIF
BCHAN......First channel to select. 0=>all.
ECHAN......Highest channel to select. The spectral channels are
used as separate samples of the visibility to provide
better statistics in determining the rms.
SUBARRAY...Subarray number to consider. 0=>1.
GAINUSE....CL table version number to apply. 0=> highest.
DOPOL......If > 0.5 then correct data for instrumental polarization
as represented in the AN or PD table. This correction is
only useful if PCAL has been run or feed polarization
parameters have been otherwise obtained. See HELP DOPOL
for available correction modes: 1 is normal, 2 and 3 are
for VLBI. 1-3 use a PD table if available; 6, 7, 8 are
the same but use the AN (continuum solution) even if a PD
table is present.
PDVER......PD table to apply if PCAL was run with SPECTRAL true and
0 < DOPOL < 6. <= 0 => highest.
BLVER......Version number of the baseline based calibration (BL)
table to appply. <0 => apply no BL table, 0 => highest.
FLAGVER....Specifies the version of the flagging table to be
applied. 0 => highest numbered table. <0 => no flagging
to be applied.
OUTFGVER...Flag table version to be used on output for both single-
and multi-source data sets. If OUTFGVER is <= 0 or
greater than FGmax (the previously highest FG version
number), then a new FG table will be created for the new
flags with version FGmax+1. This new table will also
contain the flags applied on input (if any) from FG
version FLAGVER. If OUTFGVER specifies a pre-existing FG
version, then the input flags are not copied even if
OUTFGVER and FLAGVER are not equal.
DOBAND.....If true (>0) then correct the data for the shape of the
antenna bandpasses using the BP table specified by BPVER.
The correction has five modes:
(a) if DOBAND=1 all entries for an antenna in the table
are averaged together before correcting the data.
(b) if DOBAND=2 the entry nearest in time (including
solution weights) is used to correct the data.
(c) if DOBAND=3 the table entries are interpolated in
time (using solution weights) and the data are then
corrected.
(d) if DOBAND=4 the entry nearest in time (ignoring
solution weights) is used to correct the data.
(e) if DOBAND=5 the table entries are interpolated in
time (ignoring solution weights) and the data are then
corrected.
BPVER......Specifies the version of the BP table to be applied
SMOOTH.....Specifies the type of spectral smoothing to be applied to
a uv database . The default is not to apply any smoothing.
The elements of SMOOTH are as follows:
SMOOTH(1) = type of smoothing to apply: 0 => no smoothing
To smooth before applying bandpass calibration
1 => Hanning, 2 => Gaussian, 3 => Boxcar, 4 => Sinc
To smooth after applying bandpass calibration
5 => Hanning, 6 => Gaussian, 7 => Boxcar, 8 => Sinc
SMOOTH(2) = the "diameter" of the function, i.e. width
between first nulls of Hanning triangle and sinc
function, FWHM of Gaussian, width of Boxcar. Defaults
(if < 0.1) are 4, 2, 2 and 3 channels for SMOOTH(1) =
1 - 4 and 5 - 8, resp.
SMOOTH(3) = the diameter over which the convolving
function has value - in channels. Defaults: 1,3,1,4
times SMOOTH(2) used when input SMOOTH(3) < net
SMOOTH(2).
UVRANGE....(Minimum,Maximum) baseline (kilo-lambda) to process.
SOLINT.....The interval over which the rms is determined.
0 => 60 seconds.
SCANLENG...Length of "scan" for VDIF and VRFI in seconds. The
vector average of the visibilities over the scan is
differenced from the individual visibility to make the
"vector difference".
REFANT.....Reference antenna suggestion for VDIF.
OPTYPE.....Choice of operation to be performed:
'RFI ' -> acts similar to task RFI, flag all data for
times when some fraction of baselines and
correlators are excessively noisy, flag all of
a correlator for times when some fraction of
baselines are too noisy, and flag individual
baselines at times when they are too noisy.
'HIST' -> like RFI above except that the histogram of all
baselines for each correlator also yields a
cutoff for those baselines wildly different
from their fellows in addition to the cutoffs
used in RFI.
'ANTE' -> Like RFI except that the baseline RMSes are
converted to antenna RMSes before being checked
for excess values. A robust method is used
and closure failure statistics maintained.
Data with excess closure failures are flagged
along with those having amplitudes, rmses, and
weights out of range.
'TIME' -> (default)
Like ANTE it computes the antenna amplitudes
and rmses in each SOLINT, but it simply saves
them for later. A robust method is used and
closure failure statistics maintained. When
all data have been read, the antenna-based
results are analyzed, source by source, antenna
by antenna. Regression is used to compute the
mean antenna amplitude and mean rms and the
rmses in these parameters. Outliers are then
flagged including those with excess closure
failures.
'GAIN' -> Like TIME except that the source amplitudes are
scaled by their average (over all data on that
source) and then all sources are examined
together. This may be needed when there is not
much data on some of the sources making too few
SOLINTs to determine robust averages on a
source by source basis. One should do this
only with calibrator sources of similar flux.
'VDIF' -> It computes the baseline reals, imaginaries,
and weights in each SOLINT and converts then to
antenna-based values. A robust method is used
and closure failure statistics maintained. It
saves them for later. When all data have been
read, the antenna-based results are analyzed
source by source, correlator by correlator.
First the visbility at each time is differenced
with the average of the visibilities
surrounding it. The weights, amplitudes, and
amplitudes of the differences are then used to
flag the data as are the closure failure rates.
'VRFI' -> It computes the baseline reals, imaginaries,
and weights in each SOLINT and saves as many as
it can for later. When the source changes, the
buffer is full, or all data have been read, the
baseline-based results are analyzed correlator
by correlator. First the visbility at each
time is differenced with the average of the
visibilities surrounding it. The weights,
amplitudes, and amplitudes of the differences
are then used to flag the data.
DOCAT......> 0 => keep the XX extension file generated by the TIME
and VDIF OPTYPEs. Otherwise delete it on exit.
VECTOR <= 0 -> all averaging and rms's are computed using
amplitudes only. Otherwise, the real and imaginary parts
of the visibility are used. The former will be
insensitive to phase variations, but have biased noise
statistics.
DOROBUST...> 0 => Do robust averaging of the spectral channels in
each time and baseline. Normal averaging is done
over time.
<= 0 => Normal averaging (all samples included) is done
over all channels as well as time.
BPARM......Control parameters
(1) If the fraction of all correlators regarded as
questionable exceeds BPARM(1), flag all data for this
integration period. 0 -> 0.51 All OPTYPEs.
(2) If the fraction of baselines regarded as
questionable exceeds BPARM(2), mark the particualr
correlator as questionable and flag it (or all
correlators - see BPARM(1) above). 0 -> 0.25
All OPTYPEs.
(3) The maximum allowable sine/cosine rms per baseline
and correlator to mark it as questionable. No default.
For VDIF, the maximum allowable amplitude of the
vector difference to mark questionable.
Not used in OPTYPE='TIME'. Jy.
(4) Source amplitude coefficient for determining
questionable baselines. The maximum allowed rms or
amplitude of the vector difference is given by:
sqrt (BPARM(3)**2 + (avg_amp*BPARM(4))**2)
Note: the value of BPARM(4) is a compromise between
false detection of interference on strong sources
and missing interference on weak sources as the
interference may mimic a strong source. 0 -> 0.1.
Not used in OPTYPE='TIME'.
(5) The maximum allowable sine/cosine rms per baseline
and correlator to flag that baseline. 0 -> BPARM(3).
For VDIF, the maximum allowable amplitude of the
vector difference to mark as bad.
Not used in OPTYPE='TIME'. Jy.
(6) Source amplitude coefficient like BPARM(4) but
used to flag individual baselines rather than just
mark them as questionable. 0 -> BPARM(4).
Not used in OPTYPE='TIME'.
(7) HIST only: Set the histogram flag level for
questionable data to MAX (BPARM(7), histogram value).
Thus, if the data are particularly noise free do not
delete some anyway. Jy. No default.
(8) HIST only: Set the histogram flag level for
bad data to MAX (BPARM(8), histogram value). Thus, if
the data are particularly noise free do not delete
some anyway. Jy. 0 -> BPARM(7)
(9) > 0 => do not flag correlators having only 1
sample in the integration period; <=0 => such orphans
are deleted. RFI, HIST, ANTE, and TIME now include
such orphans in the previous integration if possible
and if all correlators are orphaned. If previous
editing reduces some correlators to single samples,
but not others, then the single-sample ones are
flagged under control of BPARM(9).
(10) unused
CPARM......More control parameters: 1-4 for All OPTYPEs
(1) Treat data with amplitude <= CPARM(1) as
questionable. Jy.
(2) Treat data with amplitude > CPARM(2) as
questionable. Jy.
(3) Treat data with amplitude <= CPARM(3) as bad. Jy.
(4) Treat data with amplitude > CPARM(4) as bad. Jy.
(5) 'TIME', 'GAIN' only: Limit the true rms in the
amplitudes to be >= CPARM(5). Jy.
(6) 'TIME', 'GAIN' only: Limit the true rms in the
rmses to be >= CPARM(6). Jy.
(7) 'TIME', 'GAIN' only: Question data more than
CPARM(7) times the true rms away from the true mean.
0 -> 3.5
(8) 'TIME', 'GAIN' only: Question data with rms more
than CPARM(8) times the true rms of the rms's over all
antennas, IFs, and polarizations away from the true
mean of those rms's. 0 -> 8.
(9) 'TIME', 'gain' only: Flag data more than CPARM(9)
times the true rms away from the true mean. 0 -> 7
(10) 'TIME', 'GAIN' only: Flag data with rms more than
CPARM(10) times the true rms of the rms's over all
antennas, IFs, and polarizations away from the true
mean of those rms's. 0 -> 16.
DPARM......(1) Question data with weight <= DPARM(1) in 1/Jy^2.
(2) Question data with weight > DPARM(2) in 1/Jy^2.
(3) Flag data with weight <= DPARM(1) in 1/Jy^2.
(4) Flag data with weight > DPARM(2) in 1/Jy^2.
(5) The antenna amplitudes are tested for closure error.
If the difference of the baseline amplitude and the
product of the antenna amplitudes exceeds 3 times the rms
difference, a closure error is counted. For VDIF, the
antenna-based complex solution is compared with the data
and if the amplitude of the difference exceeds 2.5 times
the rms of the differences, a closure error is counted.
If the fraction of baselines involving an entenna with
closure error is > DPARM(5) then the data for that
antenna are questioned. 0 -> 0.5
(6) If the fraction of baselines with closure error is
> DPARM(6), then that antenna is flagged. 0 -> 1 (i.e.
no flagging).
STOKES.....Which correlators will be examined: 'FULL', 'HALF',
'RR', 'LL', 'RRLL', 'RLLR', 'XX', 'YY', 'XXYY', 'XYYX' or
a "bit pattern" '1111', '1110', etc. Note that input
correlators are examined no Stokes conversion will take
place. Only limited forms of the Stokes axis are
supported other than through the bit pattern form.
DOSTOKES...-1 => Flag only the bad correlator, no other
+1 => Flag both cross-hand polarizations when one
parallel-hand is bad
+2 => Flag both parallel-hand polarizations when one
cross-hand is bad
+3 => +1 and +2
+4 => flag all correlators when one is bad
0 => +3
DOIFS......> 0 => flag all IFs if one is bad; else flag only the bad
IF.
DOALL......> 0 => flag all spectral channels; else flag only
channels BCHAN through ECHAN.
DOCRT......Zero means write the flag table without comment.
False (< 0) use the line printer if OUTPRINT = ' ' else
write named OUTPRINT file only. When OUTPRINT is
not blank, DOCRT=-2 suppresses the page-feed
character on page headers and DOCRT=-3 suppresses
page headers and most other header information.
True (> 0) use the terminal interactively. The task will
use the actual terminal width as a display limit
unless 72 < DOCRT < width. In that case, the display
limit will be DOCRT characters.
OUTPRINT...Disk file name in which to save the line printer output.
' ' => use scratch and print immediately for interactive
jobs - batch jobs use OUTPRINT = 'PRTFIL:BATCHjjj.nnn'
(jjj= job #, nnn = user #). When OUTPRINT is not blank,
multiple outputs are concatenated, and the file is not
actually printed.
PRTLEV.... Set > 0 to get various debug level messages. Attached to
the histogram finder and to the antenna-based solver.
PRTLEV=3 gets failure information, =4 gets the results of
the histogram and antenna based functions. In the
finding of antenna-base complex "gains", PRTLEV=4 will
show results of the fit and PRTLEV=5 will show the input
data and the rms at each iteration.
BADDISK....This array contains the numbers of disks on which it is
desired that scratch files not be located.
----------------------------------------------------------------
See FINDR for a task to find typical values to guide you in using
FLAGR. FINDR even returns typical values in adverb ARRAY2.
Explanation of the methods used
All OPTYPEs (so far)
start by averaging the calibrated and flagged data over a period of
SOLINT seconds. Data with a time difference <= SOLINT are included.
Thus, a SOLINT of 60 with records every 10 seconds will include 7
records; to get only 6 set SOLINT to something > 50 and < 60 such as
55. The data from each included antenna pair, IF, and polarization
are kept separate, but the spectral channels from BCHAN through ECHAN
are averaged together.
For OPTYPEs RFI, HIST, ANTE, GAIN, and TIME: During the averaging, the
apparent rms is found including all data (no outlier rejection). The
rms and amplitude are averaged by vector means unless BPARM(10) > 0,
in which case scalar amplitudes are used.
For OPTYPEs VDIF and VRFI: The averaging is done to determine the
"individual" records to be compared with the "scan" averages of such
records in a region of time centered on the individual records.
Typically, with decent signal-to-noise, one will set SOLINT for VDIF
to less than the time between records. The "scan" averaging is done
over the scan interval using parameter SCANLENG and is done by finding
the median real and imaginary parts which should be less sensitive to
outliers.
If PRTLEV=1, the task prints messages about "bad" samples. If
PRTLEV=2, it also prints messages about "questionable" samples.
Even with PRTLEV=0, messages about antenna-independent flags are
printed. A summary of generated flags is printed at the end. Note
that DOCRT=0, suppresses all printing although the flag counts will go
to the message file in that case.
At this point, the OPTYPEs do somewhat different things:
===============
OPTYPE 'RFI '
The task loops over all antenna pairs, IFs, and polarizations counting
the "questionable" data. A sample is questionable if
Sig(A1,A2,I,P)^2 > BP(3)^2 + (BP(4) * Amp(A1,A2,I,P))^2 or
Amp(A1,A2,I,P) <= CP(1) or
Amp(A1,A2,I,P) > CP(2) or
Wt(A1,A2,I,P) <= DP(1) or
Wt(A1,A2,I,P) > DP(2)
where Sig(A1,A2,I,P) is the rms of the antenna pair A1 and A2 at IF I,
polarization P, Amp is the average amplitude of the sample, Wt is the
average weight of the sample, BP(*) is BPARM(*), CP(*) is CPARM(*),
and DP(*) is DPARM(*). Looping over all IFs and polarizations, the
task counts the number of antenna pairs that are questionable. If the
fraction of questionable pairs exceeds BPARM(2), then that
IF/polarization is "bad". If the number of correlators (1 IF with 1
polarization all antenna pairs) that are bad divided by the total
number of correlators exceeds BPARM(1), then all data for that period
are "bad". The task then makes flags for these two types of badness
and can print information about them.
The task then loops over all remaining antenna pairs and flags any
that are "clearly bad", i.e. that have
Sig(A1,A2,I,P)^2 > BP(5)^2 + (BP(6) * Amp(A1,A2,I,P))^2 or
Amp(A1,A2,I,P) <= CP(3) or
Amp(A1,A2,I,P) > CP(4) or
Wt(A1,A2,I,P) <= DP(3) or
Wt(A1,A2,I,P) > DP(4)
===============
OPTYPE 'HIST'
The task loops over all antenna pairs, IFs, and polarizations counting
the "questionable" data. A sample is questionable if
Sig(A1,A2,I,P)^2 > BP(3)^2 + (BP(4) * Amp(A1,A2,I,P))^2 or
Sig(A1,A2,I,P)^2 > Max (BP(7), HistClip(I,P))^2 or
Amp(A1,A2,I,P) <= CP(1) or
Amp(A1,A2,I,P) > CP(2) or
Wt(A1,A2,I,P) <= DP(1) or
Wt(A1,A2,I,P) > DP(2)
where Sig(A1,A2,I,P) is the rms of the antenna pair A1 and A2 at IF I,
polarization P, Amp is the average amplitude of the sample, BP(*) is
BPARM(*), CP(*) is CPARM(*), and DP(*) is DPARM(*). HistClip is
determined from the histogram of rms's for each antenna pair and is
set to delete <= 6 per cent of the rms's or all rms's more than 3
sigma from the mean rms. BPARM(7) keeps this from getting too small
when the data are nearly perfect. Looping over all IFs and
polarizations, the task counts the number of antenna pairs that are
questionable. If the fraction of questionable pairs exceeds BPARM(2),
then that IF/polarization is "bad". If the number of correlators (1
IF with 1 polarization all antenna pairs) that are bad divided by the
total number of correlators exceeds BPARM(1), then all data for that
period are "bad". The task then makes flags for these two types of
badness and can print information about them.
The task then loops over all remaining antenna pairs and flags any
that are "clearly bad", i.e. that have
Sig(A1,A2,I,P)^2 > BP(5)^2 + (BP(6) * Amp(A1,A2,I,P))^2 or
Sig(A1,A2,I,P)^2 > Max (BP(8), HistClip(I,P))^2 or
Amp(A1,A2,I,P) <= CP(3) or
Amp(A1,A2,I,P) > CP(4) or
Wt(A1,A2,I,P) <= DP(3) or
Wt(A1,A2,I,P) > DP(4)
===============
OPTYPE 'ANTE'
The task converts the average amplitudes, rms's, and weights of the
antenna pairs into antenna-based values using the assumption that
Amp(A1,A2,I,P) = SQRT (Amp(A1,I,P) * Amp(A2,I,P))
Sig(A1,A2,I,P) = SQRT (Sig(A1,I,P) * Sig(A2,I,P))
Wt(A1,A2,I,P) = SQRT (Wt(A1,I,P) * Wt(A2,I,P))
It uses robust methods (outliers ignored) to compute the antenna-based
values and then counts the fraction [Fr(A,I,P)] of baselines for each
antenna that are more than 3 times the rms away from the final
solution.
The task then loops over all antennas, IFs, and polarizations counting
the "questionable" data. A sample is questionable if
Sig(A,I,P)^2 > BP(3)^2 + (BP(4) * Amp(A,I,P))^2 or
Amp(A,I,P) <= CP(1) or
Amp(A,I,P) > CP(2) or
Wt(A,I,P) <= DP(1) or
Wt(A,I,P) > DP(2) or
Fr(A) > DP(5)
where Sig(A,I,P) is the rms of antenna A at IF I, polarization P,
Amp is the average amplitude of the sample, BP(*) is BPARM(*), CP(*)
is CPARM(*), and DP(*) is DPARM(*). Looping over all IFs and
polarizations, the task counts the number of antennas that are
questionable. If the fraction of questionable antennas exceeds
BPARM(2), then that IF/polarization is "bad". If the number of
correlators (1 IF with 1 polarization all antennas) that are bad
divided by the total number of correlators exceeds BPARM(1), then all
data for that period are "bad". The task then makes flags for these
two types of badness and can print information about them.
The task then loops over all remaining antenna pairs and flags any
that are "clearly bad", i.e. that have
Sig(A,I,P)^2 > BP(5)^2 + (BP(6) * Amp(A,I,P))^2 or
Amp(A,I,P) <= CP(3) or
Amp(A,I,P) > CP(4) or
Wt(A,I,P) <= DP(3) or
Wt(A,I,P) > DP(4) or
Fr(A) > DP(6)
===============
OPTYPE 'TIME' The default.
The task converts the average amplitudes, rms's, and weights of the
antenna pairs into antenna-based values using the assumption that
Amp(A1,A2,I,P) = SQRT (Amp(A1,I,P) * Amp(A2,I,P))
Sig(A1,A2,I,P) = SQRT (Sig(A1,I,P) * Sig(A2,I,P))
Wt(A1,A2,I,P) = SQRT (Wt(A1,I,P) * Wt(A2,I,P))
It uses robust methods (outliers ignored) to compute the antenna-based
values and then counts the fraction [Fr(A,I,P)] of baselines for each
antenna that are more than 3 times the rms away from the final
solution.
The values of Amp(A,I,P), Sig(A,I,P), Wt(A,I,P) and Fr(A,I,P) are then
written to an XX table (which may be saved by setting DOCAT > 0).
When all of the data have been read and averaged and the antenna-based
results written to the XX table, these results are read back into
memory.
One source at a time, the task determines the robust average amplitude
and robust average rms (along with the uncertainties in these robust
averages) for each antenna, IF, and polarization. By "robust"
average, we mean an average determined by repeated passes through the
data with the averaging process discarding outlier points. The robust
average of these robust averages is then determined and printed in the
message window. The robust average is computed only for those
amplitudes between CPARM(1) and CPARM(2).
For each source and one antenna, IF, and polarization at a time, the
task loops over time counting the "questionable" data. A sample is
questionable if
Wt(A,I,P,t) <= DP(1) or
Wt(A,I,P,t) > DP(2) or
Fr(A,I,P,t) > DP(5) or
Amp(A,I,P,t) <= CP(1) or
Amp(A,I,P,t) > CP(2) or
ABS(Amp(A,I,P,t)-AvAmp(A,I,P)) > CP(7)*MAX (CP(5), AvAmprms(A,I,P)) or
Sig(A,I,P,t)-AvSig(A,I,P) > CP(8) * AvAvRms
where Sig(A,I,P,t) is the rms of antenna A at IF I, polarization P,
time t; Amp(A,I,P,t) is the average amplitude of that sample,
AvAmp(A,I,P) is the robust average over time of that antenna, IF, and
polarization, AvAmprms(A,I,P) is the uncertainty in that average over
time, AvSig(A,I,P) is the robust average over time of the rms's of
that antenna, IF, and polarization, and AvAvRms is the robust average
over all antennas, IFs, and polarizations of AvSig, CP(*) is CPARM(*),
and DP(*) is DPARM(*). Looping over all IFs and polarizations, the
task counts the number of antennas that are questionable at the time
in question. If the fraction of questionable antennas exceeds
BPARM(2), then that IF/polarization is "bad". If the number of
correlators (1 IF with 1 polarization all antennas) that are bad
divided by the total number of correlators exceeds BPARM(1), then all
data for that period are "bad". The task then makes flags for these
two types of badness and can print information about them.
The task then loops over all remaining antennas and flags any
that are "clearly bad", i.e. that have
Wt(A,I,P,t) <= DP(3) or
Wt(A,I,P,t) > DP(4) or
Fr(A,I,P,t) > DP(6) or
Amp(A,I,P,t) <= CP(3) or
Amp(A,I,P,t) > CP(4) or
ABS(Amp(A,I,P,t)-AvAmp(A,I,P)) > CP(9)*MAX (CP(5), AvAmprms(A,I,P)) or
Sig(A,I,P,t)-AvSig(A,I,P) > CP(10) * AvAvRms
===============
OPTYPE 'GAIN'
The task converts the average amplitudes, rms's, and weights of the
antenna pairs into antenna-based values using the assumption that
Amp(A1,A2,I,P) = SQRT (Amp(A1,I,P) * Amp(A2,I,P))
Sig(A1,A2,I,P) = SQRT (Sig(A1,I,P) * Sig(A2,I,P))
Wt(A1,A2,I,P) = SQRT (Wt(A1,I,P) * Wt(A2,I,P))
It uses robust methods (outliers ignored) to compute the antenna-based
values and then counts the fraction [Fr(A,I,P)] of baselines for each
antenna that are more than 3 times the rms away from the final
solution.
The values of Amp(A,I,P), Sig(A,I,P), Wt(A,I,P) and Fr(A,I,P) are then
written to an XX table (which may be saved by setting DOCAT > 0).
When all of the data have been read and averaged and the antenna-based
results written to the XX table, these results are read back into
memory.
The task determines the relative Flux(s) of each source s averaging
ALL values of Amp(A,I,P,t) by source. The "gains" are then
Gn(A,I,P,t) = Amp(A,I,P,t) / Flux(s)
Using all sources, the task determines the robust average gain and
robust average rms (along with the uncertainties in these robust
averages) for each antenna, IF, and polarization. By "robust"
average, we mean an average determined by repeated passes through the
data with the averaging process discarding outlier points. The robust
average of these robust averages is then determined and printed in the
message window. The robust average is computed only for those
amplitudes between CPARM(1) and CPARM(2).
One antenna, IF, and polarization at a time, the task loops over time
counting the "questionable" data. A sample is questionable if
Wt(A,I,P,t) <= DP(1) or
Wt(A,I,P,t) > DP(2) or
Fr(A,I,P,t) > DP(5) or
Amp(A,I,P,t) <= CP(1) or
Amp(A,I,P,t) > CP(2) or
ABS(Gn(A,I,P,t)-AvGn(A,I,P)) > CP(7)*MAX (CP(5), AvGnrms(A,I,P)) or
Sig(A,I,P,t)-AvSig(A,I,P) > CP(8) * AvAvRms
where Sig(A,I,P,t) is the rms of antenna A at IF I, polarization P,
time t; Amp(A,I,P,t) is the average amplitude of that sample;
Gn(A,I,P,t) is the average gain of that sample; AvGn(A,I,P) is the
robust average over time of that antenna, IF, and polarization,
AvGnrms(A,I,P) is the uncertainty in that average over time;
AvSig(A,I,P) is the robust average over time of the rms's of that
antenna, IF, and polarization, and AvAvRms is the robust average over
all antennas, IFs, and polarizations of AvSig, CP(*) is CPARM(*), and
DP(*) is DPARM(*). Looping over all IFs and polarizations, the task
counts the number of antennas that are questionable at the time in
question. If the fraction of questionable antennas exceeds BPARM(2),
then that IF/polarization is "bad". If the number of correlators (1
IF with 1 polarization all antennas) that are bad divided by the total
number of correlators exceeds BPARM(1), then all data for that period
are "bad". The task then makes flags for these two types of badness
and can print information about them.
The task then loops over all remaining antennas and flags any that are
"clearly bad", i.e. that have
Wt(A,I,P,t) <= DP(3) or
Wt(A,I,P,t) > DP(4) or
Fr(A,I,P,t) > DP(6) or
Amp(A,I,P,t) <= CP(3) or
Amp(A,I,P,t) > CP(4) or
ABS(Gn(A,I,P,t)-AvGn(A,I,P)) > CP(9)*MAX (CP(5), AvGnrms(A,I,P))
Sig(A,I,P,t)-AvSig(A,I,P) > CP(10) * AvAvRms
===============
OPTYPE 'VDIF'
The task converts the average weights and complex visibilities of the
antenna pairs into antenna-based values using the assumption that
Amp(A1,A2,I,P) = SQRT (Amp(A1,I,P) * Amp(A2,I,P))
Phs(A1,A2,I,P) = Phs(A1,I,P) - Phs(A2,I,P)
Wt(A1,A2,I,P) = SQRT (Wt(A1,I,P) * Wt(A2,I,P))
It uses robust methods (outliers ignored) to compute the antenna-based
values and then counts the fraction [Fr(A,I,P)] of baselines for each
antenna that are more than 2.5 times the rms away from the final
solution.
The values of Amp(A,I,P), Phs(A,I,P) (as real and imaginary),
Wt(A,I,P), Fr(A,I,P), and reference antennas (I,P) are then written to
an XX table (which may be saved by setting DOCAT > 0). When all of
the data have been read and averaged and the antenna-based results
written to the XX table, these results are read back into memory. If
needed, the data are put on a consistent reference antenna basis.
One source at a time, the task then loops over each antenna, IF, and
polarization converting the time sequence of reals and imaginaries
into time sequences of amplitudes and amplitudes of the "vector
difference" between the current antenna visibility and the vector
average of antenna visibilities within SCANLENG/2 of the current
time. Note that, in this case, the averages are generated by finding
the median value of the reals and the median value of the imaginaries.
This should be somewhat less succeptible to outliers than straight
averaging and better than robust averaging as well for the small
number of samples which will be normal.
For each source and one antenna, IF, and polarization at a time, the
task loops over time counting the "questionable" data. A sample is
questionable if
Wt(A,I,P,t) <= DP(1) or
Wt(A,I,P,t) > DP(2) or
Fr(A,I,P,t) > DP(5) or
Amp(A,I,P,t) <= CP(1) or
Amp(A,I,P,t) > CP(2) or
Dif(A,I,P,t) > BP(3) + (BP(4) * Amp(A,I,P))
where Dif(A,I,P,t) is the amplitude of the vector difference of
antenna A at IF I, polarization P, time t with the average of the data
within SCANLENG/2 of t; Amp(A,I,P,t) is the average amplitude of that
sample, BP(*) is BPARM(*), CP(*) is CPARM(*), and DP(*) is DPARM(*).
Looping over all IFs and polarizations, the task counts the number of
antennas that are questionable at the time in question. If the
fraction of questionable antennas exceeds BPARM(2), then that
IF/polarization is "bad". If the number of correlators (1 IF with 1
polarization all antennas) that are bad divided by the total number of
correlators exceeds BPARM(1), then all data for that period are "bad".
The task then makes flags for these two types of badness and can print
information about them.
The task then loops over all remaining antennas and flags any
that are "clearly bad", i.e. that have
Wt(A,I,P,t) <= DP(3) or
Wt(A,I,P,t) > DP(4) or
Fr(A,I,P,t) > DP(6) or
Amp(A,I,P,t) <= CP(3) or
Amp(A,I,P,t) > CP(4) or
Dif(A,I,P) > BP(5) + (BP(6) * Amp(A,I,P))
===============
OPTYPE 'VRFI'
The task accumulates SOLINT averages in memory until the source
changes, the data ends, or the number of times that it can hold is
exhausted. For each time, the task then loops over each antenna pair,
IF, and polarization finding the amplitude of the "vector difference"
between the current visibility and the vector average of visibilities
for that antenna pair within SCANLENG/2 of the current time. Note
that, in this case, the averages are generated by finding the median
value of the reals and the median value of the imaginaries. This
should be somewhat less succeptible to outliers than straight
averaging and better than robust averaging as well for the small
number of samples which will be normal.
The task loops over all antenna pairs, IFs, and polarizations counting
the "questionable" data. A sample is questionable if
Dif(A1,A2,I,P) > BP(3) + (BP(4) * Amp(A1,A2,I,P)) or
Amp(A1,A2,I,P) <= CP(1) or
Amp(A1,A2,I,P) > CP(2) or
Wt(A1,A2,I,P) <= DP(1) or
Wt(A1,A2,I,P) > DP(2)
where Dif(A1,A2,I,P) is the amplitude of the vector difference of the
antenna pair A1 and A2 at IF I, polarization P, Amp is the average
amplitude of the sample, Wt is the average weight of the sample, BP(*)
is BPARM(*), CP(*) is CPARM(*), and DP(*) is DPARM(*). Looping over
all IFs and polarizations, the task counts the number of antenna pairs
that are questionable. If the fraction of questionable pairs exceeds
BPARM(2), then that IF/polarization is "bad". If the number of
correlators (1 IF with 1 polarization all antenna pairs) that are bad
divided by the total number of correlators exceeds BPARM(1), then all
data for that period are "bad". The task then makes flags for these
two types of badness and can print information about them.
The task then loops over all remaining antenna pairs and flags any
that are "clearly bad", i.e. that have
Dif(A1,A2,I,P) > BP(5) + (BP(6) * Amp(A1,A2,I,P)) or
Amp(A1,A2,I,P) <= CP(3) or
Amp(A1,A2,I,P) > CP(4) or
Wt(A1,A2,I,P) <= DP(3) or
Wt(A1,A2,I,P) > DP(4)
The task then loops for the new source and/or a new buffer load as
appropriate until the data are exhausted.