queso-0.57.0
Private Attributes | List of all members
QUESO::StatisticalInverseProblem< P_V, P_M > Class Template Reference

This templated class represents a Statistical Inverse Problem. More...

#include <StatisticalInverseProblem.h>

Collaboration diagram for QUESO::StatisticalInverseProblem< P_V, P_M >:
Collaboration graph
[legend]

Public Member Functions

Constructor/Destructor methods
 StatisticalInverseProblem (const char *prefix, const SipOptionsValues *alternativeOptionsValues, const BaseVectorRV< P_V, P_M > &priorRv, const BaseScalarFunction< P_V, P_M > &likelihoodFunction, GenericVectorRV< P_V, P_M > &postRv)
 Constructor. More...
 
 StatisticalInverseProblem (const char *prefix, const SipOptionsValues *alternativeOptionsValues, const GPMSAFactory< P_V, P_M > &gpmsaFactory, GenericVectorRV< P_V, P_M > &postRv)
 Constructor for statistical inverse problems to be sovled using GPMSA. More...
 
 ~StatisticalInverseProblem ()
 Destructor. More...
 
Statistical methods
bool computeSolutionFlag () const
 Whether or not compute the solution. More...
 
void solveWithBayesMetropolisHastings (const MhOptionsValues *alternativeOptionsValues, const P_V &initialValues, const P_M *initialProposalCovMatrix)
 Solves the problem via Bayes formula and a Metropolis-Hastings algorithm. More...
 
void solveWithBayesMetropolisHastings (const MhOptionsValues *alternativeOptionsValues, const P_V &initialValues)
 Solves the problem via Bayes formula and a Metropolis-Hastings algorithm. More...
 
void solveWithBayesMetropolisHastings (const MhOptionsValues *alternativeOptionsValues)
 Solves the problem via Bayes formula and a Metropolis-Hastings algorithm. More...
 
void solveWithBayesMetropolisHastings ()
 Solves the problem via Bayes formula and a Metropolis-Hastings algorithm. More...
 
void seedWithMAPEstimator ()
 Seeds the chain with the result of a deterministic optimisation. More...
 
void solveWithBayesMLSampling ()
 Solves with Bayes Multi-Level (ML) sampling. More...
 
const MetropolisHastingsSG
< P_V, P_M > & 
sequenceGenerator () const
 Return the underlying MetropolisHastingSG object. More...
 
const BaseVectorRV< P_V, P_M > & priorRv () const
 Returns the Prior RV; access to private attribute m_priorRv. More...
 
const GenericVectorRV< P_V, P_M > & postRv () const
 Returns the Posterior RV; access to private attribute m_postrRv. More...
 
const BaseVectorSequence< P_V,
P_M > & 
chain () const
 Returns the MCMC chain; access to private attribute m_chain. More...
 
const ScalarSequence< double > & logLikelihoodValues () const
 Returns log likelihood values; access to private attribute m_logLikelihoodValues. More...
 
const ScalarSequence< double > & logTargetValues () const
 Returns log target values; access to private attribute m_logTargetValues. More...
 
double logEvidence () const
 Returns the logarithm value of the evidence. Related to ML. More...
 
double meanLogLikelihood () const
 Returns the mean of the logarithm value of the likelihood. Related to ML. More...
 
double eig () const
 

Private Attributes

const BaseEnvironmentm_env
 
const BaseVectorRV< P_V, P_M > & m_priorRv
 
const BaseScalarFunction< P_V,
P_M > & 
m_likelihoodFunction
 
GenericVectorRV< P_V, P_M > & m_postRv
 
ScopedPtr< VectorSet< P_V, P_M >
>::Type 
m_solutionDomain
 
ScopedPtr< BaseJointPdf< P_V,
P_M > >::Type 
m_solutionPdf
 
ScopedPtr< BaseVectorMdf< P_V,
P_M > >::Type 
m_subSolutionMdf
 
ScopedPtr< BaseVectorCdf< P_V,
P_M > >::Type 
m_subSolutionCdf
 
ScopedPtr< BaseVectorRealizer
< P_V, P_M > >::Type 
m_solutionRealizer
 
ScopedPtr
< MetropolisHastingsSG< P_V,
P_M > >::Type 
m_mhSeqGenerator
 
ScopedPtr< MLSampling< P_V,
P_M > >::Type 
m_mlSampler
 
ScopedPtr< BaseVectorSequence
< P_V, P_M > >::Type 
m_chain
 
ScopedPtr< ScalarSequence
< double > >::Type 
m_logLikelihoodValues
 
ScopedPtr< ScalarSequence
< double > >::Type 
m_logTargetValues
 
ScopedPtr< const
SipOptionsValues >::Type 
m_optionsObj
 
bool m_seedWithMAPEstimator
 
ScopedPtr< ArrayOfOneDGrids
< P_V, P_M > > 
m_subMdfGrids
 
ScopedPtr< ArrayOfOneDTables
< P_V, P_M > > 
m_subMdfValues
 

I/O methods

void print (std::ostream &os) const
 TODO: Prints the sequence. More...
 
std::ostream & operator<< (std::ostream &os, const StatisticalInverseProblem< P_V, P_M > &obj)
 

Detailed Description

template<class P_V = GslVector, class P_M = GslMatrix>
class QUESO::StatisticalInverseProblem< P_V, P_M >

This templated class represents a Statistical Inverse Problem.

This class is templated on the type 'P_V' of vector and type 'P_M' of matrix, where 'P_' stands for 'parameter'. Some templated classes might also use 'Q_V' and 'Q_M' when referring to a vector type and a matrix type, where 'Q_' stands for 'quantities of interest'. Conceptually, a statistical inverse problem has two input entities and one output entity.
The input entities of a statistical inverse problem are:

  1. the prior RV, an instance of class 'BaseVectorRV<P_V,P_M>', and
  2. the likelihood function, an instance of class 'BaseScalarFunction<P_V,P_M>'.

Let $ \pi()$ denote the mathematical likelihood function and $ x $ denote a vector of parameters. The likelihood function object stores the routine that computes $ \pi(x) $ and whatever data necessary by such routine. The routine in the likelihood function object can compute either the actual value $ \pi(x) $ or the value $ \ln[\pi(x)] $. See files 'basic/inc/ScalarFunction.h' and 'stats/inc/JointPdf.h' for more details.
The output entity of a statistical inverse problem is the posterior RV, another instance of class 'BaseVectorRV<P_V,P_M>', which stores the solution according to the Bayesian approach. Upon return from a solution operation, the posterior RV is available through the operation 'postRv()'. Such posterior RV is able to provide:

  1. a joint pdf (up to a multiplicative constant) through the operation 'postRv().pdf()', which returns an instance of the class 'BaseJointPdf<P_V,P_M>', and
  2. a vector realizer through the operation 'postRv().realizer()', which returns an instance of the class 'BaseVectorRealizer<P_V,P_M>'.

