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   typename 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   typename SharedPtr<FunctionBase>::Type current_physical_state;
 
  115   typename SharedPtr<FunctionBase>::Type proposed_physical_state;
 
  118   typename SharedPtr<FunctionBase>::Type current_physical_mean;
 
  121   typename SharedPtr<FunctionBase>::Type current_physical_var;
 
  124   typename SharedPtr<FunctionBase>::Type _delta;
 
  127   typename 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