MUQ  0.4.3
ObservationInformation.h
Go to the documentation of this file.
1 #ifndef OBSERVATIONINFORMATION_H
2 #define OBSERVATIONINFORMATION_H
3 
6 
7 #include <Eigen/Core>
8 
9 #include <vector>
10 
11 namespace muq{
12 namespace Approximation{
13 
23  class ObservationInformation : public std::enable_shared_from_this<ObservationInformation>
24  {
25  public:
26 
27  ObservationInformation(std::shared_ptr<muq::Modeling::LinearOperator> Hin,
28  Eigen::Ref<const Eigen::VectorXd> const& locIn,
29  Eigen::Ref<const Eigen::VectorXd> const& obsIn,
30  Eigen::Ref<const Eigen::MatrixXd> const& obsCovIn) : H(Hin), loc(locIn), obs(obsIn), obsCov(obsCovIn){};
31 
32  virtual ~ObservationInformation() = default;
33 
34  virtual void FillSelfCov(std::shared_ptr<KernelBase> kernel,
35  Eigen::Ref<Eigen::MatrixXd> covBlock);
36 
37  virtual void FillCrossCov(Eigen::Ref<const Eigen::VectorXd> const& otherLoc,
38  std::shared_ptr<KernelBase> kernel,
39  Eigen::Ref<Eigen::MatrixXd> covBlock);
40 
41  virtual void FillCrossCov(std::shared_ptr<ObservationInformation> otherObs,
42  std::shared_ptr<KernelBase> kernel,
43  Eigen::Ref<Eigen::MatrixXd> covBlock);
44 
45  // The observation operator
46  std::shared_ptr<muq::Modeling::LinearOperator> H;
47 
48  // The location of the observation
49  Eigen::VectorXd loc;
50 
51  // The observed data
52  Eigen::VectorXd obs;
53 
54  // The covariance of the observational noise
55  Eigen::MatrixXd obsCov;
56 
57  protected:
58  virtual Eigen::MatrixXd BuildBaseCovariance(Eigen::Ref<const Eigen::VectorXd> const& otherObs,
59  std::shared_ptr<KernelBase> kernel);
60 
61  virtual Eigen::MatrixXd BuildBaseCovariance(std::shared_ptr<KernelBase> kernel);
62 
63  virtual Eigen::MatrixXd BuildBaseCovariance(std::shared_ptr<ObservationInformation> otherObs,
64  std::shared_ptr<KernelBase> kernel);
65 
66  };
67 
68 
80  {
81  public:
82  friend class ObservationInformation;
83 
84  DerivativeObservation(std::shared_ptr<muq::Modeling::LinearOperator> Hin,
85  Eigen::Ref<const Eigen::VectorXd> const& locIn,
86  Eigen::Ref<const Eigen::VectorXd> const& obsIn,
87  Eigen::Ref<const Eigen::MatrixXd> const& obsCovIn,
88  std::vector<std::vector<int>> derivCoordsIn) : ObservationInformation(Hin, locIn, obsIn, obsCovIn),
89  derivCoords(derivCoordsIn){};
90 
91  virtual ~DerivativeObservation() = default;
92 
97  std::vector<std::vector<int>> derivCoords;
98 
99  protected:
100 
101  virtual Eigen::MatrixXd BuildBaseCovariance(Eigen::Ref<const Eigen::VectorXd> const& otherObs,
102  std::shared_ptr<KernelBase> kernel) override;
103 
104  virtual Eigen::MatrixXd BuildBaseCovariance(std::shared_ptr<KernelBase> kernel) override;
105 
106  virtual Eigen::MatrixXd BuildBaseCovariance(std::shared_ptr<ObservationInformation> otherObs,
107  std::shared_ptr<KernelBase> kernel) override;
108 
109 
110 
111  };
112 
113 
114 } // namespace muq
115 } // namespace Approximation
116 
117 
118 
119 
120 
121 #endif // #ifndef OBSERVATIONINFORMATION_H
Class that defines an observation involving linear combinations of GP derivatives.
virtual Eigen::MatrixXd BuildBaseCovariance(Eigen::Ref< const Eigen::VectorXd > const &otherObs, std::shared_ptr< KernelBase > kernel) override
DerivativeObservation(std::shared_ptr< muq::Modeling::LinearOperator > Hin, Eigen::Ref< const Eigen::VectorXd > const &locIn, Eigen::Ref< const Eigen::VectorXd > const &obsIn, Eigen::Ref< const Eigen::MatrixXd > const &obsCovIn, std::vector< std::vector< int >> derivCoordsIn)
std::vector< std::vector< int > > derivCoords
Class for defining linear observations of a Gaussian process.
virtual Eigen::MatrixXd BuildBaseCovariance(Eigen::Ref< const Eigen::VectorXd > const &otherObs, std::shared_ptr< KernelBase > kernel)
virtual void FillCrossCov(Eigen::Ref< const Eigen::VectorXd > const &otherLoc, std::shared_ptr< KernelBase > kernel, Eigen::Ref< Eigen::MatrixXd > covBlock)
std::shared_ptr< muq::Modeling::LinearOperator > H
virtual void FillSelfCov(std::shared_ptr< KernelBase > kernel, Eigen::Ref< Eigen::MatrixXd > covBlock)
ObservationInformation(std::shared_ptr< muq::Modeling::LinearOperator > Hin, Eigen::Ref< const Eigen::VectorXd > const &locIn, Eigen::Ref< const Eigen::VectorXd > const &obsIn, Eigen::Ref< const Eigen::MatrixXd > const &obsCovIn)