Definition at line 85 of file StatisticalInverseProblem.h.

Constructor & Destructor Documentation

template<class P_V , class P_M >
QUESO::StatisticalInverseProblem< P_V, P_M >::StatisticalInverseProblem ( const char *  prefix,
const SipOptionsValues alternativeOptionsValues,
const BaseVectorRV< P_V, P_M > &  priorRv,
const BaseScalarFunction< P_V, P_M > &  likelihoodFunction,
GenericVectorRV< P_V, P_M > &  postRv 
)

Constructor.

Requirements:

  1. the image set of the vector random variable 'priorRv',
  2. the domain set of the likelihood function 'likelihoodFunction', and
  3. the image set of the vector random variable 'postRv' should belong to vector spaces of equal dimensions.

If alternativeOptionsValues is NULL and an input file is specified, the constructor reads input options that begin with the string '<prefix>ip_'.

If alternativeOptionsValues is not NULL, the input file is ignored and construction copies the object pointed to by alternativeOptionsValues to and stores the copy internally. Users may delete the object poined to by alternativeOptionsValues. Users cannot change the options object after StatisticalInverseProblem has been constructed.

Parameters
prefixThe prefix
alternativeOptionsValuesOptions (if no input file)
priorRvThe prior RV
likelihoodFunctionThe likelihood function
postRvThe posterior RV

Definition at line 37 of file StatisticalInverseProblem.C.

References QUESO::queso_require_equal_to_msg, and QUESO::BaseEnvironment::subDisplayFile().

43  :
44  m_env (priorRv.env()),
45  m_priorRv (priorRv),
46  m_likelihoodFunction (likelihoodFunction),
47  m_postRv (postRv),
49  m_solutionPdf (),
54  m_mlSampler (),
55  m_chain (),
58  m_optionsObj (),
60 {
61 #ifdef QUESO_MEMORY_DEBUGGING
62  std::cout << "Entering Sip" << std::endl;
63 #endif
64  if (m_env.subDisplayFile()) {
65  *m_env.subDisplayFile() << "Entering StatisticalInverseProblem<P_V,P_M>::constructor()"
66  << ": prefix = " << prefix
67  << ", alternativeOptionsValues = " << alternativeOptionsValues
68  << ", m_env.optionsInputFileName() = " << m_env.optionsInputFileName()
69  << std::endl;
70  }
71 
72  // If NULL, we create one
73  if (m_optionsObj == NULL) {
74  m_optionsObj.reset(new SipOptionsValues(&m_env, prefix));
75  }
76  else {
77  // If the user passed in a legitimate options object, then copy it into a
78  // ScopedPtr
79  m_optionsObj.reset(new SipOptionsValues(*alternativeOptionsValues));
80  }
81 
82  if (m_optionsObj->m_help != "") {
83  if (m_env.subDisplayFile()) {
84  *m_env.subDisplayFile() << (*m_optionsObj) << std::endl;
85  }
86  }
87 
88 #ifdef QUESO_MEMORY_DEBUGGING
89  std::cout << "In Sip, finished scanning options" << std::endl;
90 #endif
91 
92  queso_require_equal_to_msg(priorRv.imageSet().vectorSpace().dimLocal(), likelihoodFunction.domainSet().vectorSpace().dimLocal(), "'priorRv' and 'likelihoodFunction' are related to vector spaces of different dimensions");
93 
94  queso_require_equal_to_msg(priorRv.imageSet().vectorSpace().dimLocal(), postRv.imageSet().vectorSpace().dimLocal(), "'priorRv' and 'postRv' are related to vector spaces of different dimensions");
95 
96  if (m_env.subDisplayFile()) {
97  *m_env.subDisplayFile() << "Leaving StatisticalInverseProblem<P_V,P_M>::constructor()"
98  << ": prefix = " << m_optionsObj->m_prefix
99  << std::endl;
100  }
101 
102  return;
103 }
ScopedPtr< ScalarSequence< double > >::Type m_logLikelihoodValues
const BaseScalarFunction< P_V, P_M > & m_likelihoodFunction
ScopedPtr< BaseVectorSequence< P_V, P_M > >::Type m_chain
std::string optionsInputFileName() const
Access to the attribute m_optionsInputFileName, which stores the name of the input file passed by the...
Definition: Environment.C:354
const VectorSet< V, M > & domainSet() const
Access to the protected attribute m_domainSet: domain set of the scalar function. ...
ScopedPtr< ScalarSequence< double > >::Type m_logTargetValues
ScopedPtr< VectorSet< P_V, P_M > >::Type m_solutionDomain
ScopedPtr< const SipOptionsValues >::Type m_optionsObj
const VectorSet< V, M > & imageSet() const
Image set of the vector RV; access to private attribute m_imageSet.
Definition: VectorRV.C:83
unsigned int dimLocal() const
Definition: VectorSpace.C:155
const BaseEnvironment & env() const
QUESO environment; access to private attribute m_env.
Definition: VectorRV.C:76
virtual const VectorSpace< V, M > & vectorSpace() const =0
Vector space to which this set belongs to. See template specialization.
GenericVectorRV< P_V, P_M > & m_postRv
ScopedPtr< BaseJointPdf< P_V, P_M > >::Type m_solutionPdf
ScopedPtr< BaseVectorCdf< P_V, P_M > >::Type m_subSolutionCdf
ScopedPtr< MetropolisHastingsSG< P_V, P_M > >::Type m_mhSeqGenerator
const BaseVectorRV< P_V, P_M > & m_priorRv
MonteCarloSGOptions::MonteCarloSGOptions(const BaseEnvironment &env, const char *prefix, const McOptionsValues &alternativeOptionsValues queso_require_equal_to_msg)(m_env.optionsInputFileName(), std::string(""), std::string("this constructor is incompatible with the existence of an options input file"))
ScopedPtr< MLSampling< P_V, P_M > >::Type m_mlSampler
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
Definition: Environment.C:320
ScopedPtr< BaseVectorMdf< P_V, P_M > >::Type m_subSolutionMdf
ScopedPtr< BaseVectorRealizer< P_V, P_M > >::Type m_solutionRealizer
template<class P_V , class P_M >
QUESO::StatisticalInverseProblem< P_V, P_M >::StatisticalInverseProblem ( const char *  prefix,
const SipOptionsValues alternativeOptionsValues,
const GPMSAFactory< P_V, P_M > &  gpmsaFactory,
GenericVectorRV< P_V, P_M > &  postRv 
)

