queso-0.52.0
SequenceOfVectors.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------bl-
2 //--------------------------------------------------------------------------
3 //
4 // QUESO - a library to support the Quantification of Uncertainty
5 // for Estimation, Simulation and Optimization
6 //
7 // Copyright (C) 2008-2015 The PECOS Development Team
8 //
9 // This library is free software; you can redistribute it and/or
10 // modify it under the terms of the Version 2.1 GNU Lesser General
11 // Public License as published by the Free Software Foundation.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Lesser General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc. 51 Franklin Street, Fifth Floor,
21 // Boston, MA 02110-1301 USA
22 //
23 //-----------------------------------------------------------------------el-
24 
25 #ifndef UQ_SEQUENCE_OF_VECTORS_H
26 #define UQ_SEQUENCE_OF_VECTORS_H
27 
28 #include <queso/VectorSequence.h>
29 #define UQ_SEQ_VEC_USES_SCALAR_SEQ_CODE
30 #undef UQ_SEQ_VEC_USES_OPERATOR
31 
32 namespace QUESO {
33 
45 template <class V, class M>
47 {
48 public:
49 
51 
52  typedef typename std::vector<const V*>::const_iterator seqVectorPositionConstIteratorTypedef;
53  typedef typename std::vector<const V*>::iterator seqVectorPositionIteratorTypedef;
55 
57 
60  unsigned int subSequenceSize,
61  const std::string& name);
65 
67 
71 
73 
74  unsigned int subSequenceSize () const;
76 
78 
79  void resizeSequence (unsigned int newSubSequenceSize);
80 
82 
83  void resetValues (unsigned int initialPos, unsigned int numPos);
84 
86 
87  void erasePositions (unsigned int initialPos, unsigned int numPos);
88 
90  void getPositionValues (unsigned int posId, V& vec) const;
91 
93 
94  void setPositionValues (unsigned int posId, const V& vec);
95 
97  void subUniformlySampledCdf (const V& numEvaluationPointsVec,
98  ArrayOfOneDGrids <V,M>& cdfGrids,
99  ArrayOfOneDTables<V,M>& cdfValues) const;
100 
102  void unifiedUniformlySampledCdf (const V& numEvaluationPointsVec,
103  ArrayOfOneDGrids <V,M>& unifiedCdfGrids,
104  ArrayOfOneDTables<V,M>& unifiedCdfValues) const;
106 
107  void subMeanExtra (unsigned int initialPos,
108  unsigned int numPos,
109  V& meanVec) const;
110 
112 
113  void unifiedMeanExtra (unsigned int initialPos,
114  unsigned int numPos,
115  V& unifiedMeanVec) const;
116 
118 
119  void subMedianExtra (unsigned int initialPos,
120  unsigned int numPos,
121  V& medianVec) const;
122 
124 
125  void unifiedMedianExtra (unsigned int initialPos,
126  unsigned int numPos,
127  V& unifiedMedianVec) const;
129 
134  void subSampleVarianceExtra (unsigned int initialPos,
135  unsigned int numPos,
136  const V& meanVec,
137  V& samVec) const;
139 
140  void unifiedSampleVarianceExtra (unsigned int initialPos,
141  unsigned int numPos,
142  const V& unifiedMeanVec,
143  V& unifiedSamVec) const;
144 
146 
147  void subSampleStd (unsigned int initialPos,
148  unsigned int numPos,
149  const V& meanVec,
150  V& stdVec) const;
152 
153  void unifiedSampleStd (unsigned int initialPos,
154  unsigned int numPos,
155  const V& unifiedMeanVec,
156  V& unifiedStdVec) const;
157 
159 
165  void subPopulationVariance (unsigned int initialPos,
166  unsigned int numPos,
167  const V& meanVec,
168  V& popVec) const;
169 
171 
172  void unifiedPopulationVariance (unsigned int initialPos,
173  unsigned int numPos,
174  const V& unifiedMeanVec,
175  V& unifiedPopVec) const;
176 
178 
182  void autoCovariance (unsigned int initialPos,
183  unsigned int numPos,
184  const V& meanVec,
185  unsigned int lag,
186  V& covVec) const;
187 
189 
194  void autoCorrViaDef (unsigned int initialPos,
195  unsigned int numPos,
196  unsigned int lag,
197  V& corrVec) const;
199  void autoCorrViaFft (unsigned int initialPos,
200  unsigned int numPos,
201  const std::vector<unsigned int>& lags,
202  std::vector<V*>& corrVecs) const;
203 
205  void autoCorrViaFft (unsigned int initialPos,
206  unsigned int numPos,
207  unsigned int numSum,
208  V& autoCorrsSumVec) const;
210  void subMinMaxExtra (unsigned int initialPos,
211  unsigned int numPos,
212  V& minVec,
213  V& maxVec) const;
215  void unifiedMinMaxExtra (unsigned int initialPos,
216  unsigned int numPos,
217  V& unifiedMinVec,
218  V& unifiedMaxVec) const;
220 
222  // TODO explain params minVec and maxVec
223  void subHistogram (unsigned int initialPos,
224  const V& minVec,
225  const V& maxVec,
226  std::vector<V*>& centersForAllBins,
227  std::vector<V*>& quanttsForAllBins) const;
229  void unifiedHistogram (unsigned int initialPos,
230  const V& unifiedMinVec,
231  const V& unifiedMaxVec,
232  std::vector<V*>& unifiedCentersForAllBins,
233  std::vector<V*>& unifiedQuanttsForAllBins) const;
234 
236 
241  void subInterQuantileRange (unsigned int initialPos,
242  V& iqrVec) const;
243 
245  void unifiedInterQuantileRange (unsigned int initialPos,
246  V& unifiedIqrVec) const;
247 
249 
257  void subScalesForKde (unsigned int initialPos,
258  const V& iqrVec,
259  unsigned int kdeDimension,
260  V& scaleVec) const;
262  void unifiedScalesForKde (unsigned int initialPos,
263  const V& unifiedIqrVec,
264  unsigned int kdeDimension,
265  V& unifiedScaleVec) const;
267 
271  void subGaussian1dKde (unsigned int initialPos,
272  const V& scaleVec,
273  const std::vector<V*>& evalParamVecs,
274  std::vector<V*>& densityVecs) const;
276  void unifiedGaussian1dKde (unsigned int initialPos,
277  const V& unifiedScaleVec,
278  const std::vector<V*>& unifiedEvalParamVecs,
279  std::vector<V*>& unifiedDensityVecs) const;
281 
287  void subWriteContents (unsigned int initialPos,
288  unsigned int numPos,
289  const std::string& fileName,
290  const std::string& fileType,
291  const std::set<unsigned int>& allowedSubEnvIds) const;
293 
294  void subWriteContents (unsigned int initialPos,
295  unsigned int numPos,
296  FilePtrSetStruct& filePtrSet,
297  const std::string& fileType) const;
299 
300  void subWriteContents (unsigned int initialPos,
301  unsigned int numPos,
302  std::ofstream& ofs,
303  const std::string& fileType) const;
306  void unifiedWriteContents (const std::string& fileName,
307  const std::string& fileType) const;
308 
310  void unifiedReadContents (const std::string& fileName,
311  const std::string& fileType,
312  const unsigned int subSequenceSize);
314  void select (const std::vector<unsigned int>& idsOfUniquePositions);
315 
317 
318  void filter (unsigned int initialPos,
319  unsigned int spacing);
320 
322  double estimateConvBrooksGelman (unsigned int initialPos,
323  unsigned int numPos) const;
324 
326 
328  void extractScalarSeq (unsigned int initialPos,
329  unsigned int spacing,
330  unsigned int numPos,
331  unsigned int paramId,
332  ScalarSequence<double>& scalarSeq) const;
333 
334 #ifdef UQ_SEQ_VEC_USES_OPERATOR
335  const V* operator[] (unsigned int posId) const;
336  const V*& operator[] (unsigned int posId);
337 #endif
338 
339 #ifdef UQ_ALSO_COMPUTE_MDFS_WITHOUT_KDE
340  void subUniformlySampledMdf (const V& numEvaluationPointsVec,
341  ArrayOfOneDGrids <V,M>& mdfGrids,
342  ArrayOfOneDTables<V,M>& mdfValues) const;
343 #endif
344 
345 #ifdef QUESO_COMPUTES_EXTRA_POST_PROCESSING_STATISTICS
346  void subMeanCltStd (unsigned int initialPos,
347  unsigned int numPos,
348  const V& meanVec,
349  V& samVec) const;
350  void unifiedMeanCltStd (unsigned int initialPos,
351  unsigned int numPos,
352  const V& unifiedMeanVec,
353  V& unifiedSamVec) const;
354  void bmm (unsigned int initialPos,
355  unsigned int batchLength,
356  V& bmmVec) const;
357  void fftForward (unsigned int initialPos,
358  unsigned int fftSize,
359  unsigned int paramId,
360  std::vector<std::complex<double> >& fftResult) const;
361  //void fftInverse (unsigned int fftSize);
362  void psd (unsigned int initialPos,
363  unsigned int numBlocks,
364  double hopSizeRatio,
365  unsigned int paramId,
366  std::vector<double>& psdResult) const;
367  void psdAtZero (unsigned int initialPos,
368  unsigned int numBlocks,
369  double hopSizeRatio,
370  V& psdVec) const;
371  void geweke (unsigned int initialPos,
372  double ratioNa,
373  double ratioNb,
374  V& gewVec) const;
375  void meanStacc (unsigned int initialPos,
376  V& meanStaccVec) const;
377  void subCdfPercentageRange (unsigned int initialPos,
378  unsigned int numPos,
379  double range, // \in [0,1]
380  V& lowerVec,
381  V& upperVec) const;
382  void unifiedCdfPercentageRange (unsigned int initialPos,
383  unsigned int numPos,
384  double range, // \in [0,1]
385  V& lowerVec,
386  V& upperVec) const;
387  void subCdfStacc (unsigned int initialPos,
388  std::vector<V*>& cdfStaccVecs,
389  std::vector<V*>& cdfStaccVecsUp,
390  std::vector<V*>& cdfStaccVecsLow,
391  std::vector<V*>& sortedDataVecs) const;
392  void subCdfStacc (unsigned int initialPos,
393  const std::vector<V*>& evalPositionsVecs,
394  std::vector<V*>& cdfStaccVecs) const;
395 #endif
396 
397 private:
399  void copy (const SequenceOfVectors<V,M>& src);
400 
402 
405  void extractRawData (unsigned int initialPos,
406  unsigned int spacing,
407  unsigned int numPos,
408  unsigned int paramId,
409  std::vector<double>& rawData) const;
410 
415 
417  std::vector<const V*> m_seq;
418 
419 #ifdef UQ_CODE_HAS_MONITORS
420  void subMeanMonitorAlloc (unsigned int numberOfMonitorPositions);
421  void subMeanInter0MonitorAlloc (unsigned int numberOfMonitorPositions);
422  void unifiedMeanMonitorAlloc (unsigned int numberOfMonitorPositions);
423  void subMeanMonitorRun (unsigned int monitorPosition,
424  V& subMeanVec,
425  V& subMeanCltStd);
426  void subMeanInter0MonitorRun (unsigned int currentPosition,
427  V& subMeanInter0Mean,
428  V& subMeanInter0Clt95,
429  V& subMeanInter0Empirical90,
430  V& subMeanInter0Min,
431  V& subMeanInter0Max);
432  void unifiedMeanMonitorRun (unsigned int currentPosition,
433  V& unifiedMeanVec,
434  V& unifiedMeanCltStd);
435  void subMeanMonitorStore (unsigned int i,
436  unsigned int monitorPosition,
437  const V& subMeanVec,
438  const V& subMeanCltStd);
439  void subMeanInter0MonitorStore (unsigned int i,
440  unsigned int monitorPosition,
441  const V& subMeanInter0Mean,
442  const V& subMeanInter0Clt95,
443  const V& subMeanInter0Empirical90,
444  const V& subMeanInter0Min,
445  const V& subMeanInter0Max);
446  void unifiedMeanMonitorStore (unsigned int i,
447  unsigned int monitorPosition,
448  V& unifiedMeanVec,
449  V& unifiedMeanCltStd);
450  void subMeanMonitorFree ();
451  void subMeanInter0MonitorFree ();
452  void unifiedMeanMonitorFree ();
453  void subMeanMonitorWrite (std::ofstream& ofs);
454  void subMeanInter0MonitorWrite (std::ofstream& ofs);
455  void unifiedMeanMonitorWrite (std::ofstream& ofs);
456 #endif
457 
458 #ifdef UQ_CODE_HAS_MONITORS
459  ScalarSequence<double>* m_subMeanMonitorPosSeq;
460  SequenceOfVectors<V,M>* m_subMeanVecSeq;
461  SequenceOfVectors<V,M>* m_subMeanCltStdSeq;
462 
463  ScalarSequence<double>* m_subMeanInter0MonitorPosSeq;
464  SequenceOfVectors<V,M>* m_subMeanInter0Mean;
465  SequenceOfVectors<V,M>* m_subMeanInter0Clt95;
466  SequenceOfVectors<V,M>* m_subMeanInter0Empirical90;
467  SequenceOfVectors<V,M>* m_subMeanInter0Min;
468  SequenceOfVectors<V,M>* m_subMeanInter0Max;
469 
470  ScalarSequence<double>* m_unifiedMeanMonitorPosSeq;
471  SequenceOfVectors<V,M>* m_unifiedMeanVecSeq;
472  SequenceOfVectors<V,M>* m_unifiedMeanCltStdSeq;
473 #endif
474 };
475 
476 } // End namespace QUESO
477 
478 #endif // UQ_SEQUENCE_OF_VECTORS_H
void subUniformlySampledCdf(const V &numEvaluationPointsVec, ArrayOfOneDGrids< V, M > &cdfGrids, ArrayOfOneDTables< V, M > &cdfValues) const
Uniformly samples from the CDF from the sub-sequence.
void unifiedReadContents(const std::string &fileName, const std::string &fileType, const unsigned int subSequenceSize)
Reads the unified sequence from a file.
Class to accommodate arrays of one-dimensional grid.
void unifiedMedianExtra(unsigned int initialPos, unsigned int numPos, V &unifiedMedianVec) const
Finds the median value of the unfed sequence, considering numPos positions starting at position initi...
void subHistogram(unsigned int initialPos, const V &minVec, const V &maxVec, std::vector< V * > &centersForAllBins, std::vector< V * > &quanttsForAllBins) const
Calculates the histogram of the sub-sequence.
Struct for handling data input and output from files.
Definition: Environment.h:66
void autoCorrViaFft(unsigned int initialPos, unsigned int numPos, const std::vector< unsigned int > &lags, std::vector< V * > &corrVecs) const
Calculates the autocorrelation via Fast Fourier transforms (FFT).
void subMedianExtra(unsigned int initialPos, unsigned int numPos, V &medianVec) const
Finds the median value of the sub-sequence, considering numPos positions starting at position initial...
void unifiedInterQuantileRange(unsigned int initialPos, V &unifiedIqrVec) const
Returns the interquartile range of the values in the unified sequence.
void unifiedPopulationVariance(unsigned int initialPos, unsigned int numPos, const V &unifiedMeanVec, V &unifiedPopVec) const
Finds the population variance of the unified sequence, considering numPos positions starting at posit...
void subMeanExtra(unsigned int initialPos, unsigned int numPos, V &meanVec) const
Finds the mean value of the sub-sequence, considering numPos positions starting at position initialPo...
void extractScalarSeq(unsigned int initialPos, unsigned int spacing, unsigned int numPos, unsigned int paramId, ScalarSequence< double > &scalarSeq) const
Extracts a sequence of scalars.
void subSampleStd(unsigned int initialPos, unsigned int numPos, const V &meanVec, V &stdVec) const
Finds the sample standard deviation of the sub-sequence, considering numPos positions starting at pos...
unsigned int subSequenceSize() const
Size of the sub-sequence of vectors.
SequenceOfVectors< V, M > & operator=(const SequenceOfVectors< V, M > &rhs)
Copies values from rhs to this.
double estimateConvBrooksGelman(unsigned int initialPos, unsigned int numPos) const
Estimates convergence rate using Brooks &amp; Gelman method.
std::vector< const V * >::iterator seqVectorPositionIteratorTypedef
void unifiedWriteContents(const std::string &fileName, const std::string &fileType) const
void unifiedScalesForKde(unsigned int initialPos, const V &unifiedIqrVec, unsigned int kdeDimension, V &unifiedScaleVec) const
Selects the scales (bandwidth) for the kernel density estimation, considering the unified sequence...
void autoCovariance(unsigned int initialPos, unsigned int numPos, const V &meanVec, unsigned int lag, V &covVec) const
Calculates the autocovariance.
const VectorSpace< V, M > & vectorSpace() const
Vector space; access to protected attribute VectorSpace&lt;V,M&gt;&amp; m_vectorSpace.
void erasePositions(unsigned int initialPos, unsigned int numPos)
Erases numPos elements of the sequence starting at position initialPos.
void unifiedMinMaxExtra(unsigned int initialPos, unsigned int numPos, V &unifiedMinVec, V &unifiedMaxVec) const
Finds the minimum and the maximum values of the unified sequence, considering numPos positions starti...
void subGaussian1dKde(unsigned int initialPos, const V &scaleVec, const std::vector< V * > &evalParamVecs, std::vector< V * > &densityVecs) const
Gaussian kernel for the KDE estimate of the sub-sequence.
void extractRawData(unsigned int initialPos, unsigned int spacing, unsigned int numPos, unsigned int paramId, std::vector< double > &rawData) const
Extracts the raw data.
void subSampleVarianceExtra(unsigned int initialPos, unsigned int numPos, const V &meanVec, V &samVec) const
Finds the sample variance of the sub-sequence, considering numPos positions starting at position init...
void subMinMaxExtra(unsigned int initialPos, unsigned int numPos, V &minVec, V &maxVec) const
Finds the minimum and the maximum values of the sub-sequence, considering numPos positions starting a...
void unifiedUniformlySampledCdf(const V &numEvaluationPointsVec, ArrayOfOneDGrids< V, M > &unifiedCdfGrids, ArrayOfOneDTables< V, M > &unifiedCdfValues) const
Uniformly samples from the CDF from the sub-sequence.
void getPositionValues(unsigned int posId, V &vec) const
Gets the values of the sequence at position posId and stores them at vec.
void autoCorrViaDef(unsigned int initialPos, unsigned int numPos, unsigned int lag, V &corrVec) const
Calculates the autocorrelation via definition.
void subScalesForKde(unsigned int initialPos, const V &iqrVec, unsigned int kdeDimension, V &scaleVec) const
Selects the scales (bandwidth, scaleVec) for the kernel density estimation, considering only the sub-...
void unifiedHistogram(unsigned int initialPos, const V &unifiedMinVec, const V &unifiedMaxVec, std::vector< V * > &unifiedCentersForAllBins, std::vector< V * > &unifiedQuanttsForAllBins) const
Calculates the histogram of the unified sequence.
void resizeSequence(unsigned int newSubSequenceSize)
Resizes the sequence.
void unifiedGaussian1dKde(unsigned int initialPos, const V &unifiedScaleVec, const std::vector< V * > &unifiedEvalParamVecs, std::vector< V * > &unifiedDensityVecs) const
Gaussian kernel for the KDE estimate of the unified sequence.
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.
void filter(unsigned int initialPos, unsigned int spacing)
Filters positions in the sequence of vectors.
Class to accommodate arrays of one-dimensional tables.
void unifiedSampleVarianceExtra(unsigned int initialPos, unsigned int numPos, const V &unifiedMeanVec, V &unifiedSamVec) const
Finds the sample variance of the unified sequence, considering numPos positions starting at position ...
const std::string & name() const
Access to protected attribute m_name: name of the sequence of vectors.
Base class for handling vector and array samples (sequence of vectors or arrays). ...
void subInterQuantileRange(unsigned int initialPos, V &iqrVec) const
Returns the interquartile range of the values in the sub-sequence.
void unifiedSampleStd(unsigned int initialPos, unsigned int numPos, const V &unifiedMeanVec, V &unifiedStdVec) const
Finds the sample standard deviation of the unified sequence, considering numPos positions starting at...
void copy(const SequenceOfVectors< V, M > &src)
Copies vector sequence src to this.
A class representing a vector space.
Definition: VectorSet.h:46
void select(const std::vector< unsigned int > &idsOfUniquePositions)
TODO: It shall select positions in the sequence of vectors.
std::vector< const V * >::const_iterator seqVectorPositionConstIteratorTypedef
Class for handling vector samples (sequence of vectors).
~SequenceOfVectors()
Destructor.
void setPositionValues(unsigned int posId, const V &vec)
Set the values in vec at position posId of the sequence.
void resetValues(unsigned int initialPos, unsigned int numPos)
Resets a total of numPos values of the sequence starting at position initialPos.
void unifiedMeanExtra(unsigned int initialPos, unsigned int numPos, V &unifiedMeanVec) const
Finds the mean value of the unified sequence, considering numPos positions starting at position initi...
void subPopulationVariance(unsigned int initialPos, unsigned int numPos, const V &meanVec, V &popVec) const
Finds the population variance of the sub-sequence, considering numPos positions starting at position ...
SequenceOfVectors(const VectorSpace< V, M > &vectorSpace, unsigned int subSequenceSize, const std::string &name)
Default constructor.
std::vector< const V * > m_seq
Sequence of vectors.

Generated on Thu Apr 23 2015 19:30:54 for queso-0.52.0 by  doxygen 1.8.5