Isis 3 Programmer Reference
Histogram.h
1#ifndef Histogram_h
2#define Histogram_h
9#include "Cube.h"
10#include "Constants.h"
11#include "IException.h"
12#include "Progress.h"
13#include "SpecialPixel.h"
14#include "Statistics.h"
15
16namespace Isis {
17 class ControlNet;
18 class ControlMeasure;
74 class Histogram : public Statistics {
75 public:
76 Histogram() = default;
77 Histogram(double minimum, double maximum,
78 int bins = 1024);
79 Histogram(Cube &cube, int statsBand, Progress *progress = NULL,
80 double startSample = 1.0, double startLine = 1.0,
81 double endSample = Null, double endLine = Null, int bins = 0,
82 bool addCubeData = false);
83
84 //constuctors that use ControlNetworks to build histograms of ControlMeasure data
85 Histogram(ControlNet &net, double(ControlMeasure::*statFunc)() const, int bins);
86 Histogram(ControlNet &net, double(ControlMeasure::*statFunc)() const, double binWidth);
87
88 ~Histogram();
89
90 void SetBins(const int bins);
91
92 void Reset();
93 virtual void AddData(const double *data, const unsigned int count);
94 virtual void AddData(const double data);
95 virtual void RemoveData(const double *data, const unsigned int count);
96
97 double Median() const;
98 double Mode() const;
99 double Percent(const double percent) const;
100 double Skew() const;
101
102 BigInt BinCount(const int index) const;
103 virtual void BinRange(const int index, double &low, double &high) const;
104 double BinMiddle(const int index) const;
105 double BinSize() const;
106 int Bins() const;
107 BigInt MaxBinCount() const;
108
109 double BinRangeStart() const {
110 return p_binRangeStart;
111 }
112 double BinRangeEnd() const {
113 return p_binRangeEnd;
114 }
115 //void SetBinRange(double binStart, double binEnd);
116 void SetValidRange(const double minimum = Isis::ValidMinimum,
117 const double maximum = Isis::ValidMaximum);
118
119 protected:
121 std::vector<BigInt> p_bins;
122
123 private:
124 double p_binRangeStart, p_binRangeEnd;
125 void addMeasureDataFromNet(ControlNet &net, double(ControlMeasure::*statFunc)() const);
126 void rangesFromNet(ControlNet &net, double(ControlMeasure::*statFunc)() const);
127 };
128};
129
130#endif
a control measurement
a control network
Definition ControlNet.h:258
IO Handler for Isis Cubes.
Definition Cube.h:168
Container of a cube histogram.
Definition Histogram.h:74
void SetBins(const int bins)
Change the number of bins in the histogram and reset counters.
double BinSize() const
Returns the size of an individual bin.
BigInt BinCount(const int index) const
Returns the count at a bin position in the histogram.
std::vector< BigInt > p_bins
The array of counts.
Definition Histogram.h:121
void addMeasureDataFromNet(ControlNet &net, double(ControlMeasure::*statFunc)() const)
Iterates through all the measures in a network adding them to the histogram.
double BinMiddle(const int index) const
Returns the value represented by a bin.
void SetValidRange(const double minimum=Isis::ValidMinimum, const double maximum=Isis::ValidMaximum)
Changes the range of the bins.
double Median() const
Returns the median.
int Bins() const
Returns the number of bins in the histogram.
virtual void RemoveData(const double *data, const unsigned int count)
Remove an array of doubles from the histogram counters.
double Percent(const double percent) const
Computes and returns the value at X percent of the histogram.
double Mode() const
Returns the mode.
BigInt MaxBinCount() const
Returns the highest bin count.
~Histogram()
Destructs a histogram object.
virtual void AddData(const double *data, const unsigned int count)
Add an array of doubles to the histogram counters.
void Reset()
Resets histogram counters to zero.
double Skew() const
Computes and returns the skew.
void rangesFromNet(ControlNet &net, double(ControlMeasure::*statFunc)() const)
Iterates through all the measures in a network in order to find the domain of the data.
virtual void BinRange(const int index, double &low, double &high) const
Returns the left edge and right edge values of a bin.
Program progress reporter.
Definition Progress.h:42
This class is used to accumulate statistics on double arrays.
Definition Statistics.h:94
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
const double ValidMaximum
The maximum valid double value for Isis pixels.
const double Null
Value for an Isis Null pixel.
long long int BigInt
Big int.
Definition Constants.h:49
const double ValidMinimum
The minimum valid double value for Isis pixels.