Constructor for statistical inverse problems to be sovled using GPMSA.

Requirements:

  1. the factory for the GPMSA object
  2. the image set of the vector random variable postRv (obtainable via GaussianProcessFactory::prior method) should be equal to the full prior image set (including all the hyperparameters)

If alternativeOptionsValues is NULL and an input file is specified, the constructor reads input options that begin with the string '<prefix>ip_'.

If alternativeOptionsValues is not NULL, the input file is ignored and construction copies the object pointed to by alternativeOptionsValues to and stores the copy internally. Users may delete the object poined to by alternativeOptionsValues. Users cannot change the options object after StatisticalInverseProblem has been constructed.

Definition at line 106 of file StatisticalInverseProblem.C.

References QUESO::VectorSpace< V, M >::dimLocal(), QUESO::BaseScalarFunction< V, M >::domainSet(), QUESO::BaseVectorRV< V, M >::imageSet(), QUESO::StatisticalInverseProblem< P_V, P_M >::m_env, QUESO::StatisticalInverseProblem< P_V, P_M >::m_likelihoodFunction, QUESO::StatisticalInverseProblem< P_V, P_M >::m_optionsObj, QUESO::StatisticalInverseProblem< P_V, P_M >::m_priorRv, QUESO::BaseEnvironment::optionsInputFileName(), QUESO::queso_require_equal_to_msg, QUESO::BaseEnvironment::subDisplayFile(), and QUESO::VectorSet< V, M >::vectorSpace().

111  :
112  m_env (gpmsaFactory.m_totalPrior->env()),
113  m_priorRv (*(gpmsaFactory.m_totalPrior)),
114  m_likelihoodFunction (gpmsaFactory.getGPMSAEmulator()),
115  m_postRv (postRv),
116  m_solutionDomain (),
117  m_solutionPdf (),
118  m_subSolutionMdf (),
119  m_subSolutionCdf (),
121  m_mhSeqGenerator (),
122  m_mlSampler (),
123  m_chain (),
126  m_optionsObj (),
127  m_seedWithMAPEstimator (false)
128 {
129  if (m_env.subDisplayFile()) {
130  *m_env.subDisplayFile() << "Entering StatisticalInverseProblem<P_V,P_M>::constructor()"
131  << ": prefix = " << prefix
132  << ", alternativeOptionsValues = " << alternativeOptionsValues
133  << ", m_env.optionsInputFileName() = " << m_env.optionsInputFileName()
134  << std::endl;
135  }
136 
137  // If NULL, we create one
138  if (m_optionsObj == NULL) {
139  m_optionsObj.reset(new SipOptionsValues(&m_env, prefix));
140  }
141  else {
142  // If the user passed in a legitimate options object, then copy it into a
143  // ScopedPtr
144  m_optionsObj.reset(new SipOptionsValues(*alternativeOptionsValues));
145  }
146 
147 
148  if (m_optionsObj->m_help != "") {
149  if (m_env.subDisplayFile()) {
150  *m_env.subDisplayFile() << (*m_optionsObj) << std::endl;
151  }
152  }
153 
154  queso_require_equal_to_msg(m_priorRv.imageSet().vectorSpace().dimLocal(), m_likelihoodFunction.domainSet().vectorSpace().dimLocal(), "'priorRv' and 'likelihoodFunction' are related to vector spaces of different dimensions");
155 
156  queso_require_equal_to_msg(m_priorRv.imageSet().vectorSpace().dimLocal(), postRv.imageSet().vectorSpace().dimLocal(), "'priorRv' and 'postRv' are related to vector spaces of different dimensions");
157 
158  if (m_env.subDisplayFile()) {
159  *m_env.subDisplayFile() << "Leaving StatisticalInverseProblem<P_V,P_M>::constructor()"
160  << ": prefix = " << m_optionsObj->m_prefix
161  << std::endl;
162  }
163 
164  return;
165 }
ScopedPtr< ScalarSequence< double > >::Type m_logLikelihoodValues
const BaseScalarFunction< P_V, P_M > & m_likelihoodFunction
ScopedPtr< BaseVectorSequence< P_V, P_M > >::Type m_chain
std::string optionsInputFileName() const
Access to the attribute m_optionsInputFileName, which stores the name of the input file passed by the...
Definition: Environment.C:354
const VectorSet< V, M > & domainSet() const
Access to the protected attribute m_domainSet: domain set of the scalar function. ...
ScopedPtr< ScalarSequence< double > >::Type m_logTargetValues
ScopedPtr< VectorSet< P_V, P_M > >::Type m_solutionDomain
ScopedPtr< const SipOptionsValues >::Type m_optionsObj
const VectorSet< V, M > & imageSet() const
Image set of the vector RV; access to private attribute m_imageSet.
Definition: VectorRV.C:83
unsigned int dimLocal() const
Definition: VectorSpace.C:155
virtual const VectorSpace< V, M > & vectorSpace() const =0
Vector space to which this set belongs to. See template specialization.
GenericVectorRV< P_V, P_M > & m_postRv
ScopedPtr< BaseJointPdf< P_V, P_M > >::Type m_solutionPdf
ScopedPtr< BaseVectorCdf< P_V, P_M > >::Type m_subSolutionCdf
ScopedPtr< MetropolisHastingsSG< P_V, P_M > >::Type m_mhSeqGenerator
const BaseVectorRV< P_V, P_M > & m_priorRv
MonteCarloSGOptions::MonteCarloSGOptions(const BaseEnvironment &env, const char *prefix, const McOptionsValues &alternativeOptionsValues queso_require_equal_to_msg)(m_env.optionsInputFileName(), std::string(""), std::string("this constructor is incompatible with the existence of an options input file"))
ScopedPtr< MLSampling< P_V, P_M > >::Type m_mlSampler
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
Definition: Environment.C:320
ScopedPtr< BaseVectorMdf< P_V, P_M > >::Type m_subSolutionMdf
ScopedPtr< BaseVectorRealizer< P_V, P_M > >::Type m_solutionRealizer
template<class P_V , class P_M >
QUESO::StatisticalInverseProblem< P_V, P_M >::~StatisticalInverseProblem ( )

Destructor.

Definition at line 169 of file StatisticalInverseProblem.C.

170 {
171 }

Member Function Documentation

