nidas  v1.2-1520
Classes | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
nidas::dynld::StatisticsCruncher Class Reference

#include <StatisticsCruncher.h>

Inheritance diagram for nidas::dynld::StatisticsCruncher:
Inheritance graph
[legend]

Classes

struct  sampleInfo
 

Public Types

enum  statsEnumType {
  STATS_UNKNOWN, STATS_MINIMUM, STATS_MAXIMUM, STATS_MEAN,
  STATS_VAR, STATS_COV, STATS_FLUX, STATS_RFLUX,
  STATS_SFLUX, STATS_TRIVAR, STATS_PRUNEDTRIVAR, STATS_WINDDIR,
  STATS_SUM
}
 Types of statistics I can generate. More...
 
typedef enum
nidas::dynld::StatisticsCruncher::statsEnumType 
statisticsType
 Types of statistics I can generate. More...
 

Public Member Functions

 StatisticsCruncher (StatisticsProcessor *proc, const SampleTag *stag, statisticsType type, std::string countsName, bool higherMoments)
 Constructor. More...
 
 ~StatisticsCruncher ()
 
SampleSourcegetRawSampleSource ()
 Several objects in NIDAS can be both a SampleSource of raw Samples and processed Samples. More...
 
SampleSourcegetProcessedSampleSource ()
 Several objects in NIDAS can be both a SampleSource of raw Samples and processed Samples. More...
 
std::list< const SampleTag * > getSampleTags () const
 Get the output SampleTags. More...
 
SampleTagIterator getSampleTagIterator () const
 Implementation of SampleSource::getSampleTagIterator(). More...
 
void addSampleClient (SampleClient *client) throw ()
 Implementation of SampleSource::addSampleClient(). More...
 
void removeSampleClient (SampleClient *client) throw ()
 Remove a SampleClient from this SampleSource. More...
 
void addSampleClientForTag (SampleClient *client, const SampleTag *) throw ()
 Add a Client for a given SampleTag. More...
 
void removeSampleClientForTag (SampleClient *client, const SampleTag *) throw ()
 Remove a SampleClient for a given SampleTag from this SampleSource. More...
 
int getClientCount () const throw ()
 How many SampleClients are currently in my list. More...
 
void flush () throw ()
 Implementation of Resampler::flush(). More...
 
const SampleStatsgetSampleStats () const
 
bool receive (const Sample *s) throw ()
 Method called to pass a sample to this client. More...
 
void connect (SampleSource *source) throw (nidas::util::InvalidParameterException)
 Connect a SamplePipeline to the cruncher. More...
 
void disconnect (SampleSource *source) throw ()
 
void connect (SampleOutput *output)
 Connect a SamplePipeline to the cruncher. More...
 
void disconnect (SampleOutput *output)
 
void setStartTime (const nidas::util::UTime &val)
 
nidas::util::UTime getStartTime () const
 
void setEndTime (const nidas::util::UTime &val)
 
nidas::util::UTime getEndTime () const
 
long long getPeriodUsecs () const
 
bool getFillGaps () const
 Whether to generate output samples over time gaps. More...
 
void setFillGaps (bool val)
 

Static Public Member Functions

static statisticsType getStatisticsType (const std::string &type) throw (nidas::util::InvalidParameterException)
 

Protected Member Functions

void attach (SampleSource *source) throw (nidas::util::InvalidParameterException)
 
void splitNames ()
 Split input variable names at periods. More...
 
std::string makeName (int i, int j=-1, int k=-1, int l=-1)
 Create a derived variable name from input variables i,j,k,l. More...
 
std::string makeUnits (int i, int j=-1, int k=-1, int l=-1)
 Create a derived units field from input variables i,j,k,l. More...
 
std::string makeUnits (const std::vector< std::string > &)
 
void createCombinations () throw (nidas::util::InvalidParameterException)
 
void setupMoments (unsigned int nvars, unsigned int moment)
 
void setupMinMax (const std::string &)
 
