construct from an MSSelector object
Copy constructor
Assignment
Change or Set the MS this MSFlagger refers to.
Fill an internal buffer with the data item requested, similar to getData
except that the data is not returned, but kept around for further
processing. Only a single DATA related quantity can be requested, the
corresponding FLAG and FLAG_ROW columns are read automatically.
Reorder the data to 4d with ifr and time axis if ifrAxis is True.
Difference the data, subtracting the average over a window of
specified width and taking the absolute value. Complex quantities are
turned into the corresponding amplitude after differencing.
If doMedian==True the median difference is returned for window>2.
For a window width of one, the previous sample is
subtracted, giving a derivative like quantity.
Note that the subtraction is done on row-by-row basis for TIME
differencing, it is up to you to select a single baseline (if
you didn't use ifrAxis=True in fillDataBuffer).
Available directions are: TIME, CHANNEL
Returns statistics over the buffer: median for times and channels,
average absolute deviation over times, channels and all pixels.
Return the contents of the internal data buffer, including the flags
as a Record
Clip the data buffer at a specified level by setting the corresponding
flags in the buffer. The cliplevel is specified as a multiple of
the average absolute deviations returned by diffDataBuffer.
A value of zero or less will skip the corresponding clip operation.
Clipping will be done repeatedly, recalculating the deviations, until
no more points are clipped.
Replace the flags in the buffer with those in the supplied record.
This allows interactive flagging from glish to be written back to the
buffer for subsequent operations. The record should contain a
flag and flag_row field.
Write the flags in the buffer back to the table
Clear the internal data buffer, reclaiming memory
Create the FLAG_HISTORY column and initialize it from the
FLAG_ROW and FLAG columns. Returns False if FLAG_HISTORY already exists.
The first flagging bit is filled with the flags as found in the MS,
subsequent bits can be used for user generated flags.
Apply the flags in the FLAG_HISTORY column to the FLAG and FLAG_ROW
columns. Returns False if FLAG_HISTORY doesn't exist.
The default argument will apply the currently active flag level
(as specified by the FLAG_LEVEL column keyword).
Sets the current level to the flag level restored.
Save the current flags to the FLAG_HISTORY. Save to the currently
active level or (newLevel=True) the next highest level (if available).
Will reset the current level to the level saved to.
Return the current flaglevel (value of FLAG_LEVEL keyword)
find the HypercubeId column for a tiled column (if any)
copy the flags to the flag history
copy the flag history back to the flags
get buffer statistics - med=median, ad=average absolute deviation,
T=Time, F=Frequency.
add the statistics to a buffer
reorder from 2d to 1d (removing ifr axis)
collapse array "in" (with absolute differences)
along specified axis by taking medians by profile taking into account
the flags.
apply the row flags to the data flags and v.v.
check if we are attached to an MSSelector
Review Status
Prerequisite
Etymology
MSFlagger is a class that sets flags in an MS
Synopsis
This class is used to change the flag and flag_history columns in
a MeasurementSet. It provides functions for automated flagging based on
clipping the data that is too far from the median value.
The ms DO uses this class to allow flagging from glish or a GUI.
MSFlagger msFlagger(myMS);
Motivation
Flagging/editing of data is a central requirement in data processing, this
class provides some simple flagging algorithms and the code
that modifies & creates flag columns in the MS.
Thrown Exceptions
To Do
Member Description
MSFlagger()
MSFlagger(MSSelector& msSel)
MSFlagger(const MSFlagger& other)
MSFlagger& operator=(const MSFlagger& other)
~MSFlagger()
void setMSSelector(MSSelector& msSel)
Bool fillDataBuffer(const String& item, Bool ifrAxis)
Record diffDataBuffer(const String& direction, Int window=1, Bool doMedian = False)
Record getDataBuffer()
Bool clipDataBuffer(Float pixelLevel, Float timeLevel, Float channelLevel)
Bool setDataBufferFlags(const Record& flags)
Bool writeDataBufferFlags()
Bool clearDataBuffer()
Bool createFlagHistory(Int nHis = 2)
Bool restoreFlags(Int level=-1)
Bool saveFlags(Bool newLevel)
Int flagLevel()
void fillFlagHist(Int nHis, Int numCorr, Int numChan, Table& tab)
fill the FLAG_HISTORY column from the FLAG and FLAG_ROW column
Bool findHypercubeId(String& hyperCubeId, const String& column, const Table& tab)
void saveToFlagHist(Int level, Table& tab)
void applyFlagHist(Int level, Table& tab)
void getStats(Array<Float>& medTF, Array<Float>& adTF, Array<Float>& medT, Array<Float>& medFmedT, Array<Float>& adT, Array<Float>& medF, Array<Float>& medTmedF, Array<Float>& adF, const Array<Float>& diff, const Array<Bool>& flag, const Array<Bool>& flagRow)
void addStats(Record& buf, const Array<Bool>& flag, const Array<Bool> flagRow, const Array<Float>& data)
void reorderFlagRow(Array<Bool>& flagRow)
void diffMedian(Array<Float>& out, const Array<Float>& in, Int axis, const Array<Bool>& flag)
void applyRowFlags(Array<Bool>& flag, Array<Bool>& flagRow)
Bool check()