26#ifndef SCIMATH_CONSTRAINEDRANGEQUANTILECOMPUTER_H
27#define SCIMATH_CONSTRAINEDRANGEQUANTILECOMPUTER_H
29#include <casacore/scimath/StatsFramework/ClassicalQuantileComputer.h>
31#include <casacore/casa/aips.h>
41template <
class AccumType,
class DataIterator,
class MaskIterator =
const Bool*,
42 class WeightsIterator = DataIterator>
63 uInt binningThreshholdSizeBytes,
Bool persistSortedArray,
uInt nBins);
67 uInt binningThreshholdSizeBytes,
Bool persistSortedArray,
74 virtual void _findBins(std::vector<BinCountArray>& binCounts,
75 std::vector<std::shared_ptr<AccumType>>& sameVal,
76 std::vector<Bool>& allSame,
const DataIterator& dataBegin,
uInt64 nr,
78 const std::vector<AccumType>& maxLimit)
const;
80 virtual void _findBins(std::vector<BinCountArray>& binCounts,
81 std::vector<std::shared_ptr<AccumType>>& sameVal,
82 std::vector<Bool>& allSame,
const DataIterator& dataBegin,
uInt64 nr,
85 const std::vector<AccumType>& maxLimit)
const;
87 virtual void _findBins(std::vector<BinCountArray>& binCounts,
88 std::vector<std::shared_ptr<AccumType>>& sameVal,
89 std::vector<Bool>& allSame,
const DataIterator& dataBegin,
uInt64 nr,
90 uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
92 const std::vector<AccumType>& maxLimit)
const;
94 virtual void _findBins(std::vector<BinCountArray>& binCounts,
95 std::vector<std::shared_ptr<AccumType>>& sameVal,
96 std::vector<Bool>& allSame,
const DataIterator& dataBegin,
uInt64 nr,
97 uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
100 const std::vector<AccumType>& maxLimit)
const;
102 virtual void _findBins(std::vector<BinCountArray>& binCounts,
103 std::vector<std::shared_ptr<AccumType>>& sameVal,
104 std::vector<Bool>& allSame,
const DataIterator& dataBegin,
105 const WeightsIterator& weightsBegin,
uInt64 nr,
uInt dataStride,
107 const std::vector<AccumType>& maxLimit)
const;
109 virtual void _findBins(std::vector<BinCountArray>& binCounts,
110 std::vector<std::shared_ptr<AccumType>>& sameVal,
111 std::vector<Bool>& allSame,
const DataIterator& dataBegin,
112 const WeightsIterator& weightsBegin,
uInt64 nr,
uInt dataStride,
115 const std::vector<AccumType>& maxLimit)
const;
117 virtual void _findBins(std::vector<BinCountArray>& binCounts,
118 std::vector<std::shared_ptr<AccumType>>& sameVal,
119 std::vector<Bool>& allSame,
const DataIterator& dataBegin,
120 const WeightsIterator& weightsBegin,
uInt64 nr,
uInt dataStride,
121 const MaskIterator& maskBegin,
uInt maskStride,
const DataRanges& ranges,
123 const std::vector<AccumType>& maxLimit)
const;
125 virtual void _findBins(std::vector<BinCountArray>& binCounts,
126 std::vector<std::shared_ptr<AccumType>>& sameVal,
127 std::vector<Bool>& allSame,
const DataIterator& dataBegin,
128 const WeightsIterator& weightBegin,
uInt64 nr,
uInt dataStride,
129 const MaskIterator& maskBegin,
uInt maskStride,
131 const std::vector<AccumType>& maxLimit)
const;
145 uInt dataStride)
const;
152 uInt dataStride,
const MaskIterator& maskBegin,
153 uInt maskStride)
const;
157 uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
162 const WeightsIterator& weightsBegin,
uInt64 nr,
163 uInt dataStride)
const;
167 const WeightsIterator& weightsBegin,
uInt64 nr,
uInt dataStride,
172 const WeightsIterator& weightBegin,
uInt64 nr,
uInt dataStride,
173 const MaskIterator& maskBegin,
uInt maskStride)
const;
177 const WeightsIterator& weightBegin,
uInt64 nr,
uInt dataStride,
178 const MaskIterator& maskBegin,
uInt maskStride,
183 const DataIterator& dataBegin,
uInt64 nr,
uInt dataStride,
188 const DataIterator& dataBegin,
uInt64 nr,
uInt dataStride,
193 const DataIterator& dataBegin,
uInt64 nr,
uInt dataStride,
194 const MaskIterator& maskBegin,
uInt maskStride,
199 const DataIterator& dataBegin,
uInt64 nr,
uInt dataStride,
200 const MaskIterator& maskBegin,
uInt maskStride,
206 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
212 const DataIterator& dataBegin,
const WeightsIterator& weightsBegin,
218 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
219 uInt64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
225 const DataIterator& dataBegin,
const WeightsIterator& weightBegin,
226 uInt64 nr,
uInt dataStride,
const MaskIterator& maskBegin,
234 uInt dataStride,
uInt maxElements)
const;
239 uInt maxElements)
const;
243 uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
244 uInt maxElements)
const;
248 uInt dataStride,
const MaskIterator& maskBegin,
uInt maskStride,
253 const WeightsIterator& weightBegin,
uInt64 nr,
uInt dataStride,
254 uInt maxElements)
const;
258 const WeightsIterator& weightsBegin,
uInt64 nr,
uInt dataStride,
263 const WeightsIterator& weightBegin,
uInt64 nr,
uInt dataStride,
264 const MaskIterator& maskBegin,
uInt maskStride,
265 uInt maxElements)
const;
269 const WeightsIterator& weightBegin,
uInt64 nr,
uInt dataStride,
270 const MaskIterator& maskBegin,
uInt maskStride,
278 std::pair<AccumType, AccumType>
_range{};
283#ifndef CASACORE_NO_AUTO_TEMPLATES
284#include <casacore/scimath/StatsFramework/ConstrainedRangeQuantileComputer.tcc>
#define DataArray
Commonly used types in statistics framework.
ClassicalQuantileComputer()=delete
virtual StatisticsAlgorithmQuantileComputer< CASA_STATP > * clone() const
clone this object by returning a pointer to a copy
ConstrainedRangeQuantileComputer()=delete
virtual void _findBins(std::vector< BinCountArray > &binCounts, std::vector< std::shared_ptr< AccumType > > &sameVal, std::vector< Bool > &allSame, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude, const std::vector< StatsHistogram< AccumType > > &binDesc, const std::vector< AccumType > &maxLimit) const
virtual void _populateArrays(std::vector< DataArray > &arys, uInt64 ¤tCount, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude, const IncludeLimits &includeLimits, uInt64 maxCount) const
weights and ranges
virtual Bool _populateTestArray(DataArray &ary, const DataIterator &dataBegin, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, uInt maxElements) const
weights
virtual void _populateArrays(std::vector< DataArray > &arys, uInt64 ¤tCount, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const IncludeLimits &includeLimits, uInt64 maxCount) const
no weights, no mask, no ranges
AccumType _myMedian
for use in macros of often repeatedly run methods
virtual void _populateArrays(std::vector< DataArray > &arys, uInt64 ¤tCount, const DataIterator &dataBegin, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const IncludeLimits &includeLimits, uInt64 maxCount) const
weights and mask
virtual void _populateArrays(std::vector< DataArray > &arys, uInt64 ¤tCount, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const IncludeLimits &includeLimits, uInt64 maxCount) const
weights
virtual AccumType getMedianAbsDevMed(uInt64 mynpts, AccumType mymin, AccumType mymax, uInt binningThreshholdSizeBytes, Bool persistSortedArray, uInt nBins)
get the median of the absolute deviation about the median of the data.
virtual void _populateArray(DataArray &ary, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude) const
mask and ranges
virtual Bool _populateTestArray(DataArray &ary, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude, uInt maxElements) const
ranges
virtual Bool _populateTestArray(DataArray &ary, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, uInt maxElements) const
no weights, no mask, no ranges
virtual void _findBins(std::vector< BinCountArray > &binCounts, std::vector< std::shared_ptr< AccumType > > &sameVal, std::vector< Bool > &allSame, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude, const std::vector< StatsHistogram< AccumType > > &binDesc, const std::vector< AccumType > &maxLimit) const
virtual ~ConstrainedRangeQuantileComputer()
virtual void _findBins(std::vector< BinCountArray > &binCounts, std::vector< std::shared_ptr< AccumType > > &sameVal, std::vector< Bool > &allSame, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const std::vector< StatsHistogram< AccumType > > &binDesc, const std::vector< AccumType > &maxLimit) const
virtual void _populateArray(DataArray &ary, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude) const
ranges
virtual Bool _populateTestArray(DataArray &ary, const DataIterator &dataBegin, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, uInt maxElements) const
weights and mask
virtual Bool _populateTestArray(DataArray &ary, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude, uInt maxElements) const
mask and ranges
std::pair< AccumType, AccumType > _range
virtual void _populateArrays(std::vector< DataArray > &arys, uInt64 ¤tCount, const DataIterator &dataBegin, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude, const IncludeLimits &includeLimits, uInt64 maxCount) const
weights, mask, ranges
virtual void _populateArray(DataArray &ary, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude) const
weights and ranges
virtual void _populateArray(DataArray &ary, const DataIterator &dataBegin, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude) const
weights, mask, ranges
virtual void _populateArrays(std::vector< DataArray > &arys, uInt64 ¤tCount, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude, const IncludeLimits &includeLimits, uInt64 maxCount) const
mask and ranges
ConstrainedRangeQuantileComputer & operator=(const ConstrainedRangeQuantileComputer &other)
copy semantics
virtual void _findBins(std::vector< BinCountArray > &binCounts, std::vector< std::shared_ptr< AccumType > > &sameVal, std::vector< Bool > &allSame, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude, const std::vector< StatsHistogram< AccumType > > &binDesc, const std::vector< AccumType > &maxLimit) const
virtual void _findBins(std::vector< BinCountArray > &binCounts, std::vector< std::shared_ptr< AccumType > > &sameVal, std::vector< Bool > &allSame, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const std::vector< StatsHistogram< AccumType > > &binDesc, const std::vector< AccumType > &maxLimit) const
virtual void _populateArray(DataArray &ary, const DataIterator &dataBegin, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride) const
weights and mask
virtual void _populateArray(DataArray &ary, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride) const
weights
virtual Bool _populateTestArray(DataArray &ary, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, uInt maxElements) const
mask
virtual void _populateArray(DataArray &ary, const DataIterator &dataBegin, uInt64 nr, uInt dataStride) const
populate an unsorted array with valid data.
virtual void _findBins(std::vector< BinCountArray > &binCounts, std::vector< std::shared_ptr< AccumType > > &sameVal, std::vector< Bool > &allSame, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const std::vector< StatsHistogram< AccumType > > &binDesc, const std::vector< AccumType > &maxLimit) const
ConstrainedRangeQuantileComputer(const ConstrainedRangeQuantileComputer &csq)
copy semantics
ConstrainedRangeQuantileComputer(StatisticsDataset< CASA_STATP > *dataset)
virtual void _findBins(std::vector< BinCountArray > &binCounts, std::vector< std::shared_ptr< AccumType > > &sameVal, std::vector< Bool > &allSame, const DataIterator &dataBegin, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const std::vector< StatsHistogram< AccumType > > &binDesc, const std::vector< AccumType > &maxLimit) const
virtual AccumType getMedian(uInt64 mynpts, AccumType mymin, AccumType mymax, uInt binningThreshholdSizeBytes, Bool persistSortedArray, uInt nBins)
Caller is responsible for passing correct values of mynpts, mymin, and mymax; no checking is done for...
void setRange(const std::pair< AccumType, AccumType > &r)
virtual void _findBins(std::vector< BinCountArray > &binCounts, std::vector< std::shared_ptr< AccumType > > &sameVal, std::vector< Bool > &allSame, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude, const std::vector< StatsHistogram< AccumType > > &binDesc, const std::vector< AccumType > &maxLimit) const
virtual void _populateArray(DataArray &ary, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride) const
virtual void _populateArrays(std::vector< DataArray > &arys, uInt64 ¤tCount, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const IncludeLimits &includeLimits, uInt64 maxCount) const
virtual void _populateArrays(std::vector< DataArray > &arys, uInt64 ¤tCount, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude, const IncludeLimits &includeLimits, uInt64 maxCount) const
ranges
virtual Bool _populateTestArray(DataArray &ary, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude, uInt maxElements) const
weights and ranges
virtual Bool _populateTestArray(DataArray &ary, const DataIterator &dataBegin, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const DataRanges &ranges, Bool isInclude, uInt maxElements) const
weights, mask, ranges
This is the virtual base class from which concrete QuantileComputer classes are derived.
Representation of a statistics dataset used in statistics framework calculatations.
Represents an unfilled histogram with equal width bins for binning used for quantile computations.
For temporary backward namespace compatibility, use casa as alias for casacore.
bool Bool
Define the standard types used by Casacore.
unsigned long long uInt64