void setupWindDir () throw (nidas::util::InvalidParameterException)
 
void setupCovariances ()
 
void setupTrivariances ()
 
void setupPrunedTrivariances ()
 
void setupFluxes ()
 
void setupReducedFluxes ()
 
void setupReducedScalarFluxes ()
 
void initStats ()
 
void zeroStats ()
 
void computeStats ()
 
void addVariable (const std::string &name, const std::string &longname, const std::string &units)
 

Private Member Functions

void addSampleTag (const SampleTag *tag) throw ()
 Add a SampleTag to this SampleSource. More...
 
void removeSampleTag (const SampleTag *tag) throw ()
 
 StatisticsCruncher (const StatisticsCruncher &)
 No copy. More...
 
StatisticsCruncheroperator= (const StatisticsCruncher &)
 No assignment. More...
 

Private Attributes

StatisticsProcessor_proc
 
SampleSourceSupport _source
 
SampleTag _reqTag
 
std::vector< const Variable * > _reqVariables
 
unsigned int _ninvars
 Number of input variables. More...
 
std::string _countsName
 Name of counts variable. More...
 
bool _numpoints
 Does the user want number-of-points output? More...
 
dsm_time_t _periodUsecs
 
bool _crossTerms
 Does this cruncher compute cross-terms? More...
 
NearestResampler_resampler
 
statisticsType _statsType
 Types of statistics I can generate. More...
 
std::vector< std::vector
< std::string > > 
_splitVarNames
 Input variable names, split at dots. More...
 
std::string _leadCommon
 Portion after the first dot-separated word that is common to all variable names. More...
 
std::string _commonSuffix
 Trailing portion that is common to all variable names. More...
 
SampleTag _outSample
 
unsigned int _nOutVar
 
unsigned int _outlen
 
dsm_time_t _tout
 
std::map< dsm_sample_id_t,
sampleInfo
_sampleMap
 
float * _xMin
 
float * _xMax
 
double * _xSum
 
double ** _xySum
 
double * _xyzSum
 
double * _x4Sum
 
unsigned int * _nSamples
 
unsigned int ** _triComb
 
unsigned int _nsum
 Number of simple sums to maintain. More...
 
unsigned int _ncov
 Number of covariances to compute. More...
 
unsigned int _ntri
 Number of trivariances to compute. More...
 
unsigned int _n1mom
 Number of 1st,2nd,3rd,4th moments to compute. More...
 
unsigned int _n2mom
 
unsigned int _n3mom
 
unsigned int _n4mom
 
unsigned int _ntot
 Total number of products to compute. More...
 
bool _higherMoments
 
const Site_site
 
int _station
 
nidas::util::UTime _startTime
 
nidas::util::UTime _endTime
 
bool _fillGaps
 

Member Typedef Documentation

Types of statistics I can generate.

Member Enumeration Documentation

Types of statistics I can generate.

Enumerator
STATS_UNKNOWN 
STATS_MINIMUM 
STATS_MAXIMUM 
STATS_MEAN 
STATS_VAR 
STATS_COV 
STATS_FLUX 
STATS_RFLUX 
STATS_SFLUX 
STATS_TRIVAR 
STATS_PRUNEDTRIVAR 
STATS_WINDDIR 
STATS_SUM 

Constructor & Destructor Documentation

StatisticsCruncher::StatisticsCruncher ( StatisticsProcessor proc,
const SampleTag stag,
statisticsType  type,
std::string  countsName,
bool  higherMoments 
)
StatisticsCruncher::~StatisticsCruncher ( )
nidas::dynld::StatisticsCruncher::StatisticsCruncher ( const StatisticsCruncher )
private

No copy.

Member Function Documentation

void nidas::dynld::StatisticsCruncher::addSampleClient ( SampleClient client)
throw (
)
inlinevirtual
void nidas::dynld::StatisticsCruncher::addSampleClientForTag ( SampleClient client,
const SampleTag  
)
throw (
)
inlinevirtual

Add a Client for a given SampleTag.

