25 #ifndef UQ_SCALAR_SEQUENCE_H
26 #define UQ_SCALAR_SEQUENCE_H
28 #include <queso/Fft.h>
29 #include <queso/UniformOneDGrid.h>
30 #include <queso/Environment.h>
31 #include <queso/Miscellaneous.h>
32 #include <queso/Defines.h>
37 #define SCALAR_SEQUENCE_INIT_MPI_MSG 1
38 #define SCALAR_SEQUENCE_SIZE_MPI_MSG 1
39 #define SCALAR_SEQUENCE_DATA_MPI_MSG 1
67 const std::string&
name);
80 const T&
operator[] (
unsigned int posId)
const;
94 const std::string&
name ()
const;
97 void setName (
const std::string& newName);
115 void resetValues (
unsigned int initialPos,
unsigned int );
119 void erasePositions (
unsigned int initialPos,
unsigned int numPos);
123 std::vector<T>& outputVec)
const;
170 std::vector<T>& cdfValues)
const;
174 unsigned int numIntervals,
175 T& unifiedMinDomainValue,
176 T& unifiedMaxDomainValue,
177 std::vector<T>& unifiedCdfValues)
const;
181 std::vector<T>& cdfValues)
const;
184 std::vector<T>& gridValues,
185 std::vector<T>& cdfValues)
const;
190 std::vector<T>& cdfValues)
const;
194 unsigned int numPos)
const;
198 unsigned int initialPos,
199 unsigned int localNumPos)
const;
203 unsigned int numPos)
const;
207 unsigned int initialPos,
208 unsigned int localNumPos)
const;
218 const T& meanValue)
const;
222 unsigned int initialPos,
223 unsigned int localNumPos,
224 const T& unifiedMeanValue)
const;
228 const T& meanValue)
const;
231 unsigned int initialPos,
232 unsigned int localNumPos,
233 const T& unifiedMeanValue)
const;
243 const T& meanValue)
const;
247 unsigned int initialPos,
249 const T& unifiedMeanValue)
const;
258 unsigned int lag)
const;
268 unsigned int lag)
const;
274 std::vector<T>& autoCorrs)
const;
280 T& autoCorrsSum)
const;
288 unsigned int initialPos,
291 T& unifiedMaxValue)
const;
298 const T& minHorizontalValue,
299 const T& maxHorizontalValue,
300 std::vector<T>& centers,
301 std::vector<unsigned int>& bins)
const;
304 unsigned int initialPos,
305 const T& unifiedMinHorizontalValue,
306 const T& unifiedMaxHorizontalValue,
307 std::vector<T>& unifiedCenters,
308 std::vector<unsigned int>& unifiedBins)
const;
315 const T& minHorizontalValue,
316 const T& maxHorizontalValue,
318 std::vector<unsigned int>& bins)
const;
326 const T& minHorizontalValue,
327 const T& maxHorizontalValue,
329 std::vector<unsigned int>& bins)
const;
334 const T& minHorizontalValue,
335 const T& maxHorizontalValue,
336 std::vector<T>& gridValues,
337 std::vector<unsigned int>& bins)
const;
339 void subSort (
unsigned int initialPos,
343 unsigned int initialPos,
355 unsigned int initialPos)
const;
368 unsigned int kdeDimension)
const;
372 unsigned int initialPos,
373 const T& unifiedIqrValue,
374 unsigned int kdeDimension)
const;
382 const std::vector<T>& evaluationPositions,
383 std::vector<double>& densityValues)
const;
387 unsigned int initialPos,
388 double unifiedScaleValue,
389 const std::vector<T>& unifiedEvaluationPositions,
390 std::vector<double>& unifiedDensityValues)
const;
394 void filter (
unsigned int initialPos,
395 unsigned int spacing);
400 unsigned int initialPos,
401 unsigned int spacing)
const;
406 unsigned int srcInitialPos,
407 unsigned int srcNumPos);
422 const std::string& fileName,
423 const std::string& fileType,
424 const std::set<unsigned int>& allowedSubEnvIds)
const;
430 const std::string& fileType)
const;
434 const std::string& fileType)
const;
438 const std::string& fileType,
440 #ifdef QUESO_COMPUTES_EXTRA_POST_PROCESSING_STATISTICS
441 T bmm (
unsigned int initialPos,
442 unsigned int batchLength)
const;
443 void psd (
unsigned int initialPos,
444 unsigned int numBlocks,
446 std::vector<double>& psdSequence)
const;
447 T geweke (
unsigned int initialPos,
449 double ratioNb)
const;
450 T meanStacc (
unsigned int initialPos)
const;
451 void subCdfPercentageRange (
unsigned int initialPos,
455 T& upperValue)
const;
456 void unifiedCdfPercentageRange (
bool useOnlyInter0Comm,
457 unsigned int initialPos,
461 T& upperValue)
const;
463 void subCdfStacc (
unsigned int initialPos,
464 std::vector<double>& cdfStaccValues,
465 std::vector<double>& cdfStaccValuesup,
466 std::vector<double>& cdfStaccValueslow,
468 void subCdfStacc (
unsigned int initialPos,
469 const std::vector<T>& evaluationPositions,
470 std::vector<double>& cdfStaccValues)
const;
471 void subUniformlySampledMdf (
unsigned int numIntervals,
474 std::vector<T>& mdfValues)
const;
475 T subMeanCltStd (
unsigned int initialPos,
477 const T& meanValue)
const;
478 T unifiedMeanCltStd (
bool useOnlyInter0Comm,
479 unsigned int initialPos,
480 unsigned int localNumPos,
481 const T& unifiedMeanValue)
const;
493 unsigned int spacing,
501 unsigned int spacing,
503 std::vector<double>&
rawData)
const;
513 const std::vector<T>& leafData,
514 unsigned int treeLevel)
const;
540 unsigned int initialPos,
543 const std::vector<T>& evaluationPositions1,
544 const std::vector<T>& evaluationPositions2,
545 std::vector<double>& densityValues);
553 unsigned int initialPos,
554 double unifiedScaleValue1,
555 double unifiedScaleValue2,
556 const std::vector<T>& unifiedEvaluationPositions1,
557 const std::vector<T>& unifiedEvaluationPositions2,
558 std::vector<double>& unifiedDensityValues);
566 unsigned int subNumSamples,
572 #endif // UQ_SCALAR_SEQUENCE_H
T subInterQuantileRange(unsigned int initialPos) const
Returns the interquartile range of the values in the sub-sequence.
void subUniformlySampledCdf(unsigned int numIntervals, T &minDomainValue, T &maxDomainValue, std::vector< T > &cdfValues) const
Uniformly samples from the CDF from the sub-sequence.
std::vector< T > & rawData()
The sequence of scalars. Access to private attribute m_seq.
void resetValues(unsigned int initialPos, unsigned int)
Sets numPos values of the sequence to zero, starting at position initialPos.
void subGaussian1dKde(unsigned int initialPos, double scaleValue, const std::vector< T > &evaluationPositions, std::vector< double > &densityValues) const
Gaussian kernel for the KDE estimate of the sub-sequence.
ScalarSequence< T > & operator=(const ScalarSequence< T > &rhs)
Assignment operator; it copies rhs to this.
void extractRawData(unsigned int initialPos, unsigned int spacing, unsigned int numPos, std::vector< double > &rawData) const
Extracts the raw data.
void setUniform(const T &a, const T &b)
Sets the values of the sequence as a uniform distribution between the values given by vectors aVec an...
T subPositionsOfMaximum(const ScalarSequence< T > &subCorrespondingScalarValues, ScalarSequence< T > &subPositionsOfMaximum)
Finds the positions where the maximum element occurs in the sub-sequence.
const BaseEnvironment & m_env
void parallelMerge(std::vector< T > &sortedBuffer, const std::vector< T > &leafData, unsigned int treeLevel) const
Sorts/merges data in parallel using MPI.
void erasePositions(unsigned int initialPos, unsigned int numPos)
Erases numPos values of the sequence, starting at position initialPos.
void clear()
Clears the sequence of scalars.
T * m_unifiedSampleVariancePlain
T unifiedScaleForKde(bool useOnlyInter0Comm, unsigned int initialPos, const T &unifiedIqrValue, unsigned int kdeDimension) const
Selects the scales (bandwidth) for the kernel density estimation, considering the unified sequence...
void deleteStoredScalars()
Deletes all stored scalars.
void unifiedHistogram(bool useOnlyInter0Comm, unsigned int initialPos, const T &unifiedMinHorizontalValue, const T &unifiedMaxHorizontalValue, std::vector< T > &unifiedCenters, std::vector< unsigned int > &unifiedBins) const
Calculates the histogram of the unified sequence.
T unifiedPopulationVariance(bool useOnlyInter0Comm, unsigned int initialPos, unsigned int numPos, const T &unifiedMeanValue) const
Finds the population variance of the unified sequence, considering numPos positions starting at posit...
unsigned int unifiedSequenceSize(bool useOnlyInter0Comm) const
Size of the unified sequence of scalars.
const T & unifiedMaxPlain(bool useOnlyInter0Comm) const
Finds the maximum value of the unified sequence of scalars.
void ComputeUnifiedGaussian2dKde(bool useOnlyInter0Comm, const ScalarSequence< T > &scalarSeq1, const ScalarSequence< T > &scalarSeq2, unsigned int initialPos, double unifiedScaleValue1, double unifiedScaleValue2, const std::vector< T > &unifiedEvaluationPositions1, const std::vector< T > &unifiedEvaluationPositions2, std::vector< double > &unifiedDensityValues)
void unifiedUniformlySampledCdf(bool useOnlyInter0Comm, unsigned int numIntervals, T &unifiedMinDomainValue, T &unifiedMaxDomainValue, std::vector< T > &unifiedCdfValues) const
Uniformly samples from the CDF from the unified sequence.
Class for handling scalar samples.
T * m_subSampleVariancePlain
void extractScalarSeq(unsigned int initialPos, unsigned int spacing, unsigned int numPos, ScalarSequence< T > &scalarSeq) const
Extracts a sequence of scalars.
T autoCorrViaDef(unsigned int initialPos, unsigned int numPos, unsigned int lag) const
Calculates the autocorrelation via definition.
const T & unifiedMeanPlain(bool useOnlyInter0Comm) const
Finds the mean value of the unified sequence of scalars.
void unifiedMinMaxExtra(bool useOnlyInter0Comm, unsigned int initialPos, unsigned int numPos, T &unifiedMinValue, T &unifiedMaxValue) const
Finds the minimum and the maximum values of the unified sequence, considering numPos positions starti...
void subWriteContents(unsigned int initialPos, unsigned int numPos, const std::string &fileName, const std::string &fileType, const std::set< unsigned int > &allowedSubEnvIds) const
Writes the sub-sequence to a file.
const std::string & name() const
Access to the name of the sequence of scalars.
This (virtual) class sets up the environment underlying the use of the QUESO library by an executable...
const T & subMaxPlain() const
Finds the maximum value of the sub-sequence of scalars.
T unifiedSampleStd(bool useOnlyInter0Comm, unsigned int initialPos, unsigned int localNumPos, const T &unifiedMeanValue) const
Finds the sample standard deviation of the unified sequence, considering localnumPos positions starti...
const T & operator[](unsigned int posId) const
Access position posId of the sequence of scalars (const).
void subMinMaxExtra(unsigned int initialPos, unsigned int numPos, T &minValue, T &maxValue) const
Finds the minimum and the maximum values of the sub-sequence, considering numPos positions starting a...
void copy(const ScalarSequence< T > &src)
Copies the scalar sequence src to this.
ScalarSequence(const BaseEnvironment &env, unsigned int subSequenceSize, const std::string &name)
Default constructor.
void resizeSequence(unsigned int newSequenceSize)
Resizes the size of the sequence of scalars.
T subMedianExtra(unsigned int initialPos, unsigned int numPos) const
Finds the median value of the sub-sequence, considering numPos positions starting at position initial...
const T & subMinPlain() const
Finds the minimum value of the sub-sequence of scalars.
void append(const ScalarSequence< T > &src, unsigned int srcInitialPos, unsigned int srcNumPos)
Appends the scalar sequence src to this sequence.
T autoCovariance(unsigned int initialPos, unsigned int numPos, const T &meanValue, unsigned int lag) const
Calculates the autocovariance.
T subSampleVarianceExtra(unsigned int initialPos, unsigned int numPos, const T &meanValue) const
Finds the sample variance of the sub-sequence, considering numPos positions starting at position init...
void filter(unsigned int initialPos, unsigned int spacing)
Filters positions in the sequence of vectors.
T unifiedSampleVarianceExtra(bool useOnlyInter0Comm, unsigned int initialPos, unsigned int localNumPos, const T &unifiedMeanValue) const
Finds the sample variance of the unified sequence, considering numPos positions starting at position ...
T unifiedInterQuantileRange(bool useOnlyInter0Comm, unsigned int initialPos) const
Returns the interquartile range of the values in the unified sequence.
T subPopulationVariance(unsigned int initialPos, unsigned int numPos, const T &meanValue) const
Finds the population variance of the sub-sequence, considering numPos positions starting at position ...
T subScaleForKde(unsigned int initialPos, const T &iqrValue, unsigned int kdeDimension) const
Selects the scales (output value) for the kernel density estimation, considering only the sub-sequenc...
void unifiedWriteContents(const std::string &fileName, const std::string &fileType) const
Writes the unified sequence to a file.
const T & unifiedSampleVariancePlain(bool useOnlyInter0Comm) const
Finds the variance of a sample of the unified sequence of scalars.
const T & unifiedMinPlain(bool useOnlyInter0Comm) const
Finds the minimum value of the unified sequence of scalars.
const T & subSampleVariancePlain() const
Finds the variance of a sample of the sub-sequence of scalars.
unsigned int subSequenceSize() const
Size of the sub-sequence of scalars.
T subMeanExtra(unsigned int initialPos, unsigned int numPos) const
Finds the mean value of the sub-sequence, considering numPos positions starting at position initialPo...
void unifiedGaussian1dKde(bool useOnlyInter0Comm, unsigned int initialPos, double unifiedScaleValue, const std::vector< T > &unifiedEvaluationPositions, std::vector< double > &unifiedDensityValues) const
Gaussian kernel for the KDE estimate of the unified sequence.
T brooksGelmanConvMeasure(bool useOnlyInter0Comm, unsigned int initialPos, unsigned int spacing) const
Estimates convergence rate using Brooks & Gelman method.
T unifiedPositionsOfMaximum(const ScalarSequence< T > &subCorrespondingScalarValues, ScalarSequence< T > &unifiedPositionsOfMaximum)
Finds the positions where the maximum element occurs in the unified sequence.
Class for accommodating uniform one-dimensional grids.
const BaseEnvironment & env() const
Access to QUESO environment.
std::vector< T >::const_iterator seqScalarPositionConstIteratorTypedef
void getUnifiedContentsAtProc0Only(bool useOnlyInter0Comm, std::vector< T > &outputVec) const
Gets the unified contents of processor of rank equals to 0.
T unifiedMeanExtra(bool useOnlyInter0Comm, unsigned int initialPos, unsigned int localNumPos) const
Finds the mean value of the unified sequence of numPos positions starting at position initialPos...
void subHistogram(unsigned int initialPos, const T &minHorizontalValue, const T &maxHorizontalValue, std::vector< T > ¢ers, std::vector< unsigned int > &bins) const
Calculates the histogram of the sub-sequence.
void subWeightCdf(unsigned int numIntervals, std::vector< T > &gridValues, std::vector< T > &cdfValues) const
Finds the Weighted Cumulative Distribution Function (CDF) of the sub-sequence of scalars.
void subBasicCdf(unsigned int numIntervals, UniformOneDGrid< T > *&gridValues, std::vector< T > &cdfValues) const
Finds the Cumulative Distribution Function (CDF) of the sub-sequence of scalars.
void unifiedReadContents(const std::string &fileName, const std::string &fileType, const unsigned int subSequenceSize)
Reads the unified sequence from a file.
void subWeightHistogram(unsigned int initialPos, const T &minHorizontalValue, const T &maxHorizontalValue, UniformOneDGrid< T > *&gridValues, std::vector< unsigned int > &bins) const
Calculates the weighted histogram of the sub-sequence.
void unifiedSort(bool useOnlyInter0Comm, unsigned int initialPos, ScalarSequence< T > &unifiedSortedSequence) const
Sorts the unified sequence of scalars.
void subSort()
Sorts the sequence of scalars in the private attribute m_seq.
const T & subMedianPlain() const
Finds the median value of the sub-sequence of scalars.
T subSampleStd(unsigned int initialPos, unsigned int numPos, const T &meanValue) const
Finds the sample standard deviation of the unified sequence, considering numPos positions starting at...
std::vector< T >::iterator seqScalarPositionIteratorTypedef
void setName(const std::string &newName)
Sets a new name to the sequence of scalars.
T unifiedMedianExtra(bool useOnlyInter0Comm, unsigned int initialPos, unsigned int localNumPos) const
Finds the median value of the unified sequence, considering numPos positions starting at position ini...
const T & subMeanPlain() const
Finds the mean value of the sub-sequence of scalars.
const T & unifiedMedianPlain(bool useOnlyInter0Comm) const
Finds the median value of the unified sequence of scalars.
void autoCorrViaFft(unsigned int initialPos, unsigned int numPos, unsigned int maxLag, std::vector< T > &autoCorrs) const
Calculates the autocorrelation via Fast Fourier transforms (FFT).
void subBasicHistogram(unsigned int initialPos, const T &minHorizontalValue, const T &maxHorizontalValue, UniformOneDGrid< T > *&gridValues, std::vector< unsigned int > &bins) const
Calculates the histogram of the sub-sequence.
~ScalarSequence()
Destructor.
void ComputeSubGaussian2dKde(const ScalarSequence< T > &scalarSeq1, const ScalarSequence< T > &scalarSeq2, unsigned int initialPos, double scaleValue1, double scaleValue2, const std::vector< T > &evaluationPositions1, const std::vector< T > &evaluationPositions2, std::vector< double > &densityValues)
void ComputeCovCorrBetweenScalarSequences(const ScalarSequence< T > &subPSeq, const ScalarSequence< T > &subQSeq, unsigned int subNumSamples, T &covValue, T &corrValue)
void setGaussian(const T &mean, const T &stdDev)
Sets the values of the sequence as a Gaussian distribution of mean given by meanVec and standard devi...