00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef THREESUBS_H
00025 #define THREESUBS_H
00026
00044 #include <Sequence/SeqEnums.hpp>
00045 #include <string>
00046
00047 namespace Sequence
00048 {
00049 class RedundancyCom95;
00050 class WeightingScheme3;
00051 class ThreeSubs
00052 {
00053 private:
00054 double p0, p2S, p2V, p4, q0, q2S, q2V, q4;
00055 void Calculate (const RedundancyCom95 * sitesObj,
00056 const std::string *intermediates,
00057 const std::string &codon1, const std::string &codon2,
00058 double w_path1,double w_path2, double w_path3,
00059 double w_path4,double w_path5,double w_path6);
00060 public:
00061 explicit ThreeSubs(void)
00062 {}
00063 void operator() (const RedundancyCom95 * sitesObj,
00064 const std::string &codon1, const std::string &codon2,
00065 const Sequence::WeightingScheme3 *weights3);
00066 ~ThreeSubs(void);
00067 double
00068 P0 (void) const
00072 {
00073 return p0;
00074 }
00075
00076 double
00077 P2S (void) const
00081 {
00082 return p2S;
00083 }
00084
00085 double
00086 P2V (void) const
00090 {
00091 return p2V;
00092 }
00093
00094 double
00095 P4 (void) const
00099 {
00100 return p4;
00101 }
00102
00103 double
00104 Q0 (void) const
00108 {
00109 return q0;
00110 }
00111
00112 double
00113 Q2S (void) const
00117 {
00118 return q2S;
00119 }
00120
00121 double
00122 Q2V (void) const
00126 {
00127 return q2V;
00128 }
00129
00130 double
00131 Q4 (void) const
00135 {
00136 return q4;
00137 }
00138 };
00139 }
00140 #endif