queso-0.53.0
InfiniteDimensionalMCMCSamplerOptions.C
Go to the documentation of this file.
1 //--------------------------------------------------------------------------
2 //
3 // QUESO - a library to support the Quantification of Uncertainty
4 // for Estimation, Simulation and Optimization
5 //
6 // Copyright (C) 2008,2009,2010,2011,2012,2013 The PECOS Development Team
7 //
8 // This library is free software; you can redistribute it and/or
9 // modify it under the terms of the Version 2.1 GNU Lesser General
10 // Public License as published by the Free Software Foundation.
11 //
12 // This library is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 // Lesser General Public License for more details.
16 //
17 // You should have received a copy of the GNU Lesser General Public
18 // License along with this library; if not, write to the Free Software
19 // Foundation, Inc. 51 Franklin Street, Fifth Floor,
20 // Boston, MA 02110-1301 USA
21 //
22 //-----------------------------------------------------------------------el-
23 
24 #include <boost/program_options.hpp>
25 
26 #include <queso/InfiniteDimensionalMCMCSamplerOptions.h>
27 
28 // ODV = option default value
29 #define UQ_INF_DATA_OUTPUT_DIR_NAME_ODV "chain"
30 #define UQ_INF_DATA_OUTPUT_FILE_NAME_ODV "out.h5"
31 #define UQ_INF_NUM_ITERS_ODV 1000
32 #define UQ_INF_SAVE_FREQ_ODV 1
33 #define UQ_INF_RWMH_STEP_ODV 1e-2
34 
35 namespace QUESO {
36 
38  const BaseEnvironment& env,
39  const char * prefix)
40  : m_prefix((std::string)(prefix) + "infmcmc_"),
41  m_dataOutputDirName(UQ_INF_DATA_OUTPUT_DIR_NAME_ODV),
42  m_dataOutputFileName(UQ_INF_DATA_OUTPUT_FILE_NAME_ODV),
43  m_num_iters(UQ_INF_NUM_ITERS_ODV),
44  m_save_freq(UQ_INF_SAVE_FREQ_ODV),
45  m_rwmh_step(UQ_INF_RWMH_STEP_ODV),
46  m_parser(new BoostInputOptionsParser(env.optionsInputFileName())),
47  m_env(env),
48  m_option_help(m_prefix + "help"),
49  m_option_dataOutputDirName(m_prefix + "dataOutputDirName"),
50  m_option_dataOutputFileName(m_prefix + "dataOutputFileName"),
51  m_option_num_iters(m_prefix + "num_iters"),
52  m_option_save_freq(m_prefix + "save_freq"),
53  m_option_rwmh_step(m_prefix + "rwmh_step")
54 {
55  queso_require_not_equal_to_msg(m_env.optionsInputFileName(), "", "this constructor is incompatible with the abscense of an options input file");
56 
57  m_parser->registerOption(m_option_help, "produce help message for infinite dimensional sampler");
58  m_parser->registerOption<std::string>(m_option_dataOutputDirName, UQ_INF_DATA_OUTPUT_DIR_NAME_ODV, "name of data output dir");
59  m_parser->registerOption<std::string>(m_option_dataOutputFileName, UQ_INF_DATA_OUTPUT_FILE_NAME_ODV, "name of data output file (HDF5)");
60  m_parser->registerOption<unsigned int>(m_option_num_iters, UQ_INF_NUM_ITERS_ODV, "number of mcmc iterations to do");
61  m_parser->registerOption<unsigned int>(m_option_save_freq, UQ_INF_SAVE_FREQ_ODV, "the frequency at which to save the chain state");
62  m_parser->registerOption<double >(m_option_rwmh_step, UQ_INF_RWMH_STEP_ODV, "the step-size in the random-walk Metropolis proposal");;
63 
65 
71 
72  checkOptions();
73 }
74 
75 void
77 {
78  queso_require_equal_to_msg(m_num_iters % m_save_freq, 0, "save frequency must divide number of iterations");
79  queso_require_greater_msg(m_rwmh_step, 0, "random-walk Metropolis step size must be positive");
80 }
81 
83 {
84 }
85 
86 void InfiniteDimensionalMCMCSamplerOptions::print(std::ostream & os) const
87 {
88  os << "\n" << this->m_option_dataOutputDirName << " = " << this->m_dataOutputDirName;
89  os << "\n" << this->m_option_dataOutputFileName << " = " << this->m_dataOutputFileName;
90  os << "\n" << this->m_option_num_iters << " = " << this->m_num_iters;
91  os << "\n" << this->m_option_save_freq << " = " << this->m_save_freq;
92  os << "\n" << this->m_option_rwmh_step << " = " << this->m_rwmh_step;
93  os << std::endl;
94  return;
95 }
96 
97 std::ostream & operator<<(std::ostream & os,
99 {
100  os << (*(obj.m_parser)) << std::endl;
101  obj.print(os);
102  return os;
103 }
104 
105 const BaseEnvironment&
107 {
108  return this->m_env;
109 }
110 
111 } // End namespace QUESO
#define UQ_INF_DATA_OUTPUT_DIR_NAME_ODV
#define queso_require_not_equal_to_msg(expr1, expr2, msg)
Definition: asserts.h:86
#define UQ_INF_DATA_OUTPUT_FILE_NAME_ODV
std::string m_dataOutputDirName
Name of the output dir to save infinite dimensional output files to.
std::ostream & operator<<(std::ostream &os, const BaseEnvironment &obj)
std::string m_dataOutputFileName
Name of the HDF5 output file to store chain statistics.
#define queso_require_equal_to_msg(expr1, expr2, msg)
Definition: asserts.h:85
const BaseEnvironment & env() const
Returns the QUESO environment.
std::string optionsInputFileName() const
Access to the attribute m_optionsInputFileName, which stores the name of the input file passed by the...
Definition: Environment.C:307
void scanInputFile()
This is the method that parses the input file.
This (virtual) class sets up the environment underlying the use of the QUESO library by an executable...
Definition: Environment.h:193
void registerOption(std::string name, T defaultValue, std::string description)
Call this to register an option with the parser.
unsigned int m_save_freq
The frequency at which to save the state of the chain.
This class defines the options that specify the behaviour of the MCMC sampler.
void print(std::ostream &os) const
Prints this to os.
InfiniteDimensionalMCMCSamplerOptions(const BaseEnvironment &env, const char *prefix)
Given prefix, read the input file for parameters named prefix_*.
#define queso_require_greater_msg(expr1, expr2, msg)
Definition: asserts.h:88
void getOption(std::string &name, T &value)
Get option name from the parser and set value to the parsed value.
unsigned int m_num_iters
The total number of iterations to do.

Generated on Thu Jun 11 2015 13:52:31 for queso-0.53.0 by  doxygen 1.8.5