Isis Developer Reference
Statistics.h
Go to the documentation of this file.
1#ifndef Statistics_h
2#define Statistics_h
8/* SPDX-License-Identifier: CC0-1.0 */
9
10#include <QObject>
11#include <QString>
12
13#include "Constants.h"
14#include "PvlGroup.h"
15#include "SpecialPixel.h"
16#include "XmlStackedHandler.h"
17
18class QDataStream;
19class QUuid;
20class QXmlStreamWriter;
21
22namespace Isis {
23 class Project;// ??? does xml stuff need project???
24 class XmlStackedHandlerReader;
94 class Statistics : public QObject {
95 Q_OBJECT
96 public:
97 Statistics(QObject *parent = 0);
98 Statistics(Project *project, XmlStackedHandlerReader *xmlReader, QObject *parent = 0);
99 Statistics(const PvlGroup &inStats, QObject *parent = 0);
100 // TODO: does xml read/write stuff need Project input???
101 Statistics(const Statistics &other);
102 virtual ~Statistics();
103 Statistics &operator=(const Statistics &other);
104
105 void Reset();
106
107 void AddData(const double *data, const unsigned int count);
108 void AddData(const double data);
109
110 void RemoveData(const double *data, const unsigned int count);
111 void RemoveData(const double data);
112
113 void SetValidRange(const double minimum = Isis::ValidMinimum,
114 const double maximum = Isis::ValidMaximum);
115
116 double ValidMinimum() const;
117 double ValidMaximum() const;
118 bool InRange(const double value);
119 bool AboveRange(const double value);
120 bool BelowRange(const double value);
121
122 double Average() const;
123 double StandardDeviation() const;
124 double Variance() const;
125 double Sum() const;
126 double SumSquare() const;
127 double Rms() const;
128
129 double Minimum() const;
130 double Maximum() const;
131 double ChebyshevMinimum(const double percent = 99.5) const;
132 double ChebyshevMaximum(const double percent = 99.5) const;
133 double BestMinimum(const double percent = 99.5) const;
134 double BestMaximum(const double percent = 99.5) const;
135 double ZScore(const double value) const;
136
137 BigInt TotalPixels() const;
138 BigInt ValidPixels() const;
139 BigInt OverRangePixels() const;
140 BigInt UnderRangePixels() const;
141 BigInt NullPixels() const;
142 BigInt LisPixels() const;
143 BigInt LrsPixels() const;
144 BigInt HisPixels() const;
145 BigInt HrsPixels() const;
146 BigInt OutOfRangePixels() const;
147 bool RemovedData() const;
148
149 PvlGroup toPvl(QString name = "Statistics") const;
150
151 void save(QXmlStreamWriter &stream, const Project *project) const;
152 // TODO: does xml stuff need project???
153
154 QDataStream &write(QDataStream &stream) const;
155 QDataStream &read(QDataStream &stream);
156
157 private:
158
159 void fromPvl(const PvlGroup &inStats);
160
167 class XmlHandler : public XmlStackedHandler {
168 public:
169 XmlHandler(Statistics *statistics, Project *project);
170 // TODO: does xml stuff need project???
171 ~XmlHandler();
172
173 virtual bool startElement(const QString &namespaceURI, const QString &localName,
174 const QString &qName, const QXmlAttributes &atts);
175 virtual bool characters(const QString &ch);
176 virtual bool endElement(const QString &namespaceURI, const QString &localName,
177 const QString &qName);
178
179 private:
180 Q_DISABLE_COPY(XmlHandler);
181
182 Statistics *m_xmlHandlerStatistics;
183 Project *m_xmlHandlerProject;
184 // TODO: does xml stuff need project???
185 QString m_xmlHandlerCharacters;
186 };
187
188// QUuid *m_id; /**< A unique ID for this object (useful for others to reference
189// this object when saving to disk).*/
190 double m_sum;
191 double m_sumsum;
193 double m_minimum;
194 double m_maximum;
195 double m_validMinimum;
196 double m_validMaximum;
197 BigInt m_totalPixels;
198 BigInt m_validPixels;
199 BigInt m_nullPixels;
200 BigInt m_lrsPixels;
201 BigInt m_lisPixels;
202 BigInt m_hrsPixels;
203 BigInt m_hisPixels;
204 BigInt m_underRangePixels;
205 BigInt m_overRangePixels;
206 bool m_removedData;
208 };
209
210 // operators to read/write Statistics to/from binary data
211 QDataStream &operator<<(QDataStream &stream, const Statistics &statistics);
212 QDataStream &operator>>(QDataStream &stream, Statistics &statistics);
213
214} // end namespace isis
215
216#endif
217
The main project for ipce.
Definition Project.h:289
Contains multiple PvlContainers.
Definition PvlGroup.h:41
This class is used to accumulate statistics on double arrays.
Definition Statistics.h:94
BigInt NullPixels() const
Returns the total number of NULL pixels encountered.
Definition Statistics.cpp:465
BigInt OverRangePixels() const
Returns the total number of pixels over the valid range encountered.
Definition Statistics.cpp:444
double ChebyshevMinimum(const double percent=99.5) const
This method returns a minimum such that X percent of the data will fall with K standard deviations of...
Definition Statistics.cpp:545
double Sum() const
Returns the sum of all the data.
Definition Statistics.cpp:341
BigInt UnderRangePixels() const
Returns the total number of pixels under the valid range encountered.
Definition Statistics.cpp:455
double Average() const
Computes and returns the average.
Definition Statistics.cpp:300
void SetValidRange(const double minimum=Isis::ValidMinimum, const double maximum=Isis::ValidMaximum)
Definition Statistics.cpp:255
BigInt LisPixels() const
Returns the total number of low instrument saturation (LIS) pixels encountered.
Definition Statistics.cpp:476
virtual ~Statistics()
Destroys the IsisStats object.
Definition Statistics.cpp:77
double Minimum() const
Returns the absolute minimum double found in all data passed through the AddData method.
Definition Statistics.cpp:382
QDataStream & read(QDataStream &stream)
Definition Statistics.cpp:879
BigInt HrsPixels() const
Returns the total number of high representation saturation (HRS) pixels encountered.
Definition Statistics.cpp:509
BigInt HisPixels() const
Returns the total number of high instrument saturation (HIS) pixels encountered.
Definition Statistics.cpp:498
double BestMinimum(const double percent=99.5) const
This method returns the better of the absolute minimum or the Chebyshev minimum.
Definition Statistics.cpp:598
bool RemovedData() const
Definition Statistics.cpp:525
BigInt OutOfRangePixels() const
Returns the total number of pixels outside of the valid range encountered.
Definition Statistics.cpp:520
double ValidMinimum() const
Definition Statistics.cpp:269
BigInt ValidPixels() const
Returns the total number of valid pixels processed.
Definition Statistics.cpp:433
double ValidMaximum() const
Definition Statistics.cpp:274
double ChebyshevMaximum(const double percent=99.5) const
This method returns a maximum such that X percent of the data will fall with K standard deviations of...
Definition Statistics.cpp:572
double ZScore(const double value) const
This method returns the better of the z-score of the given value.
Definition Statistics.cpp:649
double SumSquare() const
Returns the sum of all the squared data.
Definition Statistics.cpp:351
BigInt TotalPixels() const
Returns the total number of pixels processed (valid and invalid).
Definition Statistics.cpp:420
QDataStream & write(QDataStream &stream) const
Order saved must match the offsets in the static compoundH5DataType() method.
Definition Statistics.cpp:856
bool AboveRange(const double value)
Definition Statistics.cpp:284
PvlGroup toPvl(QString name="Statistics") const
Serialize statistics as a pvl group.
Definition Statistics.cpp:695
void AddData(const double *data, const unsigned int count)
Add an array of doubles to the accumulators and counters.
Definition Statistics.cpp:141
double Rms() const
Computes and returns the rms.
Definition Statistics.cpp:365
double BestMaximum(const double percent=99.5) const
This method returns the better of the absolute maximum or the Chebyshev maximum.
Definition Statistics.cpp:625
double Maximum() const
Returns the absolute maximum double found in all data passed through the AddData method.
Definition Statistics.cpp:403
BigInt LrsPixels() const
Returns the total number of low representation saturation (LRS) pixels encountered.
Definition Statistics.cpp:487
void RemoveData(const double *data, const unsigned int count)
Remove an array of doubles from the accumulators and counters.
Definition Statistics.cpp:206
double StandardDeviation() const
Computes and returns the standard deviation.
Definition Statistics.cpp:312
double Variance() const
Computes and returns the variance.
Definition Statistics.cpp:328
Statistics & operator=(const Statistics &other)
Definition Statistics.cpp:83
bool BelowRange(const double value)
Definition Statistics.cpp:289
void save(QXmlStreamWriter &stream, const Project *project) const
Definition Statistics.cpp:726
Statistics(QObject *parent=0)
Constructs an IsisStats object with accumulators and counters set to zero.
Definition Statistics.cpp:28
void Reset()
Reset all accumulators and counters to zero.
Definition Statistics.cpp:113
bool InRange(const double value)
Definition Statistics.cpp:279
XML Handler that parses XMLs in a stack-oriented way.
Definition XmlStackedHandler.h:118
Manage a stack of content handlers for reading XML files.
Definition XmlStackedHandlerReader.h:30
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.
Definition SpecialPixel.h:122
long long int BigInt
Big int.
Definition Constants.h:49
const double ValidMinimum
The minimum valid double value for Isis pixels.
Definition SpecialPixel.h:87
std::istream & operator>>(std::istream &is, CSVReader &csv)
Input read operator for input stream sources.
Definition CSVReader.cpp:447
QDebug operator<<(QDebug debug, const Hillshade &hillshade)
Print this class out to a QDebug object.
Definition Hillshade.cpp:313