8 #ifndef ALIGN_TEST_HPP_
9 #define ALIGN_TEST_HPP_
12 #include "../lib/Sequence/SequenceSet.hpp"
13 #include "../lib/align/seq_align.hpp"
14 #include "../lib/utils/MatrixStack.hpp"
22 #include <cxxtest/TestSuite.h>
29 read_similarity_matrix(
const char *mat_f)
31 FILE *mat_F = fopen(mat_f,
"r");
32 const int LINE_LENGTH=1001;
33 char line[LINE_LENGTH];
34 while (fgets(line, LINE_LENGTH, mat_F) != NULL)
44 char *tmp=strtok(line,
" ");
46 key[pos]=toupper(tmp[0])-65;
47 while ((tmp=strtok(NULL,
" ")) != NULL)
49 key[++pos]=toupper(tmp[0])-65;
50 if ((key[pos]<0) || (key[pos]>25))
56 while (fgets(line, LINE_LENGTH, mat_F) != NULL)
59 tmp=strtok(line,
" \n");
62 row_id=toupper(tmp[0])-65;
63 while ((tmp=strtok(NULL,
" \n")) != NULL)
65 if (key[++col_id] != -1)
66 sim_mat[row_id][key[col_id]]=sim_mat[key[col_id]][row_id]=atoi(tmp);
76 void test_gotoh_match()
78 std::string matrix_path = getenv(
"HOME");
79 matrix_path.append(
"/.mda/BLOSUM62.txt");
85 std::vector<size_t> ids1(1,0);
86 std::vector<size_t> ids2(1,1);
87 fillGotohMatrix(
set, ids1, ids2, matrices, *sim_mat);
88 gotoh_align(
set[0].size(),
set[1].size(), matrices, -11, -1);
89 std::string edit_string1, edit_string2;
90 gotoh_traceback(
set[0].size(),
set[1].size(), matrices, edit_string1, edit_string2);
91 TS_ASSERT_EQUALS(edit_string1,
"mmmmmmmmmmmmmmmmmmm");
92 TS_ASSERT_EQUALS(edit_string2,
"mmmmmmmmmmmmmmmmmmm");
95 void test_gotoh_gap_seq1()
97 std::string matrix_path = getenv(
"HOME");
98 matrix_path.append(
"/.mda/BLOSUM62.txt");
104 std::vector<size_t> ids1(1,0);
105 std::vector<size_t> ids2(1,1);
106 fillGotohMatrix(
set, ids1, ids2, matrices, *sim_mat);
107 gotoh_align(
set[0].size(),
set[1].size(), matrices, -11, -1);
108 std::string edit_string1, edit_string2;
109 gotoh_traceback(
set[0].size(),
set[1].size(), matrices, edit_string1, edit_string2);
110 TS_ASSERT_EQUALS(edit_string1,
"----mmmmmmmmmmmmmmm");
111 TS_ASSERT_EQUALS(edit_string2,
"mmmmmmmmmmmmmmmmmmm");
114 void test_gotoh_gap_seq2()
116 std::string matrix_path = getenv(
"HOME");
117 matrix_path.append(
"/.mda/BLOSUM62.txt");
123 std::vector<size_t> ids1(1,0);
124 std::vector<size_t> ids2(1,1);
125 fillGotohMatrix(
set, ids1, ids2, matrices, *sim_mat);
126 gotoh_align(
set[0].size(),
set[1].size(), matrices, -11, -1);
127 std::string edit_string1, edit_string2;
128 gotoh_traceback(
set[0].size(),
set[1].size(), matrices, edit_string1, edit_string2);
129 TS_ASSERT_EQUALS(edit_string1,
"mmmmmmmmmmmmmmmmmmm");
130 TS_ASSERT_EQUALS(edit_string2,
"----mmmmmmmmmmmmmmm");
133 void test_gotoh_gap_seq2_start()
135 std::string matrix_path = getenv(
"HOME");
136 matrix_path.append(
"/.mda/BLOSUM62.txt");
142 std::vector<size_t> ids1(1,0);
143 std::vector<size_t> ids2(1,1);
144 fillGotohMatrix(
set, ids1, ids2, matrices, *sim_mat);
145 gotoh_align(
set[0].size(),
set[1].size(), matrices, -11, -1);
146 std::string edit_string1, edit_string2;
147 gotoh_traceback(
set[0].size(),
set[1].size(), matrices, edit_string1, edit_string2);
148 TS_ASSERT_EQUALS(edit_string1,
"mmmmmmmmmmmmmmmmmmm");
149 TS_ASSERT_EQUALS(edit_string2,
"mmmmmmmmmmmmmmm----");
151 void test_gotoh_gap_seq1_start()
153 std::string matrix_path = getenv(
"HOME");
154 matrix_path.append(
"/.mda/BLOSUM62.txt");
160 std::vector<size_t> ids1(1,0);
161 std::vector<size_t> ids2(1,1);
162 fillGotohMatrix(
set, ids1, ids2, matrices, *sim_mat);
163 gotoh_align(
set[0].size(),
set[1].size(), matrices, -11, -1);
164 std::string edit_string1, edit_string2;
165 gotoh_traceback(
set[0].size(),
set[1].size(), matrices, edit_string1, edit_string2);
166 TS_ASSERT_EQUALS(edit_string1,
"mmmmmmmmmmmmmmm----");
167 TS_ASSERT_EQUALS(edit_string2,
"mmmmmmmmmmmmmmmmmmm");
170 void test_gotoh_gap_middle()
172 std::string matrix_path = getenv(
"HOME");
173 matrix_path.append(
"/.mda/BLOSUM62.txt");
179 std::vector<size_t> ids1(1,0);
180 std::vector<size_t> ids2(1,1);
181 fillGotohMatrix(
set, ids1, ids2, matrices, *sim_mat);
182 gotoh_align(
set[0].size(),
set[1].size(), matrices, -11, -1);
183 std::string edit_string1, edit_string2;
184 gotoh_traceback(
set[0].size(),
set[1].size(), matrices, edit_string1, edit_string2);
185 TS_ASSERT_EQUALS(edit_string1,
"mmmm--mmmmmmmmmmmmm");
186 TS_ASSERT_EQUALS(edit_string2,
"mmmmmmmmmmmm--mmmmm");
187 set[0].insert_gaps(edit_string1);
188 set[1].insert_gaps(edit_string2);
194 std::string matrix_path = getenv(
"HOME");
195 matrix_path.append(
"/.mda/BLOSUM62.txt");
199 set.add_seq(
new MDAT::ProteinSequence(
"seq2",
"MSDLQDQEPSIIINGNLEPVGEPDIVEETEVVAQETQETQDADKPKKKVAFTGLEEDGETEEEKRKREFEEGGGLPEQPLNPDFSKLNPLSAEIINRQ"));
203 std::vector<size_t> ids1(1,0);
204 std::vector<size_t> ids2(1,1);
205 fillGotohMatrix(
set, ids1, ids2, matrices, *sim_mat);
206 gotoh_align(
set[0].size(),
set[1].size(), matrices, -11, -1);
207 std::string edit_string1, edit_string2;
208 gotoh_traceback(
set[0].size(),
set[1].size(), matrices, edit_string1, edit_string2);
209 set[0].insert_gaps(edit_string1);
210 set[1].insert_gaps(edit_string2);
211 std::cout<<
set << std::endl;