template<class P_V , class P_M >
const BaseVectorSequence< P_V, P_M > & QUESO::StatisticalInverseProblem< P_V, P_M >::chain ( ) const

Returns the MCMC chain; access to private attribute m_chain.

Only valid after solve has been called.

Definition at line 465 of file StatisticalInverseProblem.C.

466 {
467  queso_require_msg(m_chain, "m_chain is NULL");
468  return *m_chain;
469 }
ScopedPtr< BaseVectorSequence< P_V, P_M > >::Type m_chain
template<class P_V = GslVector, class P_M = GslMatrix>
bool QUESO::StatisticalInverseProblem< P_V, P_M >::computeSolutionFlag ( ) const

Whether or not compute the solution.

template<class P_V , class P_M >
double QUESO::StatisticalInverseProblem< P_V, P_M >::eig ( ) const

Definition at line 502 of file StatisticalInverseProblem.C.

503 {
504  queso_require_msg(m_mlSampler, "m_mlSampler is NULL");
505  return m_mlSampler->eig();
506 }
ScopedPtr< MLSampling< P_V, P_M > >::Type m_mlSampler
template<class P_V , class P_M >
double QUESO::StatisticalInverseProblem< P_V, P_M >::logEvidence ( ) const

Returns the logarithm value of the evidence. Related to ML.

Definition at line 488 of file StatisticalInverseProblem.C.

489 {
490  queso_require_msg(m_mlSampler, "m_mlSampler is NULL");
491  return m_mlSampler->logEvidence();
492 }
ScopedPtr< MLSampling< P_V, P_M > >::Type m_mlSampler
template<class P_V , class P_M >
const ScalarSequence< double > & QUESO::StatisticalInverseProblem< P_V, P_M >::logLikelihoodValues ( ) const

Returns log likelihood values; access to private attribute m_logLikelihoodValues.

Only valid for MH and only after solve has been called.

Definition at line 473 of file StatisticalInverseProblem.C.

474 {
475  queso_require_msg(m_logLikelihoodValues, "m_logLikelihoodValues is NULL");
476  return *m_logLikelihoodValues;
477 }
ScopedPtr< ScalarSequence< double > >::Type m_logLikelihoodValues
template<class P_V , class P_M >
const ScalarSequence< double > & QUESO::StatisticalInverseProblem< P_V, P_M >::logTargetValues ( ) const

Returns log target values; access to private attribute m_logTargetValues.

Only valid for MH and only after solve has been called.

Definition at line 481 of file StatisticalInverseProblem.C.

482 {
483  queso_require_msg(m_logTargetValues, "m_logTargetValues is NULL");
484  return *m_logTargetValues;
485 }
ScopedPtr< ScalarSequence< double > >::Type m_logTargetValues
template<class P_V , class P_M >
double QUESO::StatisticalInverseProblem< P_V, P_M >::meanLogLikelihood ( ) const

Returns the mean of the logarithm value of the likelihood. Related to ML.

Definition at line 495 of file StatisticalInverseProblem.C.

496 {
497  queso_require_msg(m_mlSampler, "m_mlSampler is NULL");
498  return m_mlSampler->meanLogLikelihood();
499 }
ScopedPtr< MLSampling< P_V, P_M > >::Type m_mlSampler
template<class P_V , class P_M >
const GenericVectorRV< P_V, P_M > & QUESO::StatisticalInverseProblem< P_V, P_M >::postRv ( ) const

Returns the Posterior RV; access to private attribute m_postrRv.

The Posterior RV contains the solution of the Bayes problem.

Definition at line 458 of file StatisticalInverseProblem.C.

459 {
460  return m_postRv;
461 }
GenericVectorRV< P_V, P_M > & m_postRv
template<class P_V , class P_M >
void QUESO::StatisticalInverseProblem< P_V, P_M >::print ( std::ostream &  os) const

TODO: Prints the sequence.

Todo:
: implement me!

Definition at line 510 of file StatisticalInverseProblem.C.

511 {
512  return;
513 }
template<class P_V , class P_M >
const BaseVectorRV< P_V, P_M > & QUESO::StatisticalInverseProblem< P_V, P_M >::priorRv ( ) const

Returns the Prior RV; access to private attribute m_priorRv.

Definition at line 451 of file StatisticalInverseProblem.C.

452 {
453  return m_priorRv;
454 }
const BaseVectorRV< P_V, P_M > & m_priorRv
template<class P_V , class P_M >
void QUESO::StatisticalInverseProblem< P_V, P_M >::seedWithMAPEstimator ( )

Seeds the chain with the result of a deterministic optimisation.

This only works for Metropolis-Hastings right now. Multi-level is not currently supported.

Definition at line 373 of file StatisticalInverseProblem.C.

374 {
375  this->m_seedWithMAPEstimator = true;
376 }
template<class P_V , class P_M >
const MetropolisHastingsSG< P_V, P_M > & QUESO::StatisticalInverseProblem< P_V, P_M >::sequenceGenerator ( ) const

Return the underlying MetropolisHastingSG object.

Definition at line 443 of file StatisticalInverseProblem.C.

444 {
445  return *m_mhSeqGenerator;
446 }
ScopedPtr< MetropolisHastingsSG< P_V, P_M > >::Type m_mhSeqGenerator
template<class P_V , class P_M >
void QUESO::StatisticalInverseProblem< P_V, P_M >::solveWithBayesMetropolisHastings ( const MhOptionsValues alternativeOptionsValues,
const P_V &  initialValues,
const P_M *  initialProposalCovMatrix 
)

Solves the problem via Bayes formula and a Metropolis-Hastings algorithm.

Requirements:

  1. 'initialValues' should have the same number of components as member variable 'm_priorRv'
  2. if 'initialProposalCovMatrix' is not NULL, it should be square and its size should be equal to the size of 'initialValues'.

If the requirements are satisfied, this methods checks the member flag 'm_computeSolution' (one of the options read from the input file during construction). If the flag is 'false', the operation returns immediately, computing nothing; otherwise, the operation sets the member variable 'm_postRv' accordingly. The operation:

  1. sets the pdf of 'm_postRv' equal to an instance of BayesianJointPdf<P_V,P_M>,
  2. instantiates SequenceOfVectors<P_V,P_M> (the chain),
  3. instantiates MetropolisHastingsSG<P_V,P_M> (the Metropolis-Hastings algorithm),
  4. populates the chain with the Metropolis-Hastings algorithm, and
  5. sets the realizer of 'm_postRv' with the contents of the chain.

If seedWithMapEstimator() is called before this method, then initialValues is used as the initial condition for an optimization procedure, the result of which will be used as the seed for the chain.

