00001
00002
00003
00004
00005 #ifndef InitialMixturePrior_h
00006 #define InitialMixturePrior_h
00007
00008 #include "ACG.h"
00009 #include "Uniform.h"
00010 #include "Normal.h"
00011
00012 #include "MixturePrior.h"
00013
00014 #include "Serializable.h"
00015
00016
00017 namespace BIE {
00018
00019
00023 class InitialMixturePrior : public MixturePrior
00024 {
00025
00026 protected:
00027
00029 State ttwght;
00030
00031 public:
00032
00035
00036
00038 InitialMixturePrior();
00039
00040
00046 InitialMixturePrior(int nmix, double alpha, string pfile);
00047
00048
00049
00056 InitialMixturePrior(int nmix, double alpha, double pmean, string prior);
00057
00063
00064 virtual InitialMixturePrior* New();
00065
00067 virtual double PDF(State&);
00068
00070 virtual double logPDF(State&);
00071
00074 virtual double logPDFMarginal(int M, int n, vector<double>& V);
00075
00077
00078
00080 virtual vector<double> lower(void);
00081
00083 virtual vector<double> upper(void);
00084
00086 virtual vector<double> Mean(int m);
00087
00089 virtual vector<double> StdDev(int m);
00090
00092 virtual vector<double> Moments(int m, int n);
00093
00095 virtual vector<double> Sample(int m);
00097
00099 virtual void SamplePrior(int& M, vector<double>& wght,
00100 vector< vector<double> >& phi);
00101
00104 virtual void SamplePrior(int M, int n, vector<double>& V);
00105
00106 private:
00108 vector<double> p;
00109
00110
00111 private:
00112 friend class boost::serialization::access;
00113 template<class Archive>
00114 void serialize(Archive & ar, const unsigned int version) {
00115 this->pre_serialize(ar, version);
00116 try {
00117 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(MixturePrior);
00118 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00119 }
00120 try {
00121 ar & BOOST_SERIALIZATION_NVP(ttwght);
00122 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION;
00123 }
00124 this->post_serialize(ar, version);
00125 }
00126
00127 };
00128 }
00129
00130 BIE_CLASS_TYPE_INFO(BIE::InitialMixturePrior)
00131 BIE_CLASS_EXPORT_KEY(BIE::InitialMixturePrior)
00132 #endif