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);
155 virtual void resizeSequence (
unsigned int newSubSequenceSize) = 0;
159 virtual void resetValues (
unsigned int initialPos,
unsigned int numPos) = 0;
163 virtual void erasePositions (
unsigned int initialPos,
unsigned int numPos) = 0;
175 void setGaussian (
const V& meanVec,
const V& stdDevVec);
179 void setUniform (
const V& aVec,
const V& bVec );
184 V& meanVec)
const = 0;
189 V& unifiedMeanVec)
const = 0;
193 V& medianVec)
const = 0;
196 unsigned int localNumPos,
197 V& unifiedMedianVec)
const = 0;
202 V& samVec)
const = 0;
206 const V& unifiedMeanVec,
207 V& unifiedSamVec)
const = 0;
212 V& popVec)
const = 0;
216 const V& unifiedMeanVec,
217 V& unifiedPopVec)
const = 0;
228 V& covVec)
const = 0;
233 V& corrVec)
const = 0;
237 const std::vector<unsigned int>& lags,
238 std::vector<V*>& corrVecs)
const = 0;
243 V& autoCorrsSumVec)
const = 0;
250 V& maxVec)
const = 0;
255 V& unifiedMaxVec)
const = 0;
265 std::vector<V*>& centersForAllBins,
266 std::vector<V*>& quanttsForAllBins)
const = 0;
269 const V& unifiedMinVec,
270 const V& unifiedMaxVec,
271 std::vector<V*>& unifiedCentersForAllBins,
272 std::vector<V*>& unifiedQuanttsForAllBins)
const = 0;
276 V& iqrVec)
const = 0;
279 V& unifiedIqrVec)
const = 0;
292 unsigned int kdeDimension,
293 V& scaleVec)
const = 0;
296 const V& unifiedIqrVec,
297 unsigned int kdeDimension,
298 V& unifiedScaleVec)
const = 0;
306 const std::vector<V*>& evaluationParamVecs,
307 std::vector<V*>& densityVecs)
const = 0;
310 const V& unifiedScaleVec,
311 const std::vector<V*>& unifiedEvaluationParamVecs,
312 std::vector<V*>& unifiedDensityVecs)
const = 0;
316 const std::string& fileName,
317 const std::string& fileType,
318 const std::set<unsigned int>& allowedSubEnvIds)
const = 0;
322 std::ofstream& ofsvar,
323 const std::string& fileType)
const = 0;
326 const std::string& fileType)
const = 0;
329 const std::string& fileType,
330 const unsigned int subSequenceSize) = 0;
332 virtual void select (
const std::vector<unsigned int>& idsOfUniquePositions) = 0;
335 virtual void filter (
unsigned int initialPos,
336 unsigned int spacing) = 0;
339 unsigned int & initialPos,
340 unsigned int & spacing);
343 unsigned int numPos)
const = 0;
346 unsigned int spacing,
348 unsigned int paramId,
351 #ifdef QUESO_COMPUTES_EXTRA_POST_PROCESSING_STATISTICS
352 virtual void subUniformlySampledCdf (
const V& numEvaluationPointsVec,
355 virtual void unifiedUniformlySampledCdf (
const V& numEvaluationPointsVec,
358 virtual void bmm (
unsigned int initialPos,
359 unsigned int batchLength,
360 V& bmmVec)
const = 0;
361 virtual void fftForward (
unsigned int initialPos,
362 unsigned int fftSize,
363 unsigned int paramId,
364 std::vector<std::complex<double> >& fftResult)
const = 0;
366 virtual void psd (
unsigned int initialPos,
367 unsigned int numBlocks,
369 unsigned int paramId,
370 std::vector<double>& psdResult)
const = 0;
371 virtual void psdAtZero (
unsigned int initialPos,
372 unsigned int numBlocks,
374 V& psdVec)
const = 0;
375 virtual void geweke (
unsigned int initialPos,
378 V& gewVec)
const = 0;
379 virtual void meanStacc (
unsigned int initialPos,
380 V& meanStaccVec)
const = 0;
381 virtual void subCdfStacc (
unsigned int initialPos,
382 const std::vector<V*>& evalPositionsVecs, std::vector<V*>& cdfStaccVecs)
const = 0;
383 #endif //QUESO_COMPUTES_EXTRA_POST_PROCESSING_STATISTICS
385 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
386 void computeHistCdfstaccKde (
const SequenceStatisticalOptions& statisticalOptions,
387 std::ofstream* passedOfs);
389 void computeStatistics (
const SequenceStatisticalOptions& statisticalOptions,
390 std::ofstream* passedOfs);
391 #endif //QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
393 #ifdef UQ_ALSO_COMPUTE_MDFS_WITHOUT_KDE
394 virtual void subUniformlySampledMdf (
const V& numEvaluationPointsVec,
397 #endif //UQ_ALSO_COMPUTE_MDFS_WITHOUT_KDE
408 unsigned int spacing,
410 unsigned int paramId,
411 std::vector<double>& rawData)
const = 0;
432 #ifdef UQ_CODE_HAS_MONITORS
433 virtual void subMeanMonitorAlloc (
unsigned int numberOfMonitorPositions) = 0;
434 virtual void subMeanInter0MonitorAlloc (
unsigned int numberOfMonitorPositions) = 0;
435 virtual void unifiedMeanMonitorAlloc (
unsigned int numberOfMonitorPositions) = 0;
437 virtual void subMeanMonitorRun (
unsigned int monitorPosition,
439 V& subMeanCltStd) = 0;
440 virtual void subMeanInter0MonitorRun (
unsigned int monitorPosition,
441 V& subMeanInter0Mean,
442 V& subMeanInter0Clt95,
443 V& subMeanInter0Empirical90,
445 V& subMeanInter0Max) = 0;
446 virtual void unifiedMeanMonitorRun (
unsigned int monitorPosition,
448 V& unifiedMeanCltStd) = 0;
450 virtual void subMeanMonitorStore (
unsigned int i,
451 unsigned int monitorPosition,
453 const V& subMeanCltStd) = 0;
454 virtual void subMeanInter0MonitorStore (
unsigned int i,
455 unsigned int monitorPosition,
456 const V& subMeanInter0Mean,
457 const V& subMeanInter0Clt95,
458 const V& subMeanInter0Empirical90,
459 const V& subMeanInter0Min,
460 const V& subMeanInter0Max) = 0;
461 virtual void unifiedMeanMonitorStore (
unsigned int i,
462 unsigned int monitorPosition,
464 V& unifiedMeanCltStd) = 0;
466 virtual void subMeanMonitorWrite (std::ofstream& ofs) = 0;
467 virtual void subMeanInter0MonitorWrite (std::ofstream& ofs) = 0;
468 virtual void unifiedMeanMonitorWrite (std::ofstream& ofs) = 0;
470 virtual void subMeanMonitorFree () = 0;
471 virtual void subMeanInter0MonitorFree () = 0;
472 virtual void unifiedMeanMonitorFree () = 0;
474 void computeMeanEvolution (
const SequenceStatisticalOptions& statisticalOptions,
475 std::ofstream* passedOfs);
478 #ifdef QUESO_COMPUTES_EXTRA_POST_PROCESSING_STATISTICS
479 void computeBMM (
const SequenceStatisticalOptions& statisticalOptions,
480 const std::vector<unsigned int>& initialPosForStatistics,
481 std::ofstream* passedOfs);
482 void computeFFT (
const SequenceStatisticalOptions& statisticalOptions,
483 const std::vector<unsigned int>& initialPosForStatistics,
484 std::ofstream* passedOfs);
485 void computePSD (
const SequenceStatisticalOptions& statisticalOptions,
486 const std::vector<unsigned int>& initialPosForStatistics,
487 std::ofstream* passedOfs);
488 void computePSDAtZero (
const SequenceStatisticalOptions& statisticalOptions,
489 const std::vector<unsigned int>& initialPosForStatistics,
490 std::ofstream* passedOfs);
491 void computeGeweke (
const SequenceStatisticalOptions& statisticalOptions,
492 const std::vector<unsigned int>& initialPosForStatistics,
493 std::ofstream* passedOfs);
494 void computeMeanStacc (
const SequenceStatisticalOptions& statisticalOptions,
495 const std::vector<unsigned int>& initialPosForStatistics,
496 std::ofstream* passedOfs);
499 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
500 void computeMeanVars (
const SequenceStatisticalOptions& statisticalOptions,
501 std::ofstream* passedOfs,
506 void computeAutoCorrViaDef (
const SequenceStatisticalOptions& statisticalOptions,
507 const std::vector<unsigned int>& initialPosForStatistics,
508 const std::vector<unsigned int>& lagsForCorrs,
509 std::ofstream* passedOfs);
510 void computeAutoCorrViaFFT (
const SequenceStatisticalOptions& statisticalOptions,
511 const std::vector<unsigned int>& initialPosForStatistics,
512 const std::vector<unsigned int>& lagsForCorrs,
513 std::ofstream* passedOfs);
514 void computeCovCorrMatrices (
const SequenceStatisticalOptions& statisticalOptions,
515 std::ofstream* passedOfs);
524 template <
class P_V,
class P_M,
class Q_V,
class Q_M>
529 unsigned int subNumSamples,
535 #endif // UQ_VECTOR_SEQUENCE_H
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.
Class to accommodate arrays of one-dimensional grid.
Class representing a subset of a vector space shaped like a hypercube.
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 ...
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.
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 ...
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...
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...
A class representing a vector space.
void setName(const std::string &newName)
Changes the name of the sequence of vectors.
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 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 & subMinPlain() const
Finds the minimum value of the sub-sequence.
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...
const V & subMeanPlain() const
Finds the mean value of the sub-sequence.
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.
void append(const BaseVectorSequence< V, M > &src, unsigned int initialPos, unsigned int numPos)
Appends the vector src to this vector.
BoxSubset< V, M > * m_unifiedBoxPlain
const V & unifiedSampleVariancePlain() const
Finds the variance of a sample of the unified sequence.
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...
This (virtual) class sets up the environment underlying the use of the QUESO library by an executable...
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...
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.
BoxSubset< V, M > * m_subBoxPlain
unsigned int vectorSizeLocal() const
Local dimension (size) of the vector space.
virtual void select(const std::vector< unsigned int > &idsOfUniquePositions)=0
Select positions in the sequence of vectors. See template specialization.
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 & subSampleVariancePlain() const
Finds the variance of a sample of the sub-sequence.
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.
V * m_unifiedSampleVariancePlain
virtual void autoCorrViaDef(unsigned int initialPos, unsigned int numPos, unsigned int lag, V &corrVec) const =0
Calculates autocorrelation via definition. See template specialization.
void deleteStoredVectors()
Deletes all the stored vectors.
virtual void resetValues(unsigned int initialPos, unsigned int numPos)=0
Reset the values of the 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.
const V & unifiedMinPlain() const
Finds the minimum value of the unified sequence.
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...
const V & subMaxPlain() const
Finds the maximum value of the sub-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.
const VectorSpace< V, M > & m_vectorSpace
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 & unifiedMeanPlain() const
Finds the mean value of the unified sequence.
Class to accommodate arrays of one-dimensional tables.
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 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 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...
const V & unifiedMedianPlain() const
Finds the median 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 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.
Base class for handling vector and array samples (sequence of vectors or arrays). ...
void clear()
Reset the values and the size of the sequence of vectors.
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.
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-...
double subPositionsOfMaximum(const ScalarSequence< double > &subCorrespondingScalarValues, BaseVectorSequence< V, M > &subPositionsOfMaximum)
Finds the positions where the maximum element occurs in the sub-sequence.
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 double estimateConvBrooksGelman(unsigned int initialPos, unsigned int numPos) const =0
Estimates convergence rate using Brooks & Gelman method. See template specialization.
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 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...
unsigned int vectorSizeGlobal() const
Global dimension (size) of the vector space.
const VectorSpace< V, M > & vectorSpace() const
Vector space; access to protected attribute VectorSpace<V,M>& m_vectorSpace.
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 ~BaseVectorSequence()
Destructor.
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 & unifiedMaxPlain() const
Finds the maximum value of the unified sequence.
const BaseEnvironment & m_env
double unifiedPositionsOfMaximum(const ScalarSequence< double > &subCorrespondingScalarValues, BaseVectorSequence< V, M > &unifiedPositionsOfMaximum)
Finds the positions where the maximum element occurs in the unified sequence.
virtual unsigned int subSequenceSize() const =0
Size of the sub-sequence of vectors. See template specialization.