casacore
Loading...
Searching...
No Matches
HingesFencesQuantileComputer.h
Go to the documentation of this file.
1// # Copyright (C) 2000,2001
2// # Associated Universities, Inc. Washington DC, USA.
3// #
4// # This library is free software; you can redistribute it and/or modify it
5// # under the terms of the GNU Library General Public License as published by
6// # the Free Software Foundation; either version 2 of the License, or (at your
7// # option) any later version.
8// #
9// # This library is distributed in the hope that it will be useful, but WITHOUT
10// # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11// # FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
12// # License for more details.
13// #
14// # You should have received a copy of the GNU Library General Public License
15// # along with this library; if not, write to the Free Software Foundation,
16// # Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
17// #
18// # Correspondence concerning AIPS++ should be addressed as follows:
19// # Internet email: casa-feedback@nrao.edu.
20// # Postal address: AIPS++ Project Office
21// # National Radio Astronomy Observatory
22// # 520 Edgemont Road
23// # Charlottesville, VA 22903-2475 USA
24// #
25
26#ifndef SCIMATH_HINGESFENCESQUANTILECOMPUTER_H
27#define SCIMATH_HINGESFENCESQUANTILECOMPUTER_H
28
29#include <casacore/scimath/StatsFramework/ConstrainedRangeQuantileComputer.h>
30
31#include <casacore/scimath/StatsFramework/StatisticsTypes.h>
32
33#include <casacore/casa/aips.h>
34
35namespace casacore {
36
37// QuantileComputer used by HingesFencesStatistics for computing quantile-like
38// statistics. API developers should never explicitly instantiate this class.
39// See class documentation for StatisticsAlgorithm for details regarding
40// QuantileComputer classes.
41
42template <class AccumType, class DataIterator, class MaskIterator = const Bool*,
43 class WeightsIterator = DataIterator>
45 public:
47
49
50 // copy semantics
52
54
55 // copy semantics
57
58 // clone this object by returning a pointer to a copy
60
61 // reset private fields
62 virtual void reset();
63
64 void setHasRange(Bool hr) { _hasRange = hr; }
65
66 protected:
67 // <group>
68 virtual void _findBins(std::vector<BinCountArray>& binCounts,
69 std::vector<std::shared_ptr<AccumType>>& sameVal,
70 std::vector<Bool>& allSame, const DataIterator& dataBegin, uInt64 nr,
71 uInt dataStride, const std::vector<StatsHistogram<AccumType>>& binDesc,
72 const std::vector<AccumType>& maxLimit) const;
73
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,
77 uInt dataStride, const DataRanges& ranges, Bool isInclude,
78 const std::vector<StatsHistogram<AccumType>>& binDesc,
79 const std::vector<AccumType>& maxLimit) const;
80
81 virtual void _findBins(std::vector<BinCountArray>& binCounts,
82 std::vector<std::shared_ptr<AccumType>>& sameVal,
83 std::vector<Bool>& allSame, const DataIterator& dataBegin, uInt64 nr,
84 uInt dataStride, const MaskIterator& maskBegin, uInt maskStride,
85 const std::vector<StatsHistogram<AccumType>>& binDesc,
86 const std::vector<AccumType>& maxLimit) const;
87
88 virtual void _findBins(std::vector<BinCountArray>& binCounts,
89 std::vector<std::shared_ptr<AccumType>>& sameVal,
90 std::vector<Bool>& allSame, const DataIterator& dataBegin, uInt64 nr,
91 uInt dataStride, const MaskIterator& maskBegin, uInt maskStride,
92 const DataRanges& ranges, Bool isInclude,
93 const std::vector<StatsHistogram<AccumType>>& binDesc,
94 const std::vector<AccumType>& maxLimit) const;
95
96 virtual void _findBins(std::vector<BinCountArray>& binCounts,
97 std::vector<std::shared_ptr<AccumType>>& sameVal,
98 std::vector<Bool>& allSame, const DataIterator& dataBegin,
99 const WeightsIterator& weightsBegin, uInt64 nr, uInt dataStride,
100 const std::vector<StatsHistogram<AccumType>>& binDesc,
101 const std::vector<AccumType>& maxLimit) const;
102
103 virtual void _findBins(std::vector<BinCountArray>& binCounts,
104 std::vector<std::shared_ptr<AccumType>>& sameVal,
105 std::vector<Bool>& allSame, const DataIterator& dataBegin,
106 const WeightsIterator& weightsBegin, uInt64 nr, uInt dataStride,
107 const DataRanges& ranges, Bool isInclude,
108 const std::vector<StatsHistogram<AccumType>>& binDesc,
109 const std::vector<AccumType>& maxLimit) const;
110
111 virtual void _findBins(std::vector<BinCountArray>& binCounts,
112 std::vector<std::shared_ptr<AccumType>>& sameVal,
113 std::vector<Bool>& allSame, const DataIterator& dataBegin,
114 const WeightsIterator& weightsBegin, uInt64 nr, uInt dataStride,
115 const MaskIterator& maskBegin, uInt maskStride, const DataRanges& ranges,
116 Bool isInclude, const std::vector<StatsHistogram<AccumType>>& binDesc,
117 const std::vector<AccumType>& maxLimit) const;
118
119 virtual void _findBins(std::vector<BinCountArray>& binCounts,
120 std::vector<std::shared_ptr<AccumType>>& sameVal,
121 std::vector<Bool>& allSame, const DataIterator& dataBegin,
122 const WeightsIterator& weightBegin, uInt64 nr, uInt dataStride,
123 const MaskIterator& maskBegin, uInt maskStride,
124 const std::vector<StatsHistogram<AccumType>>& binDesc,
125 const std::vector<AccumType>& maxLimit) const;
126 // </group>
127
128 //<group>
129 // populate an unsorted array with valid data. If <src>includeLimits</src>
130 // is defined, then restrict values that are entered in the array to those
131 // limits (inclusive of the minimum, exclusive of the maximum).
132 // <src>maxCount</src> and <src>currentCount</src> are used only if
133 // <src>includeLimits</src> is defined. In this case, the method will return
134 // when currentCount == maxCount, thus avoiding scanning remaining data
135 // unnecessarily.
136
137 // no weights, no mask, no ranges
138 virtual void _populateArray(DataArray& ary, const DataIterator& dataBegin, uInt64 nr,
139 uInt dataStride) const;
140
141 // ranges
142 virtual void _populateArray(DataArray& ary, const DataIterator& dataBegin, uInt64 nr,
143 uInt dataStride, const DataRanges& ranges, Bool isInclude) const;
144
145 virtual void _populateArray(DataArray& ary, const DataIterator& dataBegin, uInt64 nr,
146 uInt dataStride, const MaskIterator& maskBegin,
147 uInt maskStride) const;
148
149 // mask and ranges
150 virtual void _populateArray(DataArray& ary, const DataIterator& dataBegin, uInt64 nr,
151 uInt dataStride, const MaskIterator& maskBegin, uInt maskStride,
152 const DataRanges& ranges, Bool isInclude) const;
153
154 // weights
155 virtual void _populateArray(DataArray& ary, const DataIterator& dataBegin,
156 const WeightsIterator& weightsBegin, uInt64 nr,
157 uInt dataStride) const;
158
159 // weights and ranges
160 virtual void _populateArray(DataArray& ary, const DataIterator& dataBegin,
161 const WeightsIterator& weightsBegin, uInt64 nr, uInt dataStride,
162 const DataRanges& ranges, Bool isInclude) const;
163
164 // weights and mask
165 virtual void _populateArray(DataArray& ary, const DataIterator& dataBegin,
166 const WeightsIterator& weightBegin, uInt64 nr, uInt dataStride,
167 const MaskIterator& maskBegin, uInt maskStride) const;
168
169 // weights, mask, ranges
170 virtual void _populateArray(DataArray& ary, const DataIterator& dataBegin,
171 const WeightsIterator& weightBegin, uInt64 nr, uInt dataStride,
172 const MaskIterator& maskBegin, uInt maskStride,
173 const DataRanges& ranges, Bool isInclude) const;
174
175 // no weights, no mask, no ranges
176 virtual void _populateArrays(std::vector<DataArray>& arys, uInt64& currentCount,
177 const DataIterator& dataBegin, uInt64 nr, uInt dataStride,
178 const IncludeLimits& includeLimits, uInt64 maxCount) const;
179
180 // ranges
181 virtual void _populateArrays(std::vector<DataArray>& arys, uInt64& currentCount,
182 const DataIterator& dataBegin, uInt64 nr, uInt dataStride,
183 const DataRanges& ranges, Bool isInclude,
184 const IncludeLimits& includeLimits, uInt64 maxCount) const;
185
186 virtual void _populateArrays(std::vector<DataArray>& arys, uInt64& currentCount,
187 const DataIterator& dataBegin, uInt64 nr, uInt dataStride,
188 const MaskIterator& maskBegin, uInt maskStride,
189 const IncludeLimits& includeLimits, uInt64 maxCount) const;
190
191 // mask and ranges
192 virtual void _populateArrays(std::vector<DataArray>& arys, uInt64& currentCount,
193 const DataIterator& dataBegin, uInt64 nr, uInt dataStride,
194 const MaskIterator& maskBegin, uInt maskStride,
195 const DataRanges& ranges, Bool isInclude,
196 const IncludeLimits& includeLimits, uInt64 maxCount) const;
197
198 // weights
199 virtual void _populateArrays(std::vector<DataArray>& arys, uInt64& currentCount,
200 const DataIterator& dataBegin, const WeightsIterator& weightsBegin,
201 uInt64 nr, uInt dataStride, const IncludeLimits& includeLimits,
202 uInt64 maxCount) const;
203
204 // weights and ranges
205 virtual void _populateArrays(std::vector<DataArray>& arys, uInt64& currentCount,
206 const DataIterator& dataBegin, const WeightsIterator& weightsBegin,
207 uInt64 nr, uInt dataStride, const DataRanges& ranges, Bool isInclude,
208 const IncludeLimits& includeLimits, uInt64 maxCount) const;
209
210 // weights and mask
211 virtual void _populateArrays(std::vector<DataArray>& arys, uInt64& currentCount,
212 const DataIterator& dataBegin, const WeightsIterator& weightBegin,
213 uInt64 nr, uInt dataStride, const MaskIterator& maskBegin,
214 uInt maskStride, const IncludeLimits& includeLimits,
215 uInt64 maxCount) const;
216
217 // weights, mask, ranges
218 virtual void _populateArrays(std::vector<DataArray>& arys, uInt64& currentCount,
219 const DataIterator& dataBegin, const WeightsIterator& weightBegin,
220 uInt64 nr, uInt dataStride, const MaskIterator& maskBegin,
221 uInt maskStride, const DataRanges& ranges, Bool isInclude,
222 const IncludeLimits& includeLimits, uInt64 maxCount) const;
223 // </group>
224
225 // <group>
226 // no weights, no mask, no ranges
227 virtual Bool _populateTestArray(DataArray& ary, const DataIterator& dataBegin, uInt64 nr,
228 uInt dataStride, uInt maxElements) const;
229
230 // ranges
231 virtual Bool _populateTestArray(DataArray& ary, const DataIterator& dataBegin, uInt64 nr,
232 uInt dataStride, const DataRanges& ranges, Bool isInclude,
233 uInt maxElements) const;
234
235 // mask
236 virtual Bool _populateTestArray(DataArray& ary, const DataIterator& dataBegin, uInt64 nr,
237 uInt dataStride, const MaskIterator& maskBegin, uInt maskStride,
238 uInt maxElements) const;
239
240 // mask and ranges
241 virtual Bool _populateTestArray(DataArray& ary, const DataIterator& dataBegin, uInt64 nr,
242 uInt dataStride, const MaskIterator& maskBegin, uInt maskStride,
243 const DataRanges& ranges, Bool isInclude, uInt maxElements) const;
244
245 // weights
246 virtual Bool _populateTestArray(DataArray& ary, const DataIterator& dataBegin,
247 const WeightsIterator& weightBegin, uInt64 nr, uInt dataStride,
248 uInt maxElements) const;
249
250 // weights and ranges
251 virtual Bool _populateTestArray(DataArray& ary, const DataIterator& dataBegin,
252 const WeightsIterator& weightsBegin, uInt64 nr, uInt dataStride,
253 const DataRanges& ranges, Bool isInclude, uInt maxElements) const;
254
255 // weights and mask
256 virtual Bool _populateTestArray(DataArray& ary, const DataIterator& dataBegin,
257 const WeightsIterator& weightBegin, uInt64 nr, uInt dataStride,
258 const MaskIterator& maskBegin, uInt maskStride,
259 uInt maxElements) const;
260
261 // weights, mask, ranges
262 virtual Bool _populateTestArray(DataArray& ary, const DataIterator& dataBegin,
263 const WeightsIterator& weightBegin, uInt64 nr, uInt dataStride,
264 const MaskIterator& maskBegin, uInt maskStride,
265 const DataRanges& ranges, Bool isInclude, uInt maxElements) const;
266 // </group>
267
268 private:
270};
271
272} // namespace casacore
273
274#ifndef CASACORE_NO_AUTO_TEMPLATES
275#include <casacore/scimath/StatsFramework/HingesFencesQuantileComputer.tcc>
276#endif
277
278#endif
#define DataRanges
#define DataArray
Commonly used types in statistics framework.
#define IncludeLimits
virtual Bool _populateTestArray(DataArray &ary, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, uInt maxElements) const
mask
virtual Bool _populateTestArray(DataArray &ary, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, uInt maxElements) const
no weights, no mask, no 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, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude, uInt maxElements) const
weights and ranges
virtual void _populateArrays(std::vector< DataArray > &arys, uInt64 &currentCount, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const IncludeLimits &includeLimits, uInt64 maxCount) const
HingesFencesQuantileComputer(StatisticsDataset< CASA_STATP > *dataset)
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 _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 _populateArray(DataArray &ary, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude) const
weights and 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 std::vector< StatsHistogram< AccumType > > &binDesc, const std::vector< AccumType > &maxLimit) const
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, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, uInt maxElements) const
weights
HingesFencesQuantileComputer(const HingesFencesQuantileComputer &other)
copy semantics
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 _populateArrays(std::vector< DataArray > &arys, uInt64 &currentCount, const DataIterator &dataBegin, const WeightsIterator &weightBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride, const IncludeLimits &includeLimits, uInt64 maxCount) const
weights and mask
HingesFencesQuantileComputer & operator=(const HingesFencesQuantileComputer &other)
copy semantics
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 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
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
virtual void _populateArray(DataArray &ary, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude) const
ranges
virtual void _populateArrays(std::vector< DataArray > &arys, uInt64 &currentCount, const DataIterator &dataBegin, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride, const IncludeLimits &includeLimits, uInt64 maxCount) const
weights
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
virtual void _populateArray(DataArray &ary, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const MaskIterator &maskBegin, uInt maskStride) const
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, const WeightsIterator &weightsBegin, uInt64 nr, uInt dataStride) const
weights
virtual StatisticsAlgorithmQuantileComputer< CASA_STATP > * clone() const
clone this object by returning a pointer to a copy
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 _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 void _populateArrays(std::vector< DataArray > &arys, uInt64 &currentCount, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const IncludeLimits &includeLimits, uInt64 maxCount) const
no weights, no mask, no ranges
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 void reset()
reset private fields
virtual void _populateArrays(std::vector< DataArray > &arys, uInt64 &currentCount, 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 _populateArrays(std::vector< DataArray > &arys, uInt64 &currentCount, 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 void _populateArrays(std::vector< DataArray > &arys, uInt64 &currentCount, const DataIterator &dataBegin, uInt64 nr, uInt dataStride, const DataRanges &ranges, Bool isInclude, const IncludeLimits &includeLimits, uInt64 maxCount) const
ranges
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 _populateArrays(std::vector< DataArray > &arys, uInt64 &currentCount, 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
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.
Definition mainpage.dox:28
const Bool False
Definition aipstype.h:42
unsigned int uInt
Definition aipstype.h:49
bool Bool
Define the standard types used by Casacore.
Definition aipstype.h:40
unsigned long long uInt64
Definition aipsxtype.h:37