27 #ifndef NIDAS_DYNLD_STATISTICSCRUNCHER_H
28 #define NIDAS_DYNLD_STATISTICSCRUNCHER_H
39 namespace nidas {
namespace dynld {
41 class StatisticsProcessor;
43 using namespace nidas::core;
55 STATS_UNKNOWN,STATS_MINIMUM,STATS_MAXIMUM,STATS_MEAN,
STATS_VAR,
64 const SampleTag* stag,statisticsType type,
65 std::string countsName,
bool higherMoments);
79 return _source.getSampleTags();
87 return _source.getSampleTagIterator();
95 _source.addSampleClient(client);
100 _source.removeSampleClient(client);
110 _source.addSampleClient(client);
115 _source.removeSampleClient(client);
120 return _source.getClientCount();
126 void flush() throw();
130 return _source.getSampleStats();
133 bool receive(
const Sample *s)
throw();
149 static statisticsType getStatisticsType(
const std::string& type)
204 std::string makeName(
int i,
int j=-1,
int k=-1,
int l=-1);
210 std::string makeUnits(
int i,
int j=-1,
int k=-1,
int l=-1);
212 std::string makeUnits(
const std::vector<std::string>&);
214 void createCombinations()
217 void setupMoments(
unsigned int nvars,
unsigned int moment);
219 void setupMinMax(const std::
string&);
222 throw(nidas::util::InvalidParameterException);
224 void setupCovariances();
226 void setupTrivariances();
228 void setupPrunedTrivariances();
232 void setupReducedFluxes();
234 void setupReducedScalarFluxes();
243 addVariable(const std::
string& name,
244 const std::
string& longname,
245 const std::
string& units);
254 _source.addSampleTag(tag);
259 _source.removeSampleTag(tag);
364 unsigned int _n1mom,_n2mom,_n3mom,
_n4mom;
Interface for a resampler, simply a SampleClient and a SampleSource.
Definition: Resampler.h:39
std::string _leadCommon
Portion after the first dot-separated word that is common to all variable names.
Definition: StatisticsCruncher.h:308
nidas::util::UTime _startTime
Definition: StatisticsCruncher.h:377
void addSampleClient(SampleClient *client)
Implementation of SampleSource::addSampleClient().
Definition: StatisticsCruncher.h:93
StatisticsProcessor * _proc
Definition: StatisticsCruncher.h:262
const Site * _site
Definition: StatisticsCruncher.h:373
sampleInfo()
Definition: StatisticsCruncher.h:324
Definition: StatisticsCruncher.h:56
A class for parsing, formatting and doing operations on time, based on Unix time conventions, where leap seconds are ignored, so that there are always 60 seconds in a minute, 3600 seconds in an hour and 86400 seconds in a day.
Definition: UTime.h:76
bool _fillGaps
Definition: StatisticsCruncher.h:381
std::vector< const Variable * > _reqVariables
Definition: StatisticsCruncher.h:268
unsigned int weightsIndex
Definition: StatisticsCruncher.h:325
bool _numpoints
Does the user want number-of-points output?
Definition: StatisticsCruncher.h:283
Definition: StatisticsCruncher.h:55
std::list< const SampleTag * > getSampleTags() const
Get the output SampleTags.
Definition: StatisticsCruncher.h:77
std::string _countsName
Name of counts variable.
Definition: StatisticsCruncher.h:278
A measurement site.
Definition: Site.h:49
dsm_time_t _periodUsecs
Definition: StatisticsCruncher.h:285
double * _xyzSum
Definition: StatisticsCruncher.h:339
void setEndTime(const nidas::util::UTime &val)
Definition: StatisticsCruncher.h:159
Interface of an output stream of samples.
Definition: SampleOutput.h:47
long long dsm_time_t
Posix time in microseconds, the number of non-leap microseconds since 1970 Jan 1 00:00 UTC...
Definition: Sample.h:61
Pure virtual interface for a source of Samples.
Definition: SampleSource.h:48
nidas::util::UTime _endTime
Definition: StatisticsCruncher.h:379
A source of samples.
Definition: SampleSourceSupport.h:47
bool getFillGaps() const
Whether to generate output samples over time gaps.
Definition: StatisticsCruncher.h:181
void addSampleClientForTag(SampleClient *client, const SampleTag *)
Add a Client for a given SampleTag.
Definition: StatisticsCruncher.h:107
std::string _commonSuffix
Trailing portion that is common to all variable names.
Definition: StatisticsCruncher.h:313
Pure virtual interface of a client of Samples.
Definition: SampleClient.h:38
SampleTagIterator getSampleTagIterator() const
Implementation of SampleSource::getSampleTagIterator().
Definition: StatisticsCruncher.h:85
unsigned int _ninvars
Number of input variables.
Definition: StatisticsCruncher.h:273
std::vector< std::vector< std::string > > _splitVarNames
Input variable names, split at dots.
Definition: StatisticsCruncher.h:302
Definition: StatisticsCruncher.h:57
nidas::util::UTime getEndTime() const
Definition: StatisticsCruncher.h:164
void removeSampleTag(const SampleTag *tag)
Definition: StatisticsCruncher.h:257
double * _x4Sum
Definition: StatisticsCruncher.h:340
float * _xMin
Definition: StatisticsCruncher.h:331
float * _xMax
Definition: StatisticsCruncher.h:333
nidas::util::UTime getStartTime() const
Definition: StatisticsCruncher.h:154
SampleSourceSupport _source
Definition: StatisticsCruncher.h:264
NearestResampler * _resampler
Definition: StatisticsCruncher.h:292
unsigned int _n4mom
Definition: StatisticsCruncher.h:364
unsigned int * _nSamples
Definition: StatisticsCruncher.h:342
unsigned int _ncov
Number of covariances to compute.
Definition: StatisticsCruncher.h:354
Definition: StatisticsCruncher.h:47
unsigned int _ntri
Number of trivariances to compute.
Definition: StatisticsCruncher.h:359
Interface to a data sample.
Definition: Sample.h:189
void removeSampleClient(SampleClient *client)
Remove a SampleClient from this SampleSource.
Definition: StatisticsCruncher.h:98
Class for iterating over the SampleTags of a Project, Site, DSMConfig, or a SampleSource.
Definition: NidsIterators.h:217
statisticsType _statsType
Types of statistics I can generate.
Definition: StatisticsCruncher.h:297
unsigned int _outlen
Definition: StatisticsCruncher.h:319
unsigned int _nsum
Number of simple sums to maintain.
Definition: StatisticsCruncher.h:349
Class describing a group of variables that are sampled and handled together.
Definition: SampleTag.h:87
Definition: StatisticsCruncher.h:323
A source of samples.
Definition: SampleStats.h:41
dsm_time_t _tout
Definition: StatisticsCruncher.h:321
bool _crossTerms
Does this cruncher compute cross-terms?
Definition: StatisticsCruncher.h:290
unsigned int _ntot
Total number of products to compute.
Definition: StatisticsCruncher.h:369
enum nidas::dynld::StatisticsCruncher::statsEnumType statisticsType
Types of statistics I can generate.
SampleTag _outSample
Definition: StatisticsCruncher.h:315
long long getPeriodUsecs() const
Definition: StatisticsCruncher.h:169
statsEnumType
Types of statistics I can generate.
Definition: StatisticsCruncher.h:54
Interface of a processor of samples.
Definition: StatisticsProcessor.h:43
SampleTag _reqTag
Definition: StatisticsCruncher.h:266
void setFillGaps(bool val)
Definition: StatisticsCruncher.h:186
std::vector< unsigned int * > varIndices
Definition: StatisticsCruncher.h:326
double * _xSum
Definition: StatisticsCruncher.h:336
unsigned int _nOutVar
Definition: StatisticsCruncher.h:317
double ** _xySum
Definition: StatisticsCruncher.h:338
void removeSampleClientForTag(SampleClient *client, const SampleTag *)
Remove a SampleClient for a given SampleTag from this SampleSource.
Definition: StatisticsCruncher.h:113
A simple, nearest-point resampler, for generating merged samples from variables from one or more samp...
Definition: NearestResampler.h:54
bool _higherMoments
Definition: StatisticsCruncher.h:371
unsigned int ** _triComb
Definition: StatisticsCruncher.h:344
SampleSource * getProcessedSampleSource()
Several objects in NIDAS can be both a SampleSource of raw Samples and processed Samples.
Definition: StatisticsCruncher.h:71
int getClientCount() const
How many SampleClients are currently in my list.
Definition: StatisticsCruncher.h:118
std::map< dsm_sample_id_t, sampleInfo > _sampleMap
Definition: StatisticsCruncher.h:329
Definition: InvalidParameterException.h:35
int _station
Definition: StatisticsCruncher.h:375
SampleSource * getRawSampleSource()
Several objects in NIDAS can be both a SampleSource of raw Samples and processed Samples.
Definition: StatisticsCruncher.h:69