25 #ifndef UQ_VECTOR_SEQUENCE_H
26 #define UQ_VECTOR_SEQUENCE_H
28 #undef UQ_CODE_HAS_MONITORS
30 #include <queso/VectorSpace.h>
31 #include <queso/BoxSubset.h>
32 #include <queso/ScalarSequence.h>
33 #include <queso/SequenceStatisticalOptions.h>
34 #include <queso/ArrayOfOneDGrids.h>
35 #include <queso/ArrayOfOneDTables.h>
36 #include <queso/2dArrayOfStuff.h>
53 template <
class V,
class M>
62 const std::string&
name);
88 const std::string&
name ()
const;
91 void setName (
const std::string& newName);
142 unsigned int initialPos,
143 unsigned int numPos);
165 virtual void resizeSequence (
unsigned int newSubSequenceSize) = 0;
169 virtual void resetValues (
unsigned int initialPos,
unsigned int numPos) = 0;
173 virtual void erasePositions (
unsigned int initialPos,
unsigned int numPos) = 0;
185 void setGaussian (
const V& meanVec,
const V& stdDevVec);
189 void setUniform (
const V& aVec,
const V& bVec );
194 V& meanVec)
const = 0;
199 V& unifiedMeanVec)
const = 0;
203 V& medianVec)
const = 0;
206 unsigned int localNumPos,
207 V& unifiedMedianVec)
const = 0;
212 V& samVec)
const = 0;
216 const V& unifiedMeanVec,
217 V& unifiedSamVec)
const = 0;
222 V& popVec)
const = 0;
226 const V& unifiedMeanVec,
227 V& unifiedPopVec)
const = 0;
238 V& covVec)
const = 0;
243 V& corrVec)
const = 0;
247 const std::vector<unsigned int>& lags,
248 std::vector<V*>& corrVecs)
const = 0;
253 V& autoCorrsSumVec)
const = 0;
260 V& maxVec)
const = 0;
265 V& unifiedMaxVec)
const = 0;
275 std::vector<V*>& centersForAllBins,
276 std::vector<V*>& quanttsForAllBins)
const = 0;
279 const V& unifiedMinVec,
280 const V& unifiedMaxVec,
281 std::vector<V*>& unifiedCentersForAllBins,
282 std::vector<V*>& unifiedQuanttsForAllBins)
const = 0;
286 V& iqrVec)
const = 0;
289 V& unifiedIqrVec)
const = 0;
302 unsigned int kdeDimension,
303 V& scaleVec)
const = 0;
306 const V& unifiedIqrVec,
307 unsigned int kdeDimension,
308 V& unifiedScaleVec)
const = 0;
316 const std::vector<V*>& evaluationParamVecs,
317 std::vector<V*>& densityVecs)
const = 0;
320 const V& unifiedScaleVec,
321 const std::vector<V*>& unifiedEvaluationParamVecs,
322 std::vector<V*>& unifiedDensityVecs)
const = 0;
326 const std::string& fileName,
327 const std::string& fileType,
328 const std::set<unsigned int>& allowedSubEnvIds)
const = 0;
332 std::ofstream& ofsvar,
333 const std::string& fileType)
const = 0;
336 const std::string& fileType)
const = 0;
339 const std::string& fileType,
340 const unsigned int subSequenceSize) = 0;
342 virtual void select (
const std::vector<unsigned int>& idsOfUniquePositions) = 0;
345 virtual void filter (
unsigned int initialPos,
346 unsigned int spacing) = 0;
349 unsigned int & initialPos,
350 unsigned int & spacing);
353 unsigned int numPos)
const = 0;
356 unsigned int spacing,
358 unsigned int paramId,
361 #ifdef QUESO_COMPUTES_EXTRA_POST_PROCESSING_STATISTICS
362 virtual void subUniformlySampledCdf (
const V& numEvaluationPointsVec,
365 virtual void unifiedUniformlySampledCdf (
const V& numEvaluationPointsVec,
368 virtual void bmm (
unsigned int initialPos,
369 unsigned int batchLength,
370 V& bmmVec)
const = 0;
371 virtual void fftForward (
unsigned int initialPos,
372 unsigned int fftSize,
373 unsigned int paramId,
374 std::vector<std::complex<double> >& fftResult)
const = 0;
376 virtual void psd (
unsigned int initialPos,
377 unsigned int numBlocks,
379 unsigned int paramId,
380 std::vector<double>& psdResult)
const = 0;
381 virtual void psdAtZero (
unsigned int initialPos,
382 unsigned int numBlocks,
384 V& psdVec)
const = 0;
385 virtual void geweke (
unsigned int initialPos,
388 V& gewVec)
const = 0;
389 virtual void meanStacc (
unsigned int initialPos,
390 V& meanStaccVec)
const = 0;
391 virtual void subCdfStacc (
unsigned int initialPos,
392 const std::vector<V*>& evalPositionsVecs, std::vector<V*>& cdfStaccVecs)
const = 0;
393 #endif //QUESO_COMPUTES_EXTRA_POST_PROCESSING_STATISTICS
395 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
396 void computeHistCdfstaccKde (
const SequenceStatisticalOptions& statisticalOptions,
397 std::ofstream* passedOfs);
399 void computeStatistics (
const SequenceStatisticalOptions& statisticalOptions,
400 std::ofstream* passedOfs);
401 #endif //QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
403 #ifdef UQ_ALSO_COMPUTE_MDFS_WITHOUT_KDE
404 virtual void subUniformlySampledMdf (
const V& numEvaluationPointsVec,
407 #endif //UQ_ALSO_COMPUTE_MDFS_WITHOUT_KDE
418 unsigned int spacing,
420 unsigned int paramId,
421 std::vector<double>& rawData)
const = 0;
442 #ifdef UQ_CODE_HAS_MONITORS
443 virtual void subMeanMonitorAlloc (
unsigned int numberOfMonitorPositions) = 0;
444 virtual void subMeanInter0MonitorAlloc (
unsigned int numberOfMonitorPositions) = 0;
445 virtual void unifiedMeanMonitorAlloc (
unsigned int numberOfMonitorPositions) = 0;
447 virtual void subMeanMonitorRun (
unsigned int monitorPosition,
449 V& subMeanCltStd) = 0;
450 virtual void subMeanInter0MonitorRun (
unsigned int monitorPosition,
451 V& subMeanInter0Mean,
452 V& subMeanInter0Clt95,
453 V& subMeanInter0Empirical90,
455 V& subMeanInter0Max) = 0;
456 virtual void unifiedMeanMonitorRun (
unsigned int monitorPosition,
458 V& unifiedMeanCltStd) = 0;
460 virtual void subMeanMonitorStore (
unsigned int i,
461 unsigned int monitorPosition,
463 const V& subMeanCltStd) = 0;
464 virtual void subMeanInter0MonitorStore (
unsigned int i,
465 unsigned int monitorPosition,
466 const V& subMeanInter0Mean,
467 const V& subMeanInter0Clt95,
468 const V& subMeanInter0Empirical90,
469 const V& subMeanInter0Min,
470 const V& subMeanInter0Max) = 0;
471 virtual void unifiedMeanMonitorStore (
unsigned int i,
472 unsigned int monitorPosition,
474 V& unifiedMeanCltStd) = 0;
476 virtual void subMeanMonitorWrite (std::ofstream& ofs) = 0;
477 virtual void subMeanInter0MonitorWrite (std::ofstream& ofs) = 0;
478 virtual void unifiedMeanMonitorWrite (std::ofstream& ofs) = 0;
480 virtual void subMeanMonitorFree () = 0;
481 virtual void subMeanInter0MonitorFree () = 0;
482 virtual void unifiedMeanMonitorFree () = 0;
484 void computeMeanEvolution (
const SequenceStatisticalOptions& statisticalOptions,
485 std::ofstream* passedOfs);
488 #ifdef QUESO_COMPUTES_EXTRA_POST_PROCESSING_STATISTICS
489 void computeBMM (
const SequenceStatisticalOptions& statisticalOptions,
490 const std::vector<unsigned int>& initialPosForStatistics,
491 std::ofstream* passedOfs);
492 void computeFFT (
const SequenceStatisticalOptions& statisticalOptions,
493 const std::vector<unsigned int>& initialPosForStatistics,
494 std::ofstream* passedOfs);
495 void computePSD (
const SequenceStatisticalOptions& statisticalOptions,
496 const std::vector<unsigned int>& initialPosForStatistics,
497 std::ofstream* passedOfs);
498 void computePSDAtZero (
const SequenceStatisticalOptions& statisticalOptions,
499 const std::vector<unsigned int>& initialPosForStatistics,
500 std::ofstream* passedOfs);
501 void computeGeweke (
const SequenceStatisticalOptions& statisticalOptions,
502 const std::vector<unsigned int>& initialPosForStatistics,
503 std::ofstream* passedOfs);
504 void computeMeanStacc (
const SequenceStatisticalOptions& statisticalOptions,
505 const std::vector<unsigned int>& initialPosForStatistics,
506 std::ofstream* passedOfs);
509 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
510 void computeMeanVars (
const SequenceStatisticalOptions& statisticalOptions,
511 std::ofstream* passedOfs,
516 void computeAutoCorrViaDef (
const SequenceStatisticalOptions& statisticalOptions,
517 const std::vector<unsigned int>& initialPosForStatistics,
518 const std::vector<unsigned int>& lagsForCorrs,
519 std::ofstream* passedOfs);
520 void computeAutoCorrViaFFT (
const SequenceStatisticalOptions& statisticalOptions,
521 const std::vector<unsigned int>& initialPosForStatistics,
522 const std::vector<unsigned int>& lagsForCorrs,
523 std::ofstream* passedOfs);
524 void computeCovCorrMatrices (
const SequenceStatisticalOptions& statisticalOptions,
525 std::ofstream* passedOfs);
534 template <
class P_V,
class P_M,
class Q_V,
class Q_M>
539 unsigned int subNumSamples,
545 #endif // UQ_VECTOR_SEQUENCE_H
virtual void unifiedGaussian1dKde(unsigned int initialPos, const V &unifiedScaleVec, const std::vector< V * > &unifiedEvaluationParamVecs, std::vector< V * > &unifiedDensityVecs) const =0
Gaussian kernel for the KDE estimate of the unified sequence. See template specialization.
void clear()
Reset the values and the size of the sequence of vectors.
virtual void extractRawData(unsigned int initialPos, unsigned int spacing, unsigned int numPos, unsigned int paramId, std::vector< double > &rawData) const =0
Extracts the raw data. See template specialization.
Class to accommodate arrays of one-dimensional grid.
void append(const BaseVectorSequence< V, M > &src, unsigned int initialPos, unsigned int numPos)
Appends the vector src to this vector.
void deleteStoredVectors()
Deletes all the stored vectors.
virtual void subScalesForKde(unsigned int initialPos, const V &iqrVec, unsigned int kdeDimension, V &scaleVec) const =0
Selects the scales (bandwidth, scaleVec) for the kernel density estimation, considering only the sub-...
virtual void subMedianExtra(unsigned int initialPos, unsigned int numPos, V &medianVec) const =0
Finds the median value of the sub-sequence, considering numPos positions starting at position initial...
void setGaussian(const V &meanVec, const V &stdDevVec)
Sets the values of the sequence as a Gaussian distribution of mean given by meanVec and standard devi...
virtual void unifiedMeanExtra(unsigned int initialPos, unsigned int numPos, V &unifiedMeanVec) const =0
Finds the mean value of the unified sequence of numPos positions starting at position initialPos...
const V & unifiedSampleVariancePlain() const
Finds the variance of a sample of the unified sequence.
virtual void subSampleVarianceExtra(unsigned int initialPos, unsigned int numPos, const V &meanVec, V &samVec) const =0
Finds the sample variance of the sub-sequence, considering numPos positions starting at position init...
virtual void unifiedMedianExtra(unsigned int initialPos, unsigned int localNumPos, V &unifiedMedianVec) const =0
Finds the median value of the unified sequence, considering numPos positions starting at position ini...
BoxSubset< V, M > * m_subBoxPlain
virtual ~BaseVectorSequence()
Destructor.
const V & subMaxPlain() const
Finds the maximum value of the sub-sequence.
const V & unifiedMaxPlain() const
Finds the maximum value of the unified sequence.
double unifiedPositionsOfMaximum(const ScalarSequence< double > &subCorrespondingScalarValues, BaseVectorSequence< V, M > &unifiedPositionsOfMaximum)
Finds the positions where the maximum element occurs in the unified sequence.
virtual void unifiedScalesForKde(unsigned int initialPos, const V &unifiedIqrVec, unsigned int kdeDimension, V &unifiedScaleVec) const =0
Selects the scales (bandwidth) for the kernel density estimation, considering the unified sequence...
virtual void erasePositions(unsigned int initialPos, unsigned int numPos)=0
Erase numPos positions in the sequence, starting at position initialPos.
V * m_unifiedSampleVariancePlain
const VectorSpace< V, M > & m_vectorSpace
virtual double estimateConvBrooksGelman(unsigned int initialPos, unsigned int numPos) const =0
Estimates convergence rate using Brooks & Gelman method. See template specialization.
virtual void unifiedMinMaxExtra(unsigned int initialPos, unsigned int numPos, V &unifiedMinVec, V &unifiedMaxVec) const =0
Finds the minimum and the maximum values of the unified sequence, considering numPos positions starti...
virtual void unifiedHistogram(unsigned int initialPos, const V &unifiedMinVec, const V &unifiedMaxVec, std::vector< V * > &unifiedCentersForAllBins, std::vector< V * > &unifiedQuanttsForAllBins) const =0
Calculates the histogram of the unified sequence. See template specialization.
virtual void unifiedReadContents(const std::string &fileName, const std::string &fileType, const unsigned int subSequenceSize)=0
Reads info of the unified sequence from a file. See template specialization.
This (virtual) class sets up the environment underlying the use of the QUESO library by an executable...
const V & unifiedMinPlain() const
Finds the minimum value of the unified sequence.
void setUniform(const V &aVec, const V &bVec)
Sets the values of the sequence as a uniform distribution between the values given by vectors aVec an...
void computeFilterParams(std::ofstream *passedOfs, unsigned int &initialPos, unsigned int &spacing)
Computes the filtering parameters spacing for the sequence of vectors.
virtual void setPositionValues(unsigned int posId, const V &vec)=0
Set the values in vec at position posId of the sequence. See template specialization.
virtual void unifiedSampleVarianceExtra(unsigned int initialPos, unsigned int numPos, const V &unifiedMeanVec, V &unifiedSamVec) const =0
Finds the sample variance of the unified sequence, considering numPos positions starting at position ...
const BaseEnvironment & m_env
void ComputeCovCorrMatricesBetweenVectorSequences(const BaseVectorSequence< P_V, P_M > &subPSeq, const BaseVectorSequence< Q_V, Q_M > &subQSeq, unsigned int subNumSamples, P_M &pqCovMatrix, P_M &pqCorrMatrix)
virtual void resizeSequence(unsigned int newSubSequenceSize)=0
Resize the sequence. See template specialization.
virtual void subMinMaxExtra(unsigned int initialPos, unsigned int numPos, V &minVec, V &maxVec) const =0
Finds the minimum and the maximum values of the sub-sequence, considering numPos positions starting a...
const V & subMedianPlain() const
Finds the median value of the sub-sequence.
const std::string & name() const
Access to protected attribute m_name: name of the sequence of vectors.
const BoxSubset< V, M > & unifiedBoxPlain() const
Finds a box subset of the unified-sequence (given by the min and max values of the unified sequence c...
virtual void subWriteContents(unsigned int initialPos, unsigned int numPos, const std::string &fileName, const std::string &fileType, const std::set< unsigned int > &allowedSubEnvIds) const =0
Writes info of the sub-sequence to a file. See template specialization.
const V & unifiedMedianPlain() const
Finds the median value of the unified sequence.
virtual void unifiedPopulationVariance(unsigned int initialPos, unsigned int numPos, const V &unifiedMeanVec, V &unifiedPopVec) const =0
Finds the population variance of the unified-sequence, considering numPos positions starting at posit...
virtual void extractScalarSeq(unsigned int initialPos, unsigned int spacing, unsigned int numPos, unsigned int paramId, ScalarSequence< double > &scalarSeq) const =0
Extracts a sequence of scalars of size numPos, starting at position initialPos, given spacing spacing...
Base class for handling vector and array samples (sequence of vectors or arrays). ...
const BoxSubset< V, M > & subBoxPlain() const
Finds a box subset of the sub-sequence (given by its min and max values calculated via subMinPlain an...
virtual unsigned int subSequenceSize() const =0
Size of the sub-sequence of vectors. See template specialization.
virtual void subInterQuantileRange(unsigned int initialPos, V &iqrVec) const =0
Returns the interquartile range of the values in the sub-sequence. See template specialization.
virtual void subGaussian1dKde(unsigned int initialPos, const V &scaleVec, const std::vector< V * > &evaluationParamVecs, std::vector< V * > &densityVecs) const =0
Gaussian kernel for the KDE estimate of the sub-sequence. See template specialization.
double subPositionsOfMaximum(const ScalarSequence< double > &subCorrespondingScalarValues, BaseVectorSequence< V, M > &subPositionsOfMaximum)
Finds the positions where the maximum element occurs in the sub-sequence.
unsigned int vectorSizeLocal() const
Local dimension (size) of the vector space.
virtual void filter(unsigned int initialPos, unsigned int spacing)=0
Filters positions in the sequence of vectors, starting at initialPos, and with spacing given by spaci...
virtual void subPopulationVariance(unsigned int initialPos, unsigned int numPos, const V &meanVec, V &popVec) const =0
Finds the population variance of the sub-sequence, considering numPos positions starting at position ...
const V & subSampleVariancePlain() const
Finds the variance of a sample of the sub-sequence.
virtual void subHistogram(unsigned int initialPos, const V &minVec, const V &maxVec, std::vector< V * > ¢ersForAllBins, std::vector< V * > &quanttsForAllBins) const =0
Calculates the histogram of the sub-sequence. See template specialization.
unsigned int vectorSizeGlobal() const
Global dimension (size) of the vector space.
virtual void autoCorrViaDef(unsigned int initialPos, unsigned int numPos, unsigned int lag, V &corrVec) const =0
Calculates autocorrelation via definition. See template specialization.
Class representing a subset of a vector space shaped like a hypercube.
const VectorSpace< V, M > & vectorSpace() const
Vector space; access to protected attribute VectorSpace<V,M>& m_vectorSpace.
Class to accommodate arrays of one-dimensional tables.
virtual void resetValues(unsigned int initialPos, unsigned int numPos)=0
Reset the values of the sequence. See template specialization.
A class representing a vector space.
void copy(const BaseVectorSequence< V, M > &src)
Copies vector sequence src to this.
BaseVectorSequence(const VectorSpace< V, M > &vectorSpace, unsigned int subSequenceSize, const std::string &name)
Default constructor.
const V & subMinPlain() const
Finds the minimum value of the sub-sequence.
virtual void select(const std::vector< unsigned int > &idsOfUniquePositions)=0
Select positions in the sequence of vectors. See template specialization.
const V & subMeanPlain() const
Finds the mean value of the sub-sequence.
virtual void unifiedWriteContents(const std::string &fileName, const std::string &fileType) const =0
Writes info of the unified sequence to a file. See template specialization.
V * m_subSampleVariancePlain
const V & unifiedMeanPlain() const
Finds the mean value of the unified sequence.
BoxSubset< V, M > * m_unifiedBoxPlain
virtual void subMeanExtra(unsigned int initialPos, unsigned int numPos, V &meanVec) const =0
Finds the mean value of the sub-sequence, considering numPos positions starting at position initialPo...
unsigned int unifiedSequenceSize() const
Calculates the size of the unified sequence of vectors.
virtual void unifiedInterQuantileRange(unsigned int initialPos, V &unifiedIqrVec) const =0
Returns the interquartile range of the values in the unified sequence. See template specialization...
void setName(const std::string &newName)
Changes the name of the sequence of vectors.
virtual void getPositionValues(unsigned int posId, V &vec) const =0
Gets the values of the sequence at position posId and stores them at vec. See template specialization...
virtual void autoCovariance(unsigned int initialPos, unsigned int numPos, const V &meanVec, unsigned int lag, V &covVec) const =0
Calculates the autocovariance. See template specialization.
virtual void autoCorrViaFft(unsigned int initialPos, unsigned int numPos, const std::vector< unsigned int > &lags, std::vector< V * > &corrVecs) const =0
Calculates autocorrelation via Fast Fourier transforms (FFT). See template specialization.