queso-0.51.1
MetropolisHastingsSGOptions.C
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 #include <queso/MetropolisHastingsSGOptions.h>
26 #include <queso/Miscellaneous.h>
27 
28 // -------------------------------------------------
29 // MhOptionsValues --------------------------
30 // -------------------------------------------------
31 
32 namespace QUESO {
33 
34 // Default constructor -----------------------------
36 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
37  const SsOptionsValues* alternativeRawSsOptionsValues,
38  const SsOptionsValues* alternativeFilteredSsOptionsValues
39 #endif
40  )
41  :
42  m_dataOutputFileName (UQ_MH_SG_DATA_OUTPUT_FILE_NAME_ODV),
43  m_dataOutputAllowAll (UQ_MH_SG_DATA_OUTPUT_ALLOW_ALL_ODV),
44 //m_dataOutputAllowedSet (),
45  m_totallyMute (UQ_MH_SG_TOTALLY_MUTE_ODV),
46  m_initialPositionDataInputFileName (UQ_MH_SG_INITIAL_POSITION_DATA_INPUT_FILE_NAME_ODV),
47  m_initialPositionDataInputFileType (UQ_MH_SG_INITIAL_POSITION_DATA_INPUT_FILE_TYPE_ODV),
48  m_initialProposalCovMatrixDataInputFileName(UQ_MH_SG_INITIAL_PROPOSAL_COV_MATRIX_DATA_INPUT_FILE_NAME_ODV),
49  m_initialProposalCovMatrixDataInputFileType(UQ_MH_SG_INITIAL_PROPOSAL_COV_MATRIX_DATA_INPUT_FILE_TYPE_ODV),
50 //m_parameterDisabledSet (),
51  m_rawChainDataInputFileName (UQ_MH_SG_RAW_CHAIN_DATA_INPUT_FILE_NAME_ODV),
52  m_rawChainDataInputFileType (UQ_MH_SG_RAW_CHAIN_DATA_INPUT_FILE_TYPE_ODV),
53  m_rawChainSize (UQ_MH_SG_RAW_CHAIN_SIZE_ODV),
54  m_rawChainGenerateExtra (UQ_MH_SG_RAW_CHAIN_GENERATE_EXTRA_ODV),
55  m_rawChainDisplayPeriod (UQ_MH_SG_RAW_CHAIN_DISPLAY_PERIOD_ODV),
56  m_rawChainMeasureRunTimes (UQ_MH_SG_RAW_CHAIN_MEASURE_RUN_TIMES_ODV),
57  m_rawChainDataOutputPeriod (UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_PERIOD_ODV),
58  m_rawChainDataOutputFileName (UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_FILE_NAME_ODV),
59  m_rawChainDataOutputFileType (UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_FILE_TYPE_ODV),
60  m_rawChainDataOutputAllowAll (UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_ALLOW_ALL_ODV),
61 //m_rawChainDataOutputAllowedSet (),
62 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
63  m_rawChainComputeStats (UQ_MH_SG_RAW_CHAIN_COMPUTE_STATS_ODV),
64 #endif
65  m_filteredChainGenerate (UQ_MH_SG_FILTERED_CHAIN_GENERATE_ODV),
66  m_filteredChainDiscardedPortion (UQ_MH_SG_FILTERED_CHAIN_DISCARDED_PORTION_ODV),
67  m_filteredChainLag (UQ_MH_SG_FILTERED_CHAIN_LAG_ODV),
68  m_filteredChainDataOutputFileName (UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_FILE_NAME_ODV),
69  m_filteredChainDataOutputFileType (UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_FILE_TYPE_ODV),
70  m_filteredChainDataOutputAllowAll (UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_ALLOW_ALL_ODV),
71 //m_filteredChainDataOutputAllowedSet (),
72 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
73  m_filteredChainComputeStats (UQ_MH_SG_FILTERED_CHAIN_COMPUTE_STATS_ODV),
74 #endif
75  m_displayCandidates (UQ_MH_SG_DISPLAY_CANDIDATES_ODV),
76  m_putOutOfBoundsInChain (UQ_MH_SG_PUT_OUT_OF_BOUNDS_IN_CHAIN_ODV),
77  m_tkUseLocalHessian (UQ_MH_SG_TK_USE_LOCAL_HESSIAN_ODV),
78  m_tkUseNewtonComponent (UQ_MH_SG_TK_USE_NEWTON_COMPONENT_ODV),
79  m_drMaxNumExtraStages (UQ_MH_SG_DR_MAX_NUM_EXTRA_STAGES_ODV),
80  m_drScalesForExtraStages (0),
81  m_drDuringAmNonAdaptiveInt (UQ_MH_SG_DR_DURING_AM_NON_ADAPTIVE_INT_ODV),
82  m_amKeepInitialMatrix (UQ_MH_SG_AM_KEEP_INITIAL_MATRIX_ODV),
83  m_amInitialNonAdaptInterval (UQ_MH_SG_AM_INIT_NON_ADAPT_INT_ODV),
84  m_amAdaptInterval (UQ_MH_SG_AM_ADAPT_INTERVAL_ODV),
85  m_amAdaptedMatricesDataOutputPeriod (UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_PERIOD_ODV),
86  m_amAdaptedMatricesDataOutputFileName (UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_FILE_NAME_ODV),
87  m_amAdaptedMatricesDataOutputFileType (UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_FILE_TYPE_ODV),
88  m_amAdaptedMatricesDataOutputAllowAll (UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_ALLOW_ALL_ODV),
89 //m_amAdaptedMatricesDataOutputAllowedSet (),
90  m_amEta (UQ_MH_SG_AM_ETA_ODV),
91  m_amEpsilon (UQ_MH_SG_AM_EPSILON_ODV),
92  m_enableBrooksGelmanConvMonitor (UQ_MH_SG_ENABLE_BROOKS_GELMAN_CONV_MONITOR),
93  m_BrooksGelmanLag (UQ_MH_SG_BROOKS_GELMAN_LAG),
94  m_outputLogLikelihood (UQ_MH_SG_OUTPUT_LOG_LIKELIHOOD),
95  m_outputLogTarget (UQ_MH_SG_OUTPUT_LOG_TARGET),
96  m_doLogitTransform (UQ_MH_SG_DO_LOGIT_TRANSFORM)
97 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
98  ,
99  m_alternativeRawSsOptionsValues (),
100  m_alternativeFilteredSsOptionsValues ()
101 #endif
102 {
103 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
104  if (alternativeRawSsOptionsValues ) m_alternativeRawSsOptionsValues = *alternativeRawSsOptionsValues;
105  if (alternativeFilteredSsOptionsValues) m_alternativeFilteredSsOptionsValues = *alternativeFilteredSsOptionsValues;
106 #endif
107 }
108 // Copy constructor----------------------------------
110 {
111  this->copy(src);
112 }
113 // Destructor ---------------------------------------
115 {
116 }
117 // Set methods --------------------------------------
120 {
121  this->copy(rhs);
122  return *this;
123 }
124 // Private methods-----------------------------------
125 void
127 {
148 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
149  m_rawChainComputeStats = src.m_rawChainComputeStats;
150 #endif
151 //m_rawChainStatisticalOptionsObj = src.m_rawChainStatisticalOptionsObj; // dakota
152 //m_rawChainStatOptsInstantiated = src.m_rawChainStatOptsInstantiated; // dakota
160 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
161  m_filteredChainComputeStats = src.m_filteredChainComputeStats;
162 #endif
163 //m_filteredChainStatisticalOptionsObj = src.m_filteredChainStatisticalOptionsObj; // dakota
164 //m_filteredChainStatOptsInstantiated = src.m_filteredChainStatOptsInstantiated; // dakota
180  m_amEta = src.m_amEta;
181  m_amEpsilon = src.m_amEpsilon;
187 
188 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
189  m_alternativeRawSsOptionsValues = src.m_alternativeRawSsOptionsValues;
190  m_alternativeFilteredSsOptionsValues = src.m_alternativeFilteredSsOptionsValues;
191 #endif
192  return;
193 }
194 
195 //---------------------------------------------------
196 // MetropolisHastingsSGOptions ---------------
197 //---------------------------------------------------
198 
199 // Default constructor -----------------------------
201  const BaseEnvironment& env,
202  const char* prefix)
203  :
204 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
205  m_ov (NULL,NULL), // dakota
206  m_rawChainStatisticalOptionsObj (NULL),
207  m_rawChainStatOptsInstantiated (false),
208  m_filteredChainStatisticalOptionsObj (NULL),
209  m_filteredChainStatOptsInstantiated (false),
210 #else
211  m_ov (),
212 #endif
213  m_prefix ((std::string)(prefix) + "mh_"),
214  m_env (env),
215  m_optionsDesc (new po::options_description("Bayesian Metropolis-Hastings options")),
216  m_option_help (m_prefix + "help" ),
217  m_option_dataOutputFileName (m_prefix + "dataOutputFileName" ),
218  m_option_dataOutputAllowAll (m_prefix + "dataOutputAllowAll" ),
219  m_option_dataOutputAllowedSet (m_prefix + "dataOutputAllowedSet" ),
220  m_option_totallyMute (m_prefix + "totallyMute" ),
221  m_option_initialPosition_dataInputFileName (m_prefix + "initialPosition_dataInputFileName" ),
222  m_option_initialPosition_dataInputFileType (m_prefix + "initialPosition_dataInputFileType" ),
223  m_option_initialProposalCovMatrix_dataInputFileName(m_prefix + "initialProposalCovMatrix_dataInputFileName"),
224  m_option_initialProposalCovMatrix_dataInputFileType(m_prefix + "initialProposalCovMatrix_dataInputFileType"),
225  m_option_listOfDisabledParameters (m_prefix + "listOfDisabledParameters" ),
226  m_option_rawChain_dataInputFileName (m_prefix + "rawChain_dataInputFileName" ),
227  m_option_rawChain_dataInputFileType (m_prefix + "rawChain_dataInputFileType" ),
228  m_option_rawChain_size (m_prefix + "rawChain_size" ),
229  m_option_rawChain_generateExtra (m_prefix + "rawChain_generateExtra" ),
230  m_option_rawChain_displayPeriod (m_prefix + "rawChain_displayPeriod" ),
231  m_option_rawChain_measureRunTimes (m_prefix + "rawChain_measureRunTimes" ),
232  m_option_rawChain_dataOutputPeriod (m_prefix + "rawChain_dataOutputPeriod" ),
233  m_option_rawChain_dataOutputFileName (m_prefix + "rawChain_dataOutputFileName" ),
234  m_option_rawChain_dataOutputFileType (m_prefix + "rawChain_dataOutputFileType" ),
235  m_option_rawChain_dataOutputAllowAll (m_prefix + "rawChain_dataOutputAllowAll" ),
236  m_option_rawChain_dataOutputAllowedSet (m_prefix + "rawChain_dataOutputAllowedSet" ),
237 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
238  m_option_rawChain_computeStats (m_prefix + "rawChain_computeStats" ),
239 #endif
240  m_option_filteredChain_generate (m_prefix + "filteredChain_generate" ),
241  m_option_filteredChain_discardedPortion (m_prefix + "filteredChain_discardedPortion" ),
242  m_option_filteredChain_lag (m_prefix + "filteredChain_lag" ),
243  m_option_filteredChain_dataOutputFileName (m_prefix + "filteredChain_dataOutputFileName" ),
244  m_option_filteredChain_dataOutputFileType (m_prefix + "filteredChain_dataOutputFileType" ),
245  m_option_filteredChain_dataOutputAllowAll (m_prefix + "filteredChain_dataOutputAllowAll" ),
246  m_option_filteredChain_dataOutputAllowedSet (m_prefix + "filteredChain_dataOutputAllowedSet" ),
247 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
248  m_option_filteredChain_computeStats (m_prefix + "filteredChain_computeStats" ),
249 #endif
250  m_option_displayCandidates (m_prefix + "displayCandidates" ),
251  m_option_putOutOfBoundsInChain (m_prefix + "putOutOfBoundsInChain" ),
252  m_option_tk_useLocalHessian (m_prefix + "tk_useLocalHessian" ),
253  m_option_tk_useNewtonComponent (m_prefix + "tk_useNewtonComponent" ),
254  m_option_dr_maxNumExtraStages (m_prefix + "dr_maxNumExtraStages" ),
255  m_option_dr_listOfScalesForExtraStages (m_prefix + "dr_listOfScalesForExtraStages" ),
256  m_option_dr_duringAmNonAdaptiveInt (m_prefix + "dr_duringAmNonAdaptiveInt" ),
257  m_option_am_keepInitialMatrix (m_prefix + "am_keepInitialMatrix" ),
258  m_option_am_initialNonAdaptInterval (m_prefix + "am_initialNonAdaptInterval" ),
259  m_option_am_adaptInterval (m_prefix + "am_adaptInterval" ),
260  m_option_am_adaptedMatrices_dataOutputPeriod (m_prefix + "am_adaptedMatrices_dataOutputPeriod" ),
261  m_option_am_adaptedMatrices_dataOutputFileName (m_prefix + "am_adaptedMatrices_dataOutputFileName" ),
262  m_option_am_adaptedMatrices_dataOutputFileType (m_prefix + "am_adaptedMatrices_dataOutputFileType" ),
263  m_option_am_adaptedMatrices_dataOutputAllowAll (m_prefix + "am_adaptedMatrices_dataOutputAllowAll" ),
264  m_option_am_adaptedMatrices_dataOutputAllowedSet (m_prefix + "am_adaptedMatrices_dataOutputAllowedSet" ),
265  m_option_am_eta (m_prefix + "am_eta" ),
266  m_option_am_epsilon (m_prefix + "am_epsilon" ),
267  m_option_enableBrooksGelmanConvMonitor (m_prefix + "enableBrooksGelmanConvMonitor" ),
268  m_option_BrooksGelmanLag (m_prefix + "BrooksGelmanLag" ),
269  m_option_outputLogLikelihood (m_prefix + "outputLogLikelihood" ),
270  m_option_outputLogTarget (m_prefix + "outputLogTarget" ),
271  m_option_doLogitTransform (m_prefix + "doLogitTransform" )
272 {
274  m_env.worldRank(),
275  "MetropolisHastingsSGOptions::constructor(1)",
276  "this constructor is incompatible with the absence of an options input file");
277 }
278 // Constructor 2------------------------------------
280  const BaseEnvironment& env,
281  const char* prefix,
282  const MhOptionsValues& alternativeOptionsValues)
283  :
284  m_ov (alternativeOptionsValues),
285 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
286  m_rawChainStatisticalOptionsObj (NULL),
287  m_rawChainStatOptsInstantiated (false),
288  m_filteredChainStatisticalOptionsObj (NULL),
289  m_filteredChainStatOptsInstantiated (false),
290 #endif
291  m_prefix ((std::string)(prefix) + "mh_"),
292  m_env (env),
293  m_optionsDesc (NULL),
294  m_option_help (m_prefix + "help" ),
295  m_option_dataOutputFileName (m_prefix + "dataOutputFileName" ),
296  m_option_dataOutputAllowAll (m_prefix + "dataOutputAllowAll" ),
297  m_option_dataOutputAllowedSet (m_prefix + "dataOutputAllowedSet" ),
298  m_option_totallyMute (m_prefix + "totallyMute" ),
299  m_option_initialPosition_dataInputFileName (m_prefix + "initialPosition_dataInputFileName" ),
300  m_option_initialPosition_dataInputFileType (m_prefix + "initialPosition_dataInputFileType" ),
301  m_option_initialProposalCovMatrix_dataInputFileName(m_prefix + "initialProposalCovMatrix_dataInputFileName"),
302  m_option_initialProposalCovMatrix_dataInputFileType(m_prefix + "initialProposalCovMatrix_dataInputFileType"),
303  m_option_listOfDisabledParameters (m_prefix + "listOfDisabledParameters" ),
304  m_option_rawChain_dataInputFileName (m_prefix + "rawChain_dataInputFileName" ),
305  m_option_rawChain_dataInputFileType (m_prefix + "rawChain_dataInputFileType" ),
306  m_option_rawChain_size (m_prefix + "rawChain_size" ),
307  m_option_rawChain_generateExtra (m_prefix + "rawChain_generateExtra" ),
308  m_option_rawChain_displayPeriod (m_prefix + "rawChain_displayPeriod" ),
309  m_option_rawChain_measureRunTimes (m_prefix + "rawChain_measureRunTimes" ),
310  m_option_rawChain_dataOutputPeriod (m_prefix + "rawChain_dataOutputPeriod" ),
311  m_option_rawChain_dataOutputFileName (m_prefix + "rawChain_dataOutputFileName" ),
312  m_option_rawChain_dataOutputFileType (m_prefix + "rawChain_dataOutputFileType" ),
313  m_option_rawChain_dataOutputAllowAll (m_prefix + "rawChain_dataOutputAllowAll" ),
314  m_option_rawChain_dataOutputAllowedSet (m_prefix + "rawChain_dataOutputAllowedSet" ),
315 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
316  m_option_rawChain_computeStats (m_prefix + "rawChain_computeStats" ),
317 #endif
318  m_option_filteredChain_generate (m_prefix + "filteredChain_generate" ),
319  m_option_filteredChain_discardedPortion (m_prefix + "filteredChain_discardedPortion" ),
320  m_option_filteredChain_lag (m_prefix + "filteredChain_lag" ),
321  m_option_filteredChain_dataOutputFileName (m_prefix + "filteredChain_dataOutputFileName" ),
322  m_option_filteredChain_dataOutputFileType (m_prefix + "filteredChain_dataOutputFileType" ),
323  m_option_filteredChain_dataOutputAllowAll (m_prefix + "filteredChain_dataOutputAllowAll" ),
324  m_option_filteredChain_dataOutputAllowedSet (m_prefix + "filteredChain_dataOutputAllowedSet" ),
325 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
326  m_option_filteredChain_computeStats (m_prefix + "filteredChain_computeStats" ),
327 #endif
328  m_option_displayCandidates (m_prefix + "displayCandidates" ),
329  m_option_putOutOfBoundsInChain (m_prefix + "putOutOfBoundsInChain" ),
330  m_option_tk_useLocalHessian (m_prefix + "tk_useLocalHessian" ),
331  m_option_tk_useNewtonComponent (m_prefix + "tk_useNewtonComponent" ),
332  m_option_dr_maxNumExtraStages (m_prefix + "dr_maxNumExtraStages" ),
333  m_option_dr_listOfScalesForExtraStages (m_prefix + "dr_listOfScalesForExtraStages" ),
334  m_option_dr_duringAmNonAdaptiveInt (m_prefix + "dr_duringAmNonAdaptiveInt" ),
335  m_option_am_keepInitialMatrix (m_prefix + "am_keepInitialMatrix" ),
336  m_option_am_initialNonAdaptInterval (m_prefix + "am_initialNonAdaptInterval" ),
337  m_option_am_adaptInterval (m_prefix + "am_adaptInterval" ),
338  m_option_am_adaptedMatrices_dataOutputPeriod (m_prefix + "am_adaptedMatrices_dataOutputPeriod" ),
339  m_option_am_adaptedMatrices_dataOutputFileName (m_prefix + "am_adaptedMatrices_dataOutputFileName" ),
340  m_option_am_adaptedMatrices_dataOutputFileType (m_prefix + "am_adaptedMatrices_dataOutputFileType" ),
341  m_option_am_adaptedMatrices_dataOutputAllowAll (m_prefix + "am_adaptedMatrices_dataOutputAllowAll" ),
342  m_option_am_adaptedMatrices_dataOutputAllowedSet (m_prefix + "am_adaptedMatrices_dataOutputAllowedSet" ),
343  m_option_am_eta (m_prefix + "am_eta" ),
344  m_option_am_epsilon (m_prefix + "am_epsilon" ),
345  m_option_enableBrooksGelmanConvMonitor (m_prefix + "enableBrooksGelmanConvMonitor" ),
346  m_option_BrooksGelmanLag (m_prefix + "BrooksGelmanLag" ),
347  m_option_outputLogLikelihood (m_prefix + "outputLogLikelihood" ),
348  m_option_outputLogTarget (m_prefix + "outputLogTarget" ),
349  m_option_doLogitTransform (m_prefix + "doLogitTransform" )
350 {
352  m_env.worldRank(),
353  "MetropolisHastingsSGOptions::constructor(2)",
354  "this constructor is incompatible with the existence of an options input file");
355 
356  if ((m_env.subDisplayFile() != NULL ) &&
357  (m_ov.m_totallyMute == false)) {
358  *m_env.subDisplayFile() << "In MetropolisHastingsSGOptions::constructor(2)"
359  << ": after setting values of options with prefix '" << m_prefix
360  << "', state of object is:"
361  << "\n" << *this
362  << std::endl;
363  }
364 
365 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
366  if (m_ov.m_rawChainComputeStats) {
367  m_rawChainStatisticalOptionsObj = new SequenceStatisticalOptions(m_env,m_prefix + "rawChain_",m_ov.m_alternativeRawSsOptionsValues);
368  m_rawChainStatOptsInstantiated = true;
369  }
370  if (m_ov.m_filteredChainComputeStats) {
371  m_filteredChainStatisticalOptionsObj = new SequenceStatisticalOptions(m_env,m_prefix + "filteredChain_",m_ov.m_alternativeFilteredSsOptionsValues);
372  m_filteredChainStatOptsInstantiated = true;
373  }
374 #endif
375 }
376 // Copy constructor---------------------------------
378  const MLSamplingLevelOptions& mlOptions)
379  :
380 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
381  m_ov (NULL,NULL), // dakota
382  m_rawChainStatisticalOptionsObj (NULL),
383  m_rawChainStatOptsInstantiated (false),
384  m_filteredChainStatisticalOptionsObj (NULL),
385  m_filteredChainStatOptsInstantiated (false),
386 #else
387  m_ov (),
388 #endif
389  m_prefix (mlOptions.m_prefix),
390  m_env (mlOptions.env()),
391  m_optionsDesc (NULL),
392  m_option_help (m_prefix + "help" ),
393  m_option_dataOutputFileName (m_prefix + "dataOutputFileName" ),
394  m_option_dataOutputAllowAll (m_prefix + "dataOutputAllowAll" ),
395  m_option_dataOutputAllowedSet (m_prefix + "dataOutputAllowedSet" ),
396  m_option_totallyMute (m_prefix + "totallyMute" ),
397  m_option_initialPosition_dataInputFileName (m_prefix + "initialPosition_dataInputFileName" ),
398  m_option_initialPosition_dataInputFileType (m_prefix + "initialPosition_dataInputFileType" ),
399  m_option_initialProposalCovMatrix_dataInputFileName(m_prefix + "initialProposalCovMatrix_dataInputFileName"),
400  m_option_initialProposalCovMatrix_dataInputFileType(m_prefix + "initialProposalCovMatrix_dataInputFileType"),
401  m_option_listOfDisabledParameters (m_prefix + "listOfDisabledParameters" ),
402  m_option_rawChain_dataInputFileName (m_prefix + "rawChain_dataInputFileName" ),
403  m_option_rawChain_dataInputFileType (m_prefix + "rawChain_dataInputFileType" ),
404  m_option_rawChain_size (m_prefix + "rawChain_size" ),
405  m_option_rawChain_generateExtra (m_prefix + "rawChain_generateExtra" ),
406  m_option_rawChain_displayPeriod (m_prefix + "rawChain_displayPeriod" ),
407  m_option_rawChain_measureRunTimes (m_prefix + "rawChain_measureRunTimes" ),
408  m_option_rawChain_dataOutputPeriod (m_prefix + "rawChain_dataOutputPeriod" ),
409  m_option_rawChain_dataOutputFileName (m_prefix + "rawChain_dataOutputFileName" ),
410  m_option_rawChain_dataOutputFileType (m_prefix + "rawChain_dataOutputFileType" ),
411  m_option_rawChain_dataOutputAllowAll (m_prefix + "rawChain_dataOutputAllowAll" ),
412  m_option_rawChain_dataOutputAllowedSet (m_prefix + "rawChain_dataOutputAllowedSet" ),
413 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
414  m_option_rawChain_computeStats (m_prefix + "rawChain_computeStats" ),
415 #endif
416  m_option_filteredChain_generate (m_prefix + "filteredChain_generate" ),
417  m_option_filteredChain_discardedPortion (m_prefix + "filteredChain_discardedPortion" ),
418  m_option_filteredChain_lag (m_prefix + "filteredChain_lag" ),
419  m_option_filteredChain_dataOutputFileName (m_prefix + "filteredChain_dataOutputFileName" ),
420  m_option_filteredChain_dataOutputFileType (m_prefix + "filteredChain_dataOutputFileType" ),
421  m_option_filteredChain_dataOutputAllowAll (m_prefix + "filteredChain_dataOutputAllowAll" ),
422  m_option_filteredChain_dataOutputAllowedSet (m_prefix + "filteredChain_dataOutputAllowedSet" ),
423 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
424  m_option_filteredChain_computeStats (m_prefix + "filteredChain_computeStats" ),
425 #endif
426  m_option_displayCandidates (m_prefix + "displayCandidates" ),
427  m_option_putOutOfBoundsInChain (m_prefix + "putOutOfBoundsInChain" ),
428  m_option_tk_useLocalHessian (m_prefix + "tk_useLocalHessian" ),
429  m_option_tk_useNewtonComponent (m_prefix + "tk_useNewtonComponent" ),
430  m_option_dr_maxNumExtraStages (m_prefix + "dr_maxNumExtraStages" ),
431  m_option_dr_listOfScalesForExtraStages (m_prefix + "dr_listOfScalesForExtraStages" ),
432  m_option_dr_duringAmNonAdaptiveInt (m_prefix + "dr_duringAmNonAdaptiveInt" ),
433  m_option_am_keepInitialMatrix (m_prefix + "am_keepInitialMatrix" ),
434  m_option_am_initialNonAdaptInterval (m_prefix + "am_initialNonAdaptInterval" ),
435  m_option_am_adaptInterval (m_prefix + "am_adaptInterval" ),
436  m_option_am_adaptedMatrices_dataOutputPeriod (m_prefix + "am_adaptedMatrices_dataOutputPeriod" ),
437  m_option_am_adaptedMatrices_dataOutputFileName (m_prefix + "am_adaptedMatrices_dataOutputFileName" ),
438  m_option_am_adaptedMatrices_dataOutputFileType (m_prefix + "am_adaptedMatrices_dataOutputFileType" ),
439  m_option_am_adaptedMatrices_dataOutputAllowAll (m_prefix + "am_adaptedMatrices_dataOutputAllowAll" ),
440  m_option_am_adaptedMatrices_dataOutputAllowedSet (m_prefix + "am_adaptedMatrices_dataOutputAllowedSet" ),
441  m_option_am_eta (m_prefix + "am_eta" ),
442  m_option_am_epsilon (m_prefix + "am_epsilon" ),
443  m_option_enableBrooksGelmanConvMonitor (m_prefix + "enableBrooksGelmanConvMonitor" ),
444  m_option_BrooksGelmanLag (m_prefix + "BrooksGelmanLag" ),
445  m_option_outputLogLikelihood (m_prefix + "outputLogLikelihood" ),
446  m_option_outputLogTarget (m_prefix + "outputLogTarget" ),
447  m_option_doLogitTransform (m_prefix + "doLogitTransform" )
448 {
452  m_ov.m_totallyMute = mlOptions.m_totallyMute;
460  m_ov.m_rawChainSize = mlOptions.m_rawChainSize;
469 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
470  m_ov.m_rawChainComputeStats = mlOptions.m_rawChainComputeStats;
471 #endif
479 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
480  m_ov.m_filteredChainComputeStats = mlOptions.m_filteredChainComputeStats;
481 #endif
497  m_ov.m_amEta = mlOptions.m_amEta;
498  m_ov.m_amEpsilon = mlOptions.m_amEpsilon;
504 
505 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
506 //m_ov.m_alternativeRawSsOptionsValues = mlOptions.; // dakota
507 //m_ov.m_alternativeFilteredSsOptionsValues = mlOptions.; // dakota
508 #endif
509 
510 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
511  m_rawChainStatisticalOptionsObj = mlOptions.m_rawChainStatisticalOptionsObj; // dakota
512  m_rawChainStatOptsInstantiated = false;
513  m_filteredChainStatisticalOptionsObj = mlOptions.m_filteredChainStatisticalOptionsObj; // dakota
514  m_filteredChainStatOptsInstantiated = false;
515 #endif
516  if ((m_env.subDisplayFile() != NULL ) &&
517  (m_ov.m_totallyMute == false)) {
518  *m_env.subDisplayFile() << "In MetropolisHastingsSGOptions::constructor(3)"
519  << ": after copying values of options with prefix '" << m_prefix
520  << "', state of object is:"
521  << "\n" << *this
522  << std::endl;
523  }
524 }
525 // Destructor --------------------------------------
527 {
528 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
529  if (m_filteredChainStatOptsInstantiated) delete m_filteredChainStatisticalOptionsObj;
530  if (m_rawChainStatOptsInstantiated ) delete m_rawChainStatisticalOptionsObj;
531 #endif
532  if (m_optionsDesc ) delete m_optionsDesc;
533 }
534 
535 // I/O methods -------------------------------------
536 void
538 {
540  m_env.worldRank(),
541  "MetropolisHastingsSGOptions::scanOptionsValues()",
542  "m_optionsDesc variable is NULL");
543 
547 
548  if ((m_env.subDisplayFile() != NULL) &&
549  (m_ov.m_totallyMute == false )) {
550  *m_env.subDisplayFile() << "In MetropolisHastingsSGOptions::scanOptionsValues()"
551  << ": after reading values of options with prefix '" << m_prefix
552  << "', state of object is:"
553  << "\n" << *this
554  << std::endl;
555  }
556 
557 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
558  if (m_ov.m_rawChainComputeStats) {
559  m_rawChainStatisticalOptionsObj = new SequenceStatisticalOptions(m_env,m_prefix + "rawChain_");
560  m_rawChainStatOptsInstantiated = true;
561  }
562  if (m_ov.m_filteredChainComputeStats) {
563  m_filteredChainStatisticalOptionsObj = new SequenceStatisticalOptions(m_env,m_prefix + "filteredChain_");
564  m_filteredChainStatOptsInstantiated = true;
565  }
566 #endif
567 
568  return;
569 }
570 // -------------------------------------------------
571 void
572 MetropolisHastingsSGOptions::print(std::ostream& os) const
573 {
576  << "\n" << m_option_dataOutputAllowedSet << " = ";
577  for (std::set<unsigned int>::iterator setIt = m_ov.m_dataOutputAllowedSet.begin(); setIt != m_ov.m_dataOutputAllowedSet.end(); ++setIt) {
578  os << *setIt << " ";
579  }
580  os << "\n" << m_option_totallyMute << " = " << m_ov.m_totallyMute
585  << "\n" << m_option_listOfDisabledParameters << " = ";
586  for (std::set<unsigned int>::iterator setIt = m_ov.m_parameterDisabledSet.begin(); setIt != m_ov.m_parameterDisabledSet.end(); ++setIt) {
587  os << *setIt << " ";
588  }
591  << "\n" << m_option_rawChain_size << " = " << m_ov.m_rawChainSize
599  << "\n" << m_option_rawChain_dataOutputAllowedSet << " = ";
600  for (std::set<unsigned int>::iterator setIt = m_ov.m_rawChainDataOutputAllowedSet.begin(); setIt != m_ov.m_rawChainDataOutputAllowedSet.end(); ++setIt) {
601  os << *setIt << " ";
602  }
603  os
604 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
605  << "\n" << m_option_rawChain_computeStats << " = " << m_ov.m_rawChainComputeStats
606 #endif
609  << "\n" << m_option_filteredChain_lag << " = " << m_ov.m_filteredChainLag
614  for (std::set<unsigned int>::iterator setIt = m_ov.m_filteredChainDataOutputAllowedSet.begin(); setIt != m_ov.m_filteredChainDataOutputAllowedSet.end(); ++setIt) {
615  os << *setIt << " ";
616  }
617  os
618 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
619  << "\n" << m_option_filteredChain_computeStats << " = " << m_ov.m_filteredChainComputeStats
620 #endif
626  << "\n" << m_option_dr_listOfScalesForExtraStages << " = ";
627  for (unsigned int i = 0; i < m_ov.m_drScalesForExtraStages.size(); ++i) {
628  os << m_ov.m_drScalesForExtraStages[i] << " ";
629  }
633  << "\n" << m_option_am_adaptInterval << " = " << m_ov.m_amAdaptInterval
639  for (std::set<unsigned int>::iterator setIt = m_ov.m_amAdaptedMatricesDataOutputAllowedSet.begin(); setIt != m_ov.m_amAdaptedMatricesDataOutputAllowedSet.end(); ++setIt) {
640  os << *setIt << " ";
641  }
642  os << "\n" << m_option_am_eta << " = " << m_ov.m_amEta
643  << "\n" << m_option_am_epsilon << " = " << m_ov.m_amEpsilon
645  << "\n" << m_option_BrooksGelmanLag << " = " << m_ov.m_BrooksGelmanLag
647  << "\n" << m_option_outputLogTarget << " = " << m_ov.m_outputLogTarget
648  << "\n" << m_option_doLogitTransform << " = " << m_ov.m_doLogitTransform
649  << std::endl;
650 
651  return;
652 }
653 
654 // Private methods----------------------------------
655 void
656 MetropolisHastingsSGOptions::defineMyOptions(po::options_description& optionsDesc) const
657 {
658  optionsDesc.add_options()
659  (m_option_help.c_str(), "produce help msg for Bayesian Metropolis-Hastings" )
660  (m_option_dataOutputFileName.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_DATA_OUTPUT_FILE_NAME_ODV ), "name of generic output file" )
661  (m_option_dataOutputAllowAll.c_str(), po::value<bool >()->default_value(UQ_MH_SG_DATA_OUTPUT_ALLOW_ALL_ODV ), "allow all subEnvs write to a generic output file" )
662  (m_option_dataOutputAllowedSet.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_DATA_OUTPUT_ALLOWED_SET_ODV ), "subEnvs that will write to generic output file" )
663  (m_option_totallyMute.c_str(), po::value<bool >()->default_value(UQ_MH_SG_TOTALLY_MUTE_ODV ), "totally mute (no printout msg)" )
664  (m_option_initialPosition_dataInputFileName.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_INITIAL_POSITION_DATA_INPUT_FILE_NAME_ODV ), "name of input file for raw chain " )
665  (m_option_initialPosition_dataInputFileType.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_INITIAL_POSITION_DATA_INPUT_FILE_TYPE_ODV ), "type of input file for raw chain " )
666  (m_option_initialProposalCovMatrix_dataInputFileName.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_INITIAL_PROPOSAL_COV_MATRIX_DATA_INPUT_FILE_NAME_ODV), "name of input file for raw chain " )
667  (m_option_initialProposalCovMatrix_dataInputFileType.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_INITIAL_PROPOSAL_COV_MATRIX_DATA_INPUT_FILE_TYPE_ODV), "type of input file for raw chain " )
668  (m_option_listOfDisabledParameters.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_LIST_OF_DISABLED_PARAMETERS_ODV ), "list of disabled parameters" )
669  (m_option_rawChain_dataInputFileName.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_RAW_CHAIN_DATA_INPUT_FILE_NAME_ODV ), "name of input file for raw chain " )
670  (m_option_rawChain_dataInputFileType.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_RAW_CHAIN_DATA_INPUT_FILE_TYPE_ODV ), "type of input file for raw chain " )
671  (m_option_rawChain_size.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_RAW_CHAIN_SIZE_ODV ), "size of raw chain" )
672  (m_option_rawChain_generateExtra.c_str(), po::value<bool >()->default_value(UQ_MH_SG_RAW_CHAIN_GENERATE_EXTRA_ODV ), "generate extra information about raw chain" )
673  (m_option_rawChain_displayPeriod.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_RAW_CHAIN_DISPLAY_PERIOD_ODV ), "period of msg display during raw chain generation" )
674  (m_option_rawChain_measureRunTimes.c_str(), po::value<bool >()->default_value(UQ_MH_SG_RAW_CHAIN_MEASURE_RUN_TIMES_ODV ), "measure run times" )
675  (m_option_rawChain_dataOutputPeriod.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_PERIOD_ODV ), "period of msg display during raw chain generation" )
676  (m_option_rawChain_dataOutputFileName.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_FILE_NAME_ODV ), "name of output file for raw chain " )
677  (m_option_rawChain_dataOutputFileType.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_FILE_TYPE_ODV ), "type of output file for raw chain " )
678  (m_option_rawChain_dataOutputAllowAll.c_str(), po::value<bool >()->default_value(UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_ALLOW_ALL_ODV ), "allow all subEnvs to write raw chain to an output file" )
679  (m_option_rawChain_dataOutputAllowedSet.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_ALLOWED_SET_ODV ), "subEnvs that will write raw chain to output file" )
680 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
681  (m_option_rawChain_computeStats.c_str(), po::value<bool >()->default_value(UQ_MH_SG_RAW_CHAIN_COMPUTE_STATS_ODV ), "compute statistics on raw chain" )
682 #endif
683  (m_option_filteredChain_generate.c_str(), po::value<bool >()->default_value(UQ_MH_SG_FILTERED_CHAIN_GENERATE_ODV ), "generate filtered chain" )
684  (m_option_filteredChain_discardedPortion.c_str(), po::value<double >()->default_value(UQ_MH_SG_FILTERED_CHAIN_DISCARDED_PORTION_ODV ), "initial discarded portion for chain filtering" )
685  (m_option_filteredChain_lag.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_FILTERED_CHAIN_LAG_ODV ), "spacing for chain filtering" )
686  (m_option_filteredChain_dataOutputFileName.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_FILE_NAME_ODV ), "name of output file for filtered chain" )
687  (m_option_filteredChain_dataOutputFileType.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_FILE_TYPE_ODV ), "type of output file for filtered chain" )
688  (m_option_filteredChain_dataOutputAllowAll.c_str(), po::value<bool >()->default_value(UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_ALLOW_ALL_ODV ), "allow all subEnvs to write filt chain to an output file" )
689  (m_option_filteredChain_dataOutputAllowedSet.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_ALLOWED_SET_ODV ), "subEnvs that will write filt chain to output file" )
690 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
691  (m_option_filteredChain_computeStats.c_str(), po::value<bool >()->default_value(UQ_MH_SG_FILTERED_CHAIN_COMPUTE_STATS_ODV ), "compute statistics on filtered chain" )
692 #endif
693  (m_option_displayCandidates.c_str(), po::value<bool >()->default_value(UQ_MH_SG_DISPLAY_CANDIDATES_ODV ), "display candidates in the core MH algorithm" )
694  (m_option_putOutOfBoundsInChain.c_str(), po::value<bool >()->default_value(UQ_MH_SG_PUT_OUT_OF_BOUNDS_IN_CHAIN_ODV ), "put 'out of bound' candidates in chain as well" )
695  (m_option_tk_useLocalHessian.c_str(), po::value<bool >()->default_value(UQ_MH_SG_TK_USE_LOCAL_HESSIAN_ODV ), "'proposal' use local Hessian" )
696  (m_option_tk_useNewtonComponent.c_str(), po::value<bool >()->default_value(UQ_MH_SG_TK_USE_NEWTON_COMPONENT_ODV ), "'proposal' use Newton component" )
697  (m_option_dr_maxNumExtraStages.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_DR_MAX_NUM_EXTRA_STAGES_ODV ), "'dr' maximum number of extra stages" )
698  (m_option_dr_listOfScalesForExtraStages.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_DR_LIST_OF_SCALES_FOR_EXTRA_STAGES_ODV ), "'dr' scales for prop cov matrices from 2nd stage on" )
699  (m_option_dr_duringAmNonAdaptiveInt.c_str(), po::value<bool >()->default_value(UQ_MH_SG_DR_DURING_AM_NON_ADAPTIVE_INT_ODV ), "'dr' used during 'am' non adaptive interval" )
700  (m_option_am_keepInitialMatrix.c_str(), po::value<bool >()->default_value(UQ_MH_SG_AM_KEEP_INITIAL_MATRIX_ODV ), "'am' keep initial (given) matrix" )
701  (m_option_am_initialNonAdaptInterval.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_AM_INIT_NON_ADAPT_INT_ODV ), "'am' initial non adaptation interval" )
702  (m_option_am_adaptInterval.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_AM_ADAPT_INTERVAL_ODV ), "'am' adaptation interval" )
703  (m_option_am_adaptedMatrices_dataOutputPeriod.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_PERIOD_ODV ), "period for outputting 'am' adapted matrices" )
704  (m_option_am_adaptedMatrices_dataOutputFileName.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_FILE_NAME_ODV ), "name of output file for 'am' adapted matrices" )
705  (m_option_am_adaptedMatrices_dataOutputFileType.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_FILE_TYPE_ODV ), "type of output file for 'am' adapted matrices" )
706  (m_option_am_adaptedMatrices_dataOutputAllowAll.c_str(), po::value<bool >()->default_value(UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_ALLOW_ALL_ODV ), "type of output file for 'am' adapted matrices" )
707  (m_option_am_adaptedMatrices_dataOutputAllowedSet.c_str(), po::value<std::string >()->default_value(UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_ALLOWED_SET_ODV ), "type of output file for 'am' adapted matrices" )
708  (m_option_am_eta.c_str(), po::value<double >()->default_value(UQ_MH_SG_AM_ETA_ODV ), "'am' eta" )
709  (m_option_am_epsilon.c_str(), po::value<double >()->default_value(UQ_MH_SG_AM_EPSILON_ODV ), "'am' epsilon" )
710  (m_option_enableBrooksGelmanConvMonitor.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_ENABLE_BROOKS_GELMAN_CONV_MONITOR ), "assess convergence using Brooks-Gelman metric" )
711  (m_option_BrooksGelmanLag.c_str(), po::value<unsigned int>()->default_value(UQ_MH_SG_BROOKS_GELMAN_LAG ), "number of chain positions before starting to compute metric")
712  (m_option_outputLogLikelihood.c_str(), po::value<bool >()->default_value(UQ_MH_SG_OUTPUT_LOG_LIKELIHOOD ), "flag to toggle output of log likelihood values" )
713  (m_option_outputLogTarget.c_str(), po::value<bool >()->default_value(UQ_MH_SG_OUTPUT_LOG_TARGET ), "flag to toggle output of log target values" )
714  (m_option_doLogitTransform.c_str(), po::value<bool >()->default_value(UQ_MH_SG_DO_LOGIT_TRANSFORM ), "flag to toggle logit transform for bounded domains" )
715  ;
716 
717  return;
718 }
719 // -------------------------------------------------
720 void
721 MetropolisHastingsSGOptions::getMyOptionValues(po::options_description& optionsDesc)
722 {
723  if (m_env.allOptionsMap().count(m_option_help)) {
724  if ((m_env.subDisplayFile()) &&
725  (m_ov.m_totallyMute == false)) {
726  *m_env.subDisplayFile() << optionsDesc
727  << std::endl;
728  }
729  }
730 
732  m_ov.m_dataOutputFileName = ((const po::variable_value&) m_env.allOptionsMap()[m_option_dataOutputFileName]).as<std::string>();
733  }
734 
735  if (m_env.allOptionsMap().count(m_option_dataOutputAllowAll.c_str())) {
737  }
738 
741  }
744  std::vector<double> tmpAllow(0,0.);
745  std::string inputString = m_env.allOptionsMap()[m_option_dataOutputAllowedSet].as<std::string>();
746  MiscReadDoublesFromString(inputString,tmpAllow);
747 
748  if (tmpAllow.size() > 0) {
749  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
750  m_ov.m_dataOutputAllowedSet.insert((unsigned int) tmpAllow[i]);
751  }
752  }
753  }
754 
756  m_ov.m_totallyMute = ((const po::variable_value&) m_env.allOptionsMap()[m_option_totallyMute]).as<bool>();
757  }
758 
761  }
762 
765  }
766 
769  }
770 
773  }
774 
777  std::vector<double> tmpAllow(0,0.);
778  std::string inputString = m_env.allOptionsMap()[m_option_listOfDisabledParameters].as<std::string>();
779  MiscReadDoublesFromString(inputString,tmpAllow);
780  if (tmpAllow.size() > 0) {
781  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
782  m_ov.m_parameterDisabledSet.insert((unsigned int) tmpAllow[i]);
783  }
784  }
785  }
786 
788  m_ov.m_rawChainDataInputFileName = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_dataInputFileName]).as<std::string>();
789  }
790 
792  m_ov.m_rawChainDataInputFileType = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_dataInputFileType]).as<std::string>();
793  }
794 
796  m_ov.m_rawChainSize = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_size]).as<unsigned int>();
797  }
798 
800  m_ov.m_rawChainDisplayPeriod = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_displayPeriod]).as<unsigned int>();
801  }
802 
804  m_ov.m_rawChainMeasureRunTimes = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_measureRunTimes]).as<bool>();
805  }
806 
808  m_ov.m_rawChainDataOutputPeriod = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_dataOutputPeriod]).as<unsigned int>();
809  }
810 
812  m_ov.m_rawChainDataOutputFileName = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_dataOutputFileName]).as<std::string>();
813  }
814 
816  m_ov.m_rawChainDataOutputFileType = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_dataOutputFileType]).as<std::string>();
817  }
818 
821  }
822 
825  }
828  std::vector<double> tmpAllow(0,0.);
829  std::string inputString = m_env.allOptionsMap()[m_option_rawChain_dataOutputAllowedSet].as<std::string>();
830  MiscReadDoublesFromString(inputString,tmpAllow);
831 
832  if (tmpAllow.size() > 0) {
833  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
834  m_ov.m_rawChainDataOutputAllowedSet.insert((unsigned int) tmpAllow[i]);
835  }
836  }
837  }
838 
839 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
840  if (m_env.allOptionsMap().count(m_option_rawChain_computeStats)) {
841  m_ov.m_rawChainComputeStats = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_computeStats]).as<bool>();
842  }
843 #endif
845  m_ov.m_rawChainGenerateExtra = ((const po::variable_value&) m_env.allOptionsMap()[m_option_rawChain_generateExtra]).as<bool>();
846  }
847 
849  m_ov.m_filteredChainGenerate = ((const po::variable_value&) m_env.allOptionsMap()[m_option_filteredChain_generate]).as<bool>();
850  }
851 
854  }
855 
857  m_ov.m_filteredChainLag = ((const po::variable_value&) m_env.allOptionsMap()[m_option_filteredChain_lag]).as<unsigned int>();
858  }
859  if ((m_ov.m_filteredChainGenerate == true) &&
860  (m_ov.m_filteredChainLag < 2 )) {
861  std::cerr << "WARNING In MetropolisHastingsSG<P_V,P_M>::getMyOptionsValues()"
862  << ", worldRank " << m_env.worldRank()
863  << ", fullRank " << m_env.fullRank()
864  << ", subEnvironment " << m_env.subId()
865  << ", subRank " << m_env.subRank()
866  << ", inter0Rank " << m_env.inter0Rank()
867  << ": forcing the value of '" << m_option_filteredChain_lag
868  << "' from " << m_ov.m_filteredChainLag
869  << " to " << 2
870  << std::endl;
872  }
873 
875  m_ov.m_filteredChainDataOutputFileName = ((const po::variable_value&) m_env.allOptionsMap()[m_option_filteredChain_dataOutputFileName]).as<std::string>();
876  }
877 
879  m_ov.m_filteredChainDataOutputFileType = ((const po::variable_value&) m_env.allOptionsMap()[m_option_filteredChain_dataOutputFileType]).as<std::string>();
880  }
881 
884  }
885 
888  }
891  std::vector<double> tmpAllow(0,0.);
892  std::string inputString = m_env.allOptionsMap()[m_option_filteredChain_dataOutputAllowedSet].as<std::string>();
893  MiscReadDoublesFromString(inputString,tmpAllow);
894 
895  if (tmpAllow.size() > 0) {
896  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
897  m_ov.m_filteredChainDataOutputAllowedSet.insert((unsigned int) tmpAllow[i]);
898  }
899  }
900  }
901 
902 #ifdef QUESO_USES_SEQUENCE_STATISTICAL_OPTIONS
903  if (m_env.allOptionsMap().count(m_option_filteredChain_computeStats)) {
904  m_ov.m_filteredChainComputeStats = ((const po::variable_value&) m_env.allOptionsMap()[m_option_filteredChain_computeStats]).as<bool>();
905  }
906 #endif
908  m_ov.m_displayCandidates = ((const po::variable_value&) m_env.allOptionsMap()[m_option_displayCandidates]).as<bool>();
909  }
910 
912  m_ov.m_putOutOfBoundsInChain = ((const po::variable_value&) m_env.allOptionsMap()[m_option_putOutOfBoundsInChain]).as<bool>();
913  }
914 
916  m_ov.m_tkUseLocalHessian = ((const po::variable_value&) m_env.allOptionsMap()[m_option_tk_useLocalHessian]).as<bool>();
917  }
918 
920  m_ov.m_tkUseNewtonComponent = ((const po::variable_value&) m_env.allOptionsMap()[m_option_tk_useNewtonComponent]).as<bool>();
921  }
922 
924  m_ov.m_drMaxNumExtraStages = ((const po::variable_value&) m_env.allOptionsMap()[m_option_dr_maxNumExtraStages]).as<unsigned int>();
925  }
926 
927  std::vector<double> tmpScales(0,0.);
929  std::string inputString = ((const po::variable_value&) m_env.allOptionsMap()[m_option_dr_listOfScalesForExtraStages]).as<std::string>();
930  MiscReadDoublesFromString(inputString,tmpScales);
931  //if (m_env.subDisplayFile()) {
932  // *m_env.subDisplayFile() << "In MetropolisHastingsSG<P_V,P_M>::getMyOptionValues(): scales =";
933  // for (unsigned int i = 0; i < tmpScales.size(); ++i) {
934  // *m_env.subDisplayFile() << " " << tmpScales[i];
935  // }
936  // *m_env.subDisplayFile() << std::endl;
937  //}
938  }
939 
940  if (m_ov.m_drMaxNumExtraStages > 0) {
941  double scale = 1.0;
942  unsigned int tmpSize = tmpScales.size();
943 
946  for (unsigned int i = 0; i < m_ov.m_drMaxNumExtraStages; ++i) {
947  if (i < tmpSize) scale = tmpScales[i];
948  m_ov.m_drScalesForExtraStages[i] = scale;
949  }
950  //updateTK();
951  }
952 
954  m_ov.m_drDuringAmNonAdaptiveInt = ((const po::variable_value&) m_env.allOptionsMap()[m_option_dr_duringAmNonAdaptiveInt]).as<bool>();
955  }
956 
958  m_ov.m_amKeepInitialMatrix = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_keepInitialMatrix]).as<bool>();
959  }
960 
962  m_ov.m_amInitialNonAdaptInterval = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_initialNonAdaptInterval]).as<unsigned int>();
963  }
964 
966  m_ov.m_amAdaptInterval = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_adaptInterval]).as<unsigned int>();
967  }
968 
971  }
972 
975  }
976 
979  }
980 
983  }
984 
987  }
990  std::vector<double> tmpAllow(0,0.);
991  std::string inputString = m_env.allOptionsMap()[m_option_am_adaptedMatrices_dataOutputAllowedSet].as<std::string>();
992  MiscReadDoublesFromString(inputString,tmpAllow);
993 
994  if (tmpAllow.size() > 0) {
995  for (unsigned int i = 0; i < tmpAllow.size(); ++i) {
996  m_ov.m_amAdaptedMatricesDataOutputAllowedSet.insert((unsigned int) tmpAllow[i]);
997  }
998  }
999  }
1000 
1001  if (m_env.allOptionsMap().count(m_option_am_eta)) {
1002  m_ov.m_amEta = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_eta]).as<double>();
1003  }
1004 
1005  if (m_env.allOptionsMap().count(m_option_am_epsilon)) {
1006  m_ov.m_amEpsilon = ((const po::variable_value&) m_env.allOptionsMap()[m_option_am_epsilon]).as<double>();
1007  }
1008 
1010  m_ov.m_enableBrooksGelmanConvMonitor = ((const po::variable_value&) m_env.allOptionsMap()[m_option_enableBrooksGelmanConvMonitor]).as<unsigned int>();
1011  }
1012 
1014  m_ov.m_BrooksGelmanLag = ((const po::variable_value&) m_env.allOptionsMap()[m_option_BrooksGelmanLag]).as<unsigned int>();
1015  }
1016 
1018  m_ov.m_outputLogLikelihood = ((const po::variable_value&) m_env.allOptionsMap()[m_option_outputLogLikelihood]).as<bool>();
1019  }
1020 
1022  m_ov.m_outputLogTarget = ((const po::variable_value&) m_env.allOptionsMap()[m_option_outputLogTarget]).as<bool>();
1023  }
1024 
1026  m_ov.m_doLogitTransform = ((const po::variable_value&) m_env.allOptionsMap()[m_option_doLogitTransform]).as<bool>();
1027  }
1028 }
1029 
1030 // --------------------------------------------------
1031 // Operator declared outside class definition ------
1032 // --------------------------------------------------
1033 
1034 std::ostream& operator<<(std::ostream& os, const MetropolisHastingsSGOptions& obj)
1035 {
1036  obj.print(os);
1037 
1038  return os;
1039 }
1040 
1041 } // End namespace QUESO
bool m_totallyMute
Whether or not to be totally mute (no printout message).
#define UQ_MH_SG_FILTERED_CHAIN_LAG_ODV
int subRank() const
Access function for sub-rank.
Definition: Environment.C:263
#define UQ_MH_SG_RAW_CHAIN_SIZE_ODV
std::string m_option_am_eta
See MhOptionsValues::m_amEta.
#define UQ_MH_SG_RAW_CHAIN_DATA_INPUT_FILE_TYPE_ODV
MhOptionsValues & operator=(const MhOptionsValues &rhs)
Assignment operator; it copies rhs to this.
bool m_tkUseLocalHessian
Whether or not &#39;proposal&#39; uses local Hessian.
#define UQ_MH_SG_DATA_OUTPUT_FILE_NAME_ODV
#define UQ_MH_SG_OUTPUT_LOG_LIKELIHOOD
void defineMyOptions(po::options_description &optionsDesc) const
Defines the options for the Metropolis-Hastings generator of samples as the default options...
std::string m_initialProposalCovMatrixDataInputFileName
Name of input file for initial proposal covariance matrix.
bool m_filteredChainDataOutputAllowAll
Whether or not subEnvs will write to output file for filtered chain.
This class reads the options for the Metropolis-Hastings generator of samples from an input file...
#define UQ_MH_SG_INITIAL_PROPOSAL_COV_MATRIX_DATA_INPUT_FILE_TYPE_ODV
#define UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_FILE_TYPE_ODV
bool m_rawChainDataOutputAllowAll
Whether or not subEnvs will write to output file for raw chain.
#define UQ_MH_SG_TK_USE_LOCAL_HESSIAN_ODV
int inter0Rank() const
Returns the process inter0 rank.
Definition: Environment.C:289
unsigned int m_rawChainDataOutputPeriod
Period of message display during raw chain generation.
#define UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_PERIOD_ODV
int worldRank() const
Returns the process world rank.
Definition: Environment.C:235
std::string m_rawChainDataInputFileType
Type of input file for raw chain.
#define UQ_MH_SG_PUT_OUT_OF_BOUNDS_IN_CHAIN_ODV
bool m_doLogitTransform
Flag for deciding whether or not to do logit transform of bounded domains.
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
Definition: Environment.C:305
std::set< unsigned int > m_filteredChainDataOutputAllowedSet
subEnvs that will write to output file for filtered chain.
MhOptionsValues()
Default constructor.
bool m_rawChainGenerateExtra
Generate extra information about raw chain.
void getMyOptionValues(po::options_description &optionsDesc)
Gets the sequence options defined to the Metropolis-Hastings algorithm.
std::string m_filteredChainDataOutputFileName
Name of output file for filtered chain.
bool m_outputLogTarget
Flag for deciding whether or not to dump log target values in output.
std::set< unsigned int > m_dataOutputAllowedSet
#define UQ_MH_SG_OUTPUT_LOG_TARGET
unsigned int m_rawChainDisplayPeriod
Period of message display during raw chain generation.
#define UQ_MH_SG_DATA_OUTPUT_ALLOWED_SET_ODV
po::variables_map & allOptionsMap() const
Definition: Environment.C:368
std::string m_rawChainDataOutputFileType
Type of output file for raw chain.
std::string m_filteredChainDataOutputFileType
Type of output file for filtered chain.
std::string m_amAdaptedMatricesDataOutputFileName
Name of output file for &#39;am&#39; adapted matrices.
bool m_filteredChainGenerate
Whether or not to generate filtered chain.
#define UQ_MH_SG_DISPLAY_CANDIDATES_ODV
double m_amEta
Proposal covariance scaling factor, usually 2.4 * 2.4 / d.
std::set< unsigned int > m_filteredChainDataOutputAllowedSet
void scanOptionsValues()
It scans the option values from the options input file.
#define UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_ALLOWED_SET_ODV
This (virtual) class sets up the environment underlying the use of the QUESO library by an executable...
Definition: Environment.h:187
#define UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_ALLOWED_SET_ODV
#define UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_FILE_NAME_ODV
void print(std::ostream &os) const
It prints the option values.
#define UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_ALLOW_ALL_ODV
std::ostream & operator<<(std::ostream &os, const BaseEnvironment &obj)
#define UQ_MH_SG_LIST_OF_DISABLED_PARAMETERS_ODV
std::string m_initialPositionDataInputFileType
Type of input file for initial position.
bool m_amKeepInitialMatrix
Whether or not &#39;am&#39; will keep initial (given) matrix.
double m_amEpsilon
Regularisation parameter for the DRAM covariance matrix.
#define UQ_MH_SG_DR_MAX_NUM_EXTRA_STAGES_ODV
#define UQ_MH_SG_AM_ADAPT_INTERVAL_ODV
#define UQ_MH_SG_TK_USE_NEWTON_COMPONENT_ODV
#define UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_FILE_TYPE_ODV
#define UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_ALLOW_ALL_ODV
unsigned int m_rawChainSize
Size of raw chain.
void MiscReadDoublesFromString(const std::string &inputString, std::vector< double > &outputDoubles)
Definition: Miscellaneous.C:39
bool m_amAdaptedMatricesDataOutputAllowAll
Whether or not subEnvs will write to output file for &#39;am&#39; adapted matrices.
MetropolisHastingsSGOptions(const BaseEnvironment &env, const char *prefix)
Constructor: reads options from the input file.
#define UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_FILE_NAME_ODV
#define UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_ALLOWED_SET_ODV
#define UQ_MH_SG_DR_DURING_AM_NON_ADAPTIVE_INT_ODV
std::string optionsInputFileName() const
Access to the attribute m_optionsInputFileName, which stores the name of the input file passed by the...
Definition: Environment.C:341
void copy(const MhOptionsValues &src)
Copies the option values from src to this.
#define UQ_MH_SG_RAW_CHAIN_DISPLAY_PERIOD_ODV
std::string m_option_am_epsilon
See MhOptionsValues::m_amEpsilon.
unsigned int m_filteredChainLag
Spacing for chain filtering.
#define UQ_MH_SG_AM_INIT_NON_ADAPT_INT_ODV
#define UQ_MH_SG_DO_LOGIT_TRANSFORM
std::vector< double > m_drScalesForExtraStages
std::set< unsigned int > m_parameterDisabledSet
std::string m_rawChainDataInputFileName
Name of input file for raw chain.
#define UQ_MH_SG_INITIAL_PROPOSAL_COV_MATRIX_DATA_INPUT_FILE_NAME_ODV
std::string m_rawChainDataOutputFileName
Name of output file for raw chain.
bool m_outputLogLikelihood
Flag for deciding whether or not to dump log likelihood values in output.
#define UQ_MH_SG_INITIAL_POSITION_DATA_INPUT_FILE_TYPE_ODV
#define UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_ALLOW_ALL_ODV
#define UQ_MH_SG_AM_EPSILON_ODV
bool m_dataOutputAllowAll
subEnvs that will write to generic output file.
#define UQ_MH_SG_BROOKS_GELMAN_LAG
double m_amEta
&#39;am&#39; eta.
int fullRank() const
Returns the process full rank.
Definition: Environment.C:241
double m_amEpsilon
&#39;am&#39; epsilon.
#define UQ_MH_SG_FILTERED_CHAIN_DATA_OUTPUT_FILE_NAME_ODV
unsigned int m_drMaxNumExtraStages
&#39;dr&#39; maximum number of extra stages.
std::string m_dataOutputFileName
Name of generic output file.
std::set< unsigned int > m_amAdaptedMatricesDataOutputAllowedSet
std::set< unsigned int > m_dataOutputAllowedSet
subEnvs that will write to generic output file.
#define UQ_MH_SG_RAW_CHAIN_MEASURE_RUN_TIMES_ODV
#define UQ_MH_SG_INITIAL_POSITION_DATA_INPUT_FILE_NAME_ODV
#define UQ_MH_SG_AM_KEEP_INITIAL_MATRIX_ODV
#define UQ_MH_SG_TOTALLY_MUTE_ODV
std::string m_initialProposalCovMatrixDataInputFileType
Type of input file for initial proposal covariance matrix.
std::set< unsigned int > m_rawChainDataOutputAllowedSet
subEnvs that will write to output file for raw chain.
std::set< unsigned int > m_parameterDisabledSet
std::string m_initialProposalCovMatrixDataInputFileName
#define UQ_MH_SG_DR_LIST_OF_SCALES_FOR_EXTRA_STAGES_ODV
#define UQ_MH_SG_FILTERED_CHAIN_GENERATE_ODV
#define UQ_MH_SG_RAW_CHAIN_GENERATE_EXTRA_ODV
unsigned int m_amAdaptInterval
&#39;am&#39; adaptation interval.
std::set< unsigned int > m_amAdaptedMatricesDataOutputAllowedSet
subEnvs that will write to output file for &#39;am&#39; adapted matrices.
#define UQ_MH_SG_RAW_CHAIN_DATA_OUTPUT_PERIOD_ODV
std::set< unsigned int > m_rawChainDataOutputAllowedSet
bool m_putOutOfBoundsInChain
Put &#39;out of bound&#39; candidates in chain as well.
#define UQ_FATAL_TEST_MACRO(test, givenRank, where, what)
Definition: Defines.h:223
#define UQ_MH_SG_ENABLE_BROOKS_GELMAN_CONV_MONITOR
#define UQ_MH_SG_AM_ETA_ODV
double m_filteredChainDiscardedPortion
Initial discarded portion for chain filtering.
unsigned int m_amAdaptedMatricesDataOutputPeriod
Period for outputing &#39;am&#39; adapted matrices.
std::vector< double > m_drScalesForExtraStages
&#39;dr&#39; list of scales for proposal covariance matrices from 2nd stage on.
std::string m_initialPositionDataInputFileName
Name of input file for initial position.
std::string m_initialProposalCovMatrixDataInputFileType
unsigned int subId() const
Access function to the number of each sub-environment Id: m_subId.
Definition: Environment.C:329
std::string m_amAdaptedMatricesDataOutputFileType
Type of output file for &#39;am&#39; adapted matrices.
This class provides options for the Metropolis-Hastings generator of samples if no input file is avai...
#define UQ_MH_SG_AM_ADAPTED_MATRICES_DATA_OUTPUT_FILE_TYPE_ODV
bool m_tkUseNewtonComponent
Whether or not &#39;proposal&#39; uses Newton component.
bool m_rawChainMeasureRunTimes
Whether or not to measure run times.
bool m_displayCandidates
Display candidates generated in the core MH algorithm.
#define UQ_MH_SG_RAW_CHAIN_DATA_INPUT_FILE_NAME_ODV
MhOptionsValues m_ov
This class is where the actual options are stored.
unsigned int m_amInitialNonAdaptInterval
&#39;am&#39; initial non adaptation interval
This class provides options for each level of the Multilevel sequence generator if no input file is a...
void scanInputFileForMyOptions(const po::options_description &optionsDesc) const
This method scans the input file provided by the user to QUESO.
Definition: Environment.C:378
bool m_drDuringAmNonAdaptiveInt
Whether or not &#39;dr&#39; is used during &#39;am&#39; non adaptive interval.
#define UQ_MH_SG_FILTERED_CHAIN_DISCARDED_PORTION_ODV
bool m_doLogitTransform
Whether or not a logit transform will be done for bounded domains.
#define UQ_MH_SG_DATA_OUTPUT_ALLOW_ALL_ODV

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