LSST Applications  21.0.0-172-gfb10e10a+18fedfabac,22.0.0+297cba6710,22.0.0+80564b0ff1,22.0.0+8d77f4f51a,22.0.0+a28f4c53b1,22.0.0+dcf3732eb2,22.0.1-1-g7d6de66+2a20fdde0d,22.0.1-1-g8e32f31+297cba6710,22.0.1-1-geca5380+7fa3b7d9b6,22.0.1-12-g44dc1dc+2a20fdde0d,22.0.1-15-g6a90155+515f58c32b,22.0.1-16-g9282f48+790f5f2caa,22.0.1-2-g92698f7+dcf3732eb2,22.0.1-2-ga9b0f51+7fa3b7d9b6,22.0.1-2-gd1925c9+bf4f0e694f,22.0.1-24-g1ad7a390+a9625a72a8,22.0.1-25-g5bf6245+3ad8ecd50b,22.0.1-25-gb120d7b+8b5510f75f,22.0.1-27-g97737f7+2a20fdde0d,22.0.1-32-gf62ce7b1+aa4237961e,22.0.1-4-g0b3f228+2a20fdde0d,22.0.1-4-g243d05b+871c1b8305,22.0.1-4-g3a563be+32dcf1063f,22.0.1-4-g44f2e3d+9e4ab0f4fa,22.0.1-42-gca6935d93+ba5e5ca3eb,22.0.1-5-g15c806e+85460ae5f3,22.0.1-5-g58711c4+611d128589,22.0.1-5-g75bb458+99c117b92f,22.0.1-6-g1c63a23+7fa3b7d9b6,22.0.1-6-g50866e6+84ff5a128b,22.0.1-6-g8d3140d+720564cf76,22.0.1-6-gd805d02+cc5644f571,22.0.1-8-ge5750ce+85460ae5f3,master-g6e05de7fdc+babf819c66,master-g99da0e417a+8d77f4f51a,w.2021.48
LSST Data Management Base Package
Statistics.h
Go to the documentation of this file.
1 // -*- LSST-C++ -*-
2 
3 /*
4  * LSST Data Management System
5  * Copyright 2008, 2009, 2010 LSST Corporation.
6  *
7  * This product includes software developed by the
8  * LSST Project (http://www.lsst.org/).
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the LSST License Statement and
21  * the GNU General Public License along with this program. If not,
22  * see <http://www.lsstcorp.org/LegalNotices/>.
23  */
24 
25 #if !defined(LSST_AFW_MATH_STATISTICS_H)
26 #define LSST_AFW_MATH_STATISTICS_H
37 #include <algorithm>
38 #include <cassert>
39 #include <limits>
40 #include "boost/iterator/iterator_adaptor.hpp"
41 #include <memory>
44 
45 namespace lsst {
46 namespace afw {
47 namespace image {
48 template <typename>
49 class Image;
50 template <typename, typename, typename>
51 class MaskedImage;
52 } // namespace image
53 namespace math {
54 template <typename>
55 class MaskedVector; // forward declaration
56 
57 using WeightPixel = lsst::afw::image::VariancePixel; // Type used for weights
58 
62 enum Property {
63  NOTHING = 0x0,
64  ERRORS = 0x1,
65  NPOINT = 0x2,
66  MEAN = 0x4,
67  STDEV = 0x8,
68  VARIANCE = 0x10,
69  MEDIAN = 0x20,
70  IQRANGE = 0x40,
71  MEANCLIP = 0x80,
72  STDEVCLIP = 0x100,
73  VARIANCECLIP = 0x200,
75  MIN = 0x400,
76  MAX = 0x800,
77  SUM = 0x1000,
78  MEANSQUARE = 0x2000,
79  ORMASK = 0x4000,
80  NCLIPPED = 0x8000,
81  NMASKED = 0x10000
82 };
85 
93 public:
94  enum WeightsBoolean { WEIGHTS_FALSE = 0, WEIGHTS_TRUE = 1, WEIGHTS_NONE }; // initial state is NONE
95 
96  StatisticsControl(double numSigmaClip = 3.0,
97  int numIter = 3,
99  0x0,
100  bool isNanSafe = true,
101  WeightsBoolean useWeights =
102  WEIGHTS_NONE
103  )
104  : _numSigmaClip(numSigmaClip),
105  _numIter(numIter),
106  _andMask(andMask),
107  _noGoodPixelsMask(0x0),
108  _isNanSafe(isNanSafe),
109  _useWeights(useWeights),
110  _calcErrorFromInputVariance(false),
111  _maskPropagationThresholds() {
112  try {
113  _noGoodPixelsMask = lsst::afw::image::Mask<>::getPlaneBitMask("NO_DATA");
115  ; // Mask has no NO_DATA plane defined
116  }
117 
118  assert(_numSigmaClip > 0);
119  assert(_numIter > 0);
120  }
121 
123 
128  double getMaskPropagationThreshold(int bit) const;
129  void setMaskPropagationThreshold(int bit, double threshold);
131 
132  double getNumSigmaClip() const noexcept { return _numSigmaClip; }
133  int getNumIter() const noexcept { return _numIter; }
134  int getAndMask() const noexcept { return _andMask; }
135  int getNoGoodPixelsMask() const noexcept { return _noGoodPixelsMask; }
136  bool getNanSafe() const noexcept { return _isNanSafe; }
137  bool getWeighted() const noexcept { return _useWeights == WEIGHTS_TRUE ? true : false; }
138  bool getWeightedIsSet() const noexcept { return _useWeights != WEIGHTS_NONE ? true : false; }
139  bool getCalcErrorFromInputVariance() const noexcept { return _calcErrorFromInputVariance; }
140 
141  void setNumSigmaClip(double numSigmaClip) {
142  if (!(numSigmaClip > 0)) {
144  "numSigmaClip has to be positive.");
145  }
146  _numSigmaClip = numSigmaClip;
147  }
148  void setNumIter(int numIter) {
149  if (!(numIter > 0)) {
151  "numIter has to be positive.");
152  }
153  _numIter = numIter;
154  }
155  void setAndMask(int andMask) { _andMask = andMask; }
156  void setNoGoodPixelsMask(int noGoodPixelsMask) { _noGoodPixelsMask = noGoodPixelsMask; }
157  void setNanSafe(bool isNanSafe) noexcept { _isNanSafe = isNanSafe; }
158  void setWeighted(bool useWeights) noexcept { _useWeights = useWeights ? WEIGHTS_TRUE : WEIGHTS_FALSE; }
159  void setCalcErrorFromInputVariance(bool calcErrorFromInputVariance) noexcept {
160  _calcErrorFromInputVariance = calcErrorFromInputVariance;
161  }
162 
163 private:
164  friend class Statistics;
165 
166  double _numSigmaClip; // Number of standard deviations to clip at
167  int _numIter; // Number of iterations
168  int _andMask; // and-Mask to specify which mask planes to ignore
169  int _noGoodPixelsMask; // mask to set if no values are acceptable
170  bool _isNanSafe; // Check for NaNs & Infs before running (slower)
171  WeightsBoolean _useWeights; // Calculate weighted statistics (enum because of 3-valued logic)
172  bool _calcErrorFromInputVariance; // Calculate errors from the input variances, if available
173  std::vector<double> _maskPropagationThresholds; // Thresholds for when to propagate mask bits,
174  // treated like a dict (unset bits are set to 1.0)
175 };
176 
221 public:
224 
237  template <typename ImageT, typename MaskT, typename VarianceT>
238  explicit Statistics(ImageT const &img, MaskT const &msk, VarianceT const &var, int const flags,
239  StatisticsControl const &sctrl = StatisticsControl());
240 
249  template <typename ImageT, typename MaskT, typename VarianceT, typename WeightT>
250  explicit Statistics(ImageT const &img, MaskT const &msk, VarianceT const &var, WeightT const &weights,
251  int const flags, StatisticsControl const &sctrl = StatisticsControl());
252 
253  Statistics(Statistics const &) = default;
254  Statistics(Statistics &&) = default;
255  Statistics &operator=(Statistics const &) = default;
257  ~Statistics() noexcept = default;
258 
272  Value getResult(Property const prop = NOTHING) const;
273 
281  double getError(Property const prop = NOTHING) const;
287  double getValue(Property const prop = NOTHING) const;
288  lsst::afw::image::MaskPixel getOrMask() const noexcept { return _allPixelOrMask; }
289 
290 private:
291  long _flags; // The desired calculation
292 
293  int _n; // number of pixels in the image
294  Value _mean; // the image's mean
295  Value _variance; // the image's variance
296  double _min; // the image's minimum
297  double _max; // the image's maximum
298  double _sum; // the sum of all the image's pixels
299  Value _meanclip; // the image's N-sigma clipped mean
300  Value _varianceclip; // the image's N-sigma clipped variance
301  Value _median; // the image's median
302  int _nClipped; // number of pixels clipped
303  int _nMasked; // number of pixels masked
304  double _iqrange; // the image's interquartile range
305  lsst::afw::image::MaskPixel _allPixelOrMask; // the 'or' of all masked pixels
306 
307  StatisticsControl _sctrl; // the control structure
308  bool _weightsAreMultiplicative; // Multiply by weights rather than dividing by them
309 
318  template <typename ImageT, typename MaskT, typename VarianceT, typename WeightT>
319  void doStatistics(ImageT const &img, MaskT const &msk, VarianceT const &var, WeightT const &weights,
320  int const flags, StatisticsControl const &sctrl);
321 };
322 
323 /* ************************************ The factory functions ********************************* */
328 template <typename ValueT>
329 class infinite_iterator : public boost::iterator_adaptor<infinite_iterator<ValueT>, const ValueT *,
330  const ValueT, boost::forward_traversal_tag> {
331 public:
332  infinite_iterator() : infinite_iterator::iterator_adaptor_(0) {}
333  explicit infinite_iterator(const ValueT *p) : infinite_iterator::iterator_adaptor_(p) {}
334 
335 private:
337  void increment() noexcept { ; } // never actually advance the iterator
338 };
343 template <typename ValueT>
345 public:
347  explicit MaskImposter(ValueT val = 0) noexcept { _val[0] = val; }
348  x_iterator row_begin(int) const noexcept { return x_iterator(_val); }
349 
350 private:
351  ValueT _val[1];
352 };
353 
358 template <typename Pixel>
360  lsst::afw::image::Mask<image::MaskPixel> const &msk, int const flags,
361  StatisticsControl const &sctrl = StatisticsControl()) {
363  return Statistics(img, msk, var, flags, sctrl);
364 }
365 
370 template <typename ImageT, typename MaskT, typename VarianceT>
371 Statistics makeStatistics(ImageT const &img, MaskT const &msk, VarianceT const &var, int const flags,
372  StatisticsControl const &sctrl = StatisticsControl()) {
373  return Statistics(img, msk, var, flags, sctrl);
374 }
375 
380 template <typename Pixel>
382  StatisticsControl const &sctrl = StatisticsControl()) {
383  if (sctrl.getWeighted() || sctrl.getCalcErrorFromInputVariance()) {
384  return Statistics(*mimg.getImage(), *mimg.getMask(), *mimg.getVariance(), flags, sctrl);
385  } else {
387  return Statistics(*mimg.getImage(), *mimg.getMask(), var, flags, sctrl);
388  }
389 }
390 
395 template <typename Pixel>
397  lsst::afw::image::Image<WeightPixel> const &weights, int const flags,
398  StatisticsControl const &sctrl = StatisticsControl()) {
399  if (sctrl.getWeighted() || sctrl.getCalcErrorFromInputVariance() ||
400  (!sctrl.getWeightedIsSet() && (weights.getWidth() != 0 && weights.getHeight() != 0))) {
401  return Statistics(*mimg.getImage(), *mimg.getMask(), *mimg.getVariance(), weights, flags, sctrl);
402  } else {
404  return Statistics(*mimg.getImage(), *mimg.getMask(), var, weights, flags, sctrl);
405  }
406 }
407 
418  StatisticsControl const &sctrl = StatisticsControl());
419 
424 template <typename Pixel>
426  lsst::afw::image::Image<Pixel> const &img,
427  int const flags,
428  StatisticsControl const &sctrl = StatisticsControl()
429 ) {
430  // make a phony mask that will be compiled out
432  MaskImposter<WeightPixel> const var;
433  return Statistics(img, msk, var, flags, sctrl);
434 }
435 
440 template <typename ValueT>
442 public:
443  // types we'll use in Statistics
446  using Pixel = ValueT;
447 
448  // constructors for std::vector<>, and copy constructor
449  // These are both shallow! ... no actual copying of values
450  explicit ImageImposter(std::vector<ValueT> const &v) : _v(v) {}
451  explicit ImageImposter(ImageImposter<ValueT> const &img) : _v(img._getVector()) {}
452 
453  // The methods we'll use in Statistics
454  x_iterator row_begin(int) const noexcept { return _v.begin(); }
455  x_iterator row_end(int) const noexcept { return _v.end(); }
456  int getWidth() const noexcept { return _v.size(); }
457  int getHeight() const noexcept { return 1; }
460  }
461 
462  bool empty() const noexcept { return _v.empty(); }
463 
464 private:
465  std::vector<ValueT> const &_v; // a private reference to the data
466  std::vector<ValueT> const &_getVector() const { return _v; } // get the ref for the copyCon
467 };
468 
473 template <typename EntryT>
475  int const flags,
476  StatisticsControl const &sctrl = StatisticsControl()
477 ) {
478  ImageImposter<EntryT> img(v); // wrap the vector in a fake image
479  MaskImposter<lsst::afw::image::MaskPixel> msk; // instantiate a fake mask that will be compiled out.
481  return Statistics(img, msk, var, flags, sctrl);
482 }
483 
488 template <typename EntryT>
490  std::vector<WeightPixel> const &vweights,
491  int const flags,
492  StatisticsControl const &sctrl = StatisticsControl()
493 ) {
494  ImageImposter<EntryT> img(v); // wrap the vector in a fake image
495  MaskImposter<lsst::afw::image::MaskPixel> msk; // instantiate a fake mask that will be compiled out.
497 
498  ImageImposter<WeightPixel> weights(vweights);
499 
500  return Statistics(img, msk, var, weights, flags, sctrl);
501 }
502 
507 template <typename EntryT>
509  int const flags,
510  StatisticsControl const &sctrl = StatisticsControl()
511 ) {
512  if (sctrl.getWeighted() || sctrl.getCalcErrorFromInputVariance()) {
513  return Statistics(*mv.getImage(), *mv.getMask(), *mv.getVariance(), flags, sctrl);
514  } else {
516  return Statistics(*mv.getImage(), *mv.getMask(), var, flags, sctrl);
517  }
518 }
519 
524 template <typename EntryT>
526  std::vector<WeightPixel> const &vweights,
527  int const flags,
528  StatisticsControl const &sctrl = StatisticsControl()
529 ) {
530  ImageImposter<WeightPixel> weights(vweights);
531 
532  if (sctrl.getWeighted() || sctrl.getCalcErrorFromInputVariance()) {
533  return Statistics(*mv.getImage(), *mv.getMask(), *mv.getVariance(), weights, flags, sctrl);
534  } else {
536  return Statistics(*mv.getImage(), *mv.getMask(), var, weights, flags, sctrl);
537  }
538 }
539 } // namespace math
540 } // namespace afw
541 } // namespace lsst
542 
543 #endif
#define LSST_EXCEPT(type,...)
Create an exception with a given type.
Definition: Exception.h:48
T begin(T... args)
int getWidth() const
Return the number of columns in the image.
Definition: ImageBase.h:294
int getHeight() const
Return the number of rows in the image.
Definition: ImageBase.h:296
Represent a 2-dimensional array of bitmask pixels.
Definition: Mask.h:77
static MaskPixelT getPlaneBitMask(const std::vector< std::string > &names)
Return the bitmask corresponding to a vector of plane names OR'd together.
Definition: Mask.cc:372
A class to manipulate images, masks, and variance as a single object.
Definition: MaskedImage.h:73
VariancePtr getVariance() const
Return a (shared_ptr to) the MaskedImage's variance.
Definition: MaskedImage.h:1051
MaskPtr getMask() const
Return a (shared_ptr to) the MaskedImage's mask.
Definition: MaskedImage.h:1030
ImagePtr getImage() const
Return a (shared_ptr to) the MaskedImage's image.
Definition: MaskedImage.h:1018
A vector wrapper to provide a vector with the necessary methods and typedefs to be processed by Stati...
Definition: Statistics.h:441
lsst::geom::Extent2I getDimensions() const noexcept
Definition: Statistics.h:458
x_iterator row_begin(int) const noexcept
Definition: Statistics.h:454
typename std::vector< ValueT >::const_iterator fast_iterator
Definition: Statistics.h:445
ImageImposter(ImageImposter< ValueT > const &img)
Definition: Statistics.h:451
ImageImposter(std::vector< ValueT > const &v)
Definition: Statistics.h:450
typename std::vector< ValueT >::const_iterator x_iterator
Definition: Statistics.h:444
bool empty() const noexcept
Definition: Statistics.h:462
int getWidth() const noexcept
Definition: Statistics.h:456
x_iterator row_end(int) const noexcept
Definition: Statistics.h:455
int getHeight() const noexcept
Definition: Statistics.h:457
A Mask wrapper to provide an infinite_iterator for Mask::row_begin().
Definition: Statistics.h:344
infinite_iterator< ValueT > x_iterator
Definition: Statistics.h:346
MaskImposter(ValueT val=0) noexcept
Definition: Statistics.h:347
x_iterator row_begin(int) const noexcept
Definition: Statistics.h:348
lsst::afw::image::MaskedImage< EntryT >::VariancePtr getVariance() const
Definition: MaskedVector.h:94
lsst::afw::image::MaskedImage< EntryT >::ImagePtr getImage() const
Definition: MaskedVector.h:88
lsst::afw::image::MaskedImage< EntryT >::MaskPtr getMask() const
Definition: MaskedVector.h:91
Pass parameters to a Statistics object.
Definition: Statistics.h:92
void setNumSigmaClip(double numSigmaClip)
Definition: Statistics.h:141
double getMaskPropagationThreshold(int bit) const
When pixels with the given bit are rejected, we count what fraction the rejected pixels would have co...
Definition: Statistics.cc:718
bool getCalcErrorFromInputVariance() const noexcept
Definition: Statistics.h:139
int getAndMask() const noexcept
Definition: Statistics.h:134
StatisticsControl(double numSigmaClip=3.0, int numIter=3, lsst::afw::image::MaskPixel andMask=0x0, bool isNanSafe=true, WeightsBoolean useWeights=WEIGHTS_NONE)
Definition: Statistics.h:96
void setCalcErrorFromInputVariance(bool calcErrorFromInputVariance) noexcept
Definition: Statistics.h:159
bool getWeightedIsSet() const noexcept
Definition: Statistics.h:138
void setMaskPropagationThreshold(int bit, double threshold)
Definition: Statistics.cc:726
void setWeighted(bool useWeights) noexcept
Definition: Statistics.h:158
double getNumSigmaClip() const noexcept
Definition: Statistics.h:132
bool getWeighted() const noexcept
Definition: Statistics.h:137
int getNoGoodPixelsMask() const noexcept
Definition: Statistics.h:135
int getNumIter() const noexcept
Definition: Statistics.h:133
bool getNanSafe() const noexcept
Definition: Statistics.h:136
void setNoGoodPixelsMask(int noGoodPixelsMask)
Definition: Statistics.h:156
void setNanSafe(bool isNanSafe) noexcept
Definition: Statistics.h:157
A class to evaluate image statistics.
Definition: Statistics.h:220
Statistics makeStatistics(lsst::afw::image::Image< Pixel > const &img, int const flags, StatisticsControl const &sctrl=StatisticsControl())
The makeStatistics() overload to handle regular (non-masked) Images.
Definition: Statistics.h:425
Statistics makeStatistics(std::vector< EntryT > const &v, int const flags, StatisticsControl const &sctrl=StatisticsControl())
The makeStatistics() overload to handle std::vector<>
Definition: Statistics.h:474
Statistics makeStatistics(lsst::afw::image::MaskedImage< Pixel > const &mimg, int const flags, StatisticsControl const &sctrl=StatisticsControl())
Handle MaskedImages, just pass the getImage() and getMask() values right on through.
Definition: Statistics.h:381
Value getResult(Property const prop=NOTHING) const
Return the value and error in the specified statistic (e.g.
Definition: Statistics.cc:922
Statistics makeStatistics(ImageT const &img, MaskT const &msk, VarianceT const &var, int const flags, StatisticsControl const &sctrl=StatisticsControl())
Handle a straight front-end to the constructor.
Definition: Statistics.h:371
Statistics makeStatistics(lsst::afw::image::Image< Pixel > const &img, lsst::afw::image::Mask< image::MaskPixel > const &msk, int const flags, StatisticsControl const &sctrl=StatisticsControl())
Handle a watered-down front-end to the constructor (no variance)
Definition: Statistics.h:359
double getError(Property const prop=NOTHING) const
Return the error in the desired property (if specified in the constructor)
Definition: Statistics.cc:1049
~Statistics() noexcept=default
Statistics makeStatistics(lsst::afw::math::MaskedVector< EntryT > const &mv, std::vector< WeightPixel > const &vweights, int const flags, StatisticsControl const &sctrl=StatisticsControl())
The makeStatistics() overload to handle lsst::afw::math::MaskedVector<>
Definition: Statistics.h:525
Statistics makeStatistics(lsst::afw::math::MaskedVector< EntryT > const &mv, int const flags, StatisticsControl const &sctrl=StatisticsControl())
The makeStatistics() overload to handle lsst::afw::math::MaskedVector<>
Definition: Statistics.h:508
Statistics & operator=(Statistics const &)=default
Statistics makeStatistics(lsst::afw::image::MaskedImage< Pixel > const &mimg, lsst::afw::image::Image< WeightPixel > const &weights, int const flags, StatisticsControl const &sctrl=StatisticsControl())
Handle MaskedImages, just pass the getImage() and getMask() values right on through.
Definition: Statistics.h:396
Statistics(ImageT const &img, MaskT const &msk, VarianceT const &var, int const flags, StatisticsControl const &sctrl=StatisticsControl())
Constructor for Statistics object.
Definition: Statistics.cc:764
double getValue(Property const prop=NOTHING) const
Return the value of the desired property (if specified in the constructor)
Definition: Statistics.cc:1047
Statistics & operator=(Statistics &&)=default
std::pair< double, double > Value
The type used to report (value, error) for desired statistics.
Definition: Statistics.h:223
Statistics makeStatistics(std::vector< EntryT > const &v, std::vector< WeightPixel > const &vweights, int const flags, StatisticsControl const &sctrl=StatisticsControl())
The makeStatistics() overload to handle std::vector<>
Definition: Statistics.h:489
Statistics(Statistics const &)=default
lsst::afw::image::MaskPixel getOrMask() const noexcept
Definition: Statistics.h:288
Statistics(Statistics &&)=default
This iterator will never increment.
Definition: Statistics.h:330
friend class boost::iterator_core_access
Definition: Statistics.h:336
infinite_iterator(const ValueT *p)
Definition: Statistics.h:333
Reports invalid arguments.
Definition: Runtime.h:66
T empty(T... args)
T end(T... args)
Backwards-compatibility support for depersisting the old Calib (FluxMag0/FluxMag0Err) objects.
float VariancePixel
default type for MaskedImage variance images
class[[deprecated("Removed with no replacement (but see lsst::afw::image::TransmissionCurve). Will be " "removed after v22.")]] FilterProperty final
Describe the properties of a Filter (e.g.
Definition: Filter.h:53
std::int32_t MaskPixel
default type for Masks and MaskedImage Masks
Statistics makeStatistics(lsst::afw::image::Image< Pixel > const &img, lsst::afw::image::Mask< image::MaskPixel > const &msk, int const flags, StatisticsControl const &sctrl=StatisticsControl())
Handle a watered-down front-end to the constructor (no variance)
Definition: Statistics.h:359
Property
control what is calculated
Definition: Statistics.h:62
@ ORMASK
get the or-mask of all pixels used.
Definition: Statistics.h:79
@ ERRORS
Include errors of requested quantities.
Definition: Statistics.h:64
@ VARIANCECLIP
estimate sample N-sigma clipped variance (N set in StatisticsControl, default=3)
Definition: Statistics.h:73
@ MEANSQUARE
find mean value of square of pixel values
Definition: Statistics.h:78
@ MIN
estimate sample minimum
Definition: Statistics.h:75
@ NCLIPPED
number of clipped points
Definition: Statistics.h:80
@ NOTHING
We don't want anything.
Definition: Statistics.h:63
@ STDEV
estimate sample standard deviation
Definition: Statistics.h:67
@ NMASKED
number of masked points
Definition: Statistics.h:81
@ STDEVCLIP
estimate sample N-sigma clipped stdev (N set in StatisticsControl, default=3)
Definition: Statistics.h:72
@ VARIANCE
estimate sample variance
Definition: Statistics.h:68
@ MEDIAN
estimate sample median
Definition: Statistics.h:69
@ MAX
estimate sample maximum
Definition: Statistics.h:76
@ SUM
find sum of pixels in the image
Definition: Statistics.h:77
@ IQRANGE
estimate sample inter-quartile range
Definition: Statistics.h:70
@ MEAN
estimate sample mean
Definition: Statistics.h:66
@ MEANCLIP
estimate sample N-sigma clipped mean (N set in StatisticsControl, default=3)
Definition: Statistics.h:71
@ NPOINT
number of sample points
Definition: Statistics.h:65
Property stringToStatisticsProperty(std::string const property)
Conversion function to switch a string to a Property (see Statistics.h)
Definition: Statistics.cc:738
lsst::afw::image::VariancePixel WeightPixel
Definition: Statistics.h:57
Extent< int, 2 > Extent2I
Definition: Extent.h:397
A base class for image defects.
T size(T... args)
ImageT val
Definition: CR.cc:146