Definition at line 175 of file StatisticalInverseProblem.C.

References QUESO::InstantiateIntersection(), QUESO::GslOptimizer::minimize(), QUESO::GslOptimizer::minimizer(), QUESO::queso_require_equal_to_msg, QUESO::OptimizerMonitor::set_display_output(), and QUESO::GslOptimizer::setInitialPoint().

179 {
180  //grvy_timer_begin("BayesMetropolisHastings"); TODO: revisit timing output
181  //std::cout << "proc " << m_env.fullRank() << ", HERE sip 000" << std::endl;
182  m_env.fullComm().Barrier();
183  //std::cout << "proc " << m_env.fullRank() << ", HERE sip 001" << std::endl;
184  m_env.fullComm().syncPrintDebugMsg("Entering StatisticalInverseProblem<P_V,P_M>::solveWithBayesMetropolisHastings()",1,3000000);
185 
186  if (m_optionsObj->m_computeSolution == false) {
187  if ((m_env.subDisplayFile())) {
188  *m_env.subDisplayFile() << "In StatisticalInverseProblem<P_V,P_M>::solveWithBayesMetropolisHastings()"
189  << ": avoiding solution, as requested by user"
190  << std::endl;
191  }
192  return;
193  }
194  if ((m_env.subDisplayFile())) {
195  *m_env.subDisplayFile() << "In StatisticalInverseProblem<P_V,P_M>::solveWithBayesMetropolisHastings()"
196  << ": computing solution, as requested by user"
197  << std::endl;
198  }
199 
200  queso_require_equal_to_msg(m_priorRv.imageSet().vectorSpace().dimLocal(), initialValues.sizeLocal(), "'m_priorRv' and 'initialValues' should have equal dimensions");
201 
202  if (initialProposalCovMatrix) {
203  queso_require_equal_to_msg(m_priorRv.imageSet().vectorSpace().dimLocal(), initialProposalCovMatrix->numRowsLocal(), "'m_priorRv' and 'initialProposalCovMatrix' should have equal dimensions");
204  queso_require_equal_to_msg(initialProposalCovMatrix->numCols(), initialProposalCovMatrix->numRowsGlobal(), "'initialProposalCovMatrix' should be a square matrix");
205  }
206 
207  P_V numEvaluationPointsVec(m_priorRv.imageSet().vectorSpace().zeroVector());
208  numEvaluationPointsVec.cwSet(250.);
209 
210  // Compute output pdf up to a multiplicative constant: Bayesian approach
212 
213  m_solutionPdf.reset(new BayesianJointPdf<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
214  m_priorRv.pdf(),
216  1.,
217  *m_solutionDomain));
218 
220  m_chain.reset(new SequenceOfVectors<P_V,P_M>(m_postRv.imageSet().vectorSpace(),0,m_optionsObj->m_prefix+"chain"));
221 
222  // Decide whether or not to create a MetropolisHastingsSG instance from the
223  // user-provided initial seed, or use the user-provided seed for a
224  // deterministic optimisation instead and seed the chain with the result of
225  // the optimisation
226  if (this->m_seedWithMAPEstimator ||
227  m_optionsObj->m_seedWithMAPEstimator) {
228  // Unfortunately, I didn't have the foresight to make this an input file
229  // option from the beginning, hence needing to check two flags
230 
231  // Read in optimizer options from input file
232  OptimizerOptions optimizer_options(&m_env, "ip_");
233 
234  // Do optimisation before sampling
235  GslOptimizer optimizer(optimizer_options, *m_solutionPdf);
236  optimizer.setInitialPoint(dynamic_cast<const GslVector &>(initialValues));
237 
238  OptimizerMonitor monitor(m_env);
239  monitor.set_display_output(true, true);
240 
241  // If the input file option is set, then use the monitor, otherwise don't
242  if (m_optionsObj->m_useOptimizerMonitor) {
243  optimizer.minimize(&monitor);
244  }
245  else {
246  optimizer.minimize();
247  }
248 
249  // Compute output realizer: Metropolis-Hastings approach
250  m_mhSeqGenerator.reset(new MetropolisHastingsSG<P_V, P_M>(
251  m_optionsObj->m_prefix.c_str(), alternativeOptionsValues,
252  m_postRv, optimizer.minimizer(), initialProposalCovMatrix));
253  }
254  else {
255  // Compute output realizer: Metropolis-Hastings approach
256  m_mhSeqGenerator.reset(new MetropolisHastingsSG<P_V, P_M>(
257  m_optionsObj->m_prefix.c_str(), alternativeOptionsValues, m_postRv,
258  initialValues, initialProposalCovMatrix));
259  }
260 
261 
262  m_logLikelihoodValues.reset(new ScalarSequence<double>(m_env, 0,
263  m_optionsObj->m_prefix +
264  "logLike"));
265 
266  m_logTargetValues.reset(new ScalarSequence<double>(m_env, 0,
267  m_optionsObj->m_prefix +
268  "logTarget"));
269 
270  // m_logLikelihoodValues and m_logTargetValues may be NULL
271  m_mhSeqGenerator->generateSequence(*m_chain, m_logLikelihoodValues.get(),
272  m_logTargetValues.get());
273 
274  m_solutionRealizer.reset(new SequentialVectorRealizer<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
275  *m_chain));
276 
277  m_postRv.setRealizer(*m_solutionRealizer);
278 
279  m_env.fullComm().syncPrintDebugMsg("In StatisticalInverseProblem<P_V,P_M>::solveWithBayesMetropolisHastings(), code place 1",3,3000000);
280  //m_env.fullComm().Barrier();
281 
282  // Compute output mdf: uniform sampling approach
283 #ifdef UQ_ALSO_COMPUTE_MDFS_WITHOUT_KDE
284  m_subMdfGrids.reset(new ArrayOfOneDGrids <P_V,P_M>((m_optionsObj->m_prefix+"Mdf_").c_str(),m_postRv.imageSet().vectorSpace()));
285  m_subMdfValues.reset(new ArrayOfOneDTables<P_V,P_M>((m_optionsObj->m_prefix+"Mdf_").c_str(),m_postRv.imageSet().vectorSpace()));
286  m_chain->subUniformlySampledMdf(numEvaluationPointsVec, // input
287  *m_subMdfGrids, // output
288  *m_subMdfValues); // output
289  m_subSolutionMdf.reset(new SampledVectorMdf<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
290  *m_subMdfGrids,
291  *m_subMdfValues));
292  m_postRv.setMdf(*m_subSolutionMdf);
293 
294  if ((m_optionsObj->m_dataOutputFileName != UQ_SIP_FILENAME_FOR_NO_FILE ) &&
295  (m_optionsObj->m_dataOutputAllowedSet.find(m_env.subId()) != m_optionsObj->m_dataOutputAllowedSet.end())) {
296  if (m_env.subRank() == 0) {
297  // Write data output file
298  if (m_env.subDisplayFile()) {
299  *m_env.subDisplayFile() << "Opening data output file '" << m_optionsObj->m_dataOutputFileName
300  << "' for calibration problem with problem with prefix = " << m_optionsObj->m_prefix
301  << std::endl;
302  }
303 
304  // Open file
305  // Always write at the end of an eventual pre-existing file
306  std::ofstream* ofsvar = new std::ofstream((m_optionsObj->m_dataOutputFileName+"_sub"+m_env.subIdString()+".m").c_str(), std::ofstream::out | std::ofstream::in | std::ofstream::ate);
307  if ((ofsvar == NULL ) ||
308  (ofsvar->is_open() == false)) {
309  delete ofsvar;
310  ofsvar = new std::ofstream((m_optionsObj->m_dataOutputFileName+"_sub"+m_env.subIdString()+".m").c_str(), std::ofstream::out | std::ofstream::trunc);
311  }
312  queso_require_msg((ofsvar && ofsvar->is_open()), "failed to open file");
313 
314  m_postRv.mdf().print(*ofsvar);
315 
316  // Close file
317  //ofsvar->close();
318  delete ofsvar;
319  if (m_env.subDisplayFile()) {
320  *m_env.subDisplayFile() << "Closed data output file '" << m_optionsObj->m_dataOutputFileName
321  << "' for calibration problem with problem with prefix = " << m_optionsObj->m_prefix
322  << std::endl;
323  }
324  }
325  }
326 #endif
327  if (m_env.subDisplayFile()) {
328  *m_env.subDisplayFile() << std::endl;
329  }
330 
331  m_env.fullComm().syncPrintDebugMsg("Leaving StatisticalInverseProblem<P_V,P_M>::solveWithBayesMetropolisHastings()",1,3000000);
332  m_env.fullComm().Barrier();
333  // grvy_timer_end("BayesMetropolisHastings"); TODO: revisit timers
334 }
ScopedPtr< ScalarSequence< double > >::Type m_logLikelihoodValues
ScopedPtr< ArrayOfOneDGrids< P_V, P_M > > m_subMdfGrids
const BaseJointPdf< V, M > & pdf() const
Posterior Density Function of the vector RV; access to private attribute m_pdf.
Definition: VectorRV.C:90
const std::string & subIdString() const
Access to the attribute m_subIdString; which stores the string for the sub-environment, and it will be used, for instance, to create the output files for each sub-environment.
Definition: Environment.C:348
const BaseScalarFunction< P_V, P_M > & m_likelihoodFunction
void syncPrintDebugMsg(const char *msg, unsigned int msgVerbosity, unsigned int numUSecs) const
Synchronizes all the processes and print debug message.
Definition: MpiComm.C:333
const V & zeroVector() const
Returns a vector filled with zeros.
Definition: VectorSpace.C:174
ScopedPtr< BaseVectorSequence< P_V, P_M > >::Type m_chain
const VectorSet< V, M > & domainSet() const
Access to the protected attribute m_domainSet: domain set of the scalar function. ...
ScopedPtr< ScalarSequence< double > >::Type m_logTargetValues
ScopedPtr< VectorSet< P_V, P_M > >::Type m_solutionDomain
ScopedPtr< ArrayOfOneDTables< P_V, P_M > > m_subMdfValues
ScopedPtr< const SipOptionsValues >::Type m_optionsObj
const VectorSet< V, M > & imageSet() const
Image set of the vector RV; access to private attribute m_imageSet.
Definition: VectorRV.C:83
unsigned int dimLocal() const
Definition: VectorSpace.C:155
void Barrier() const
Pause every process in *this communicator until all the processes reach this point.
Definition: MpiComm.C:174
virtual const VectorSpace< V, M > & vectorSpace() const =0
Vector space to which this set belongs to. See template specialization.
GenericVectorRV< P_V, P_M > & m_postRv
ScopedPtr< BaseJointPdf< P_V, P_M > >::Type m_solutionPdf
int subRank() const
Returns the rank of the MPI process in the sub-communicator subComm()
Definition: Environment.C:287
void setPdf(BaseJointPdf< V, M > &pdf)
Sets the PDF of this vector RV to pdf.
ScopedPtr< MetropolisHastingsSG< P_V, P_M > >::Type m_mhSeqGenerator
const BaseVectorRV< P_V, P_M > & m_priorRv
MonteCarloSGOptions::MonteCarloSGOptions(const BaseEnvironment &env, const char *prefix, const McOptionsValues &alternativeOptionsValues queso_require_equal_to_msg)(m_env.optionsInputFileName(), std::string(""), std::string("this constructor is incompatible with the existence of an options input file"))
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
Definition: Environment.C:320
ScopedPtr< BaseVectorMdf< P_V, P_M > >::Type m_subSolutionMdf
VectorSet< V, M > * InstantiateIntersection(const VectorSet< V, M > &domain1, const VectorSet< V, M > &domain2)
This method calculates the intersection of domain1 and domain2.
ScopedPtr< BaseVectorRealizer< P_V, P_M > >::Type m_solutionRealizer
const MpiComm & fullComm() const
Access function for the communicator that was passed to QUESO&#39;s environment.
Definition: Environment.C:274
unsigned int subId() const
Access function to the number of each sub-environment Id: m_subId.
Definition: Environment.C:342
template<class P_V , class P_M >
void QUESO::StatisticalInverseProblem< P_V, P_M >::solveWithBayesMetropolisHastings ( const MhOptionsValues alternativeOptionsValues,
const P_V &  initialValues 
)

