25 #include <queso/Defines.h>
27 #ifdef QUESO_HAVE_HDF5
29 #ifndef QUESO_INFINITE_SAMPLER_H
30 #define QUESO_INFINITE_SAMPLER_H
33 #include <queso/SharedPtr.h>
34 #include <queso/Environment.h>
35 #include <queso/InfiniteDimensionalMeasureBase.h>
36 #include <queso/InfiniteDimensionalLikelihoodBase.h>
37 #include <queso/InfiniteDimensionalMCMCSamplerOptions.h>
40 #include <gsl/gsl_rng.h>
54 class InfiniteDimensionalMCMCSampler
58 InfiniteDimensionalMCMCSampler(
59 const BaseEnvironment& env,
60 InfiniteDimensionalMeasureBase & prior,
61 InfiniteDimensionalLikelihoodBase & llhd,
62 InfiniteDimensionalMCMCSamplerOptions * ov);
65 ~InfiniteDimensionalMCMCSampler();
71 double llhd_val()
const;
77 double avg_acc_prob();
80 unsigned int iteration()
const;
83 SharedPtr<InfiniteDimensionalMCMCSampler>::Type clone_and_reset()
const;
87 unsigned int _iteration;
99 InfiniteDimensionalMeasureBase & prior;
103 InfiniteDimensionalLikelihoodBase & llhd;
106 InfiniteDimensionalMCMCSamplerOptions * m_ov;
109 const BaseEnvironment& m_env;
112 SharedPtr<FunctionBase>::Type current_physical_state;
115 SharedPtr<FunctionBase>::Type proposed_physical_state;
118 SharedPtr<FunctionBase>::Type current_physical_mean;
121 SharedPtr<FunctionBase>::Type current_physical_var;
124 SharedPtr<FunctionBase>::Type _delta;
127 SharedPtr<FunctionBase>::Type _M2;
139 hid_t _neg_log_llhd_dset;
140 hid_t _L2_norm_samples_dset;
141 hid_t _L2_norm_mean_dset;
142 hid_t _L2_norm_var_dset;
150 void _metropolis_hastings();
153 void _update_moments();
159 hid_t _create_scalar_dataset(
const std::string & name);
162 void _append_scalar_dataset(hid_t dset,
double data);
167 #endif // QUESO_INFINITE_SAMPLER_H
169 #endif // QUESO_HAVE_HDF5