BIE |
/home/weinberg/src/BIE/include/PostMixturePrior.h00001 // This is really -*- C++ -*- 00002 00003 #ifndef PostMixturePrior_h 00004 #define PostMixturePrior_h 00005 00006 #include <BIEconfig.h> 00007 #include <Uniform.h> 00008 #include <Normal.h> 00009 00010 #include <MixturePrior.h> 00011 #include <Dirichlet.h> 00012 #include <Ensemble.h> 00013 00014 #include "Serializable.h" 00015 00016 00017 namespace BIE { 00018 00019 //+ CLICLASS PostMixturePrior SUPER MixturePrior 00023 class PostMixturePrior : public MixturePrior 00024 { 00025 00026 private: 00027 Ensemble* _dist; 00028 bool _manage_dist; 00029 vector<double> _lower; 00030 vector<double> _upper; 00031 bool _clamp; 00032 bool _sample; 00033 00034 public: 00035 00046 static double width_factor; 00047 00049 static int max_iter; 00051 00054 00055 //+ CLICONSTR 00057 PostMixturePrior() {}; 00058 00059 //+ CLICONSTR MixturePrior* Ensemble* 00061 PostMixturePrior(MixturePrior* old, Ensemble* dist); 00062 00063 //+ CLICONSTR MixturePrior* Ensemble* int int int int string int 00068 PostMixturePrior(MixturePrior* old, Ensemble* dist, 00069 int nmix, int ndim, 00070 int level, int nburn, string filename, int keypos); 00071 00073 ~PostMixturePrior(); 00074 00076 00082 00083 PostMixturePrior* New(); 00084 00085 //+ CLIMETHOD void FreeRange 00087 void FreeRange() { _clamp = false; } 00088 00089 //+ CLIMETHOD void useSamples 00092 void useSamples() { _sample = true; } 00093 00094 //+ CLIMETHOD void useWidths 00097 void useWidths() { _sample = false; } 00098 00100 double PDF(State& x) { return _dist->PDF(x); } 00101 00103 double logPDF(State& x) { return _dist->logPDF(x); } 00104 00107 double logPDFMarginal(int M, int n, vector<double>& x) 00108 { return _dist->logPDFMarginal(M, n, x); } 00109 00111 vector<double> lower(void) { return _lower; } 00112 00114 vector<double> upper(void) { return _upper; } 00115 00117 vector<double> Mean() { return _dist->Mean(); } 00118 00120 vector<double> StdDev() { return _dist->StdDev(); } 00121 00123 vector<double> Moments(int m) { return _dist->Moments(m); } 00124 00126 vector<double> Sample() { return vector<double>(Ndim*Nmix, 0.0); } 00127 00129 vector<double> Sample(int m) { return _dist->Sample(m); } 00130 00132 00134 virtual void 00135 SamplePrior(int& m, vector<double>& w, vector< vector<double> >& p); 00136 00139 virtual void SamplePrior(int M, int n, vector<double>& V); 00140 00141 /* 00142 Based on prior type, return random variates for mixture model 00143 The @param width is ignored for this sample method; the sample 00144 comes from the covariance matrix directly scaled by the @param 00145 width_factor 00146 */ 00147 virtual void SampleProposal(Chain& ch, MHWidth* width); 00148 00150 virtual int MinC() { return _dist->MinC(); } 00151 00153 virtual int MaxC() { return _dist->MaxC(); } 00154 00155 // AUTO GENERATED BY ../persistence/autopersist.py 00156 private: 00157 friend class boost::serialization::access; 00158 template<class Archive> 00159 void serialize(Archive & ar, const unsigned int version) { 00160 this->pre_serialize(ar, version); 00161 try { 00162 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(MixturePrior); 00163 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00164 } 00165 try { 00166 ar & BOOST_SERIALIZATION_NVP(_dist); 00167 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00168 } 00169 try { 00170 ar & BOOST_SERIALIZATION_NVP(_manage_dist); 00171 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00172 } 00173 try { 00174 ar & BOOST_SERIALIZATION_NVP(_lower); 00175 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00176 } 00177 try { 00178 ar & BOOST_SERIALIZATION_NVP(_upper); 00179 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00180 } 00181 try { 00182 ar & BOOST_SERIALIZATION_NVP(_clamp); 00183 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00184 } 00185 try { 00186 ar & BOOST_SERIALIZATION_NVP(_sample); 00187 BIE_CATCH_BOOST_SERIALIZATION_EXCEPTION; 00188 } 00189 this->post_serialize(ar, version); 00190 } 00191 00192 }; 00193 00194 } 00195 00196 BIE_CLASS_TYPE_INFO(BIE::PostMixturePrior) 00197 BIE_CLASS_EXPORT_KEY(BIE::PostMixturePrior) 00198 #endif Send suggestions, questions, and feedback to WEINBERG at ASTRO dot UMASS dot EDU. Documentation generated at Fri Mar 26 00:35:10 2010 by
|