Implementation of SampleSource::addSampleClient().

Implements nidas::core::SampleSource.

void nidas::dynld::StatisticsCruncher::addSampleTag ( const SampleTag tag)
throw (
)
inlineprivatevirtual

Add a SampleTag to this SampleSource.

This SampleSource does not own the SampleTag.

Implements nidas::core::SampleSource.

Referenced by StatisticsCruncher().

void StatisticsCruncher::addVariable ( const std::string &  name,
const std::string &  longname,
const std::string &  units 
)
protected
void StatisticsCruncher::attach ( SampleSource source)
throw (nidas::util::InvalidParameterException
)
protected
void StatisticsCruncher::computeStats ( )
protected
void StatisticsCruncher::connect ( SampleSource source)
throw (nidas::util::InvalidParameterException
)
virtual
void nidas::dynld::StatisticsCruncher::connect ( SampleOutput output)

Connect a SamplePipeline to the cruncher.

void StatisticsCruncher::createCombinations ( )
throw (nidas::util::InvalidParameterException
)
protected
void StatisticsCruncher::disconnect ( SampleSource source)
throw (
)
virtual
void nidas::dynld::StatisticsCruncher::disconnect ( SampleOutput output)
void StatisticsCruncher::flush ( )
throw (
)
virtual
int nidas::dynld::StatisticsCruncher::getClientCount ( ) const
throw (
)
inlinevirtual

How many SampleClients are currently in my list.

Implements nidas::core::SampleSource.

nidas::util::UTime nidas::dynld::StatisticsCruncher::getEndTime ( ) const
inline
bool nidas::dynld::StatisticsCruncher::getFillGaps ( ) const
inline

Whether to generate output samples over time gaps.

In some circumstances one might be generating statistics for separate time periods, and one does not want to output samples of missing data for the gaps between the periods.

long long nidas::dynld::StatisticsCruncher::getPeriodUsecs ( ) const
inline
SampleSource* nidas::dynld::StatisticsCruncher::getProcessedSampleSource ( )
inlinevirtual

Several objects in NIDAS can be both a SampleSource of raw Samples and processed Samples.

SampleClients use this method to get a pointer to whatever sample source they are interested in. Derived classes can return NULL if they are not a SampleSource of processed samples.

Implements nidas::core::SampleSource.

SampleSource* nidas::dynld::StatisticsCruncher::getRawSampleSource ( )
inlinevirtual

Several objects in NIDAS can be both a SampleSource of raw Samples and processed Samples.

SampleClients use this method to get a pointer to whatever sample source they are interested in. Derived classes can return NULL if they are not a SampleSource of raw samples.

Implements nidas::core::SampleSource.

const SampleStats& nidas::dynld::StatisticsCruncher::getSampleStats ( ) const
inlinevirtual
SampleTagIterator nidas::dynld::StatisticsCruncher::getSampleTagIterator ( ) const
inlinevirtual
std::list<const SampleTag*> nidas::dynld::StatisticsCruncher::getSampleTags ( ) const
inlinevirtual

Get the output SampleTags.

Implements nidas::core::SampleSource.

Referenced by nidas::dynld::StatisticsProcessor::connectSource().

nidas::util::UTime nidas::dynld::StatisticsCruncher::getStartTime ( ) const
inline
StatisticsCruncher::statisticsType StatisticsCruncher::getStatisticsType ( const std::string &  type)
throw (nidas::util::InvalidParameterException
)
static
void StatisticsCruncher::initStats ( )
protected
string StatisticsCruncher::makeName ( int  i,
int  j = -1,
int  k = -1,
int  l = -1 
)
protected

Create a derived variable name from input variables i,j,k,l.

Specify j,k,l for 2nd,3rd,4th order products.

References _commonSuffix, _leadCommon, and _splitVarNames.

Referenced by setupCovariances(), setupFluxes(), setupMoments(), setupPrunedTrivariances(), setupReducedFluxes(), setupReducedScalarFluxes(), and setupTrivariances().

