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 <
43 class AccumType, class DataIterator, class MaskIterator=const Bool*,
44 class WeightsIterator=DataIterator
45>
47 : public ConstrainedRangeQuantileComputer<CASA_STATP> {
48public:
49
51
53
54 // copy semantics
56
58
59 // copy semantics
62 );
63
64 // clone this object by returning a pointer to a copy
66
67 // reset private fields
68 virtual void reset();
69
70 void setHasRange(Bool hr) { _hasRange = hr; }
71
72protected:
73
74 // <group>
75 virtual void _findBins(
76 std::vector<BinCountArray>& binCounts,
77 std::vector<std::shared_ptr<AccumType>>& sameVal, std::vector<Bool>& allSame,
78 const DataIterator& dataBegin, uInt64 nr, uInt dataStride,
79 const std::vector<StatsHistogram<AccumType>>& binDesc,
80 const std::vector<AccumType>& maxLimit
81 ) const;
82
83 virtual void _findBins(
84 std::vector<BinCountArray>& binCounts,
85 std::vector<std::shared_ptr<AccumType>>& sameVal, std::vector<Bool>& allSame,
86 const DataIterator& dataBegin, uInt64 nr, uInt dataStride,
87 const DataRanges& ranges, Bool isInclude,
88 const std::vector<StatsHistogram<AccumType>>& binDesc,
89 const std::vector<AccumType>& maxLimit
90 ) const;
91
92 virtual void _findBins(
93 std::vector<BinCountArray>& binCounts,
94 std::vector<std::shared_ptr<AccumType>>& sameVal, std::vector<Bool>& allSame,
95 const DataIterator& dataBegin, uInt64 nr, uInt dataStride,
96 const MaskIterator& maskBegin, uInt maskStride,
97 const std::vector<StatsHistogram<AccumType>>& binDesc,
98 const std::vector<AccumType>& maxLimit
99 ) const;
100
101 virtual void _findBins(
102 std::vector<BinCountArray>& binCounts,
103 std::vector<std::shared_ptr<AccumType>>& sameVal, std::vector<Bool>& allSame,
104 const DataIterator& dataBegin, uInt64 nr, uInt dataStride,
105 const MaskIterator& maskBegin, uInt maskStride,
106 const DataRanges& ranges, Bool isInclude,
107 const std::vector<StatsHistogram<AccumType>>& binDesc,
108 const std::vector<AccumType>& maxLimit
109 ) const;
110
111 virtual void _findBins(
112 std::vector<BinCountArray>& binCounts,
113 std::vector<std::shared_ptr<AccumType>>& sameVal, std::vector<Bool>& allSame,
114 const DataIterator& dataBegin, const WeightsIterator& weightsBegin,
115 uInt64 nr, uInt dataStride,
116 const std::vector<StatsHistogram<AccumType>>& binDesc,
117 const std::vector<AccumType>& maxLimit
118 ) const ;
119
120 virtual void _findBins(
121 std::vector<BinCountArray>& binCounts,
122 std::vector<std::shared_ptr<AccumType>>& sameVal, std::vector<Bool>& allSame,
123 const DataIterator& dataBegin, const WeightsIterator& weightsBegin,
124 uInt64 nr, uInt dataStride, const DataRanges& ranges, Bool isInclude,
125 const std::vector<StatsHistogram<AccumType>>& binDesc,
126 const std::vector<AccumType>& maxLimit
127 ) const;
128
129 virtual void _findBins(
130 std::vector<BinCountArray>& binCounts,
131 std::vector<std::shared_ptr<AccumType>>& sameVal, std::vector<Bool>& allSame,
132 const DataIterator& dataBegin, const WeightsIterator& weightsBegin,
133 uInt64 nr, uInt dataStride, const MaskIterator& maskBegin,
134 uInt maskStride, const DataRanges& ranges, Bool isInclude,
135 const std::vector<StatsHistogram<AccumType>>& binDesc,
136 const std::vector<AccumType>& maxLimit
137 ) const;
138
139 virtual void _findBins(
140 std::vector<BinCountArray>& binCounts,
141 std::vector<std::shared_ptr<AccumType>>& sameVal, std::vector<Bool>& allSame,
142 const DataIterator& dataBegin, const WeightsIterator& weightBegin,
143 uInt64 nr, uInt dataStride, const MaskIterator& maskBegin,
144 uInt maskStride, const std::vector<StatsHistogram<AccumType>>& binDesc,
145 const std::vector<AccumType>& maxLimit
146 ) const;
147 // </group>
148
149 //<group>
150 // populate an unsorted array with valid data. If <src>includeLimits</src>
151 // is defined, then restrict values that are entered in the array to those
152 // limits (inclusive of the minimum, exclusive of the maximum).
153 // <src>maxCount</src> and <src>currentCount</src> are used only if
154 // <src>includeLimits</src> is defined. In this case, the method will return
155 // when currentCount == maxCount, thus avoiding scanning remaining data
156 // unnecessarily.
157
158 // no weights, no mask, no ranges
159 virtual void _populateArray(
160 DataArray& ary, const DataIterator& dataBegin, uInt64 nr,
161 uInt dataStride
162 ) const;
163
164 // ranges
165 virtual void _populateArray(
166 DataArray& ary, const DataIterator& dataBegin, uInt64 nr,
167 uInt dataStride, const DataRanges& ranges, Bool isInclude
168 ) const;
169
170 virtual void _populateArray(
171 DataArray& ary, const DataIterator& dataBegin, uInt64 nr,
172 uInt dataStride, const MaskIterator& maskBegin, uInt maskStride
173 ) const;
174
175 // mask and ranges
176 virtual void _populateArray(
177 DataArray& ary, const DataIterator& dataBegin, uInt64 nr,
178 uInt dataStride, const MaskIterator& maskBegin, uInt maskStride,
179 const DataRanges& ranges, Bool isInclude
180 ) const;
181
182 // weights
183 virtual void _populateArray(
184 DataArray& ary, const DataIterator& dataBegin,
185 const WeightsIterator& weightsBegin, uInt64 nr, uInt dataStride
186 ) const;
187
188 // weights and ranges
189 virtual void _populateArray(
190 DataArray& ary, const DataIterator& dataBegin,
191 const WeightsIterator& weightsBegin, uInt64 nr, uInt dataStride,
192 const DataRanges& ranges, Bool isInclude
193 ) const;
194
195 // weights and mask
196 virtual void _populateArray(
197 DataArray& ary, const DataIterator& dataBegin,
198 const WeightsIterator& weightBegin, uInt64 nr, uInt dataStride,
199 const MaskIterator& maskBegin, uInt maskStride
200 ) const;
201
202 // weights, mask, ranges
203 virtual void _populateArray(
204 DataArray& ary, const DataIterator& dataBegin,
205 const WeightsIterator& weightBegin, uInt64 nr, uInt dataStride,
206 const MaskIterator& maskBegin, uInt maskStride,
207 const DataRanges& ranges, Bool isInclude
208 ) const;
209
210 // no weights, no mask, no ranges
211 virtual void _populateArrays(
212 std::vector<DataArray>& arys, uInt64& currentCount,
213 const DataIterator& dataBegin, uInt64 nr, uInt dataStride,
214 const IncludeLimits& includeLimits,
215 uInt64 maxCount
216 ) const;
217
218 // ranges
219 virtual void _populateArrays(
220 std::vector<DataArray>& arys, uInt64& currentCount,
221 const DataIterator& dataBegin, uInt64 nr, uInt dataStride,
222 const DataRanges& ranges, Bool isInclude,
223 const IncludeLimits& includeLimits, uInt64 maxCount
224 ) const;
225
226 virtual void _populateArrays(
227 std::vector<DataArray>& arys, uInt64& currentCount,
228 const DataIterator& dataBegin, uInt64 nr, uInt dataStride,
229 const MaskIterator& maskBegin, uInt maskStride,
230 const IncludeLimits& includeLimits, uInt64 maxCount
231 ) const;
232
233 // mask and ranges
234 virtual void _populateArrays(
235 std::vector<DataArray>& arys, uInt64& currentCount,
236 const DataIterator& dataBegin, uInt64 nr, uInt dataStride,
237 const MaskIterator& maskBegin, uInt maskStride,
238 const DataRanges& ranges, Bool isInclude,
239 const IncludeLimits& includeLimits, uInt64 maxCount
240 ) const;
241
242 // weights
243 virtual void _populateArrays(
244 std::vector<DataArray>& arys, uInt64& currentCount,
245 const DataIterator& dataBegin, const WeightsIterator& weightsBegin,
246 uInt64 nr, uInt dataStride, const IncludeLimits& includeLimits,
247 uInt64 maxCount
248 ) const;
249
250 // weights and ranges
251 virtual void _populateArrays(
252 std::vector<DataArray>& arys, uInt64& currentCount,
253 const DataIterator& dataBegin, const WeightsIterator& weightsBegin,
254 uInt64 nr, uInt dataStride, const DataRanges& ranges, Bool isInclude,
255 const IncludeLimits& includeLimits, uInt64 maxCount
256 ) const;
257
258 // weights and mask
259 virtual void _populateArrays(
260 std::vector<DataArray>& arys, uInt64& currentCount,
261 const DataIterator& dataBegin, const WeightsIterator& weightBegin,
262 uInt64 nr, uInt dataStride, const MaskIterator& maskBegin,
263 uInt maskStride, const IncludeLimits& includeLimits, uInt64 maxCount
264 ) const;
265
266 // weights, mask, ranges
267 virtual void _populateArrays(
268 std::vector<DataArray>& arys, uInt64& currentCount,
269 const DataIterator& dataBegin, const WeightsIterator& weightBegin,
270 uInt64 nr, uInt dataStride, const MaskIterator& maskBegin,
271 uInt maskStride, const DataRanges& ranges, Bool isInclude,
272 const IncludeLimits& includeLimits, uInt64 maxCount
273 ) const;
274 // </group>
275
276 // <group>
277 // no weights, no mask, no ranges
279 DataArray& ary, const DataIterator& dataBegin,
280 uInt64 nr, uInt dataStride, uInt maxElements
281 ) const;
282
283 // ranges
285 DataArray& ary, const DataIterator& dataBegin, uInt64 nr,
286 uInt dataStride, const DataRanges& ranges, Bool isInclude,
287 uInt maxElements
288 ) const;
289
290 // mask
292 DataArray& ary, const DataIterator& dataBegin, uInt64 nr,
293 uInt dataStride, const MaskIterator& maskBegin, uInt maskStride,
294 uInt maxElements
295 ) const;
296
297 // mask and ranges
299 DataArray& ary, const DataIterator& dataBegin, uInt64 nr,
300 uInt dataStride, const MaskIterator& maskBegin, uInt maskStride,
301 const DataRanges& ranges, Bool isInclude, uInt maxElements
302 ) const;
303
304 // weights
306 DataArray& ary, const DataIterator& dataBegin,
307 const WeightsIterator& weightBegin, uInt64 nr, uInt dataStride,
308 uInt maxElements
309 ) const;
310
311 // weights and ranges
313 DataArray& ary, const DataIterator& dataBegin,
314 const WeightsIterator& weightsBegin, uInt64 nr, uInt dataStride,
315 const DataRanges& ranges, Bool isInclude, uInt maxElements
316 ) const;
317
318 // weights and mask
320 DataArray& ary, const DataIterator& dataBegin,
321 const WeightsIterator& weightBegin, uInt64 nr, uInt dataStride,
322 const MaskIterator& maskBegin, uInt maskStride, uInt maxElements
323 ) const;
324
325 // weights, mask, ranges
327 DataArray& ary, const DataIterator& dataBegin,
328 const WeightsIterator& weightBegin, uInt64 nr, uInt dataStride,
329 const MaskIterator& maskBegin, uInt maskStride,
330 const DataRanges& ranges, Bool isInclude, uInt maxElements
331 ) const;
332 // </group>
333
334private:
335
337
338};
339
340}
341
342#ifndef CASACORE_NO_AUTO_TEMPLATES
343#include <casacore/scimath/StatsFramework/HingesFencesQuantileComputer.tcc>
344#endif
345
346#endif
#define DataRanges
#define DataArray
Commonly used types in statistics framework.
#define IncludeLimits
Basic concrete QuantileComputer class for data constrained to be in a specified range.
QuantileComputer used by HingesFencesStatistics for computing quantile-like statistics.
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.
this file contains all the compiler specific defines
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