|
| | FitToHalfStatistics (FitToHalfStatisticsData::CENTER center=FitToHalfStatisticsData::CMEAN, FitToHalfStatisticsData::USE_DATA useData=FitToHalfStatisticsData::LE_CENTER, AccumType value=0) |
| | value is only used if center=CVALUE
|
| | FitToHalfStatistics (const FitToHalfStatistics< CASA_STATP > &other) |
| | copy semantics
|
| virtual | ~FitToHalfStatistics () |
| FitToHalfStatistics< CASA_STATP > & | operator= (const FitToHalfStatistics< CASA_STATP > &other) |
| | copy semantics
|
| virtual StatisticsAlgorithm< CASA_STATP > * | clone () const |
| | Clone this instance.
|
| virtual StatisticsData::ALGORITHM | algorithm () const |
| | get the algorithm that this object uses for computing stats
|
| AccumType | getMedian (std::shared_ptr< uInt64 > knownNpts=nullptr, std::shared_ptr< AccumType > knownMin=nullptr, std::shared_ptr< AccumType > knownMax=nullptr, uInt binningThreshholdSizeBytes=4096 *4096, Bool persistSortedArray=False, uInt nBins=10000) |
| | The median is just the center value, so none of the parameters to this method are used.
|
| AccumType | getMedianAndQuantiles (std::map< Double, AccumType > &quantiles, const std::set< Double > &fractions, std::shared_ptr< uInt64 > knownNpts=nullptr, std::shared_ptr< AccumType > knownMin=nullptr, std::shared_ptr< AccumType > knownMax=nullptr, uInt binningThreshholdSizeBytes=4096 *4096, Bool persistSortedArray=False, uInt nBins=10000) |
| | In the following group of methods, if the size of the composite dataset is smaller than binningThreshholdSizeBytes, the composite dataset will be (perhaps partially) sorted and persisted in memory during the call.
|
| AccumType | getMedianAbsDevMed (std::shared_ptr< uInt64 > knownNpts=nullptr, std::shared_ptr< AccumType > knownMin=nullptr, std::shared_ptr< AccumType > knownMax=nullptr, uInt binningThreshholdSizeBytes=4096 *4096, Bool persistSortedArray=False, uInt nBins=10000) |
| | get the median of the absolute deviation about the median of the data.
|
| std::map< Double, AccumType > | getQuantiles (const std::set< Double > &fractions, std::shared_ptr< uInt64 > knownNpts=nullptr, std::shared_ptr< AccumType > knownMin=nullptr, std::shared_ptr< AccumType > knownMax=nullptr, uInt binningThreshholdSizeBytes=4096 *4096, Bool persistSortedArray=False, uInt nBins=10000) |
| | Get the specified quantiles.
|
| virtual void | getMinMax (AccumType &mymin, AccumType &mymax) |
| | scan the dataset(s) that have been added, and find the min and max.
|
| uInt64 | getNPts () |
| | scan the dataset(s) that have been added, and find the number of good points.
|
| virtual void | reset () |
| | reset object to initial state.
|
| void | setCalculateAsAdded (Bool c) |
| | This class does not allow statistics to be calculated as datasets are added, so an exception will be thrown if c is True.
|
| virtual void | setStatsToCalculate (std::set< StatisticsData::STATS > &stats) |
| | Override base class method by requiring mean to be computed in addition to what is added in stats if the requested center value is CMEAN.
|
| | ConstrainedRangeStatistics ()=delete |
| virtual | ~ConstrainedRangeStatistics () |
| virtual CASA_STATP | getMedian (std::shared_ptr< uInt64 > knownNpts=nullptr, std::shared_ptr< CASA_STATP > knownMin=nullptr, std::shared_ptr< CASA_STATP > knownMax=nullptr, uInt binningThreshholdSizeBytes=4096 *4096, Bool persistSortedArray=False, uInt nBins=10000) |
| | In the following group of methods, if the size of the composite dataset is smaller than binningThreshholdSizeBytes, the composite dataset will be (perhaps partially) sorted and persisted in memory during the call.
|
| virtual CASA_STATP | getMedianAbsDevMed (std::shared_ptr< uInt64 > knownNpts=nullptr, std::shared_ptr< CASA_STATP > knownMin=nullptr, std::shared_ptr< CASA_STATP > knownMax=nullptr, uInt binningThreshholdSizeBytes=4096 *4096, Bool persistSortedArray=False, uInt nBins=10000) |
| | get the median of the absolute deviation about the median of the data.
|
| virtual CASA_STATP | getMedianAndQuantiles (std::map< Double, CASA_STATP > &quantileToValue, const std::set< Double > &quantiles, std::shared_ptr< uInt64 > knownNpts=nullptr, std::shared_ptr< CASA_STATP > knownMin=nullptr, std::shared_ptr< CASA_STATP > knownMax=nullptr, uInt binningThreshholdSizeBytes=4096 *4096, Bool persistSortedArray=False, uInt nBins=10000) |
| | If one needs to compute both the median and quantile values, it is better to call getMedianAndQuantiles() rather than getMedian() and getQuantiles() separately, as the first will scan large data sets fewer times than calling the seperate methods.
|
| virtual std::map< Double, CASA_STATP > | getQuantiles (const std::set< Double > &quantiles, std::shared_ptr< uInt64 > knownNpts=nullptr, std::shared_ptr< CASA_STATP > knownMin=nullptr, std::shared_ptr< CASA_STATP > knownMax=NULL, uInt binningThreshholdSizeBytes=4096 *4096, Bool persistSortedArray=False, uInt nBins=10000) |
| | Get the specified quantiles.
|
| virtual void | getMinMax (CASA_STATP &mymin, CASA_STATP &mymax) |
| | get the min and max of the data set
|
| virtual LocationType | getStatisticIndex (StatisticsData::STATS stat) |
| | see base class description
|
| | ClassicalStatistics () |
| virtual | ~ClassicalStatistics () |
| ClassicalStatistics & | operator= (const ClassicalStatistics &other) |
| | copy semantics
|
| virtual void | getMinMaxNpts (uInt64 &npts, CASA_STATP &mymin, CASA_STATP &mymax) |
| virtual void | setDataProvider (StatsDataProvider< CASA_STATP > *dataProvider) |
| | An exception will be thrown if setCalculateAsAdded(True) has been called.
|
| void | setQuantileComputer (std::shared_ptr< ClassicalQuantileComputer< CASA_STATP > > qc) |
| | Allow derived objects to set the quantile computer object.
|
| virtual | ~StatisticsAlgorithm () |
| void | addData (const DataIterator &first, uInt nr, uInt dataStride=1, Bool nrAccountsForStride=False) |
| | Add a dataset to an existing set of datasets on which statistics are to be calculated.
|
| CASA_STATP | getQuantile (Double quantile, std::shared_ptr< uInt64 > knownNpts=nullptr, std::shared_ptr< CASA_STATP > knownMin=nullptr, std::shared_ptr< CASA_STATP > knownMax=nullptr, uInt binningThreshholdSizeBytes=4096 *4096, Bool persistSortedArray=False, uInt nBins=10000) |
| | Purposefully not virtual.
|
| CASA_STATP | getStatistic (StatisticsData::STATS stat) |
| | get the value of the specified statistic.
|
| StatsData< CASA_STATP > | getStatistics () |
| | Return statistics.
|
| void | setData (const DataIterator &first, uInt nr, uInt dataStride=1, Bool nrAccountsForStride=False) |
| | setdata() clears any current datasets or data provider and then adds the specified data set as the first dataset in the (possibly new) set of data sets for which statistics are to be calculated.
|
|
| virtual StatsData< AccumType > | _getInitialStats () const |
| virtual StatsData< AccumType > | _getStatistics () |
| StatsData< AccumType > & | _getStatsData () |
| | Retrieve stats structure.
|
| const StatsData< AccumType > & | _getStatsData () const |
| void | _unweightedStats (StatsData< AccumType > &stats, uInt64 &ngood, LocationType &location, const DataIterator &dataBegin, uInt64 nr, uInt dataStride) |
| | no weights, no mask, no ranges
|
| void | _unweightedStats (StatsData< AccumType > &stats, uInt64 &ngood, LocationType &location, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude) |
| | no weights, no mask
|
| void | _unweightedStats (StatsData< AccumType > &stats, uInt64 &ngood, LocationType &location, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride) |
| void | _unweightedStats (StatsData< AccumType > &stats, uInt64 &ngood, LocationType &location, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude) |
| void | _updateDataProviderMaxMin (const StatsData< AccumType > &threadStats) |
| void | _weightedStats (StatsData< AccumType > &stats, LocationType &location, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride) |
| | has weights, but no mask, no ranges
|
| void | _weightedStats (StatsData< AccumType > &stats, LocationType &location, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude) |
| void | _weightedStats (StatsData< AccumType > &stats, LocationType &location, const DataIterator &dataBegin, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride) |
| void | _weightedStats (StatsData< AccumType > &stats, LocationType &location, const DataIterator &dataBegin, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude) |
| ConstrainedRangeStatistics< CASA_STATP > & | operator= (const ConstrainedRangeStatistics< CASA_STATP > &other) |
| | copy semantics
|
| virtual void | _accumNpts (uInt64 &npts, const DataIterator &dataStart, uInt64 nr, uInt dataStride) const |
| | scan through the data set to determine the number of good (unmasked, weight > 0, within range) points.
|
| virtual CASA_STATP | _getStatistic (StatisticsData::STATS stat) |
| virtual void | _minMax (std::shared_ptr< CASA_STATP > &mymin, std::shared_ptr< CASA_STATP > &mymax, const DataIterator &dataBegin, uInt64 nr, uInt dataStride) const |
| virtual void | _minMaxNpts (uInt64 &npts, std::shared_ptr< CASA_STATP > &mymin, std::shared_ptr< CASA_STATP > &mymax, const DataIterator &dataBegin, uInt64 nr, uInt dataStride) const |
| | Sometimes we want the min, max, and npts all in one scan.
|
| void | _setRange (std::shared_ptr< std::pair< CASA_STATP, CASA_STATP > > r) |
| | This method is purposefully non-virtual.
|
| virtual void | _unweightedStats (StatsData< CASA_STATP > &stats, uInt64 &ngood, LocationType &location, const DataIterator &dataBegin, uInt64 nr, uInt dataStride) |
| | no weights, no mask, no ranges
|
| virtual void | _weightedStats (StatsData< CASA_STATP > &stats, LocationType &location, const DataIterator &dataBegin, const DataIterator &weightsBegin, uInt64 nr, uInt dataStride) |
| | has weights, but no mask, no ranges
|
| void | _accumulate (StatsData< CASA_STATP > &stats, const CASA_STATP &datum, const LocationType &location) |
| void | _addData () |
| | Allows derived classes to do things after data is set or added.
|
| void | _clearStats () |
| Bool | _getDoMaxMin () const |
| std::shared_ptr< StatisticsAlgorithmQuantileComputer< CASA_STATP > > | _getQuantileComputer () |
| virtual void | _updateDataProviderMaxMin (const StatsData< CASA_STATP > &threadStats) |
| | StatisticsAlgorithm () |
| StatisticsAlgorithm & | operator= (const StatisticsAlgorithm &other) |
| | use copy semantics, except for the data provider which uses reference semantics
|
| const StatisticsDataset< CASA_STATP > & | _getDataset () const |
| | These methods are purposefully not virtual.
|
| const std::set< StatisticsData::STATS > | _getStatsToCalculate () const |
| virtual const std::set< StatisticsData::STATS > & | _getUnsupportedStatistics () const |
| void | _setUnsupportedStatistics (const std::set< StatisticsData::STATS > &stats) |
| | Derived classes should normally call this in their constructors, if applicable.
|
template<class AccumType, class DataIterator, class MaskIterator = const Bool *, class WeightsIterator = DataIterator>
class casacore::FitToHalfStatistics< AccumType, DataIterator, MaskIterator, WeightsIterator >
Class to calculate statistics using the so-called fit to half algorithm.
In this algorithm, a center value is specified, and only points greater or equal or less or equal this value are included. Furthermore, each of the included points is reflected about the center value, and these virtual points are added to the included points and the union of sets of included real points and virtual points are used for computing statistics. The specified center point is therefore the mean and median of the resulting distribution, and the total number of points is exactly twice the number of real data points that are included.
This class uses a ConstrainedRangeQuantileComputer object for computing quantile-like statistics. See class documentation for StatisticsAlgorithm for details regarding QuantileComputer classes.
Definition at line 54 of file FitToHalfStatistics.h.
template<class AccumType, class DataIterator, class MaskIterator = const Bool *, class WeightsIterator = DataIterator>
| AccumType casacore::FitToHalfStatistics< AccumType, DataIterator, MaskIterator, WeightsIterator >::getMedianAndQuantiles |
( |
std::map< Double, AccumType > & | quantiles, |
|
|
const std::set< Double > & | fractions, |
|
|
std::shared_ptr< uInt64 > | knownNpts = nullptr, |
|
|
std::shared_ptr< AccumType > | knownMin = nullptr, |
|
|
std::shared_ptr< AccumType > | knownMax = nullptr, |
|
|
uInt | binningThreshholdSizeBytes = 4096 *4096, |
|
|
Bool | persistSortedArray = False, |
|
|
uInt | nBins = 10000 ) |
In the following group of methods, if the size of the composite dataset is smaller than binningThreshholdSizeBytes, the composite dataset will be (perhaps partially) sorted and persisted in memory during the call.
In that case, and if persistSortedArray is True, this sorted array will remain in memory after the call and will be used on subsequent calls of this method when binningThreshholdSizeBytes is greater than the size of the composite dataset. If persistSortedArray is False, the sorted array will not be stored after this call completes and so any subsequent calls for which the dataset size is less than binningThreshholdSizeBytes, the dataset will be sorted from scratch. Values which are not included due to non-unity strides, are not included in any specified ranges, are masked, or have associated weights of zero are not considered as dataset members for quantile computations. If one has a priori information regarding the number of points (npts) and/or the minimum and maximum values of the data set, these can be supplied to improve performance. Note however, that if these values are not correct, the resulting median and/or quantile values will also not be correct (although see the following notes regarding max/min). Note that if this object has already had getStatistics() called, and the min and max were calculated, there is no need to pass these values in as they have been stored internally and will be used (although passing them explicitly shouldn't hurt anything). If provided, npts, the number of points falling in the specified ranges which are not masked and have weights > 0, should be correct. min can be less than the true minimum, and max can be greater than the True maximum, but for best performance, these should be as close to the actual min and max as possible (and ideally the actual min/max values of the data set).
References casacore::False.