25 #include <queso/SequenceOfVectors.h>
26 #include <queso/GslVector.h>
27 #include <queso/GslMatrix.h>
32 template <
class V,
class M>
35 unsigned int subSequenceSize,
36 const std::string& name)
39 m_seq (subSequenceSize,NULL)
40 #ifdef UQ_CODE_HAS_MONITORS
42 m_subMeanMonitorPosSeq (NULL),
43 m_subMeanVecSeq (NULL),
44 m_subMeanCltStdSeq (NULL),
45 m_subMeanInter0MonitorPosSeq (NULL),
46 m_subMeanInter0Mean (NULL),
47 m_subMeanInter0Clt95 (NULL),
48 m_subMeanInter0Empirical90 (NULL),
49 m_subMeanInter0Min (NULL),
50 m_subMeanInter0Max (NULL),
51 m_unifiedMeanMonitorPosSeq (NULL),
52 m_unifiedMeanVecSeq (NULL),
53 m_unifiedMeanCltStdSeq (NULL)
67 template <
class V,
class M>
70 #ifdef UQ_CODE_HAS_MONITORS
71 if (m_subMeanMonitorPosSeq)
delete m_subMeanMonitorPosSeq;
72 if (m_subMeanVecSeq )
delete m_subMeanVecSeq;
73 if (m_subMeanCltStdSeq )
delete m_subMeanCltStdSeq;
75 if (m_subMeanInter0MonitorPosSeq)
delete m_subMeanInter0MonitorPosSeq;
76 if (m_subMeanInter0Mean )
delete m_subMeanInter0Mean;
77 if (m_subMeanInter0Clt95 )
delete m_subMeanInter0Clt95;
78 if (m_subMeanInter0Empirical90 )
delete m_subMeanInter0Empirical90;
79 if (m_subMeanInter0Min )
delete m_subMeanInter0Min;
80 if (m_subMeanInter0Max )
delete m_subMeanInter0Max;
82 if (m_unifiedMeanMonitorPosSeq)
delete m_unifiedMeanMonitorPosSeq;
83 if (m_unifiedMeanVecSeq )
delete m_unifiedMeanVecSeq;
84 if (m_unifiedMeanCltStdSeq )
delete m_unifiedMeanCltStdSeq;
87 for (
unsigned int i = 0; i < (
unsigned int) m_seq.size(); ++i) {
88 if (m_seq[i])
delete m_seq[i];
92 template <
class V,
class M>
101 template <
class V,
class M>
108 template <
class V,
class M>
112 if (newSubSequenceSize != this->subSequenceSize()) {
113 if (newSubSequenceSize < this->subSequenceSize()) {
114 this->resetValues(newSubSequenceSize,this->subSequenceSize()-newSubSequenceSize);
116 m_seq.resize(newSubSequenceSize,NULL);
117 std::vector<const V*>(m_seq).swap(m_seq);
124 template <
class V,
class M>
128 bool bRC = ((initialPos < this->subSequenceSize()) &&
130 ((initialPos+numPos) <= this->subSequenceSize()));
131 if ((bRC ==
false) && (m_env.subDisplayFile())) {
132 *m_env.subDisplayFile() <<
"In SequenceOfVectors<V,M>::resetValues()"
133 <<
", initialPos = " << initialPos
134 <<
", this->subSequenceSize() = " << this->subSequenceSize()
135 <<
", numPos = " << numPos
140 for (
unsigned int j = 0; j < numPos; ++j) {
141 if (m_seq[initialPos+j] != NULL) {
142 delete m_seq[initialPos+j];
143 m_seq[initialPos+j] = NULL;
152 template <
class V,
class M>
156 bool bRC = ((initialPos < this->subSequenceSize()) &&
158 ((initialPos+numPos) <= this->subSequenceSize()));
161 for (
unsigned int j = 0; j < numPos; ++j) {
162 if (m_seq[initialPos+j] != NULL) {
163 delete m_seq[initialPos+j];
164 m_seq[initialPos+j] = NULL;
169 if (initialPos < this->subSequenceSize()) std::advance(posIteratorBegin,initialPos);
170 else posIteratorBegin = m_seq.end();
172 unsigned int posEnd = initialPos + numPos - 1;
174 if (posEnd < this->subSequenceSize()) std::advance(posIteratorEnd,posEnd);
175 else posIteratorEnd = m_seq.end();
177 unsigned int oldSubSequenceSize = this->subSequenceSize();
178 m_seq.erase(posIteratorBegin,posIteratorEnd);
179 queso_require_equal_to_msg((oldSubSequenceSize - numPos), this->subSequenceSize(),
"(oldSubSequenceSize - numPos) != this->subSequenceSize()");
186 template <
class V,
class M>
199 vec = *(m_seq[posId]);
204 template <
class V,
class M>
212 if (m_seq[posId] != NULL)
delete m_seq[posId];
213 m_seq[posId] =
new V(vec);
225 template <
class V,
class M>
228 const V& numEvaluationPointsVec,
232 V minDomainValues(m_vectorSpace.zeroVector());
233 V maxDomainValues(m_vectorSpace.zeroVector());
237 unsigned int numParams = this->vectorSizeLocal();
238 for (
unsigned int i = 0; i < numParams; ++i) {
239 this->extractScalarSeq(0,
245 std::vector<double> aCdf(0);
246 data.subUniformlySampledCdf((
unsigned int) numEvaluationPointsVec[i],
260 template <
class V,
class M>
263 const V& numEvaluationPointsVec,
267 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 10)) {
268 *m_env.subDisplayFile() <<
"Entering SequenceOfVectors<V,M>::unifiedUniformlySampledCdf()"
272 V unifiedMinDomainValues(m_vectorSpace.zeroVector());
273 V unifiedMaxDomainValues(m_vectorSpace.zeroVector());
277 unsigned int numParams = this->vectorSizeLocal();
278 for (
unsigned int i = 0; i < numParams; ++i) {
279 this->extractScalarSeq(0,
285 std::vector<double> aCdf(0);
286 data.unifiedUniformlySampledCdf(m_vectorSpace.numOfProcsForStorage() == 1,
287 (
unsigned int) numEvaluationPointsVec[i],
288 unifiedMinDomainValues[i],
289 unifiedMaxDomainValues[i],
295 unifiedMinDomainValues,
296 unifiedMaxDomainValues);
298 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 10)) {
299 *m_env.subDisplayFile() <<
"Leaving SequenceOfVectors<V,M>::unifiedUniformlySampledCdf()"
306 template <
class V,
class M>
309 unsigned int initialPos,
313 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 5)) {
314 *m_env.subDisplayFile() <<
"Entering SequenceOfVectors<V,M>::subMeanExtra()"
315 <<
": initialPos = " << initialPos
316 <<
", numPos = " << numPos
317 <<
", sub sequence size = " << this->subSequenceSize()
321 bool bRC = ((initialPos < this->subSequenceSize()) &&
323 ((initialPos+numPos) <= this->subSequenceSize()) &&
324 (this->vectorSizeLocal() == meanVec.sizeLocal() ));
325 if ((bRC ==
false) && (m_env.subDisplayFile())) {
326 *m_env.subDisplayFile() <<
"In SequenceOfVectors<V,M>::subMeanExtra()"
327 <<
", initialPos = " << initialPos
328 <<
", this->subSequenceSize() = " << this->subSequenceSize()
329 <<
", numPos = " << numPos
330 <<
", this->vectorSizeLocal() = " << this->vectorSizeLocal()
331 <<
", meanVec.sizeLocal() = " << meanVec.sizeLocal()
338 unsigned int numParams = this->vectorSizeLocal();
339 for (
unsigned int i = 0; i < numParams; ++i) {
340 this->extractScalarSeq(initialPos,
349 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 5)) {
350 *m_env.subDisplayFile() <<
"Leaving SequenceOfVectors<V,M>::subMeanExtra()"
351 <<
": initialPos = " << initialPos
352 <<
", numPos = " << numPos
353 <<
", sub sequence size = " << this->subSequenceSize()
354 <<
", meanVec = " << meanVec
361 template <
class V,
class M>
364 unsigned int initialPos,
366 V& unifiedMeanVec)
const
368 unsigned int tmpUnif = this->unifiedSequenceSize();
369 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 5)) {
370 *m_env.subDisplayFile() <<
"Entering SequenceOfVectors<V,M>::unifiedMeanExtra()"
371 <<
": initialPos = " << initialPos
372 <<
", numPos = " << numPos
373 <<
", sub sequence size = " << this->subSequenceSize()
374 <<
", unified sequence size = " << tmpUnif
378 bool bRC = ((initialPos < this->subSequenceSize() ) &&
380 ((initialPos+numPos) <= this->subSequenceSize() ) &&
381 (this->vectorSizeLocal() == unifiedMeanVec.sizeLocal()));
382 if ((bRC ==
false) && (m_env.subDisplayFile())) {
383 *m_env.subDisplayFile() <<
"In SequenceOfVectors<V,M>::unifiedMeanExtra()"
384 <<
", initialPos = " << initialPos
385 <<
", this->subSequenceSize() = " << this->subSequenceSize()
386 <<
", numPos = " << numPos
387 <<
", this->vectorSizeLocal() = " << this->vectorSizeLocal()
388 <<
", unifiedMeanVec.sizeLocal() = " << unifiedMeanVec.sizeLocal()
395 unsigned int numParams = this->vectorSizeLocal();
396 for (
unsigned int i = 0; i < numParams; ++i) {
397 this->extractScalarSeq(initialPos,
402 unifiedMeanVec[i] = data.
unifiedMeanExtra(m_vectorSpace.numOfProcsForStorage() == 1,
407 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 5)) {
408 *m_env.subDisplayFile() <<
"Leaving SequenceOfVectors<V,M>::unifiedMeanExtra()"
409 <<
": initialPos = " << initialPos
410 <<
", numPos = " << numPos
411 <<
", sub sequence size = " << this->subSequenceSize()
412 <<
", unified sequence size = " << tmpUnif
413 <<
", unifiedMeanVec = " << unifiedMeanVec
420 template <
class V,
class M>
423 unsigned int initialPos,
427 if (this->subSequenceSize() == 0)
return;
429 bool bRC = ((initialPos < this->subSequenceSize()) &&
431 ((initialPos+numPos) <= this->subSequenceSize()));
433 std::cerr <<
"In SequenceOfVectors<V,M>::subMedianExtra()"
434 <<
": ERROR at fullRank " << m_env.fullRank()
435 <<
", initialPos = " << initialPos
436 <<
", numPos = " << numPos
437 <<
", this->subSequenceSize() = " << this->subSequenceSize()
439 if (m_env.subDisplayFile()) {
440 *m_env.subDisplayFile() <<
"In SequenceOfVectors<V,M>::subMedianExtra()"
441 <<
": ERROR at fullRank " << m_env.fullRank()
442 <<
", initialPos = " << initialPos
443 <<
", numPos = " << numPos
444 <<
", this->subSequenceSize() = " << this->subSequenceSize()
452 unsigned int numParams = this->vectorSizeLocal();
453 for (
unsigned int i = 0; i < numParams; ++i) {
454 this->extractScalarSeq(initialPos,
463 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 5)) {
464 *m_env.subDisplayFile() <<
"Leaving SequenceOfVectors<V,M>::subMedianExtra()"
465 <<
": initialPos = " << initialPos
466 <<
", numPos = " << numPos
467 <<
", sub sequence size = " << this->subSequenceSize()
468 <<
", medianVec = " << medianVec
475 template <
class V,
class M>
478 unsigned int initialPos,
480 V& unifiedMedianVec)
const
482 unsigned int tmpUnif = this->unifiedSequenceSize();
483 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 5)) {
484 *m_env.subDisplayFile() <<
"Entering SequenceOfVectors<V,M>::unifiedMedianExtra()"
485 <<
": initialPos = " << initialPos
486 <<
", numPos = " << numPos
487 <<
", sub sequence size = " << this->subSequenceSize()
488 <<
", unified sequence size = " << tmpUnif
492 bool bRC = ((initialPos < this->subSequenceSize() ) &&
494 ((initialPos+numPos) <= this->subSequenceSize() ) &&
495 (this->vectorSizeLocal() == unifiedMedianVec.sizeLocal()));
496 if ((bRC ==
false) && (m_env.subDisplayFile())) {
497 *m_env.subDisplayFile() <<
"In SequenceOfVectors<V,M>::unifiedMedianExtra()"
498 <<
", initialPos = " << initialPos
499 <<
", this->subSequenceSize() = " << this->subSequenceSize()
500 <<
", numPos = " << numPos
501 <<
", this->vectorSizeLocal() = " << this->vectorSizeLocal()
502 <<
", unifiedMedianVec.sizeLocal() = " << unifiedMedianVec.sizeLocal()
509 unsigned int numParams = this->vectorSizeLocal();
510 for (
unsigned int i = 0; i < numParams; ++i) {
511 this->extractScalarSeq(initialPos,
516 unifiedMedianVec[i] = data.
unifiedMedianExtra(m_vectorSpace.numOfProcsForStorage() == 1,
521 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 5)) {
522 *m_env.subDisplayFile() <<
"Leaving SequenceOfVectors<V,M>::unifiedMedianExtra()"
523 <<
": initialPos = " << initialPos
524 <<
", numPos = " << numPos
525 <<
", sub sequence size = " << this->subSequenceSize()
526 <<
", unified sequence size = " << tmpUnif
527 <<
", unifiedMedianVec = " << unifiedMedianVec
534 template <
class V,
class M>
537 unsigned int initialPos,
542 bool bRC = ((initialPos < this->subSequenceSize()) &&
544 ((initialPos+numPos) <= this->subSequenceSize()) &&
545 (this->vectorSizeLocal() == meanVec.sizeLocal() ) &&
546 (this->vectorSizeLocal() == samVec.sizeLocal() ));
551 unsigned int numParams = this->vectorSizeLocal();
552 for (
unsigned int i = 0; i < numParams; ++i) {
553 this->extractScalarSeq(initialPos,
566 template <
class V,
class M>
569 unsigned int initialPos,
571 const V& unifiedMeanVec,
572 V& unifiedSamVec)
const
574 bool bRC = ((initialPos < this->subSequenceSize() ) &&
576 ((initialPos+numPos) <= this->subSequenceSize() ) &&
577 (this->vectorSizeLocal() == unifiedMeanVec.sizeLocal()) &&
578 (this->vectorSizeLocal() == unifiedSamVec.sizeLocal() ));
583 unsigned int numParams = this->vectorSizeLocal();
584 for (
unsigned int i = 0; i < numParams; ++i) {
585 this->extractScalarSeq(initialPos,
599 template <
class V,
class M>
602 unsigned int initialPos,
607 bool bRC = ((initialPos < this->subSequenceSize()) &&
609 ((initialPos+numPos) <= this->subSequenceSize()) &&
610 (this->vectorSizeLocal() == meanVec.sizeLocal() ) &&
611 (this->vectorSizeLocal() == stdvec.sizeLocal() ));
616 unsigned int numParams = this->vectorSizeLocal();
617 for (
unsigned int i = 0; i < numParams; ++i) {
618 this->extractScalarSeq(initialPos,
631 template <
class V,
class M>
634 unsigned int initialPos,
636 const V& unifiedMeanVec,
637 V& unifiedStdVec)
const
639 bool bRC = ((initialPos < this->subSequenceSize() ) &&
641 ((initialPos+numPos) <= this->subSequenceSize() ) &&
642 (this->vectorSizeLocal() == unifiedMeanVec.sizeLocal()) &&
643 (this->vectorSizeLocal() == unifiedStdVec.sizeLocal() ));
648 unsigned int numParams = this->vectorSizeLocal();
649 for (
unsigned int i = 0; i < numParams; ++i) {
650 this->extractScalarSeq(initialPos,
655 unifiedStdVec[i] = data.
unifiedSampleStd(m_vectorSpace.numOfProcsForStorage() == 1,
664 template <
class V,
class M>
667 unsigned int initialPos,
672 bool bRC = ((initialPos < this->subSequenceSize()) &&
674 ((initialPos+numPos) <= this->subSequenceSize()) &&
675 (this->vectorSizeLocal() == meanVec.sizeLocal() ) &&
676 (this->vectorSizeLocal() == popVec.sizeLocal() ));
681 unsigned int numParams = this->vectorSizeLocal();
682 for (
unsigned int i = 0; i < numParams; ++i) {
683 this->extractScalarSeq(initialPos,
696 template <
class V,
class M>
699 unsigned int initialPos,
701 const V& unifiedMeanVec,
702 V& unifiedPopVec)
const
704 bool bRC = ((initialPos < this->subSequenceSize() ) &&
706 ((initialPos+numPos) <= this->subSequenceSize() ) &&
707 (this->vectorSizeLocal() == unifiedMeanVec.sizeLocal()) &&
708 (this->vectorSizeLocal() == unifiedPopVec.sizeLocal() ));
713 unsigned int numParams = this->vectorSizeLocal();
714 for (
unsigned int i = 0; i < numParams; ++i) {
715 this->extractScalarSeq(initialPos,
729 template <
class V,
class M>
732 unsigned int initialPos,
738 bool bRC = ((initialPos < this->subSequenceSize()) &&
740 ((initialPos+numPos) <= this->subSequenceSize()) &&
741 (this->vectorSizeLocal() == meanVec.sizeLocal() ) &&
743 (this->vectorSizeLocal() == covVec.sizeLocal() ));
748 unsigned int numParams = this->vectorSizeLocal();
749 for (
unsigned int i = 0; i < numParams; ++i) {
750 this->extractScalarSeq(initialPos,
764 template <
class V,
class M>
767 unsigned int initialPos,
772 bool bRC = ((initialPos < this->subSequenceSize()) &&
774 ((initialPos+numPos) <= this->subSequenceSize()) &&
776 (this->vectorSizeLocal() == corrVec.sizeLocal() ));
781 unsigned int numParams = this->vectorSizeLocal();
782 for (
unsigned int i = 0; i < numParams; ++i) {
783 this->extractScalarSeq(initialPos,
796 template <
class V,
class M>
799 unsigned int initialPos,
801 const std::vector<unsigned int>& lags,
802 std::vector<V*>& corrVecs)
const
804 bool bRC = ((initialPos < this->subSequenceSize()) &&
806 ((initialPos+numPos) <= this->subSequenceSize()) &&
807 (0 < lags.size() ) &&
808 (lags[lags.size()-1] < numPos ));
811 for (
unsigned int j = lags.size(); j < corrVecs.size(); ++j) {
812 if (corrVecs[j] != NULL) {
817 corrVecs.resize(lags.size(),NULL);
818 for (
unsigned int j = 0; j < corrVecs.size(); ++j) {
819 if (corrVecs[j] == NULL) corrVecs[j] =
new V(m_vectorSpace.zeroVector());
823 unsigned int maxLag = lags[lags.size()-1];
824 std::vector<double> autoCorrs(maxLag+1,0.);
826 unsigned int numParams = this->vectorSizeLocal();
827 for (
unsigned int i = 0; i < numParams; ++i) {
828 this->extractScalarSeq(initialPos,
847 for (
unsigned int j = 0; j < lags.size(); ++j) {
848 (*(corrVecs[j]))[i] = autoCorrs[lags[j]];
855 template <
class V,
class M>
858 unsigned int initialPos,
861 V& autoCorrsSumVec)
const
863 bool bRC = ((initialPos < this->subSequenceSize()) &&
865 ((initialPos+numPos) <= this->subSequenceSize()) &&
867 (numSum <= numPos ) &&
868 (autoCorrsSumVec.sizeLocal() == this->vectorSizeLocal()));
873 unsigned int numParams = this->vectorSizeLocal();
874 for (
unsigned int i = 0; i < numParams; ++i) {
875 this->extractScalarSeq(initialPos,
890 template <
class V,
class M>
893 unsigned int initialPos,
898 bool bRC = ((0 < numPos ) &&
899 ((initialPos+numPos) <= this->subSequenceSize()) &&
900 (this->vectorSizeLocal() == minVec.sizeLocal() ) &&
901 (this->vectorSizeLocal() == maxVec.sizeLocal() ));
905 unsigned int numParams = this->vectorSizeLocal();
908 for (
unsigned int i = 0; i < numParams; ++i) {
909 this->extractScalarSeq(initialPos,
920 template <
class V,
class M>
923 unsigned int initialPos,
926 V& unifiedMaxVec)
const
928 bool bRC = ((0 < numPos ) &&
929 ((initialPos+numPos) <= this->subSequenceSize() ) &&
930 (this->vectorSizeLocal() == unifiedMinVec.sizeLocal()) &&
931 (this->vectorSizeLocal() == unifiedMaxVec.sizeLocal()));
935 unsigned int numParams = this->vectorSizeLocal();
938 for (
unsigned int i = 0; i < numParams; ++i) {
939 this->extractScalarSeq(initialPos,
954 template <
class V,
class M>
957 unsigned int initialPos,
960 std::vector<V*>& centersForAllBins,
961 std::vector<V*>& quanttsForAllBins)
const
963 bool bRC = ((initialPos < this->subSequenceSize() ) &&
964 (this->vectorSizeLocal() == minVec.sizeLocal() ) &&
965 (this->vectorSizeLocal() == maxVec.sizeLocal() ) &&
966 (0 < centersForAllBins.size()) &&
967 (centersForAllBins.size() == quanttsForAllBins.size()));
970 for (
unsigned int j = 0; j < quanttsForAllBins.size(); ++j) {
971 centersForAllBins[j] =
new V(m_vectorSpace.zeroVector());
972 quanttsForAllBins [j] =
new V(m_vectorSpace.zeroVector());
975 unsigned int dataSize = this->subSequenceSize() - initialPos;
976 unsigned int numParams = this->vectorSizeLocal();
977 for (
unsigned int i = 0; i < numParams; ++i) {
979 for (
unsigned int j = 0; j < dataSize; ++j) {
980 data[j] = (*(m_seq[initialPos+j]))[i];
983 std::vector<double > centers(centersForAllBins.size(),0.);
984 std::vector<unsigned int> quantts(quanttsForAllBins.size(), 0 );
991 for (
unsigned int j = 0; j < quantts.size(); ++j) {
992 (*(centersForAllBins[j]))[i] = centers[j];
993 (*(quanttsForAllBins[j]))[i] = (double) quantts[j];
1000 template <
class V,
class M>
1003 unsigned int initialPos,
1004 const V& unifiedMinVec,
1005 const V& unifiedMaxVec,
1006 std::vector<V*>& unifiedCentersForAllBins,
1007 std::vector<V*>& unifiedQuanttsForAllBins)
const
1009 bool bRC = ((initialPos < this->subSequenceSize() ) &&
1010 (this->vectorSizeLocal() == unifiedMinVec.sizeLocal() ) &&
1011 (this->vectorSizeLocal() == unifiedMaxVec.sizeLocal() ) &&
1012 (0 < unifiedCentersForAllBins.size()) &&
1013 (unifiedCentersForAllBins.size() == unifiedQuanttsForAllBins.size()));
1016 for (
unsigned int j = 0; j < unifiedQuanttsForAllBins.size(); ++j) {
1017 unifiedCentersForAllBins[j] =
new V(m_vectorSpace.zeroVector());
1018 unifiedQuanttsForAllBins [j] =
new V(m_vectorSpace.zeroVector());
1021 unsigned int dataSize = this->subSequenceSize() - initialPos;
1022 unsigned int numParams = this->vectorSizeLocal();
1023 for (
unsigned int i = 0; i < numParams; ++i) {
1025 for (
unsigned int j = 0; j < dataSize; ++j) {
1026 data[j] = (*(m_seq[initialPos+j]))[i];
1029 std::vector<double > unifiedCenters(unifiedCentersForAllBins.size(),0.);
1030 std::vector<unsigned int> unifiedQuantts(unifiedQuanttsForAllBins.size(), 0 );
1038 for (
unsigned int j = 0; j < unifiedQuantts.size(); ++j) {
1039 (*(unifiedCentersForAllBins[j]))[i] = unifiedCenters[j];
1040 (*(unifiedQuanttsForAllBins[j]))[i] = (double) unifiedQuantts[j];
1047 template <
class V,
class M>
1050 unsigned int initialPos,
1053 bool bRC = ((initialPos < this->subSequenceSize()) &&
1054 (this->vectorSizeLocal() == iqrVec.sizeLocal() ));
1057 unsigned int numPos = this->subSequenceSize() - initialPos;
1060 unsigned int numParams = this->vectorSizeLocal();
1061 for (
unsigned int i = 0; i < numParams; ++i) {
1062 this->extractScalarSeq(initialPos,
1073 template <
class V,
class M>
1076 unsigned int initialPos,
1077 V& unifiedIqrVec)
const
1079 bool bRC = ((initialPos < this->subSequenceSize() ) &&
1080 (this->vectorSizeLocal() == unifiedIqrVec.sizeLocal()));
1083 unsigned int numPos = this->subSequenceSize() - initialPos;
1086 unsigned int numParams = this->vectorSizeLocal();
1087 for (
unsigned int i = 0; i < numParams; ++i) {
1088 this->extractScalarSeq(initialPos,
1100 template <
class V,
class M>
1103 unsigned int initialPos,
1105 unsigned int kdeDimension,
1108 bool bRC = ((initialPos < this->subSequenceSize()) &&
1109 (this->vectorSizeLocal() == iqrVec.sizeLocal() ) &&
1110 (this->vectorSizeLocal() == scaleVec.sizeLocal() ));
1113 unsigned int numPos = this->subSequenceSize() - initialPos;
1116 unsigned int numParams = this->vectorSizeLocal();
1117 for (
unsigned int i = 0; i < numParams; ++i) {
1118 this->extractScalarSeq(initialPos,
1131 template <
class V,
class M>
1134 unsigned int initialPos,
1135 const V& unifiedIqrVec,
1136 unsigned int kdeDimension,
1137 V& unifiedScaleVec)
const
1139 bool bRC = ((initialPos < this->subSequenceSize() ) &&
1140 (this->vectorSizeLocal() == unifiedIqrVec.sizeLocal() ) &&
1141 (this->vectorSizeLocal() == unifiedScaleVec.sizeLocal()));
1144 unsigned int numPos = this->subSequenceSize() - initialPos;
1147 unsigned int numParams = this->vectorSizeLocal();
1148 for (
unsigned int i = 0; i < numParams; ++i) {
1149 this->extractScalarSeq(initialPos,
1154 unifiedScaleVec[i] = data.
unifiedScaleForKde(m_vectorSpace.numOfProcsForStorage() == 1,
1163 template <
class V,
class M>
1166 unsigned int initialPos,
1168 const std::vector<V*>& evalParamVecs,
1169 std::vector<V*>& densityVecs)
const
1171 bool bRC = ((initialPos < this->subSequenceSize()) &&
1172 (this->vectorSizeLocal() == scaleVec.sizeLocal() ) &&
1173 (0 < evalParamVecs.size() ) &&
1174 (evalParamVecs.size() == densityVecs.size() ));
1177 unsigned int numPos = this->subSequenceSize() - initialPos;
1180 unsigned int numEvals = evalParamVecs.size();
1181 for (
unsigned int j = 0; j < numEvals; ++j) {
1182 densityVecs[j] =
new V(m_vectorSpace.zeroVector());
1184 std::vector<double> evalParams(numEvals,0.);
1185 std::vector<double> densities (numEvals,0.);
1187 unsigned int numParams = this->vectorSizeLocal();
1188 for (
unsigned int i = 0; i < numParams; ++i) {
1189 this->extractScalarSeq(initialPos,
1195 for (
unsigned int j = 0; j < numEvals; ++j) {
1196 evalParams[j] = (*evalParamVecs[j])[i];
1204 for (
unsigned int j = 0; j < numEvals; ++j) {
1205 (*densityVecs[j])[i] = densities[j];
1212 template <
class V,
class M>
1215 unsigned int initialPos,
1216 const V& unifiedScaleVec,
1217 const std::vector<V*>& unifiedEvalParamVecs,
1218 std::vector<V*>& unifiedDensityVecs)
const
1220 bool bRC = ((initialPos < this->subSequenceSize() ) &&
1221 (this->vectorSizeLocal() == unifiedScaleVec.sizeLocal()) &&
1222 (0 < unifiedEvalParamVecs.size()) &&
1223 (unifiedEvalParamVecs.size() == unifiedDensityVecs.size() ));
1226 unsigned int numPos = this->subSequenceSize() - initialPos;
1229 unsigned int numEvals = unifiedEvalParamVecs.size();
1230 for (
unsigned int j = 0; j < numEvals; ++j) {
1231 unifiedDensityVecs[j] =
new V(m_vectorSpace.zeroVector());
1233 std::vector<double> unifiedEvalParams(numEvals,0.);
1234 std::vector<double> unifiedDensities (numEvals,0.);
1236 unsigned int numParams = this->vectorSizeLocal();
1237 for (
unsigned int i = 0; i < numParams; ++i) {
1238 this->extractScalarSeq(initialPos,
1244 for (
unsigned int j = 0; j < numEvals; ++j) {
1245 unifiedEvalParams[j] = (*unifiedEvalParamVecs[j])[i];
1254 for (
unsigned int j = 0; j < numEvals; ++j) {
1255 (*unifiedDensityVecs[j])[i] = unifiedDensities[j];
1262 template <
class V,
class M>
1265 unsigned int initialPos,
1266 unsigned int numPos,
1267 const std::string& fileName,
1268 const std::string& fileType,
1269 const std::set<unsigned int>& allowedSubEnvIds)
const
1274 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 99)) {
1275 *m_env.subDisplayFile() <<
"In SequenceOfVectors<V,M>::subWriteContents()"
1276 <<
": about to try to open file '" << fileName <<
"." << fileType
1278 <<
", initialPos = " << initialPos
1279 <<
", numPos = " << numPos
1282 if (m_env.openOutputFile(fileName,
1288 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 99)) {
1289 *m_env.subDisplayFile() <<
"In SequenceOfVectors<V,M>::subWriteContents()"
1290 <<
": successfully opened file '" << fileName <<
"." << fileType
1294 this->subWriteContents(initialPos,
1298 m_env.closeFile(filePtrSet,fileType);
1300 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 99)) {
1301 *m_env.subDisplayFile() <<
"In SequenceOfVectors<V,M>::subWriteContents()"
1302 <<
": before Barrier()"
1305 m_env.subComm().Barrier();
1310 template <
class V,
class M>
1313 unsigned int initialPos,
1314 unsigned int numPos,
1316 const std::string& fileType)
const
1322 this->subWriteContents(initialPos,
1337 template <
class V,
class M>
1340 unsigned int initialPos,
1341 unsigned int numPos,
1343 const std::string& fileType)
const
1347 if (initialPos == 0) {
1350 this->writeSubMatlabHeader(ofs,
1351 this->subSequenceSize(),
1352 this->vectorSizeLocal());
1355 this->writeTxtHeader(ofs,
1356 this->subSequenceSize(),
1357 this->vectorSizeLocal());
1361 for (
unsigned int j = initialPos; j < initialPos+numPos; ++j) {
1362 bool savedVectorPrintScientific = m_seq[j]->getPrintScientific();
1363 bool savedVectorPrintState = m_seq[j]->getPrintHorizontally();
1364 m_seq[j]->setPrintScientific (
true);
1365 m_seq[j]->setPrintHorizontally(
true);
1370 m_seq[j]->setPrintHorizontally(savedVectorPrintState);
1371 m_seq[j]->setPrintScientific (savedVectorPrintScientific);
1376 ((initialPos + numPos) == this->subSequenceSize())) {
1381 template <
class V,
class M>
1384 double sequenceSize,
double vectorSizeLocal)
const
1386 ofs << m_name <<
"_sub" << m_env.subIdString() <<
" = zeros(" << sequenceSize
1387 <<
"," << vectorSizeLocal
1390 ofs << m_name <<
"_sub" << m_env.subIdString() <<
" = [";
1393 template <
class V,
class M>
1396 double sequenceSize,
double vectorSizeLocal)
const
1398 ofs << m_name <<
"_unified" <<
" = zeros(" << sequenceSize
1399 <<
"," << vectorSizeLocal
1402 ofs<< m_name <<
"_unified" <<
" = [";
1405 template <
class V,
class M>
1408 double sequenceSize,
double vectorSizeLocal)
const
1410 ofs << sequenceSize <<
" " << vectorSizeLocal
1415 template <
class V,
class M>
1418 const std::string& fileName,
1419 const std::string& inputFileType)
const
1421 std::string fileType(inputFileType);
1422 #ifdef QUESO_HAS_HDF5
1426 if (m_env.subDisplayFile()) {
1427 *m_env.subDisplayFile() <<
"WARNING in SequenceOfVectors<V,M>::unifiedWriteContents()"
1429 <<
"' has been requested, but this QUESO library has not been built with 'hdf5'"
1434 if (m_env.subRank() == 0) {
1435 std::cerr <<
"WARNING in SequenceOfVectors<V,M>::unifiedWriteContents()"
1437 <<
"' has been requested, but this QUESO library has not been built with 'hdf5'"
1449 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 10)) {
1450 *m_env.subDisplayFile() <<
"Entering SequenceOfVectors<V,M>::unifiedWriteContents()"
1451 <<
": worldRank " << m_env.worldRank()
1452 <<
", fullRank " << m_env.fullRank()
1453 <<
", subEnvironment " << m_env.subId()
1454 <<
", subRank " << m_env.subRank()
1455 <<
", inter0Rank " << m_env.inter0Rank()
1457 <<
", fileName = " << fileName
1461 if (m_env.inter0Rank() >= 0) {
1462 for (
unsigned int r = 0; r < (
unsigned int) m_env.inter0Comm().NumProc(); ++r) {
1463 if (m_env.inter0Rank() == (int) r) {
1465 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 10)) {
1466 *m_env.subDisplayFile() <<
"In SequenceOfVectors<V,M>::unifiedWriteContents()"
1467 <<
": worldRank " << m_env.worldRank()
1468 <<
", fullRank " << m_env.fullRank()
1469 <<
", subEnvironment " << m_env.subId()
1470 <<
", subRank " << m_env.subRank()
1471 <<
", inter0Rank " << m_env.inter0Rank()
1473 <<
", fileName = " << fileName
1474 <<
", about to open file for r = " << r
1479 bool writeOver =
false;
1482 if (m_env.openUnifiedOutputFile(fileName,
1485 unifiedFilePtrSet)) {
1486 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 10)) {
1487 *m_env.subDisplayFile() <<
"In SequenceOfVectors<V,M>::unifiedWriteContents()"
1488 <<
": worldRank " << m_env.worldRank()
1489 <<
", fullRank " << m_env.fullRank()
1490 <<
", subEnvironment " << m_env.subId()
1491 <<
", subRank " << m_env.subRank()
1492 <<
", inter0Rank " << m_env.inter0Rank()
1494 <<
", fileName = " << fileName
1495 <<
", just opened file for r = " << r
1499 unsigned int chainSize = this->subSequenceSize();
1505 writeUnifiedMatlabHeader(*unifiedFilePtrSet.
ofsVar,
1506 this->subSequenceSize()*m_env.inter0Comm().NumProc(),
1507 this->vectorSizeLocal());
1510 writeTxtHeader(*unifiedFilePtrSet.
ofsVar,
1511 this->subSequenceSize()*m_env.inter0Comm().NumProc(),
1512 this->vectorSizeLocal());
1516 for (
unsigned int j = 0; j < chainSize; ++j) {
1529 bool savedVectorPrintScientific = m_seq[j]->getPrintScientific();
1530 bool savedVectorPrintState = m_seq[j]->getPrintHorizontally();
1531 m_seq[j]->setPrintScientific (
true);
1532 m_seq[j]->setPrintHorizontally(
true);
1534 *unifiedFilePtrSet.
ofsVar << *(m_seq[j])
1537 m_seq[j]->setPrintHorizontally(savedVectorPrintState);
1538 m_seq[j]->setPrintScientific (savedVectorPrintScientific);
1541 #ifdef QUESO_HAS_HDF5
1543 unsigned int numParams = m_vectorSpace.dimLocal();
1545 hid_t datatype = H5Tcopy(H5T_NATIVE_DOUBLE);
1548 dimsf[0] = numParams;
1549 dimsf[1] = chainSize;
1550 hid_t dataspace = H5Screate_simple(2, dimsf, NULL);
1552 hid_t dataset = H5Dcreate2(unifiedFilePtrSet.h5Var,
1561 struct timeval timevalBegin;
1563 iRC = gettimeofday(&timevalBegin,NULL);
1567 std::vector<double*> dataOut((
size_t) numParams,NULL);
1568 dataOut[0] = (
double*) malloc(numParams*chainSize*
sizeof(
double));
1569 for (
unsigned int i = 1; i < numParams; ++i) {
1570 dataOut[i] = dataOut[i-1] + chainSize;
1573 for (
unsigned int j = 0; j < chainSize; ++j) {
1574 V tmpVec(*(m_seq[j]));
1575 for (
unsigned int i = 0; i < numParams; ++i) {
1576 dataOut[i][j] = tmpVec[i];
1582 status = H5Dwrite(dataset,
1587 (
void*) dataOut[0]);
1592 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
1593 *m_env.subDisplayFile() <<
"In SequenceOfVectors<V,M>::unifiedWriteContents()"
1594 <<
": worldRank " << m_env.worldRank()
1595 <<
", fullRank " << m_env.fullRank()
1596 <<
", subEnvironment " << m_env.subId()
1597 <<
", subRank " << m_env.subRank()
1598 <<
", inter0Rank " << m_env.inter0Rank()
1599 <<
", fileName = " << fileName
1600 <<
", numParams = " << numParams
1601 <<
", chainSize = " << chainSize
1602 <<
", writeTime = " << writeTime <<
" seconds"
1608 H5Sclose(dataspace);
1613 for (
unsigned int tmpIndex = 0; tmpIndex < dataOut.size(); tmpIndex++) {
1614 free (dataOut[tmpIndex]);
1618 queso_error_msg(
"hdf file type not supported for multiple sub-environments yet");
1626 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 10)) {
1627 *m_env.subDisplayFile() <<
"In SequenceOfVectors<V,M>::unifiedWriteContents()"
1628 <<
": worldRank " << m_env.worldRank()
1629 <<
", fullRank " << m_env.fullRank()
1630 <<
", subEnvironment " << m_env.subId()
1631 <<
", subRank " << m_env.subRank()
1632 <<
", inter0Rank " << m_env.inter0Rank()
1634 <<
", fileName = " << fileName
1635 <<
", about to close file for r = " << r
1639 m_env.closeFile(unifiedFilePtrSet,fileType);
1641 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 10)) {
1642 *m_env.subDisplayFile() <<
"In SequenceOfVectors<V,M>::unifiedWriteContents()"
1643 <<
": worldRank " << m_env.worldRank()
1644 <<
", fullRank " << m_env.fullRank()
1645 <<
", subEnvironment " << m_env.subId()
1646 <<
", subRank " << m_env.subRank()
1647 <<
", inter0Rank " << m_env.inter0Rank()
1649 <<
", fileName = " << fileName
1650 <<
", just closed file for r = " << r
1655 m_env.inter0Comm().Barrier();
1658 if (m_env.inter0Rank() == 0) {
1662 if (m_env.openUnifiedOutputFile(fileName,
1665 unifiedFilePtrSet)) {
1668 *unifiedFilePtrSet.
ofsVar <<
"];\n";
1671 m_env.closeFile(unifiedFilePtrSet,fileType);
1683 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 10)) {
1684 *m_env.subDisplayFile() <<
"Leaving SequenceOfVectors<V,M>::unifiedWriteContents()"
1685 <<
", fileName = " << fileName
1693 template <
class V,
class M>
1696 const std::string& fileName,
1697 const std::string& inputFileType,
1698 const unsigned int subReadSize)
1700 std::string fileType(inputFileType);
1701 #ifdef QUESO_HAS_HDF5
1705 if (m_env.subDisplayFile()) {
1706 *m_env.subDisplayFile() <<
"WARNING in SequenceOfVectors<V,M>::unifiedReadContents()"
1708 <<
"' has been requested, but this QUESO library has not been built with 'hdf5'"
1713 if (m_env.subRank() == 0) {
1714 std::cerr <<
"WARNING in SequenceOfVectors<V,M>::unifiedReadContents()"
1716 <<
"' has been requested, but this QUESO library has not been built with 'hdf5'"
1726 if (m_env.subDisplayFile()) {
1727 *m_env.subDisplayFile() <<
"Entering SequenceOfVectors<V,M>::unifiedReadContents()"
1728 <<
": worldRank " << m_env.worldRank()
1729 <<
", fullRank " << m_env.fullRank()
1730 <<
", subEnvironment " << m_env.subId()
1731 <<
", subRank " << m_env.subRank()
1732 <<
", inter0Rank " << m_env.inter0Rank()
1734 <<
", fileName = " << fileName
1735 <<
", subReadSize = " << subReadSize
1740 this->resizeSequence(subReadSize);
1742 if (m_env.inter0Rank() >= 0) {
1743 double unifiedReadSize = subReadSize*m_env.inter0Comm().NumProc();
1746 unsigned int idOfMyFirstLine = 1 + m_env.inter0Rank()*subReadSize;
1747 unsigned int idOfMyLastLine = (1 + m_env.inter0Rank())*subReadSize;
1748 unsigned int numParams = this->vectorSizeLocal();
1750 for (
unsigned int r = 0; r < (
unsigned int) m_env.inter0Comm().NumProc(); ++r) {
1751 if (m_env.inter0Rank() == (int) r) {
1754 if (m_env.openUnifiedInputFile(fileName,
1756 unifiedFilePtrSet)) {
1762 std::string tmpString;
1765 *unifiedFilePtrSet.
ifsVar >> tmpString;
1769 *unifiedFilePtrSet.
ifsVar >> tmpString;
1774 *unifiedFilePtrSet.
ifsVar >> tmpString;
1776 unsigned int posInTmpString = 6;
1780 std::string nPositionsString((
size_t) (tmpString.size()-posInTmpString+1),
' ');
1781 unsigned int posInPositionsString = 0;
1784 nPositionsString[posInPositionsString++] = tmpString[posInTmpString++];
1785 }
while (tmpString[posInTmpString] !=
',');
1786 nPositionsString[posInPositionsString] =
'\0';
1791 std::string nParamsString((
size_t) (tmpString.size()-posInTmpString+1),
' ');
1792 unsigned int posInParamsString = 0;
1795 nParamsString[posInParamsString++] = tmpString[posInTmpString++];
1796 }
while (tmpString[posInTmpString] !=
')');
1797 nParamsString[posInParamsString] =
'\0';
1800 unsigned int sizeOfChainInFile = (
unsigned int) strtod(nPositionsString.c_str(),NULL);
1801 unsigned int numParamsInFile = (
unsigned int) strtod(nParamsString.c_str(), NULL);
1802 if (m_env.subDisplayFile()) {
1803 *m_env.subDisplayFile() <<
"In SequenceOfVectors<V,M>::unifiedReadContents()"
1804 <<
": worldRank " << m_env.worldRank()
1805 <<
", fullRank " << m_env.fullRank()
1806 <<
", sizeOfChainInFile = " << sizeOfChainInFile
1807 <<
", numParamsInFile = " << numParamsInFile
1815 queso_require_equal_to_msg(numParamsInFile, numParams,
"number of parameters of chain in file is different than number of parameters in this chain object");
1819 unsigned int maxCharsPerLine = 64*numParams;
1821 unsigned int lineId = 0;
1822 while (lineId < idOfMyFirstLine) {
1823 unifiedFilePtrSet.
ifsVar->ignore(maxCharsPerLine,
'\n');
1830 std::string tmpString;
1833 *unifiedFilePtrSet.
ifsVar >> tmpString;
1837 *unifiedFilePtrSet.
ifsVar >> tmpString;
1842 std::streampos tmpPos = unifiedFilePtrSet.
ifsVar->tellg();
1843 unifiedFilePtrSet.
ifsVar->seekg(tmpPos+(std::streampos)2);
1846 V tmpVec(m_vectorSpace.zeroVector());
1847 while (lineId <= idOfMyLastLine) {
1848 for (
unsigned int i = 0; i < numParams; ++i) {
1849 *unifiedFilePtrSet.
ifsVar >> tmpVec[i];
1851 this->setPositionValues(lineId - idOfMyFirstLine, tmpVec);
1855 #ifdef QUESO_HAS_HDF5
1858 hid_t dataset = H5Dopen2(unifiedFilePtrSet.h5Var,
1861 hid_t datatype = H5Dget_type(dataset);
1862 H5T_class_t t_class = H5Tget_class(datatype);
1864 hid_t dataspace = H5Dget_space(dataset);
1865 int rank = H5Sget_simple_extent_ndims(dataspace);
1869 status_n = H5Sget_simple_extent_dims(dataspace, dims_in, NULL);
1878 struct timeval timevalBegin;
1880 iRC = gettimeofday(&timevalBegin,NULL);
1883 unsigned int chainSizeIn = (
unsigned int) dims_in[1];
1885 std::vector<double*>
dataIn((
size_t) numParams,NULL);
1886 dataIn[0] = (
double*) malloc(numParams*chainSizeIn*
sizeof(
double));
1887 for (
unsigned int i = 1; i < numParams; ++i) {
1888 dataIn[i] = dataIn[i-1] + chainSizeIn;
1892 status = H5Dread(dataset,
1900 V tmpVec(m_vectorSpace.zeroVector());
1901 for (
unsigned int j = 0; j < subReadSize; ++j) {
1902 for (
unsigned int i = 0; i < numParams; ++i) {
1903 tmpVec[i] = dataIn[i][j];
1905 this->setPositionValues(j, tmpVec);
1909 if ((m_env.subDisplayFile()) && (m_env.displayVerbosity() >= 2)) {
1910 *m_env.subDisplayFile() <<
"In SequenceOfVectors<V,M>::unifiedReadContents()"
1911 <<
": worldRank " << m_env.worldRank()
1912 <<
", fullRank " << m_env.fullRank()
1913 <<
", subEnvironment " << m_env.subId()
1914 <<
", subRank " << m_env.subRank()
1915 <<
", inter0Rank " << m_env.inter0Rank()
1916 <<
", fileName = " << fileName
1917 <<
", numParams = " << numParams
1918 <<
", chainSizeIn = " << chainSizeIn
1919 <<
", subReadSize = " << subReadSize
1920 <<
", readTime = " << readTime <<
" seconds"
1924 H5Sclose(dataspace);
1928 for (
unsigned int tmpIndex = 0; tmpIndex < dataIn.size(); tmpIndex++) {
1929 free (dataIn[tmpIndex]);
1933 queso_error_msg(
"hdf file type not supported for multiple sub-environments yet");
1940 m_env.closeFile(unifiedFilePtrSet,fileType);
1943 m_env.inter0Comm().Barrier();
1947 V tmpVec(m_vectorSpace.zeroVector());
1948 for (
unsigned int i = 1; i < subReadSize; ++i) {
1949 this->setPositionValues(i,tmpVec);
1953 if (m_env.subDisplayFile()) {
1954 *m_env.subDisplayFile() <<
"Leaving SequenceOfVectors<V,M>::unifiedReadContents()"
1955 <<
", fileName = " << fileName
1963 template <
class V,
class M>
1972 template <
class V,
class M>
1975 unsigned int initialPos,
1976 unsigned int spacing)
1978 if (m_env.subDisplayFile()) {
1979 *m_env.subDisplayFile() <<
"Entering SequenceOfVectors<V,M>::filter()"
1980 <<
": initialPos = " << initialPos
1981 <<
", spacing = " << spacing
1982 <<
", subSequenceSize = " << this->subSequenceSize()
1987 unsigned int j = initialPos;
1988 unsigned int originalSubSequenceSize = this->subSequenceSize();
1989 while (j < originalSubSequenceSize) {
1993 m_seq[i] =
new V(*(m_seq[j]));
1999 this->resetValues(i,originalSubSequenceSize-i);
2000 this->resizeSequence(i);
2002 if (m_env.subDisplayFile()) {
2003 *m_env.subDisplayFile() <<
"Leaving SequenceOfVectors<V,M>::filter()"
2004 <<
": initialPos = " << initialPos
2005 <<
", spacing = " << spacing
2006 <<
", subSequenceSize = " << this->subSequenceSize()
2013 template <
class V,
class M>
2016 unsigned int initialPos,
2017 unsigned int numPos)
const
2025 double convMeasure = -1.0;
2029 if( m_env.inter0Rank() >= 0 )
2035 V psi_j_dot = m_vectorSpace.zeroVector();
2036 V psi_dot_dot = m_vectorSpace.zeroVector();
2037 V
work = m_vectorSpace.zeroVector();
2041 int m = m_env.numSubEnvironments();
2044 this->subMeanExtra ( initialPos, numPos, psi_j_dot );
2045 this->unifiedMeanExtra( initialPos, numPos, psi_dot_dot );
2048 std::cout <<
"psi_j_dot = " << psi_j_dot << std::endl;
2049 std::cout <<
"psi_dot_dot = " << psi_dot_dot << std::endl;
2055 M* W_local = m_vectorSpace.newDiagMatrix( m_vectorSpace.zeroVector() );
2056 M* W = m_vectorSpace.newDiagMatrix( m_vectorSpace.zeroVector() );
2057 V psi_j_t = m_vectorSpace.zeroVector();
2060 for(
unsigned int t = initialPos; t < initialPos+numPos; ++t )
2062 psi_j_t = *(m_seq[t]);
2064 work = psi_j_t - psi_j_dot;
2071 W_local->mpiSum( m_env.inter0Comm(), (*W) );
2073 (*W) = 1.0/(double(m)*(double(n)-1.0)) * (*W);
2076 std::cout <<
"n, m = " << n <<
", " << m << std::endl;
2077 std::cout <<
"W_local = " << *W_local << std::endl;
2078 std::cout <<
"W = " << *W << std::endl;
2088 M* B_over_n_local = m_vectorSpace.newDiagMatrix( m_vectorSpace.zeroVector() );
2089 M* B_over_n = m_vectorSpace.newDiagMatrix( m_vectorSpace.zeroVector() );
2091 work = psi_j_dot - psi_dot_dot;
2094 B_over_n_local->mpiSum( m_env.inter0Comm(), (*B_over_n) );
2097 delete B_over_n_local;
2099 (*B_over_n) = 1.0/(double(m)-1.0) * (*B_over_n);
2102 std::cout <<
"B_over_n = " << *B_over_n << std::endl;
2108 M* A = m_vectorSpace.newDiagMatrix( m_vectorSpace.zeroVector() );
2110 W->invertMultiply( *B_over_n, *A );
2113 std::cout <<
"A = " << *A << std::endl;
2121 V eigenVector = m_vectorSpace.zeroVector();
2123 A->largestEigen( eigenValue, eigenVector );
2129 convMeasure = (double(n)-1.0)/double(n) + (double(m)+1.0)/double(m)*eigenValue;
2140 template <
class V,
class M>
2143 unsigned int initialPos,
2144 unsigned int spacing,
2145 unsigned int numPos,
2146 unsigned int paramId,
2151 for (
unsigned int j = 0; j < numPos; ++j) {
2152 scalarSeq[j] = (*(m_seq[initialPos+j ]))[paramId];
2156 for (
unsigned int j = 0; j < numPos; ++j) {
2157 scalarSeq[j] = (*(m_seq[initialPos+j*spacing]))[paramId];
2164 template <
class V,
class M>
2169 for (
unsigned int i = 0; i < (
unsigned int) m_seq.size(); ++i) {
2176 for (
unsigned int i = 0; i < m_seq.size(); ++i) {
2177 m_seq[i] =
new V(*(src.
m_seq[i]));
2183 template <
class V,
class M>
2186 unsigned int initialPos,
2187 unsigned int spacing,
2188 unsigned int numPos,
2189 unsigned int paramId,
2190 std::vector<double>& rawData)
const
2192 rawData.resize(numPos);
2194 for (
unsigned int j = 0; j < numPos; ++j) {
2195 rawData[j] = (*(m_seq[initialPos+j ]))[paramId];
2199 for (
unsigned int j = 0; j < numPos; ++j) {
2200 rawData[j] = (*(m_seq[initialPos+j*spacing]))[paramId];
2211 #ifdef UQ_SEQ_VEC_USES_OPERATOR
2212 template <
class V,
class M>
2218 return (
const V*) (m_seq[posId]);
2221 template <
class V,
class M>
2223 SequenceOfVectors<V,M>::operator[](
unsigned int posId)
2227 return m_seq[posId];
2235 #ifdef UQ_ALSO_COMPUTE_MDFS_WITHOUT_KDE
2236 template <
class V,
class M>
2238 SequenceOfVectors<V,M>::subUniformlySampledMdf(
2239 const V& numEvaluationPointsVec,
2240 ArrayOfOneDGrids <V,M>& mdfGrids,
2241 ArrayOfOneDTables<V,M>& mdfValues)
const
2243 V minDomainValues(m_vectorSpace.zeroVector());
2244 V maxDomainValues(m_vectorSpace.zeroVector());
2246 ScalarSequence<double> data(m_env,0,
"");
2248 unsigned int numParams = this->vectorSizeLocal();
2249 for (
unsigned int i = 0; i < numParams; ++i) {
2250 this->extractScalarSeq(0,
2256 std::vector<double> aMdf(0);
2257 data.subUniformlySampledMdf((
unsigned int) numEvaluationPointsVec[i],
2261 mdfValues.setOneDTable(i,aMdf);
2264 mdfGrids.setUniformGrids(numEvaluationPointsVec,
2276 #ifdef QUESO_COMPUTES_EXTRA_POST_PROCESSING_STATISTICS
2277 template <
class V,
class M>
2279 SequenceOfVectors<V,M>::subMeanCltStd(
2280 unsigned int initialPos,
2281 unsigned int numPos,
2285 bool bRC = ((initialPos < this->subSequenceSize()) &&
2287 ((initialPos+numPos) <= this->subSequenceSize()) &&
2288 (this->vectorSizeLocal() == meanVec.sizeLocal() ) &&
2289 (this->vectorSizeLocal() == stdVec.sizeLocal() ));
2292 ScalarSequence<double> data(m_env,0,
"");
2294 unsigned int numParams = this->vectorSizeLocal();
2295 for (
unsigned int i = 0; i < numParams; ++i) {
2296 this->extractScalarSeq(initialPos,
2301 stdVec[i] = data.subMeanCltStd(0,
2309 template <
class V,
class M>
2311 SequenceOfVectors<V,M>::unifiedMeanCltStd(
2312 unsigned int initialPos,
2313 unsigned int numPos,
2314 const V& unifiedMeanVec,
2315 V& unifiedSamVec)
const
2317 bool bRC = ((initialPos < this->subSequenceSize() ) &&
2319 ((initialPos+numPos) <= this->subSequenceSize() ) &&
2320 (this->vectorSizeLocal() == unifiedMeanVec.sizeLocal()) &&
2321 (this->vectorSizeLocal() == unifiedSamVec.sizeLocal() ));
2324 ScalarSequence<double> data(m_env,0,
"");
2326 unsigned int numParams = this->vectorSizeLocal();
2327 for (
unsigned int i = 0; i < numParams; ++i) {
2328 this->extractScalarSeq(initialPos,
2333 unifiedSamVec[i] = data.unifiedMeanCltStd(m_vectorSpace.numOfProcsForStorage() == 1,
2342 template <
class V,
class M>
2344 SequenceOfVectors<V,M>::bmm(
2345 unsigned int initialPos,
2346 unsigned int batchLength,
2349 bool bRC = ((initialPos < this->subSequenceSize() ) &&
2350 (batchLength < (this->subSequenceSize()-initialPos)) &&
2351 (this->vectorSizeLocal() == bmmVec.sizeLocal() ));
2354 ScalarSequence<double> data(m_env,0,
"");
2356 unsigned int numParams = this->vectorSizeLocal();
2357 for (
unsigned int i = 0; i < numParams; ++i) {
2358 this->extractScalarSeq(initialPos,
2360 this->subSequenceSize()-initialPos,
2363 bmmVec[i] = data.bmm(0,
2370 template <
class V,
class M>
2372 SequenceOfVectors<V,M>::fftForward(
2373 unsigned int initialPos,
2374 unsigned int fftSize,
2375 unsigned int paramId,
2376 std::vector<std::complex<double> >& fftResult)
const
2378 bool bRC = ((initialPos < this->subSequenceSize()) &&
2379 (paramId < this->vectorSizeLocal()) &&
2381 ((initialPos+fftSize) <= this->subSequenceSize()) &&
2382 (fftSize < this->subSequenceSize()));
2385 std::vector<double> rawData(fftSize,0.);
2386 this->extractRawData(initialPos,
2392 m_fftObj->forward(rawData,fftSize,fftResult);
2397 template <
class V,
class M>
2399 SequenceOfVectors<V,M>::psd(
2400 unsigned int initialPos,
2401 unsigned int numBlocks,
2402 double hopSizeRatio,
2403 unsigned int paramId,
2404 std::vector<double>& psdResult)
const
2406 bool bRC = ((initialPos < this->subSequenceSize()) &&
2407 (paramId < this->vectorSizeLocal()));
2410 ScalarSequence<double> data(m_env,0,
"");
2412 this->extractScalarSeq(initialPos,
2414 this->subSequenceSize()-initialPos,
2425 template <
class V,
class M>
2427 SequenceOfVectors<V,M>::psdAtZero(
2428 unsigned int initialPos,
2429 unsigned int numBlocks,
2430 double hopSizeRatio,
2433 bool bRC = ((initialPos < this->subSequenceSize()) &&
2434 (this->vectorSizeLocal() == psdVec.sizeLocal()));
2437 ScalarSequence<double> data(m_env,0,
"");
2438 std::vector<double> psdResult(0,0.);
2440 unsigned int numParams = this->vectorSizeLocal();
2441 for (
unsigned int i = 0; i < numParams; ++i) {
2442 this->extractScalarSeq(initialPos,
2444 this->subSequenceSize()-initialPos,
2451 psdVec[i] = psdResult[0];
2458 template <
class V,
class M>
2460 SequenceOfVectors<V,M>::geweke(
2461 unsigned int initialPos,
2466 bool bRC = ((initialPos < this->subSequenceSize()) &&
2467 (this->vectorSizeLocal() == gewVec.sizeLocal() ));
2470 unsigned int numPos = this->subSequenceSize() - initialPos;
2471 ScalarSequence<double> data(m_env,0,
"");
2473 unsigned int numParams = this->vectorSizeLocal();
2474 for (
unsigned int i = 0; i < numParams; ++i) {
2475 this->extractScalarSeq(initialPos,
2480 gewVec[i] = data.geweke(0,
2488 template <
class V,
class M>
2490 SequenceOfVectors<V,M>::meanStacc(
2491 unsigned int initialPos,
2492 V& meanStaccVec)
const
2494 bool bRC = ((initialPos < this->subSequenceSize() ) &&
2495 (this->vectorSizeLocal() == meanStaccVec.sizeLocal()));
2498 unsigned int numPos = this->subSequenceSize() - initialPos;
2499 ScalarSequence<double> data(m_env,0,
"");
2501 unsigned int numParams = this->vectorSizeLocal();
2502 for (
unsigned int i = 0; i < numParams; ++i) {
2503 this->extractScalarSeq(initialPos,
2508 meanStaccVec[i] = data.meanStacc(0);
2514 template <
class V,
class M>
2516 SequenceOfVectors<V,M>::subCdfPercentageRange(
2517 unsigned int initialPos,
2518 unsigned int numPos,
2523 bool bRC = ((0 < numPos ) &&
2524 ((initialPos+numPos) <= this->subSequenceSize()) &&
2525 (this->vectorSizeLocal() == lowerVec.sizeLocal() ) &&
2526 (this->vectorSizeLocal() == upperVec.sizeLocal() ));
2529 unsigned int numParams = this->vectorSizeLocal();
2530 ScalarSequence<double> data(m_env,0,
"");
2532 for (
unsigned int i = 0; i < numParams; ++i) {
2533 this->extractScalarSeq(initialPos,
2538 data.subCdfPercentageRange(0,
2548 template <
class V,
class M>
2550 SequenceOfVectors<V,M>::unifiedCdfPercentageRange(
2551 unsigned int initialPos,
2552 unsigned int numPos,
2557 bool bRC = ((0 < numPos ) &&
2558 ((initialPos+numPos) <= this->subSequenceSize()) &&
2559 (this->vectorSizeLocal() == lowerVec.sizeLocal() ) &&
2560 (this->vectorSizeLocal() == upperVec.sizeLocal() ));
2563 unsigned int numParams = this->vectorSizeLocal();
2564 ScalarSequence<double> data(m_env,0,
"");
2566 for (
unsigned int i = 0; i < numParams; ++i) {
2567 this->extractScalarSeq(initialPos,
2572 data.unifiedCdfPercentageRange(m_vectorSpace.numOfProcsForStorage() == 1,
2583 template <
class V,
class M>
2585 SequenceOfVectors<V,M>::subCdfStacc(
2586 unsigned int initialPos,
2587 std::vector<V*>& cdfStaccVecs,
2588 std::vector<V*>& cdfStaccVecsUp,
2589 std::vector<V*>& cdfStaccVecsLow,
2590 std::vector<V*>& sortedDataVecs)
const
2592 bool bRC = (initialPos < this->subSequenceSize());
2595 unsigned int numPos = this->subSequenceSize() - initialPos;
2596 unsigned int numEvals = numPos;
2597 for (
unsigned int j = 0; j < numEvals; ++j) {
2598 cdfStaccVecs [j] =
new V(m_vectorSpace.zeroVector());
2599 cdfStaccVecsUp [j] =
new V(m_vectorSpace.zeroVector());
2600 cdfStaccVecsLow[j] =
new V(m_vectorSpace.zeroVector());
2601 sortedDataVecs [j] =
new V(m_vectorSpace.zeroVector());
2603 std::vector<double> cdfStaccs (numEvals,0.);
2604 std::vector<double> cdfStaccsup (numEvals,0.);
2605 std::vector<double> cdfStaccslow(numEvals,0.);
2607 ScalarSequence<double> data (m_env,0,
"");
2608 ScalarSequence<double> sortedData(m_env,0,
"");
2609 unsigned int numParams = this->vectorSizeLocal();
2610 for (
unsigned int i = 0; i < numParams; ++i) {
2611 this->extractScalarSeq(initialPos,
2617 data.subSort(initialPos,sortedData);
2618 data.subCdfStacc(initialPos,
2624 for (
unsigned int j = 0; j < numEvals; ++j) {
2625 (*sortedDataVecs [j])[i] = sortedData [j];
2626 (*cdfStaccVecs [j])[i] = cdfStaccs [j];
2627 (*cdfStaccVecsUp [j])[i] = cdfStaccsup [j];
2628 (*cdfStaccVecsLow[j])[i] = cdfStaccslow[j];
2635 template <
class V,
class M>
2637 SequenceOfVectors<V,M>::subCdfStacc(
2638 unsigned int initialPos,
2639 const std::vector<V*>& evalPositionsVecs,
2640 std::vector<V*>& cdfStaccVecs)
const
2642 bool bRC = ((initialPos < this->subSequenceSize() ) &&
2643 (0 < evalPositionsVecs.size()) &&
2644 (evalPositionsVecs.size() == cdfStaccVecs.size() ));
2647 unsigned int numPos = this->subSequenceSize() - initialPos;
2648 ScalarSequence<double> data(m_env,0,
"");
2650 unsigned int numEvals = evalPositionsVecs.size();
2651 for (
unsigned int j = 0; j < numEvals; ++j) {
2652 cdfStaccVecs[j] =
new V(m_vectorSpace.zeroVector());
2654 std::vector<double> evalPositions(numEvals,0.);
2655 std::vector<double> cdfStaccs (numEvals,0.);
2657 unsigned int numParams = this->vectorSizeLocal();
2658 for (
unsigned int i = 0; i < numParams; ++i) {
2659 this->extractScalarSeq(initialPos,
2665 for (
unsigned int j = 0; j < numEvals; ++j) {
2666 evalPositions[j] = (*evalPositionsVecs[j])[i];
2673 for (
unsigned int j = 0; j < numEvals; ++j) {
2674 (*cdfStaccVecs[j])[i] = cdfStaccs[j];
2680 #endif // #ifdef QUESO_COMPUTES_EXTRA_POST_PROCESSING_STATISTICS
2686 #ifdef UQ_CODE_HAS_MONITORS
2687 template <
class V,
class M>
2689 SequenceOfVectors<V,M>::subMeanMonitorAlloc(
unsigned int numberOfMonitorPositions)
2691 m_subMeanMonitorPosSeq =
new ScalarSequence<double>(m_env, numberOfMonitorPositions,(m_name+
"_subMeanMonitorPosSeq").c_str());
2692 m_subMeanVecSeq =
new SequenceOfVectors<V,M>(m_vectorSpace,numberOfMonitorPositions,(m_name+
"_subMeanVecSeq").c_str() );
2693 m_subMeanCltStdSeq =
new SequenceOfVectors<V,M>(m_vectorSpace,numberOfMonitorPositions,(m_name+
"_subMeanCltStdSeq").c_str() );
2698 template <
class V,
class M>
2700 SequenceOfVectors<V,M>::subMeanInter0MonitorAlloc(
unsigned int numberOfMonitorPositions)
2702 m_subMeanInter0MonitorPosSeq =
new ScalarSequence<double>(m_env, numberOfMonitorPositions,(m_name+
"_subMeanInter0MonitorPosSeq").c_str() );
2703 m_subMeanInter0Mean =
new SequenceOfVectors<V,M>(m_vectorSpace,numberOfMonitorPositions,(m_name+
"_subMeanInter0MeanSeq").c_str() );
2704 m_subMeanInter0Clt95 =
new SequenceOfVectors<V,M>(m_vectorSpace,numberOfMonitorPositions,(m_name+
"_subMeanInter0Clt95Seq").c_str() );
2705 m_subMeanInter0Empirical90 =
new SequenceOfVectors<V,M>(m_vectorSpace,numberOfMonitorPositions,(m_name+
"_subMeanInter0Empirical90Seq").c_str());
2706 m_subMeanInter0Min =
new SequenceOfVectors<V,M>(m_vectorSpace,numberOfMonitorPositions,(m_name+
"_subMeanInter0MinSeq").c_str() );
2707 m_subMeanInter0Max =
new SequenceOfVectors<V,M>(m_vectorSpace,numberOfMonitorPositions,(m_name+
"_subMeanInter0MaxSeq").c_str() );
2712 template <
class V,
class M>
2714 SequenceOfVectors<V,M>::unifiedMeanMonitorAlloc(
unsigned int numberOfMonitorPositions)
2716 m_unifiedMeanMonitorPosSeq =
new ScalarSequence<double>(m_env, numberOfMonitorPositions,(m_name+
"_unifiedMeanMonitorPosSeq").c_str());
2717 m_unifiedMeanVecSeq =
new SequenceOfVectors<V,M>(m_vectorSpace,numberOfMonitorPositions,(m_name+
"_unifiedMeanVecSeq").c_str() );
2718 m_unifiedMeanCltStdSeq =
new SequenceOfVectors<V,M>(m_vectorSpace,numberOfMonitorPositions,(m_name+
"_unifiedMeanCltStdSeq").c_str() );
2723 template <
class V,
class M>
2725 SequenceOfVectors<V,M>::subMeanMonitorRun(
unsigned int monitorPosition,
2729 this->subMeanExtra(0,
2733 this->subMeanCltStd(0,
2741 template <
class V,
class M>
2743 SequenceOfVectors<V,M>::subMeanInter0MonitorRun(
unsigned int monitorPosition,
2744 V& subMeanInter0Mean,
2745 V& subMeanInter0Clt95,
2746 V& subMeanInter0Empirical90,
2747 V& subMeanInter0Min,
2748 V& subMeanInter0Max)
2750 V subMeanVec(m_vectorSpace.zeroVector());
2751 this->subMeanExtra(0,
2755 subMeanVec.mpiAllReduce(
RawValue_MPI_SUM,m_env.inter0Comm(),subMeanInter0Mean);
2756 subMeanInter0Mean /= ((double) m_env.inter0Comm().NumProc());
2758 V subMeanInter0CltVariance = subMeanVec-subMeanInter0Mean;
2759 subMeanInter0CltVariance *= subMeanInter0CltVariance;
2760 subMeanInter0CltVariance.mpiAllReduce(
RawValue_MPI_SUM,m_env.inter0Comm(),subMeanInter0Clt95);
2761 subMeanInter0Clt95 /= ((double) (m_env.inter0Comm().NumProc()-1));
2762 subMeanInter0Clt95 /= ((double) (m_env.inter0Comm().NumProc()-1));
2763 subMeanInter0Clt95.cwSqrt();
2764 subMeanInter0Clt95 *= 3.;
2766 V subMeanInter0Quantile5(m_vectorSpace.zeroVector());
2767 subMeanVec.mpiAllQuantile(.05,m_env.inter0Comm(),subMeanInter0Quantile5);
2768 V subMeanInter0Quantile95(m_vectorSpace.zeroVector());
2769 subMeanVec.mpiAllQuantile(.95,m_env.inter0Comm(),subMeanInter0Quantile95);
2770 subMeanInter0Empirical90 = subMeanInter0Quantile95 - subMeanInter0Quantile5;
2772 subMeanVec.mpiAllReduce(
RawValue_MPI_MIN,m_env.inter0Comm(),subMeanInter0Min);
2774 subMeanVec.mpiAllReduce(
RawValue_MPI_MAX,m_env.inter0Comm(),subMeanInter0Max);
2779 template <
class V,
class M>
2781 SequenceOfVectors<V,M>::unifiedMeanMonitorRun(
unsigned int monitorPosition,
2783 V& unifiedMeanCltStd)
2785 this->unifiedMeanExtra(0,
2789 this->unifiedMeanCltStd(0,
2796 template <
class V,
class M>
2798 SequenceOfVectors<V,M>::subMeanMonitorStore(
unsigned int i,
2799 unsigned int monitorPosition,
2800 const V& subMeanVec,
2801 const V& subMeanCltStd)
2803 (*m_subMeanMonitorPosSeq)[i] = monitorPosition;
2804 m_subMeanVecSeq->setPositionValues(i,subMeanVec);
2805 m_subMeanCltStdSeq->setPositionValues(i,subMeanCltStd);
2810 template <
class V,
class M>
2812 SequenceOfVectors<V,M>::subMeanInter0MonitorStore(
unsigned int i,
2813 unsigned int monitorPosition,
2814 const V& subMeanInter0Mean,
2815 const V& subMeanInter0Clt95,
2816 const V& subMeanInter0Empirical90,
2817 const V& subMeanInter0Min,
2818 const V& subMeanInter0Max)
2820 (*m_subMeanInter0MonitorPosSeq)[i] = monitorPosition;
2821 m_subMeanInter0Mean->setPositionValues(i,subMeanInter0Mean);
2822 m_subMeanInter0Clt95->setPositionValues(i,subMeanInter0Clt95);
2823 m_subMeanInter0Empirical90->setPositionValues(i,subMeanInter0Empirical90);
2824 m_subMeanInter0Min->setPositionValues(i,subMeanInter0Min);
2825 m_subMeanInter0Max->setPositionValues(i,subMeanInter0Max);
2830 template <
class V,
class M>
2832 SequenceOfVectors<V,M>::unifiedMeanMonitorStore(
unsigned int i,
2833 unsigned int monitorPosition,
2835 V& unifiedMeanCltStd)
2837 (*m_unifiedMeanMonitorPosSeq)[i] = monitorPosition;
2838 m_unifiedMeanVecSeq->setPositionValues(i,unifiedMeanVec);
2839 m_unifiedMeanCltStdSeq->setPositionValues(i,unifiedMeanCltStd);
2844 template <
class V,
class M>
2846 SequenceOfVectors<V,M>::subMeanMonitorWrite(std::ofstream& ofs)
2855 template <
class V,
class M>
2857 SequenceOfVectors<V,M>::subMeanInter0MonitorWrite(std::ofstream& ofs)
2869 template <
class V,
class M>
2871 SequenceOfVectors<V,M>::unifiedMeanMonitorWrite(std::ofstream& ofs)
2882 template <
class V,
class M>
2884 SequenceOfVectors<V,M>::subMeanMonitorFree()
2886 delete m_subMeanMonitorPosSeq;
2887 m_subMeanMonitorPosSeq = NULL;
2888 delete m_subMeanVecSeq;
2889 m_subMeanVecSeq = NULL;
2890 delete m_subMeanCltStdSeq;
2891 m_subMeanCltStdSeq = NULL;
2896 template <
class V,
class M>
2898 SequenceOfVectors<V,M>::subMeanInter0MonitorFree()
2900 delete m_subMeanInter0MonitorPosSeq;
2901 m_subMeanInter0MonitorPosSeq = NULL;
2902 delete m_subMeanInter0Mean;
2903 m_subMeanInter0Mean = NULL;
2904 delete m_subMeanInter0Clt95;
2905 m_subMeanInter0Clt95 = NULL;
2906 delete m_subMeanInter0Empirical90;
2907 m_subMeanInter0Empirical90 = NULL;
2908 delete m_subMeanInter0Min;
2909 m_subMeanInter0Min = NULL;
2910 delete m_subMeanInter0Max;
2911 m_subMeanInter0Max = NULL;
2916 template <
class V,
class M>
2918 SequenceOfVectors<V,M>::unifiedMeanMonitorFree()
2920 delete m_unifiedMeanMonitorPosSeq;
2921 m_unifiedMeanMonitorPosSeq = NULL;
2922 delete m_unifiedMeanVecSeq;
2923 m_unifiedMeanVecSeq = NULL;
2924 delete m_unifiedMeanCltStdSeq;
2925 m_unifiedMeanCltStdSeq = NULL;
2929 #endif // #ifdef UQ_CODE_HAS_MONITORS
Class to accommodate arrays of one-dimensional grid.
#define UQ_FILE_EXTENSION_FOR_MATLAB_FORMAT
void unifiedReadContents(const std::string &fileName, const std::string &fileType, const unsigned int subSequenceSize)
Reads the unified sequence from a file.
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...
std::ofstream * ofsVar
Provides a stream interface to write data to files.
void subHistogram(unsigned int initialPos, const V &minVec, const V &maxVec, std::vector< V * > ¢ersForAllBins, std::vector< V * > &quanttsForAllBins) const
Calculates the histogram of the sub-sequence.
#define UQ_FILE_EXTENSION_FOR_TXT_FORMAT
void erasePositions(unsigned int initialPos, unsigned int numPos)
Erases numPos elements of the sequence starting at position initialPos.
void setOneDTable(unsigned int rowId, const std::vector< double > &values)
Sets the one-dimensional table.
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...
#define queso_error_msg(msg)
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 unifiedWriteContents(const std::string &fileName, const std::string &fileType) const
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...
and that you are informed that you can do these things To protect your we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it For if you distribute copies of the whether gratis or for a you must give the recipients all the rights that we gave you You must make sure that receive or can get the source code If you link other code with the you must provide complete object files to the so that they can relink them with the library after making changes to the library and recompiling it And you must show them these terms so they know their rights We protect your rights with a two step which gives you legal permission to copy
void subInterQuantileRange(unsigned int initialPos, V &iqrVec) const
Returns the interquartile range of the values in the sub-sequence.
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 deleteStoredVectors()
Deletes all the stored vectors.
void unifiedUniformlySampledCdf(const V &numEvaluationPointsVec, ArrayOfOneDGrids< V, M > &unifiedCdfGrids, ArrayOfOneDTables< V, M > &unifiedCdfValues) const
Uniformly samples from the CDF from the sub-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 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...
#define queso_require_less_msg(expr1, expr2, msg)
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...
the intent is to exercise the right to control the distribution of derivative or collective works based on the Library In mere aggregation of another work not based on the Library with the you must alter all the notices that refer to this so that they refer to the ordinary GNU General Public instead of to this it is irreversible for that so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy This option is useful when you wish to copy part of the code of the Library into a program that is not a library You may copy and distribute the which must be distributed under the terms of Sections and above on a medium customarily used for software interchange If distribution of object code is made by offering access to copy from a designated then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source even though third parties are not compelled to copy the source along with the object code A program that contains no derivative of any portion of the but is designed to work with the Library by being compiled or linked with is called a work that uses the Library Such a work
T unifiedInterQuantileRange(bool useOnlyInter0Comm, unsigned int initialPos) const
Returns the interquartile range of the values in the unified 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 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.
SequenceOfVectors< V, M > & operator=(const SequenceOfVectors< V, M > &rhs)
Copies values from rhs to this.
GslMatrix matrixProduct(const GslVector &v1, const GslVector &v2)
void writeTxtHeader(std::ofstream &ofs, double sequenceSize, double vectorSizeLocal) const
Helper function to write plain txt info for vectors.
void setPositionValues(unsigned int posId, const V &vec)
Set the values in vec at position posId of the sequence.
SequenceOfVectors(const VectorSpace< V, M > &vectorSpace, unsigned int subSequenceSize, const std::string &name)
Default constructor.
void writeUnifiedMatlabHeader(std::ofstream &ofs, double sequenceSize, double vectorSizeLocal) const
double MiscGetEllapsedSeconds(struct timeval *timeval0)
#define queso_require_less_equal_msg(expr1, expr2, msg)
double estimateConvBrooksGelman(unsigned int initialPos, unsigned int numPos) const
Estimates convergence rate using Brooks & Gelman method.
Class for handling vector samples (sequence of vectors).
#define queso_require_msg(asserted, msg)
#define queso_require_equal_to_msg(expr1, expr2, msg)
void filter(unsigned int initialPos, unsigned int spacing)
Filters positions in the sequence of vectors.
#define queso_require_greater_equal_msg(expr1, expr2, msg)
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 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.
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...
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...
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 subSequenceSize() const
Size of the sub-sequence of vectors.
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.
Struct for handling data input and output from files.
~SequenceOfVectors()
Destructor.
T autoCorrViaDef(unsigned int initialPos, unsigned int numPos, unsigned int lag) const
Calculates the autocorrelation via definition.
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...
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...
void getPositionValues(unsigned int posId, V &vec) const
Gets the values of the sequence at position posId and stores them at vec.
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...
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 select(const std::vector< unsigned int > &idsOfUniquePositions)
TODO: It shall select positions in the sequence of vectors.
void unifiedInterQuantileRange(unsigned int initialPos, V &unifiedIqrVec) const
Returns the interquartile range of the values in the unified sequence.
void resetValues(unsigned int initialPos, unsigned int numPos)
Resets a total of numPos values of the sequence starting at position initialPos.
#define UQ_FILE_EXTENSION_FOR_HDF_FORMAT
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 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 subUniformlySampledCdf(const V &numEvaluationPointsVec, ArrayOfOneDGrids< V, M > &cdfGrids, ArrayOfOneDTables< V, M > &cdfValues) const
Uniformly samples from the CDF from the sub-sequence.
void autoCorrViaDef(unsigned int initialPos, unsigned int numPos, unsigned int lag, V &corrVec) const
Calculates the autocorrelation via definition.
Class to accommodate arrays of one-dimensional tables.
T subInterQuantileRange(unsigned int initialPos) const
Returns the interquartile range of the values in the sub-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.
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 resizeSequence(unsigned int newSequenceSize)
Resizes the size of the sequence of scalars.
std::ifstream * ifsVar
Provides a stream interface to read data from files.
void setUniformGrids(const V &sizesVec, const V &minPositionsVec, const V &maxPositionsVec)
Sets an array of uniform grids.
std::vector< const V * >::iterator seqVectorPositionIteratorTypedef
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 autoCorrViaFft(unsigned int initialPos, unsigned int numPos, unsigned int maxLag, std::vector< T > &autoCorrs) const
Calculates the autocorrelation via Fast Fourier transforms (FFT).
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 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 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 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.
T autoCovariance(unsigned int initialPos, unsigned int numPos, const T &meanValue, unsigned int lag) const
Calculates the autocovariance.
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 autoCovariance(unsigned int initialPos, unsigned int numPos, const V &meanVec, unsigned int lag, V &covVec) const
Calculates the autocovariance.
void extractRawData(unsigned int initialPos, unsigned int spacing, unsigned int numPos, unsigned int paramId, std::vector< double > &rawData) const
Extracts the raw data.
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...
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 ...
void copy(const BaseVectorSequence< V, M > &src)
Copies vector sequence src to this.
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 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 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 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 writeSubMatlabHeader(std::ofstream &ofs, double sequenceSize, double vectorSizeLocal) const
Helper function to write matlab-specific header info for vectors.
Base class for handling vector and array samples (sequence of vectors or arrays). ...
std::vector< const V * > m_seq
Sequence of vectors.
void resizeSequence(unsigned int newSubSequenceSize)
Resizes the sequence.