Solves the problem via Bayes formula and a Metropolis-Hastings algorithm.

This calls solveWithBayesMetropolisHastings(const MhOptionsValues *, const P_V &, P_M *); with the prior variance as the proposal covariance matrix in the third argument.

Definition at line 338 of file StatisticalInverseProblem.C.

341 {
342  P_M proposalCovMatrix(m_priorRv.imageSet().vectorSpace().zeroVector());
343 
344  m_priorRv.pdf().distributionVariance(proposalCovMatrix);
345 
346  this->solveWithBayesMetropolisHastings(alternativeOptionsValues,
347  initialValues,
348  &proposalCovMatrix);
349 }
const BaseJointPdf< V, M > & pdf() const
Posterior Density Function of the vector RV; access to private attribute m_pdf.
Definition: VectorRV.C:90
const V & zeroVector() const
Returns a vector filled with zeros.
Definition: VectorSpace.C:174
virtual void distributionVariance(M &covMatrix) const
Definition: JointPdf.C:70
const VectorSet< V, M > & imageSet() const
Image set of the vector RV; access to private attribute m_imageSet.
Definition: VectorRV.C:83
virtual const VectorSpace< V, M > & vectorSpace() const =0
Vector space to which this set belongs to. See template specialization.
void solveWithBayesMetropolisHastings()
Solves the problem via Bayes formula and a Metropolis-Hastings algorithm.
const BaseVectorRV< P_V, P_M > & m_priorRv
template<class P_V , class P_M >
void QUESO::StatisticalInverseProblem< P_V, P_M >::solveWithBayesMetropolisHastings ( const MhOptionsValues alternativeOptionsValues)