string StatisticsCruncher::makeUnits ( int  i,
int  j = -1,
int  k = -1,
int  l = -1 
)
protected

Create a derived units field from input variables i,j,k,l.

Specify j,k,l for 2nd,3rd,4th order products.

References _reqVariables.

Referenced by setupCovariances(), setupFluxes(), setupMinMax(), setupMoments(), setupPrunedTrivariances(), setupReducedFluxes(), setupReducedScalarFluxes(), and setupTrivariances().

std::string StatisticsCruncher::makeUnits ( const std::vector< std::string > &  units)
protected
StatisticsCruncher& nidas::dynld::StatisticsCruncher::operator= ( const StatisticsCruncher )
private

No assignment.

bool StatisticsCruncher::receive ( const Sample s)
throw (
)
virtual

Method called to pass a sample to this client.

This method is typically called by a SampleSource for each of its SampleClients when it has a sample ready. Returns true: success false: sample rejected. This is meant to signal a warning-type situation - like a socket not being available temporarily. True errors will be thrown as an IOException.

Implements nidas::core::SampleClient.

References nidas::util::LogContext::active(), nidas::core::DOUBLE_ST, nidas::core::FLOAT_ST, nidas::util::UTime::format(), LOG_VERBOSE, nidas::dynld::StatisticsCruncher::sampleInfo::varIndices, nidas::dynld::StatisticsCruncher::sampleInfo::weightsIndex, and WLOG.

void nidas::dynld::StatisticsCruncher::removeSampleClient ( SampleClient c)
throw (
)
inlinevirtual
void nidas::dynld::StatisticsCruncher::removeSampleClientForTag ( SampleClient c,
const SampleTag  
)
throw (
)
inlinevirtual

Remove a SampleClient for a given SampleTag from this SampleSource.

The pointer to the SampleClient must remain valid, until after it is removed.

Implements nidas::core::SampleSource.

void nidas::dynld::StatisticsCruncher::removeSampleTag ( const SampleTag tag)
throw (
)
inlineprivatevirtual
void nidas::dynld::StatisticsCruncher::setEndTime ( const nidas::util::UTime val)
inline
void nidas::dynld::StatisticsCruncher::setFillGaps ( bool  val)
inline
void StatisticsCruncher::setStartTime ( const nidas::util::UTime val)
void StatisticsCruncher::setupCovariances ( )
protected
void StatisticsCruncher::setupFluxes ( )
protected
void StatisticsCruncher::setupMinMax ( const std::string &  )
protected
void StatisticsCruncher::setupMoments ( unsigned int  nvars,
unsigned int  moment 
)
protected
void StatisticsCruncher::setupPrunedTrivariances ( )
protected
void StatisticsCruncher::setupReducedFluxes ( )
protected
void StatisticsCruncher::setupReducedScalarFluxes ( )
protected
void StatisticsCruncher::setupTrivariances ( )
protected
void StatisticsCruncher::setupWindDir ( )
throw (nidas::util::InvalidParameterException
)
protected
void StatisticsCruncher::splitNames ( )
protected

Split input variable names at periods.

References _commonSuffix, _leadCommon, _reqVariables, and _splitVarNames.

Referenced by createCombinations().

void StatisticsCruncher::zeroStats ( )
protected

Member Data Documentation

std::string nidas::dynld::StatisticsCruncher::_commonSuffix
private

Trailing portion that is common to all variable names.

Referenced by initStats(), makeName(), setupMinMax(), setupWindDir(), and splitNames().

std::string nidas::dynld::StatisticsCruncher::_countsName
private

Name of counts variable.

Referenced by initStats().

bool nidas::dynld::StatisticsCruncher::_crossTerms
private

Does this cruncher compute cross-terms?

Referenced by StatisticsCruncher().

nidas::util::UTime nidas::dynld::StatisticsCruncher::_endTime
private
bool nidas::dynld::StatisticsCruncher::_fillGaps
private
bool nidas::dynld::StatisticsCruncher::_higherMoments
private

