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 TWOSUBS_H
00025 #define TWOSUBS_H
00026 #include <Sequence/SeqEnums.hpp>
00027 #include <string>
00056 namespace Sequence
00057 {
00058 class RedundancyCom95;
00059 class WeightingScheme2;
00060 class TwoSubs
00061 {
00062 private:
00063 double p0, p2S, p2V, p4, q0, q2S, q2V,q4;
00064 double p0_b1, p2S_b1, p2V_b1, p4_b1, q0_b1, q2S_b1, q2V_b1, q4_b1;
00065 double p0_b2, p2S_b2, p2V_b2, p4_b2, q0_b2, q2S_b2, q2V_b2, q4_b2;
00066 double p0_b3, p2S_b3, p2V_b3, p4_b3, q0_b3, q2S_b3, q2V_b3, q4_b3;
00067 double p0_b4, p2S_b4, p2V_b4, p4_b4, q0_b4, q2S_b4, q2V_b4, q4_b4;
00068 void Calculate (const RedundancyCom95 * sitesObj, const std::string &codon1,
00069 const std::string &int_1, const std::string &int_2,
00070 const std::string &codon2, const double w_path1,
00071 const double w_path2);
00072 public:
00073 explicit TwoSubs(void)
00074 {}
00075 void operator() (const RedundancyCom95 * sitesObj,
00076 const std::string &cod1, const std::string &cod2,
00077 const Sequence::WeightingScheme2 *weights2);
00078 ~TwoSubs (void);
00079 double P0 (void) const;
00080 double P2S (void) const;
00081 double P2V (void) const;
00082 double P4 (void) const;
00083 double Q0 (void) const;
00084 double Q2S (void) const;
00085 double Q2V (void) const;
00086 double Q4 (void) const;
00087 };
00088 }
00089 #endif