Data provider template class backed by VisibilityIterator2 instances. More...
#include <Vi2ChunkDataProvider.h>
Public Types | |
typedef DataIterator::AccumType | AccumType |
Define typedefs for some template parameters. | |
typedef DataIterator | DataIteratorType |
typedef MaskIterator | MaskIteratorType |
typedef WeightsIterator | WeightsIteratorType |
Public Member Functions | |
Vi2ChunkDataProvider (vi::VisibilityIterator2 *vi2, vi::VisBufferComponent2 component, Bool omit_flagged_data, Bool use_data_weights) | |
Vi2ChunkDataProvider (Vi2ChunkDataProvider &&other) | |
Vi2ChunkDataProvider & | operator= (Vi2ChunkDataProvider &&other) |
void | operator++ () |
Increment the data provider to the next sub-chunk. | |
Bool | atEnd () const |
Are there any sub-chunks left to provide? | |
void | finalize () |
Take any actions necessary to finalize the provider. | |
uInt64 | getCount () |
DataIterator | getData () |
Get the current sub-chunk. | |
uInt | getStride () |
Bool | hasMask () const |
MaskIterator | getMask () |
Get the associated mask of the current sub-chunk. | |
uInt | getMaskStride () |
Get the stride for the current mask (only called if hasMask() returns True). | |
Bool | hasWeights () const |
WeightsIterator | getWeights () |
Get the associated weights of the current sub-chunk. | |
Bool | hasRanges () const |
DataRanges | getRanges () |
Get the associated range(s) of the current sub-chunk. | |
Bool | isInclude () const |
If the associated data set has ranges, are these include (return True) or exclude (return False) ranges? | |
void | reset () |
Reset the provider to point to the first sub-chunk. | |
void | foreachChunk (StatisticsAlgorithm< AccumType, DataIteratorType, MaskIteratorType, WeightsIteratorType > &statistics, Vi2ChunkStatisticsIteratee< DataIterator, WeightsIterator, MaskIterator > &iteratee) |
Public Attributes | |
std::unique_ptr < vi::VisibilityIterator2 > | vi2 |
Protected Attributes | |
vi::VisBufferComponent2 | component |
std::unique_ptr< const DataIterator > | data_iterator |
const Bool | use_data_weights |
std::unique_ptr< const WeightsIterator > | weights_iterator |
const Bool | omit_flagged_data |
std::unique_ptr< const MaskIterator > | mask_iterator |
Private Member Functions | |
void | reset_iterators () |
virtual const Array< typename DataIterator::DataType > & | dataArray ()=0 |
Data provider template class backed by VisibilityIterator2 instances.
These data providers operate on a single MS column over all vi2 sub-chunks in the chunk selected when the data provider is instantiated. In other words, the data sample for statistics generated with a Vi2ChunkDataProvider instance is the data from a single column in a single vi2 chunk. It is intended that the user set up the VisibilityIterator2 appropriately to select the desired data sample for computing statistics. The user may then iterate through the VisibilityIterator2 chunks, calling reset() on the Vi2ChunkDataProvider instance before supplying the instance to the Statistics::setDataProvider() call to compute statistics for that chunk's data. In outline:
Vi2ChunkDataProvider *dp; // given StatisticsAlgorithm statistics; // given for (dp->vi2->originChunks(); dp->vi2->moreChunks(); dp->vi2->nextChunk()) { Prepare the data provider dp->vi2->origin(); dp->reset(); Compute statistics for this chunk statistics.setDataProvider(dp); doStuff(statistics); // do something with the statistics; maybe call statistics.getStatistics() }
The above pattern is encapsulated by the Vi2ChunkDataProvider::foreachChunk() method and Vi2ChunkStatisticsIteratee. The above can be implemented as follows (but with template parameters where needed):
Vi2ChunkDataProvider *dp; // given StatisticsAlgorithm statistics; // given class DoStuff : public Vi2ChunkStatisticsIteratee { ... // constructor, probably needs some sort of accumulator void nextChunk(StatisticsAlgorithm stats, const * VisBuffer2 vb) { stats.getStatistics()...; } } DoStuff doStuff; dp->foreachChunk(statistics, doStuff);
Note that the AccumType template parameter value of StatsDataProvider is derived from the DataIterator parameter value of this template, imposing a constraint on the classes that can be used for DataIterator.
Definition at line 92 of file Vi2ChunkDataProvider.h.
typedef DataIterator::AccumType casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::AccumType |
Define typedefs for some template parameters.
This is primarily to support instantiating "...Statistics" instances of the proper type given only an instance of this type. [AccumType is an exception, in that it's also needed by the (macro) definition of DataRanges.]
Definition at line 103 of file Vi2ChunkDataProvider.h.
typedef DataIterator casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::DataIteratorType |
Definition at line 104 of file Vi2ChunkDataProvider.h.
typedef MaskIterator casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::MaskIteratorType |
Definition at line 105 of file Vi2ChunkDataProvider.h.
typedef WeightsIterator casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::WeightsIteratorType |
Definition at line 106 of file Vi2ChunkDataProvider.h.
casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::Vi2ChunkDataProvider | ( | vi::VisibilityIterator2 * | vi2, | |
vi::VisBufferComponent2 | component, | |||
Bool | omit_flagged_data, | |||
Bool | use_data_weights | |||
) | [inline] |
Attach the MS columns to vi2 by calling originChunks(). Not the most direct method, but attaching the columns is required in many cases to pass existsColumn() test.
Definition at line 108 of file Vi2ChunkDataProvider.h.
References casa::vi::VisibilityIterator2::existsColumn(), and casa::vi::VisibilityIterator2::originChunks().
casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::Vi2ChunkDataProvider | ( | Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator > && | other | ) | [inline] |
Definition at line 126 of file Vi2ChunkDataProvider.h.
Bool casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::atEnd | ( | ) | const [inline] |
Are there any sub-chunks left to provide?
Definition at line 156 of file Vi2ChunkDataProvider.h.
References casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::vi2.
virtual const Array<typename DataIterator::DataType>& casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::dataArray | ( | ) | [private, pure virtual] |
void casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::finalize | ( | ) | [inline] |
Take any actions necessary to finalize the provider.
This will be called when atEnd() returns True.
Definition at line 162 of file Vi2ChunkDataProvider.h.
void casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::foreachChunk | ( | StatisticsAlgorithm< AccumType, DataIteratorType, MaskIteratorType, WeightsIteratorType > & | statistics, | |
Vi2ChunkStatisticsIteratee< DataIterator, WeightsIterator, MaskIterator > & | iteratee | |||
) | [inline] |
Definition at line 239 of file Vi2ChunkDataProvider.h.
References casa::Vi2ChunkStatisticsIteratee< DataIterator, WeightsIterator, MaskIterator >::nextChunk(), casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::reset(), and casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::vi2.
uInt64 casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getCount | ( | ) | [inline] |
Definition at line 164 of file Vi2ChunkDataProvider.h.
References casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getData().
DataIterator casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getData | ( | ) | [inline] |
Get the current sub-chunk.
Definition at line 169 of file Vi2ChunkDataProvider.h.
References casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::data_iterator, and casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::dataArray().
Referenced by casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getCount().
MaskIterator casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getMask | ( | ) | [inline] |
Get the associated mask of the current sub-chunk.
Only called if hasMask() returns True.
Definition at line 186 of file Vi2ChunkDataProvider.h.
References casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::mask_iterator, and casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::vi2.
uInt casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getMaskStride | ( | ) | [inline] |
Get the stride for the current mask (only called if hasMask() returns True).
Will always return 1 in this implementation.
Definition at line 195 of file Vi2ChunkDataProvider.h.
DataRanges casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getRanges | ( | ) | [inline] |
Get the associated range(s) of the current sub-chunk.
Only called if hasRanges() returns True, which will never be the case in this implementation.
Definition at line 220 of file Vi2ChunkDataProvider.h.
References DataRanges.
uInt casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getStride | ( | ) | [inline] |
Definition at line 176 of file Vi2ChunkDataProvider.h.
WeightsIterator casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getWeights | ( | ) | [inline] |
Get the associated weights of the current sub-chunk.
Only called if hasWeights() returns True;
Definition at line 205 of file Vi2ChunkDataProvider.h.
References casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::vi2, and casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::weights_iterator.
Bool casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::hasMask | ( | ) | const [inline] |
Definition at line 180 of file Vi2ChunkDataProvider.h.
References casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::omit_flagged_data.
Bool casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::hasRanges | ( | ) | const [inline] |
Definition at line 212 of file Vi2ChunkDataProvider.h.
Bool casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::hasWeights | ( | ) | const [inline] |
Definition at line 199 of file Vi2ChunkDataProvider.h.
References casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::use_data_weights.
Bool casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::isInclude | ( | ) | const [inline] |
If the associated data set has ranges, are these include (return True) or exclude (return False) ranges?
Definition at line 227 of file Vi2ChunkDataProvider.h.
void casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::operator++ | ( | ) | [inline] |
Increment the data provider to the next sub-chunk.
Definition at line 150 of file Vi2ChunkDataProvider.h.
References casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::reset_iterators(), and casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::vi2.
Vi2ChunkDataProvider& casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::operator= | ( | Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator > && | other | ) | [inline] |
Definition at line 137 of file Vi2ChunkDataProvider.h.
References casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::component, casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::data_iterator, casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::mask_iterator, casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::omit_flagged_data, casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::use_data_weights, casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::vi2, and casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::weights_iterator.
void casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::reset | ( | void | ) | [inline] |
Reset the provider to point to the first sub-chunk.
Definition at line 232 of file Vi2ChunkDataProvider.h.
References casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::reset_iterators(), and casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::vi2.
Referenced by casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::foreachChunk().
void casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::reset_iterators | ( | ) | [inline, private] |
Definition at line 266 of file Vi2ChunkDataProvider.h.
References casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::data_iterator, casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::mask_iterator, and casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::weights_iterator.
Referenced by casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::operator++(), and casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::reset().
vi::VisBufferComponent2 casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::component [protected] |
Definition at line 252 of file Vi2ChunkDataProvider.h.
Referenced by casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::operator=().
std::unique_ptr<const DataIterator> casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::data_iterator [protected] |
Definition at line 254 of file Vi2ChunkDataProvider.h.
Referenced by casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getData(), casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::operator=(), and casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::reset_iterators().
std::unique_ptr<const MaskIterator> casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::mask_iterator [protected] |
Definition at line 262 of file Vi2ChunkDataProvider.h.
Referenced by casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getMask(), casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::operator=(), and casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::reset_iterators().
const Bool casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::omit_flagged_data [protected] |
Definition at line 260 of file Vi2ChunkDataProvider.h.
Referenced by casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::hasMask(), and casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::operator=().
const Bool casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::use_data_weights [protected] |
Definition at line 256 of file Vi2ChunkDataProvider.h.
Referenced by casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::hasWeights(), and casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::operator=().
std::unique_ptr<vi::VisibilityIterator2> casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::vi2 |
Definition at line 237 of file Vi2ChunkDataProvider.h.
Referenced by casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::atEnd(), casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::foreachChunk(), casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getMask(), casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getWeights(), casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::operator++(), casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::operator=(), and casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::reset().
std::unique_ptr<const WeightsIterator> casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::weights_iterator [protected] |
Definition at line 258 of file Vi2ChunkDataProvider.h.
Referenced by casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::getWeights(), casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::operator=(), and casa::Vi2ChunkDataProvider< DataIterator, MaskIterator, WeightsIterator >::reset_iterators().