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
53 template <
class T =
double>
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;
496 void writeTxtHeader(std::ofstream & ofs,
double sequenceSize)
const;
502 unsigned int spacing,
510 unsigned int spacing,
512 std::vector<double>&
rawData)
const;
522 const std::vector<T>& leafData,
523 unsigned int treeLevel)
const;
549 unsigned int initialPos,
552 const std::vector<T>& evaluationPositions1,
553 const std::vector<T>& evaluationPositions2,
554 std::vector<double>& densityValues);
562 unsigned int initialPos,
563 double unifiedScaleValue1,
564 double unifiedScaleValue2,
565 const std::vector<T>& unifiedEvaluationPositions1,
566 const std::vector<T>& unifiedEvaluationPositions2,
567 std::vector<double>& unifiedDensityValues);
575 unsigned int subNumSamples,
581 #endif // UQ_SCALAR_SEQUENCE_H
void writeSubMatlabHeader(std::ofstream &ofs, double sequenceSize) const
Helper function to write header info for matlab files from one chain.
void erasePositions(unsigned int initialPos, unsigned int numPos)
Erases numPos values of the sequence, starting at position initialPos.
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 subPositionsOfMaximum(const ScalarSequence< T > &subCorrespondingScalarValues, ScalarSequence< T > &subPositionsOfMaximum)
Finds the positions where the maximum element occurs 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.
void unifiedSort(bool useOnlyInter0Comm, unsigned int initialPos, ScalarSequence< T > &unifiedSortedSequence) const
Sorts 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...
const T & unifiedMeanPlain(bool useOnlyInter0Comm) const
Finds the mean value of the unified sequence of scalars.
const T & unifiedMinPlain(bool useOnlyInter0Comm) const
Finds the minimum 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).
const T & operator[](unsigned int posId) const
Access position posId of the sequence of scalars (const).
void unifiedReadContents(const std::string &fileName, const std::string &fileType, const unsigned int subSequenceSize)
Reads the unified sequence from a file.
std::vector< T > & rawData()
The sequence of scalars. Access to private attribute m_seq.
std::vector< T >::const_iterator seqScalarPositionConstIteratorTypedef
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...
This (virtual) class sets up the environment underlying the use of the QUESO library by an executable...
void clear()
Clears the sequence of scalars.
void append(const ScalarSequence< T > &src, unsigned int srcInitialPos, unsigned int srcNumPos)
Appends the scalar sequence src to this 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...
ScalarSequence< T > & operator=(const ScalarSequence< T > &rhs)
Assignment operator; it copies rhs to this.
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...
T subMedianExtra(unsigned int initialPos, unsigned int numPos) const
Finds the median value of the sub-sequence, considering numPos positions starting at position initial...
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.
T brooksGelmanConvMeasure(bool useOnlyInter0Comm, unsigned int initialPos, unsigned int spacing) const
Estimates convergence rate using Brooks & Gelman method.
void extractRawData(unsigned int initialPos, unsigned int spacing, unsigned int numPos, std::vector< double > &rawData) const
Extracts the raw data.
void parallelMerge(std::vector< T > &sortedBuffer, const std::vector< T > &leafData, unsigned int treeLevel) const
Sorts/merges data in parallel using MPI.
const std::string & name() const
Access to the name of the sequence of scalars.
unsigned int unifiedSequenceSize(bool useOnlyInter0Comm) const
Size of the unified sequence of scalars.
void setName(const std::string &newName)
Sets a new name to the sequence of 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 unifiedPositionsOfMaximum(const ScalarSequence< T > &subCorrespondingScalarValues, ScalarSequence< T > &unifiedPositionsOfMaximum)
Finds the positions where the maximum element occurs in the unified 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.
Class for handling scalar samples.
T unifiedInterQuantileRange(bool useOnlyInter0Comm, unsigned int initialPos) const
Returns the interquartile range of the values in the unified sequence.
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.
void filter(unsigned int initialPos, unsigned int spacing)
Filters positions in the sequence of vectors.
void ComputeCovCorrBetweenScalarSequences(const ScalarSequence< T > &subPSeq, const ScalarSequence< T > &subQSeq, unsigned int subNumSamples, T &covValue, T &corrValue)
const T & subMinPlain() const
Finds the minimum value of the sub-sequence of scalars.
ScalarSequence(const BaseEnvironment &env, unsigned int subSequenceSize, const std::string &name)
Default constructor.
Class for accommodating uniform one-dimensional grids.
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...
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.
void copy(const ScalarSequence< T > &src)
Copies the scalar sequence src to this.
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 ...
const T & unifiedSampleVariancePlain(bool useOnlyInter0Comm) const
Finds the variance of a sample of the unified sequence of scalars.
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.
T subInterQuantileRange(unsigned int initialPos) const
Returns the interquartile range of the values in the sub-sequence.
T * m_subSampleVariancePlain
const T & subMeanPlain() const
Finds the mean 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...
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...
void getUnifiedContentsAtProc0Only(bool useOnlyInter0Comm, std::vector< T > &outputVec) const
Gets the unified contents of processor of rank equals to 0.
const T & unifiedMaxPlain(bool useOnlyInter0Comm) const
Finds the maximum value of the unified sequence of scalars.
~ScalarSequence()
Destructor.
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 extractScalarSeq(unsigned int initialPos, unsigned int spacing, unsigned int numPos, ScalarSequence< T > &scalarSeq) const
Extracts a sequence of scalars.
void unifiedWriteContents(const std::string &fileName, const std::string &fileType) const
Writes the unified sequence to a file.
void resizeSequence(unsigned int newSequenceSize)
Resizes the size of the sequence of scalars.
const T & subSampleVariancePlain() const
Finds the variance of a sample 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 deleteStoredScalars()
Deletes all stored scalars.
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.
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 ...
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 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...
std::vector< T >::iterator seqScalarPositionIteratorTypedef
T * m_unifiedSampleVariancePlain
void writeUnifiedMatlabHeader(std::ofstream &ofs, double sequenceSize) const
Helper function to write header info for matlab files from all chains.
void subSort()
Sorts the sequence of scalars in the private attribute m_seq.
const T & unifiedMedianPlain(bool useOnlyInter0Comm) const
Finds the median value of the unified sequence of scalars.
void resetValues(unsigned int initialPos, unsigned int)
Sets numPos values of the sequence to zero, starting at position initialPos.
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...
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...
T autoCovariance(unsigned int initialPos, unsigned int numPos, const T &meanValue, unsigned int lag) const
Calculates the autocovariance.
void writeTxtHeader(std::ofstream &ofs, double sequenceSize) const
Helper function to write txt info for matlab files.
const BaseEnvironment & env() const
Access to QUESO environment.
T autoCorrViaDef(unsigned int initialPos, unsigned int numPos, unsigned int lag) const
Calculates the autocorrelation via definition.
const BaseEnvironment & m_env
unsigned int subSequenceSize() const
Size of the sub-sequence of scalars.
const T & subMedianPlain() const
Finds the median value of the sub-sequence of scalars.
const T & subMaxPlain() const
Finds the maximum value of the sub-sequence of scalars.
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.
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 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)