queso-0.51.1
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,2009,2010,2011,2012,2013 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 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 ...
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...
Class to accommodate arrays of one-dimensional grid.
void subUniformlySampledCdf(const V &numEvaluationPointsVec, ArrayOfOneDGrids< V, M > &cdfGrids, ArrayOfOneDTables< V, M > &cdfValues) const
Uniformly samples from the CDF from the sub-sequence.
void unifiedInterQuantileRange(unsigned int initialPos, V &unifiedIqrVec) const
Returns the interquartile range of the values in the unified sequence.
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 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 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 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...
double estimateConvBrooksGelman(unsigned int initialPos, unsigned int numPos) const
Estimates convergence rate using Brooks &amp; Gelman method.
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 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 ...
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 getPositionValues(unsigned int posId, V &vec) const
Gets the values of the sequence at position posId and stores them at vec.
void select(const std::vector< unsigned int > &idsOfUniquePositions)
TODO: It shall select positions in the sequence of vectors.
void extractScalarSeq(unsigned int initialPos, unsigned int spacing, unsigned int numPos, unsigned int paramId, ScalarSequence< double > &scalarSeq) const
Extracts a sequence of scalars.
void autoCovariance(unsigned int initialPos, unsigned int numPos, const V &meanVec, unsigned int lag, V &covVec) const
Calculates the autocovariance.
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 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 copy(const SequenceOfVectors< V, M > &src)
Copies vector sequence src to this.
void unifiedUniformlySampledCdf(const V &numEvaluationPointsVec, ArrayOfOneDGrids< V, M > &unifiedCdfGrids, ArrayOfOneDTables< V, M > &unifiedCdfValues) const
Uniformly samples from the CDF from the sub-sequence.
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...
const std::string & name() const
Access to protected attribute m_name: name of the sequence of vectors.
std::vector< const V * >::iterator seqVectorPositionIteratorTypedef
Struct for handling data input and output from files.
Definition: Environment.h:66
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 extractRawData(unsigned int initialPos, unsigned int spacing, unsigned int numPos, unsigned int paramId, std::vector< double > &rawData) const
Extracts the raw data.
std::vector< const V * > m_seq
Sequence of vectors.
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.
Base class for handling vector and array samples (sequence of vectors or arrays). ...
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 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.
void erasePositions(unsigned int initialPos, unsigned int numPos)
Erases numPos elements of the sequence starting at position initialPos.
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 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 subInterQuantileRange(unsigned int initialPos, V &iqrVec) const
Returns the interquartile range of the values in the sub-sequence.
std::vector< const V * >::const_iterator seqVectorPositionConstIteratorTypedef
const VectorSpace< V, M > & vectorSpace() const
Vector space; access to protected attribute VectorSpace&lt;V,M&gt;&amp; m_vectorSpace.
Class to accommodate arrays of one-dimensional tables.
SequenceOfVectors< V, M > & operator=(const SequenceOfVectors< V, M > &rhs)
Copies values from rhs to this.
A class representing a vector space.
Definition: VectorSet.h:46
Class for handling vector samples (sequence of vectors).
SequenceOfVectors(const VectorSpace< V, M > &vectorSpace, unsigned int subSequenceSize, const std::string &name)
Default constructor.
void unifiedReadContents(const std::string &fileName, const std::string &fileType, const unsigned int subSequenceSize)
Reads the unified sequence from a file.
void autoCorrViaDef(unsigned int initialPos, unsigned int numPos, unsigned int lag, V &corrVec) const
Calculates the autocorrelation via definition.
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.
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...
unsigned int subSequenceSize() const
Size of the sub-sequence of vectors.
void unifiedWriteContents(const std::string &fileName, const std::string &fileType) const
~SequenceOfVectors()
Destructor.

Generated on Thu Apr 23 2015 19:26:14 for queso-0.51.1 by  doxygen 1.8.5