MSRange.h
Classes
- MSRange -- MSRange determines ranges of values in a MeasurementSet (full description)
Types
- UNCHECKED = -3,
-
spectral window selection and shapes have not been checked
- UNSELECTED = -2,
-
multiple spectral windows with varying shapes
multiple spectral windows with varying shapes
- ALL = -1
-
multiple spectral windows with same shape
multiple spectral windows with same shape
- Amp
-
- Phase
-
- Real
-
- Imag
-
- Data
-
- nFuncType
-
- Observed
-
- Corrected
-
- Model
-
- Ratio
-
- Residual
-
- ObsResidual
-
- ObsFloat
-
- nDataType
-
Interface
- Public Members
- MSRange()
- explicit MSRange(const MeasurementSet& ms)
- explicit MSRange(const MSSelector& msSel)
- MSRange(const MSRange& other)
- MSRange& operator=(const MSRange& other)
- Record range(const Vector<String>& items, Bool useFlags=True, Bool OneBased=False)
- Record range(const Vector<Int>& items, Bool useFlags=True, Bool OneBased=False)
- Record range(MSS::Field item, Bool useFlags=True)
- void setBlockSize(Int blockSize=10)
- Protected Members
- Bool checkShapes()
- void scalarRange(Record& out, const String& item, const ROScalarColumn<Int>& id, Bool oneBased)
- Vector<Int> scalarRange(const ROScalarColumn<Int>& id)
- void minMax(Matrix<Float>& minmax, const Vector<Bool>& funcSel, const ROArrayColumn<Complex>& data1, const ROArrayColumn<Complex>& data2, const ROArrayColumn<Bool>& flag, Int dataType, Bool useFlags)
- void minMax(Float& mini, Float& maxi, const ROArrayColumn<Float>& data, const ROArrayColumn<Bool>& flag, Bool useFlags)
- Vector<Int> ifrNumbers(const ROScalarColumn<Int>& ant1, const ROScalarColumn<Int>& ant2)
Review Status
- Date Reviewed:
- yyyy/mm/dd
Prerequisite
Etymology
MSRange is a class that determines ranges of values in an MS
Synopsis
This class is used to determine the range of values present for
the various columns in a MeasurementSet.
This class is initialized from a MeasurementSet. If the MS contains more
than one DATA_DESC_ID, it can be preselected on this to allow
a consistent set of frequencies to be returned.
The ms DO provides access to this class from glish and GUIs.
MSRange myRange(myMS);
Vector<String> items(3);
// fill in some fields
items(0)="field_id";
items(1)="time";
items(2)="data_desc_id";
// get the range of values for the items specified
cout << myRange.range(items)<<endl;
// sample output: range=[field_id=[0,1,2],time=[4.5e9, 4.51e9],
// data_desc_id=[0,1,2]];
// Now preselect on data_desc_id
MSSelector mss(myMS);
Vector<Int> dd(2); dd(0)=1; dd(1)=2;
mss.selectinit(0,dd); // select data desc ids 1 and 2
MSRange r2(mss);
items(2)="amplitude";
cout<< r2.range(items)<<endl;
// sample output: [field_id=[0,1,2],time=[4.5e9, 4.51e9],
// amplitude=[0.00132,1.543]]
Motivation
Finding out the range of values in a column is often needed before a
sensible selection of data can be made. This class, formerly part of
MSSelector, separates out this functionality.
Thrown Exceptions
To Do
- maybe add channel selection and polarization conversion
Member Description
Default constructor, only useful to assign to.
explicit MSRange(const MeasurementSet& ms)
Construct from an MS.
explicit MSRange(const MSSelector& msSel)
construct from an MSSelector, if this constructor is used, the data
will be channel selected and polarization converted as specified in
the MSSelector object, and the current selection is used in the range.
MSRange(const MSRange& other)
Copy constructor
MSRange& operator=(const MSRange& other)
Assignment
Record range(const Vector<String>& items, Bool useFlags=True, Bool OneBased=False)
Return the range of values for each of the items specified in
the record. For index-like items a list of values is returned,
for non-index items the minimum and maximum are returned.
Items with varying array shape will not be returned by this function (i.e.
you may need to preselect the MS passed to MSRange).
See the enum description in MSSelector for the list of supported items.
Use the data flags if useFlags is True.
Correct for one-based indexing if oneBased is True.
Record range(const Vector<Int>& items, Bool useFlags=True, Bool OneBased=False)
Same as previous function, with Vector of MSS::Field keys instead
of Strings
Record range(MSS::Field item, Bool useFlags=True)
Similar to above, with a single enum, for convenience
Set the block size (in Mbytes) to use when reading the data column.
The default is 10 MB. Actual memory used is higher due to
temporaries and caching.
check the data description selection (one or more with same shape, or
varying shape)
get the range of a ScalarColumn, correct for 1-based
indexing if oneBased is True, and add to out record.
get the range of a ScalarColumn
void minMax(Matrix<Float>& minmax, const Vector<Bool>& funcSel, const ROArrayColumn<Complex>& data1, const ROArrayColumn<Complex>& data2, const ROArrayColumn<Bool>& flag, Int dataType, Bool useFlags)
get the minimum and maximum of a Complex data column, after
application of some function to convert to Float (e.g., real,
amplitude,...). This function reads the data in blocks of
size blockSize, as set by the setBlockSize function.
void minMax(Float& mini, Float& maxi, const ROArrayColumn<Float>& data, const ROArrayColumn<Bool>& flag, Bool useFlags)
get the minimum and maximum of a Float data column
This function reads the data in blocks of
size blockSize, as set by the setBlockSize function.
Get the range of interferometer numbers given the antenna1 and antenna2
columns.
The function types
The data types