Solves the problem via Bayes formula and a Metropolis-Hastings algorithm.

This calls solveWithBayesMetropolisHastings(const MhOptionsValues *, const P_V &); with the prior mean as the initial point in the second argument.

Definition at line 353 of file StatisticalInverseProblem.C.

355 {
356  P_V initialValues(m_priorRv.imageSet().vectorSpace().zeroVector());
357 
358  m_priorRv.pdf().distributionMean(initialValues);
359 
360  this->solveWithBayesMetropolisHastings(alternativeOptionsValues,
361  initialValues);
362 }
virtual void distributionMean(V &meanVector) const
Definition: JointPdf.C:62
const BaseJointPdf< V, M > & pdf() const
Posterior Density Function of the vector RV; access to private attribute m_pdf.
Definition: VectorRV.C:90
const V & zeroVector() const
Returns a vector filled with zeros.
Definition: VectorSpace.C:174
const VectorSet< V, M > & imageSet() const
Image set of the vector RV; access to private attribute m_imageSet.
Definition: VectorRV.C:83
virtual const VectorSpace< V, M > & vectorSpace() const =0
Vector space to which this set belongs to. See template specialization.
void solveWithBayesMetropolisHastings()
Solves the problem via Bayes formula and a Metropolis-Hastings algorithm.
const BaseVectorRV< P_V, P_M > & m_priorRv
template<class P_V , class P_M >
void QUESO::StatisticalInverseProblem< P_V, P_M >::solveWithBayesMetropolisHastings ( )

Solves the problem via Bayes formula and a Metropolis-Hastings algorithm.

This calls solveWithBayesMetropolisHastings(const MhOptionsValues *); with NULL as the options object. Options are read from the input file.

Definition at line 366 of file StatisticalInverseProblem.C.

367 {
369 }
void solveWithBayesMetropolisHastings()
Solves the problem via Bayes formula and a Metropolis-Hastings algorithm.
template<class P_V , class P_M >
void QUESO::StatisticalInverseProblem< P_V, P_M >::solveWithBayesMLSampling ( )

Solves with Bayes Multi-Level (ML) sampling.

Definition at line 380 of file StatisticalInverseProblem.C.

References QUESO::InstantiateIntersection().

381 {
382  m_env.fullComm().Barrier();
383  m_env.fullComm().syncPrintDebugMsg("Entering StatisticalInverseProblem<P_V,P_M>::solveWithBayesMLSampling()",1,3000000);
384 
385  if (m_optionsObj->m_computeSolution == false) {
386  if ((m_env.subDisplayFile())) {
387  *m_env.subDisplayFile() << "In StatisticalInverseProblem<P_V,P_M>::solveWithBayesMLSampling()"
388  << ": avoiding solution, as requested by user"
389  << std::endl;
390  }
391  return;
392  }
393  if ((m_env.subDisplayFile())) {
394  *m_env.subDisplayFile() << "In StatisticalInverseProblem<P_V,P_M>::solveWithBayesMLSampling()"
395  << ": computing solution, as requested by user"
396  << std::endl;
397  }
398 
399  P_V numEvaluationPointsVec(m_priorRv.imageSet().vectorSpace().zeroVector());
400  numEvaluationPointsVec.cwSet(250.);
401 
402  // Compute output pdf up to a multiplicative constant: Bayesian approach
404 
405  m_solutionPdf.reset(new BayesianJointPdf<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
406  m_priorRv.pdf(),
408  1.,
409  *m_solutionDomain));
410 
412 
413  // Compute output realizer: ML approach
414  m_chain.reset(new SequenceOfVectors<P_V,P_M>(m_postRv.imageSet().vectorSpace(),0,m_optionsObj->m_prefix+"chain"));
415  m_mlSampler.reset(new MLSampling<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
416  //m_postRv,
417  m_priorRv,
419  // initialValues,
420  // initialProposalCovMatrix);
421 
422  m_mlSampler->generateSequence(*m_chain,
423  NULL,
424  NULL);
425 
426  m_solutionRealizer.reset(new SequentialVectorRealizer<P_V,P_M>(m_optionsObj->m_prefix.c_str(),
427  *m_chain));
428 
430 
431  if (m_env.subDisplayFile()) {
432  *m_env.subDisplayFile() << std::endl;
433  }
434 
435  m_env.fullComm().syncPrintDebugMsg("Leaving StatisticalInverseProblem<P_V,P_M>::solveWithBayesMLSampling()",1,3000000);
436  m_env.fullComm().Barrier();
437 
438  return;
439 }
const BaseJointPdf< V, M > & pdf() const
Posterior Density Function of the vector RV; access to private attribute m_pdf.
Definition: VectorRV.C:90
const BaseScalarFunction< P_V, P_M > & m_likelihoodFunction
void syncPrintDebugMsg(const char *msg, unsigned int msgVerbosity, unsigned int numUSecs) const
Synchronizes all the processes and print debug message.
Definition: MpiComm.C:333
const V & zeroVector() const
Returns a vector filled with zeros.
Definition: VectorSpace.C:174
ScopedPtr< BaseVectorSequence< P_V, P_M > >::Type m_chain
const VectorSet< V, M > & domainSet() const
Access to the protected attribute m_domainSet: domain set of the scalar function. ...
ScopedPtr< VectorSet< P_V, P_M > >::Type m_solutionDomain
ScopedPtr< const SipOptionsValues >::Type m_optionsObj
const VectorSet< V, M > & imageSet() const
Image set of the vector RV; access to private attribute m_imageSet.
Definition: VectorRV.C:83
void Barrier() const
Pause every process in *this communicator until all the processes reach this point.
Definition: MpiComm.C:174
virtual const VectorSpace< V, M > & vectorSpace() const =0
Vector space to which this set belongs to. See template specialization.
GenericVectorRV< P_V, P_M > & m_postRv
ScopedPtr< BaseJointPdf< P_V, P_M > >::Type m_solutionPdf
void setPdf(BaseJointPdf< V, M > &pdf)
Sets the PDF of this vector RV to pdf.
void setRealizer(BaseVectorRealizer< V, M > &realizer)
Sets the realizer of this vector RV to realizer.
const BaseVectorRV< P_V, P_M > & m_priorRv
ScopedPtr< MLSampling< P_V, P_M > >::Type m_mlSampler
std::ofstream * subDisplayFile() const
Access function for m_subDisplayFile (displays file on stream).
Definition: Environment.C:320
VectorSet< V, M > * InstantiateIntersection(const VectorSet< V, M > &domain1, const VectorSet< V, M > &domain2)
This method calculates the intersection of domain1 and domain2.
ScopedPtr< BaseVectorRealizer< P_V, P_M > >::Type m_solutionRealizer
const MpiComm & fullComm() const
Access function for the communicator that was passed to QUESO&#39;s environment.
Definition: Environment.C:274

