queso-0.57.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
MLSamplingOptions.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-2017 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/config_queso.h>
26 #include <queso/MLSamplingOptions.h>
27 #include <queso/Miscellaneous.h>
28 
29 namespace QUESO {
30 
32  :
33  m_prefix ((std::string)(prefix) + "ml_" ),
34  m_help (UQ_ML_SAMPLING_HELP),
35 #ifdef ML_CODE_HAS_NEW_RESTART_CAPABILITY
36  m_restartOutput_levelPeriod (UQ_ML_SAMPLING_RESTART_OUTPUT_LEVEL_PERIOD_ODV ),
37  m_restartOutput_baseNameForFiles (UQ_ML_SAMPLING_RESTART_OUTPUT_BASE_NAME_FOR_FILES_ODV),
38  m_restartOutput_fileType (UQ_ML_SAMPLING_RESTART_OUTPUT_FILE_TYPE_ODV ),
39  m_restartInput_baseNameForFiles (UQ_ML_SAMPLING_RESTART_INPUT_BASE_NAME_FOR_FILES_ODV ),
40  m_restartInput_fileType (UQ_ML_SAMPLING_RESTART_INPUT_FILE_TYPE_ODV ),
41 #else
42  m_restartInputFileName (UQ_ML_SAMPLING_RESTART_INPUT_FILE_NAME_ODV),
43  m_restartInputFileType (UQ_ML_SAMPLING_RESTART_INPUT_FILE_TYPE_ODV),
44  m_restartChainSize (UQ_ML_SAMPLING_RESTART_CHAIN_SIZE_ODV ),
45 #endif
46  m_dataOutputFileName (UQ_ML_SAMPLING_DATA_OUTPUT_FILE_NAME_ODV ),
47  //m_dataOutputAllowedSet (),
48  m_env (env),
49 #ifndef QUESO_DISABLE_BOOST_PROGRAM_OPTIONS
50  m_parser(new BoostInputOptionsParser(env.optionsInputFileName())),
51 #endif // QUESO_DISABLE_BOOST_PROGRAM_OPTIONS
52  m_option_help (m_prefix + "help" ),
53 #ifdef ML_CODE_HAS_NEW_RESTART_CAPABILITY
54  m_option_restartOutput_levelPeriod (m_prefix + "restartOutput_levelPeriod" ),
55  m_option_restartOutput_baseNameForFiles(m_prefix + "restartOutput_baseNameForFiles"),
56  m_option_restartOutput_fileType (m_prefix + "restartOutput_fileType" ),
57  m_option_restartInput_baseNameForFiles (m_prefix + "restartInput_baseNameForFiles" ),
58  m_option_restartInput_fileType (m_prefix + "restartInput_fileType" ),
59 #else
60  m_option_restartInputFileName (m_prefix + "restartInputFileName"),
61  m_option_restartInputFileType (m_prefix + "restartInputFileType"),
62  m_option_restartChainSize (m_prefix + "restartChainSize" ),
63 #endif
64  m_option_dataOutputFileName (m_prefix + "dataOutputFileName" ),
65  m_option_dataOutputAllowedSet (m_prefix + "dataOutputAllowedSet")
66 {
67 #ifndef QUESO_DISABLE_BOOST_PROGRAM_OPTIONS
68  m_parser->registerOption<std::string >(m_option_help, UQ_ML_SAMPLING_HELP, "produce help msg for ML sampling options" );
69 #ifdef ML_CODE_HAS_NEW_RESTART_CAPABILITY
70  m_parser->registerOption<unsigned int>(m_option_restartOutput_levelPeriod, UQ_ML_SAMPLING_RESTART_OUTPUT_LEVEL_PERIOD_ODV, "restartOutput_levelPeriod" );
71  m_parser->registerOption<std::string >(m_option_restartOutput_baseNameForFiles, UQ_ML_SAMPLING_RESTART_OUTPUT_BASE_NAME_FOR_FILES_ODV, "restartOutput_baseNameForFiles" );
72  m_parser->registerOption<std::string >(m_option_restartOutput_fileType, UQ_ML_SAMPLING_RESTART_OUTPUT_FILE_TYPE_ODV, "restartOutput_fileType" );
73  m_parser->registerOption<std::string >(m_option_restartInput_baseNameForFiles, UQ_ML_SAMPLING_RESTART_INPUT_BASE_NAME_FOR_FILES_ODV, "restartInput_baseNameForFiles" );
74  m_parser->registerOption<std::string >(m_option_restartInput_fileType, UQ_ML_SAMPLING_RESTART_INPUT_FILE_TYPE_ODV, "restartInput_fileType" );
75 #else
76  m_parser->registerOption<std::string >(m_option_restartInputFileName, UQ_ML_SAMPLING_RESTART_INPUT_FILE_NAME_ODV, "name of restart input file" );
77  m_parser->registerOption<std::string >(m_option_restartInputFileType, UQ_ML_SAMPLING_RESTART_INPUT_FILE_TYPE_ODV, "type of restart input file" );
78  m_parser->registerOption<unsigned int>(m_option_restartChainSize, UQ_ML_SAMPLING_RESTART_CHAIN_SIZE_ODV, "size of restart chain" );
79 #endif
80  m_parser->registerOption<std::string >(m_option_dataOutputFileName, UQ_ML_SAMPLING_DATA_OUTPUT_FILE_NAME_ODV , "name of generic output file" );
81  m_parser->registerOption<std::string >(m_option_dataOutputAllowedSet, UQ_ML_SAMPLING_DATA_OUTPUT_ALLOWED_SET_ODV, "subEnvs that will write to generic output file");
82 
84 
85  m_parser->getOption<std::string >(m_option_help, m_help);
86 #ifdef ML_CODE_HAS_NEW_RESTART_CAPABILITY
92 #else
96 #endif
99 #else
100  m_help = m_env.input()(m_option_help, UQ_ML_SAMPLING_HELP);
101 #ifdef ML_CODE_HAS_NEW_RESTART_CAPABILITY
102  m_restartOutput_levelPeriod = m_env.input()(m_option_restartOutput_levelPeriod, UQ_ML_SAMPLING_RESTART_OUTPUT_LEVEL_PERIOD_ODV);
103  m_restartOutput_baseNameForFiles = m_env.input()(m_option_restartOutput_baseNameForFiles, UQ_ML_SAMPLING_RESTART_OUTPUT_BASE_NAME_FOR_FILES_ODV);
104  m_restartOutput_fileType = m_env.input()(m_option_restartOutput_fileType, UQ_ML_SAMPLING_RESTART_OUTPUT_FILE_TYPE_ODV);
105  m_restartInput_baseNameForFiles = m_env.input()(m_option_restartInput_baseNameForFiles, UQ_ML_SAMPLING_RESTART_INPUT_BASE_NAME_FOR_FILES_ODV);
106  m_restartInput_fileType = m_env.input()(m_option_restartInput_fileType, UQ_ML_SAMPLING_RESTART_INPUT_FILE_TYPE_ODV);
107 #else
108  m_restartInputFileName = m_env.input()(m_option_restartInputFileName, UQ_ML_SAMPLING_RESTART_INPUT_FILE_NAME_ODV);
109  m_restartInputFileType = m_env.input()(m_option_restartInputFileType, UQ_ML_SAMPLING_RESTART_INPUT_FILE_TYPE_ODV);
110  m_restartChainSize = m_env.input()(m_option_restartChainSize, UQ_ML_SAMPLING_RESTART_CHAIN_SIZE_ODV);
111 #endif
112  m_dataOutputFileName = m_env.input()(m_option_dataOutputFileName, UQ_ML_SAMPLING_DATA_OUTPUT_FILE_NAME_ODV );
113 
114  // UQ_ML_SAMPLING_DATA_OUTPUT_ALLOWED_SET_ODV is the empty set (string) by
115  // default
116  unsigned int size = m_env.input().vector_variable_size(m_option_dataOutputAllowedSet);
117  for (unsigned int i = 0; i < size; i++) {
118  // We default to empty set, so the default values are actually never used
119  // here
120  unsigned int allowed = m_env.input()(m_option_dataOutputAllowedSet, i, i);
121  m_dataOutputAllowedSet.insert(allowed);
122  }
123 
124 #endif // QUESO_DISABLE_BOOST_PROGRAM_OPTIONS
125 
126  checkOptions(&env);
127 }
128 
130 {
131 }
132 
133 void
135 {
136  // DM: I'm printing here because I'm not sure where this object is created
137  // in the statistical inverse problem
138  if (m_help != "") {
139  if (env->subDisplayFile()) {
140  *(env->subDisplayFile()) << (*this) << std::endl;
141  }
142  }
143 
144 #ifdef ML_CODE_HAS_NEW_RESTART_CAPABILITY
145  if ((m_restartOutput_levelPeriod > 0)) queso_require_not_equal_to_msg(m_restartOutput_baseNameForFiles, std::string("."), std::string("Option 'restartOutput_levelPeriod' is > 0, but 'restartOutput_baseNameForFiles' is not specified..."));
146 #endif
147 }
148 
149 void
150 MLSamplingOptions::print(std::ostream& os) const
151 {
152 #ifdef ML_CODE_HAS_NEW_RESTART_CAPABILITY
158 #else
161  << "\n" << m_option_restartChainSize << " = " << m_restartChainSize
162 #endif
164  << "\n" << m_option_dataOutputAllowedSet << " = ";
165  for (std::set<unsigned int>::iterator setIt = m_dataOutputAllowedSet.begin(); setIt != m_dataOutputAllowedSet.end(); ++setIt) {
166  os << *setIt << " ";
167  }
168  os << "\n";
169 
170  return;
171 }
172 
173 std::ostream& operator<<(std::ostream& os, const MLSamplingOptions& obj)
174 {
175 #ifndef QUESO_DISABLE_BOOST_PROGRAM_OPTIONS
176  os << (*(obj.m_parser)) << std::endl;
177 #endif // QUESO_DISABLE_BOOST_PROGRAM_OPTIONS
178 
179  obj.print(os);
180  return os;
181 }
182 
183 } // End namespace QUESO
std::set< unsigned int > m_dataOutputAllowedSet
virtual ~MLSamplingOptions()
Destructor.
std::string m_option_restartInput_baseNameForFiles
This (virtual) class sets up the environment underlying the use of the QUESO library by an executable...
Definition: Environment.h:198
void getOption(const std::string &name, T &value) const
Get option name from the parser and set value to the parsed value.
const BaseEnvironment & m_env
std::ostream & operator<<(std::ostream &os, const SequenceStatisticalOptions &obj)
const GetPot & input() const
The GetPot input file parser.
Definition: Environment.C:1149
MonteCarloSGOptions::MonteCarloSGOptions(const BaseEnvironment &env, const char *prefix queso_require_not_equal_to_msg)(m_env.optionsInputFileName(), std::string(""), std::string("this constructor is incompatible with the absence of an options input file"))
std::string m_option_restartOutput_baseNameForFiles
This class provides options for the Multilevel sequence generator if no input file is available...
void registerOption(const std::string &name, const T &defaultValue, const std::string &description)
Call this to register an option with the parser.
void print(std::ostream &os) const
It prints the option values.
std::string m_restartInput_fileType
Type of restart input file.
std::string m_restartInput_baseNameForFiles
Base name of restart input file.
std::string m_option_restartInputFileName
void scanInputFile()
This is the method that parses the input file.
void checkOptions(const BaseEnvironment *env)
std::string m_restartInputFileName
Name of restart input file.
std::string m_option_dataOutputFileName
unsigned int m_restartOutput_levelPeriod
Period of restart output file (level).
MLSamplingOptions(const BaseEnvironment &env, const char *prefix)
Default constructor.
unsigned int m_restartChainSize
Size of restart chain.
std::string m_restartOutput_baseNameForFiles
Base name of restart output file.
std::string m_option_dataOutputAllowedSet
std::string m_dataOutputFileName
Name of generic output file.
std::string m_option_restartInputFileType
std::string m_restartInputFileType
Type of restart input file.
std::string m_restartOutput_fileType
Type of restart output file.
BoostInputOptionsParser * m_parser
std::string m_option_restartOutput_levelPeriod
std::string m_option_restartInput_fileType
std::string m_help
If non-empty string, options and values are printed to the output file.
std::string m_option_restartOutput_fileType
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
Definition: Environment.C:320

Generated on Tue Jun 5 2018 19:48:56 for queso-0.57.1 by  doxygen 1.8.5