Isis 3 Programmer Reference
StatCumProbDistDynCalc.h
1#ifndef StatCumProbDistDynCalc_h
2#define StatCumProbDistDynCalc_h
8/* SPDX-License-Identifier: CC0-1.0 */
9
10#include <QList>
11#include <QObject>
12#include <QVector>
13
14#include "XmlStackedHandler.h"
15
16class QDataStream;
17class QUuid;
18class QXmlStreamWriter;
19
20namespace Isis {
21 class Project;// ??? does xml stuff need project???
22 class XmlStackedHandlerReader;
23
66 Q_OBJECT
67 // class uses the P^2 Algorithim to calculate equiprobability cell histograms from a stream of
68 // data without storing the data
69 // see "The p^2 Algorithim for Dynamic Calculations of Quantiles and Histograms Without Storing
70 // Observations"
71 public:
72 StatCumProbDistDynCalc(unsigned int nodes=20, QObject *parent = 0); //individual qunatile value to be calculated
74 QObject *parent = 0); // TODO: does xml stuff need project???
77 StatCumProbDistDynCalc &operator=(const StatCumProbDistDynCalc &other);
78
79 void initialize(); // clears the member lists and initializes the rest of the member data to 0
80 void setQuantiles(unsigned int nodes); // initializes/resets the class to start new calculation
81
82 void validate();
83 void addObs(double obs);
84
85 double cumProb(double value); //given a value return the cumulative probility
86 double value(double cumProb); //given a cumulative probibility return a value
87 double max(); //return the largest value so far
88 double min(); //return the smallest values so far
89
90 void save(QXmlStreamWriter &stream, const Project *project) const; // TODO: does xml stuff need project???
91
92 QDataStream &write(QDataStream &stream) const;
93 QDataStream &read(QDataStream &stream);
94
95 private:
103 public:
104 XmlHandler(StatCumProbDistDynCalc *probabilityCalc, Project *project); // TODO: does xml stuff need project???
105 ~XmlHandler();
106
107 virtual bool startElement(const QString &namespaceURI, const QString &localName,
108 const QString &qName, const QXmlAttributes &atts);
109 virtual bool characters(const QString &ch);
110 virtual bool endElement(const QString &namespaceURI, const QString &localName,
111 const QString &qName);
112
113 private:
114 Q_DISABLE_COPY(XmlHandler);
115
116 StatCumProbDistDynCalc *m_xmlHandlerCumProbCalc;
117 Project *m_xmlHandlerProject; // TODO: does xml stuff need project???
118 QString m_xmlHandlerCharacters;
119 };
120
121 unsigned int m_numberCells;
124 unsigned int m_numberQuantiles;
128 unsigned int m_numberObservations;
131 QList<double> m_quantiles;
133 QList<double> m_observationValues;
145 };
146
147 // operators to read/write StatCumProbDistDynCalc to/from binary data
148 QDataStream &operator<<(QDataStream &stream, const StatCumProbDistDynCalc &scpddc);
149 QDataStream &operator>>(QDataStream &stream, StatCumProbDistDynCalc &scpddc);
150
151} //end namespace Isis
152
153#endif
The main project for ipce.
Definition Project.h:289
This class is used to approximate cumulative probibility distributions of a stream of observations wi...
QList< int > m_numObsBelowQuantile
The actual number of observations that are less than or equal to the value of the corresponding quant...
unsigned int m_numberObservations
The number of observations, note this is dynamically changing as observations are added.
double min()
Returns the maximum observation so far included in the dynamic calculation.
QList< double > m_idealNumObsBelowQuantile
The ideal number of observations that should be less than or equal to the value of the corresponding ...
QList< double > m_observationValues
The calculated values of the quantiles, note this is dynamically changing as observations are added.
StatCumProbDistDynCalc(unsigned int nodes=20, QObject *parent=0)
Construtor sets up the class to start recieving data.
void initialize()
Inializer, resets the class to start its dynamic calculation anew.
unsigned int m_numberCells
The number of cells or histogram bins that are being used to model the probility density function.
~StatCumProbDistDynCalc()
Destroys StatCumProbDistDynCalc object.
unsigned int m_numberQuantiles
The number of quantiles being used to model the probility density function.
QList< double > m_quantiles
The target quantiles being modeled, between 0 and 1.
double value(double cumProb)
Provides the value of the variable that has the given cumulative probility (according the current est...
void addObs(double obs)
Values for the estimated quantile positions are update as observations are added.
double cumProb(double value)
Provides the cumulative probility, that is, the proportion of the distribution that is less than or e...
double max()
Returns the maximum observation so far included in the dynamic calculation.
XML Handler that parses XMLs in a stack-oriented way.
Manage a stack of content handlers for reading XML files.
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
std::istream & operator>>(std::istream &is, CSVReader &csv)
Input read operator for input stream sources.
QDebug operator<<(QDebug debug, const Hillshade &hillshade)
Print this class out to a QDebug object.