Friends And Related Function Documentation

template<class P_V = GslVector, class P_M = GslMatrix>
std::ostream& operator<< ( std::ostream &  os,
const StatisticalInverseProblem< P_V, P_M > &  obj 
)
friend

Definition at line 251 of file StatisticalInverseProblem.h.

252  {
253  obj.print(os);
254  return os;
255  }

Member Data Documentation

template<class P_V = GslVector, class P_M = GslMatrix>
ScopedPtr<BaseVectorSequence <P_V,P_M> >::Type QUESO::StatisticalInverseProblem< P_V, P_M >::m_chain
private

Definition at line 272 of file StatisticalInverseProblem.h.

template<class P_V = GslVector, class P_M = GslMatrix>
const BaseEnvironment& QUESO::StatisticalInverseProblem< P_V, P_M >::m_env
private
template<class P_V = GslVector, class P_M = GslMatrix>
const BaseScalarFunction<P_V,P_M>& QUESO::StatisticalInverseProblem< P_V, P_M >::m_likelihoodFunction
private
template<class P_V = GslVector, class P_M = GslMatrix>
ScopedPtr<ScalarSequence<double> >::Type QUESO::StatisticalInverseProblem< P_V, P_M >::m_logLikelihoodValues
private

Definition at line 273 of file StatisticalInverseProblem.h.

template<class P_V = GslVector, class P_M = GslMatrix>
ScopedPtr<ScalarSequence<double> >::Type QUESO::StatisticalInverseProblem< P_V, P_M >::m_logTargetValues
private

Definition at line 274 of file StatisticalInverseProblem.h.

template<class P_V = GslVector, class P_M = GslMatrix>
ScopedPtr<MetropolisHastingsSG<P_V,P_M> >::Type QUESO::StatisticalInverseProblem< P_V, P_M >::m_mhSeqGenerator
private

Definition at line 270 of file StatisticalInverseProblem.h.

template<class P_V = GslVector, class P_M = GslMatrix>
ScopedPtr<MLSampling <P_V,P_M> >::Type QUESO::StatisticalInverseProblem< P_V, P_M >::m_mlSampler
private

Definition at line 271 of file StatisticalInverseProblem.h.

template<class P_V = GslVector, class P_M = GslMatrix>
ScopedPtr<const SipOptionsValues>::Type QUESO::StatisticalInverseProblem< P_V, P_M >::m_optionsObj
private
template<class P_V = GslVector, class P_M = GslMatrix>
GenericVectorRV<P_V,P_M>& QUESO::StatisticalInverseProblem< P_V, P_M >::m_postRv
private

Definition at line 262 of file StatisticalInverseProblem.h.

template<class P_V = GslVector, class P_M = GslMatrix>
const BaseVectorRV<P_V,P_M>& QUESO::StatisticalInverseProblem< P_V, P_M >::m_priorRv
private
template<class P_V = GslVector, class P_M = GslMatrix>
bool QUESO::StatisticalInverseProblem< P_V, P_M >::m_seedWithMAPEstimator
private

Definition at line 278 of file StatisticalInverseProblem.h.

template<class P_V = GslVector, class P_M = GslMatrix>
ScopedPtr<VectorSet <P_V,P_M> >::Type QUESO::StatisticalInverseProblem< P_V, P_M >::m_solutionDomain
private

Definition at line 264 of file StatisticalInverseProblem.h.

template<class P_V = GslVector, class P_M = GslMatrix>
ScopedPtr<BaseJointPdf <P_V,P_M> >::Type QUESO::StatisticalInverseProblem< P_V, P_M >::m_solutionPdf
private

Definition at line 265 of file StatisticalInverseProblem.h.

template<class P_V = GslVector, class P_M = GslMatrix>
ScopedPtr<BaseVectorRealizer <P_V,P_M> >::Type QUESO::StatisticalInverseProblem< P_V, P_M >::m_solutionRealizer
private

Definition at line 268 of file StatisticalInverseProblem.h.

template<class P_V = GslVector, class P_M = GslMatrix>
ScopedPtr<ArrayOfOneDGrids <P_V,P_M> > QUESO::StatisticalInverseProblem< P_V, P_M >::m_subMdfGrids
private

Definition at line 281 of file StatisticalInverseProblem.h.

template<class P_V = GslVector, class P_M = GslMatrix>
ScopedPtr<ArrayOfOneDTables <P_V,P_M> > QUESO::StatisticalInverseProblem< P_V, P_M >::m_subMdfValues
private

Definition at line 282 of file StatisticalInverseProblem.h.

template<class P_V = GslVector, class P_M = GslMatrix>
ScopedPtr<BaseVectorCdf <P_V,P_M> >::Type QUESO::StatisticalInverseProblem< P_V, P_M >::m_subSolutionCdf
private

Definition at line 267 of file StatisticalInverseProblem.h.

template<class P_V = GslVector, class P_M = GslMatrix>
ScopedPtr<BaseVectorMdf <P_V,P_M> >::Type QUESO::StatisticalInverseProblem< P_V, P_M >::m_subSolutionMdf
private

Definition at line 266 of file StatisticalInverseProblem.h.


The documentation for this class was generated from the following files:

Generated on Sat Apr 22 2017 14:04:41 for queso-0.57.0 by  doxygen 1.8.5