Referenced by computeStats(), and createCombinations().

std::string nidas::dynld::StatisticsCruncher::_leadCommon
private

Portion after the first dot-separated word that is common to all variable names.

Referenced by initStats(), makeName(), setupMinMax(), setupWindDir(), and splitNames().

unsigned int nidas::dynld::StatisticsCruncher::_n1mom
private

Number of 1st,2nd,3rd,4th moments to compute.

Referenced by computeStats(), createCombinations(), setupMinMax(), setupMoments(), and setupWindDir().

unsigned int nidas::dynld::StatisticsCruncher::_n2mom
private
unsigned int nidas::dynld::StatisticsCruncher::_n3mom
private
unsigned int nidas::dynld::StatisticsCruncher::_n4mom
private
unsigned int nidas::dynld::StatisticsCruncher::_ncov
private
unsigned int nidas::dynld::StatisticsCruncher::_ninvars
private
unsigned int nidas::dynld::StatisticsCruncher::_nOutVar
private
unsigned int* nidas::dynld::StatisticsCruncher::_nSamples
private
unsigned int nidas::dynld::StatisticsCruncher::_nsum
private
unsigned int nidas::dynld::StatisticsCruncher::_ntot
private

Total number of products to compute.

Referenced by computeStats(), createCombinations(), and initStats().

unsigned int nidas::dynld::StatisticsCruncher::_ntri
private
bool nidas::dynld::StatisticsCruncher::_numpoints
private

Does the user want number-of-points output?

Referenced by computeStats(), initStats(), and StatisticsCruncher().

unsigned int nidas::dynld::StatisticsCruncher::_outlen
private

Referenced by computeStats(), and initStats().

SampleTag nidas::dynld::StatisticsCruncher::_outSample
private
dsm_time_t nidas::dynld::StatisticsCruncher::_periodUsecs
private
StatisticsProcessor* nidas::dynld::StatisticsCruncher::_proc
private

Referenced by initStats().

SampleTag nidas::dynld::StatisticsCruncher::_reqTag
private

Referenced by StatisticsCruncher().

std::vector<const Variable*> nidas::dynld::StatisticsCruncher::_reqVariables
private
NearestResampler* nidas::dynld::StatisticsCruncher::_resampler
private

Referenced by ~StatisticsCruncher().

std::map<dsm_sample_id_t,sampleInfo > nidas::dynld::StatisticsCruncher::_sampleMap
private

Referenced by ~StatisticsCruncher().

const Site* nidas::dynld::StatisticsCruncher::_site
private

Referenced by StatisticsCruncher().

SampleSourceSupport nidas::dynld::StatisticsCruncher::_source
private

Referenced by computeStats().

std::vector<std::vector<std::string> > nidas::dynld::StatisticsCruncher::_splitVarNames
private

Input variable names, split at dots.

Referenced by makeName(), setupMinMax(), setupWindDir(), and splitNames().

nidas::util::UTime nidas::dynld::StatisticsCruncher::_startTime
private

Referenced by setStartTime().

int nidas::dynld::StatisticsCruncher::_station
private

Referenced by createCombinations(), and initStats().

statisticsType nidas::dynld::StatisticsCruncher::_statsType
private

Types of statistics I can generate.

Referenced by computeStats(), createCombinations(), initStats(), and StatisticsCruncher().

dsm_time_t nidas::dynld::StatisticsCruncher::_tout
private

Referenced by computeStats(), flush(), and setStartTime().

unsigned int** nidas::dynld::StatisticsCruncher::_triComb
private
double* nidas::dynld::StatisticsCruncher::_x4Sum
private
float* nidas::dynld::StatisticsCruncher::_xMax
private
float* nidas::dynld::StatisticsCruncher::_xMin
private
double* nidas::dynld::StatisticsCruncher::_xSum
private
double** nidas::dynld::StatisticsCruncher::_xySum
private
double* nidas::dynld::StatisticsCruncher::_xyzSum
private

The documentation for this class was generated from the following files: