00001
00002
00003 #ifndef ZUKERALGORITHM_H_
00004 #define ZUKERALGORITHM_H_
00005
00006 #include <gtest/gtest.h>
00007 #include <sys/time.h>
00008 #include <string>
00009 #include <vector>
00010 #include <utility>
00011
00012 using std::string;
00013 using std::vector;
00014
00015 class ZukerAlgorithm
00016 {
00017 public:
00018
00019 FRIEND_TEST(ZukerAlgorithmTest, computeStructure);
00020 void computeStructure(const std::string& input,
00021 std::vector<std::pair<int, int> >* result);
00022
00023
00024 FRIEND_TEST(ZukerAlgorithmTest, initZukerAlgorithm);
00025 void initZukerAlgorithm(const std::string& input);
00026
00027
00028 void printMatrix() const;
00029
00030
00031 void printStructure(const std::vector<std::pair<int, int> >&result) const;
00032
00033
00034 FRIEND_TEST(ZukerAlgorithmTest, performance);
00035 void performance(const std::string& input);
00036 private:
00037
00038 FRIEND_TEST(ZukerAlgorithmTest, _eS);
00039 float _eS(char x, char y);
00040
00041 FRIEND_TEST(ZukerAlgorithmTest, _eH);
00042 float _eH(char x, char y);
00043
00044 FRIEND_TEST(ZukerAlgorithmTest, _eBI);
00045 float _eBI(char i, char j, char x, char y);
00046
00047
00048 FRIEND_TEST(ZukerAlgorithmTest, traceBackW);
00049 void traceBackW(int i, int j,
00050 std::vector<std::pair<int, int> >* result);
00051
00052
00053 void computeW();
00054 FRIEND_TEST(ZukerAlgorithmTest, computeW);
00055
00056
00057 FRIEND_TEST(ZukerAlgorithmTest, computeV);
00058 float computeV(int, int);
00059
00060
00061 FRIEND_TEST(ZukerAlgorithmTest, VBI);
00062 void VBI();
00063
00064
00065 FRIEND_TEST(ZukerAlgorithmTest, traceBackV);
00066 void traceBackV(int, int,
00067 std::vector<std::pair<int, int> >* result);
00068
00069
00070 string _seqString;
00071 vector< vector<float> > _W;
00072 vector< vector<float> > _V;
00073 std::vector<float> _dictionary;
00074 vector< vector<float> > _traceBackW;
00075 vector< vector<float> > _traceBackV;
00076 float a;
00077 };
00078 #endif // ZUKERALGORITHM_H_