MUQ  0.4.3
PyDistribution.h
Go to the documentation of this file.
1 #ifndef PYDISTRIBUTION_H_
2 #define PYDISTRIBUTION_H_
3 
6 
7 
8 namespace muq {
9  namespace Modeling {
10  class PyDistribution : public Distribution {
11  public:
12  PyDistribution(unsigned int varSizeIn, Eigen::VectorXi const& hyperSizesIn = Eigen::VectorXi());
13 
14  static std::vector<Eigen::VectorXd> ToStdVec(ref_vector<Eigen::VectorXd> const& input);
15  static ref_vector<Eigen::VectorXd> ToRefVec(std::vector<Eigen::VectorXd> const& input);
16 
17  protected:
18 
19  virtual Eigen::VectorXd SampleImpl(std::vector<Eigen::VectorXd> const& inputs) = 0;
20  virtual Eigen::VectorXd SampleImpl(ref_vector<Eigen::VectorXd> const& inputs) override;
21 
22 
23  virtual double LogDensityImpl(ref_vector<Eigen::VectorXd> const& inputs) override;
24 
25  virtual double LogDensityImpl(std::vector<Eigen::VectorXd> const& inputs) = 0;
26  };
27 
28 
29  class PyGaussianBase : public GaussianBase {
30  public:
31 
33 
34  virtual ~PyGaussianBase() = default;
35 
36  // This is needed to make SampleImpl public in PyGaussianBase
38 
39  };
40 
41  } // namespace Modeling
42 } // namespace muq
43 
44 #endif
Defines an abstract Gaussian class.@seealso Gaussian.
Definition: GaussianBase.h:15
virtual Eigen::VectorXd SampleImpl(ref_vector< Eigen::VectorXd > const &inputs) override
Sample the distribution.
GaussianBase(unsigned int dim)
Definition: GaussianBase.cpp:8
static std::vector< Eigen::VectorXd > ToStdVec(ref_vector< Eigen::VectorXd > const &input)
static ref_vector< Eigen::VectorXd > ToRefVec(std::vector< Eigen::VectorXd > const &input)
virtual Eigen::VectorXd SampleImpl(std::vector< Eigen::VectorXd > const &inputs)=0
virtual double LogDensityImpl(ref_vector< Eigen::VectorXd > const &inputs) override
Implement the log-density.
virtual double LogDensityImpl(std::vector< Eigen::VectorXd > const &inputs)=0
PyDistribution(unsigned int varSizeIn, Eigen::VectorXi const &hyperSizesIn=Eigen::VectorXi())
virtual ~PyGaussianBase()=default
std::vector< std::reference_wrapper< const T > > ref_vector
A vector of references to something ...
Definition: WorkPiece.h:37