Doxygen 1.9.1
Toolkit for Adaptive Stochastic Modeling and Non-Intrusive ApproximatioN: Tasmanian v8.1
TasDREAM Namespace Reference

Encapsulates the Tasmanian DREAM module. More...

Classes

class  TasmanianDREAM
 Contains the current state and the history of the DREAM chains. More...
 
class  TasmanianLikelihood
 Interface for the likelihood classes. More...
 
class  LikelihoodGaussIsotropic
 Implements likelihood under the assumption of isotropic white noise. More...
 
class  LikelihoodGaussAnisotropic
 Implements likelihood under the assumption of anisotropic white noise. More...
 
class  DistributedPosterior
 Class that enables distributed DREAM sampling with MPI. More...
 

Typedefs

using DreamDomain = std::function< bool(std::vector< double > const &x)>
 Generic test function whether a sample belongs in the domain. More...
 
using DreamPDF = std::function< void(const std::vector< double > &candidates, std::vector< double > &values)>
 Generic probability distribution used by Tasmanian. More...
 
using DreamModel = std::function< void(const std::vector< double > &candidates, std::vector< double > &outputs)>
 Generic model signature used by Tasmanian. More...
 
using DreamLikelihood = std::function< void(TypeSamplingForm form, const std::vector< double > &model_outputs, std::vector< double > &likely)>
 Generic likelihood signature used by Tasmanian. More...
 
using DreamPrior = std::function< void(TypeSamplingForm form, const std::vector< double > &candidates, std::vector< double > &values)>
 Generic signature for the prior distributions used by Tasmanian. More...
 
using DreamMergedLikelyModel = std::function< void(const std::vector< double > &candidates, std::vector< double > &values)>
 Generic signature for a combination of a likelihood and a model. More...
 

Enumerations

enum  TypeSamplingForm { regform , logform }
 Describes whether sampling should be done with the regular or logarithm form of the probability density. More...
 
enum  TypeDistribution {
  dist_uniform , dist_gaussian , dist_exponential , dist_beta ,
  dist_gamma , dist_none , dist_null
}
 Indicates a specific probability distribution for the associated function. More...
 

Functions

DreamDomain hypercube (std::vector< double > const &lower, std::vector< double > const &upper)
 Make a lambda that matches the inside signature in SampleDREAM(), test if the vector x is in the hyperbube described by lower and upper.
 
void no_update (std::vector< double > &)
 Dummy function that does not make any changes to the vector as default for the independent_update() in SampleDREAM(). More...
 
double const_one ()
 Dummy function that returns 1.0, used as default for the differential_update() in SampleDREAM(). More...
 
template<int weight_percent>
double const_percent ()
 Template that returns a constant based on the percentage, i.e., weight_percent / 100.0. More...
 
void uniform_prior (TypeSamplingForm, const std::vector< double > &, std::vector< double > &values)
 Uniform prior distribution for both regular and log form. More...
 
template<TypeSamplingForm form = regform>
DreamPDF posterior (DreamModel model, DreamLikelihood likelihood, DreamPrior prior)
 Combines the three components of a Bayesian posterior into a single distribution. More...
 
template<TypeSamplingForm form = regform>
DreamPDF posterior (DreamMergedLikelyModel likelihood_model, DreamPrior prior)
 Overload where the model and likelihood are combined into a single call. More...
 
template<TypeSamplingForm form = regform>
void SampleDREAM (int num_burnup, int num_collect, DreamPDF probability_distribution, DreamDomain inside, TasmanianDREAM &state, std::function< void(std::vector< double > &x)> independent_update=no_update, std::function< double(void)> differential_update=const_one, std::function< double(void)> get_random01=tsgCoreUniform01)
 Core template for the sampling algorithm. More...
 
template<TypeSamplingForm form = regform>
void SampleDREAM (int num_burnup, int num_collect, DreamPDF probability_distribution, DreamDomain inside, TasmanianDREAM &state, TypeDistribution dist, double magnitude, std::function< double(void)> differential_update=const_one, std::function< double(void)> get_random01=tsgCoreUniform01)
 Overload of SampleDREAM() assuming independent update from a list of internally implemented options. More...
 
double tsgCoreUniform01 ()
 Generates random numbers uniformly distributed in (0, 1), uses the rand() command.
 
void applyUniformUpdate (std::vector< double > &x, double magnitude, std::function< double(void)> get_random01=tsgCoreUniform01)
 Add a correction to every entry in x, use uniform samples over (-magnitude, magnitude). More...
 
void applyGaussianUpdate (std::vector< double > &x, double magnitude, std::function< double(void)> get_random01=tsgCoreUniform01)
 Add a correction to every entry in x, sue Gaussian distribution with zero mean and standard deviation equal to magnitude. More...
 
void genUniformSamples (const std::vector< double > &lower, const std::vector< double > &upper, int num_samples, std::vector< double > &x, std::function< double(void)> get_random01=tsgCoreUniform01)
 Generate uniform random samples in the hypercube defined by lower and upper limits. More...
 
std::vector< double > genUniformSamples (const std::vector< double > &lower, const std::vector< double > &upper, int num_samples, std::function< double(void)> get_random01=tsgCoreUniform01)
 Overload that returns the vector.
 
void genGaussianSamples (const std::vector< double > &means, const std::vector< double > &deviations, int num_samples, std::vector< double > &x, std::function< double(void)> get_random01=tsgCoreUniform01)
 Generate standard normal samples with given means and standard deviations. More...
 
std::vector< double > genGaussianSamples (const std::vector< double > &means, const std::vector< double > &deviations, int num_samples, std::function< double(void)> get_random01=tsgCoreUniform01)
 Overload that returns the vector.
 
template<TypeDistribution distribution, TypeSamplingForm form = regform, typename... Params>
double getDensity (double x, Params... params)
 Returns the unscaled probability density of distribution (defined by params) at the point x. More...
 
template<class Likelihood >
int MPILikelihoodSend (Likelihood const &likely, int destination, int tag, MPI_Comm comm, int outputs_begin=0, int outputs_end=-1)
 Send a likelihood to another process in the MPI comm. More...
 
template<class Likelihood >
int MPILikelihoodRecv (Likelihood &likely, int source, int tag, MPI_Comm comm, MPI_Status *status=MPI_STATUS_IGNORE)
 Receive a likelihood from another process in the MPI comm. More...
 
template<class Likelihood >
int MPILikelihoodScatter (Likelihood const &source, Likelihood &destination, int root, int tag, MPI_Comm comm)
 Split the likelihood across the comm where each rank receives an equal portion of the total outputs. More...
 

Detailed Description

Encapsulates the Tasmanian DREAM module.

DREAM related classes and methods sit under the TasDREAM namespace.