21 #include "SmithWaterman.h" 39 const char *qualities,
42 const char *expectedCigarString,
46 int allowedInsertDelete = 1024;
51 SmithWaterman<256, 1024, uint16_t, const char *, const char *, const char *, uint32_t, uint32_t > sw(&A, &qualities, &B, strlen(A), strlen(B), allowedInsertDelete, direction);
57 sw.populateAlignment();
59 int sumQ = sw.getSumQ();
71 bool badCigar =
false, badQuality =
false;
73 if (strcmp(cigarStr, expectedCigarString)!=0)
79 if (sumQ != expectedSumQ)
87 if (showAllCases || errors>0)
89 cout <<
"=============" << endl;
90 cout <<
" Read: " << A << endl;
91 cout <<
" Reference: " << B << endl;
92 cout <<
" Direction: " << direction << endl;
93 cout <<
"Max Cell: " << sw.maxCostValue <<
" located at " << sw.maxCostPosition << endl;
94 cout <<
"M: " << sw.m <<
" N: " << sw.n << endl;
95 cout <<
"Cigar String: " << cigarStr ;
97 cout <<
" (EXPECTED: " << expectedCigarString <<
")";
99 cout <<
" sumQ:" << sumQ;
101 cout <<
" (EXPECTED: " << expectedSumQ <<
")";
104 if (strlen(B) < 100 || showAllCases)
107 for (vector<pair<int,int> >::iterator i = sw.alignment.begin(); i != sw.alignment.end(); i++) cout << *i << endl;
109 cout <<
"=============" << endl << endl;
120 int main(
int argc,
const char **argv)
124 bool showAllCasesFlag =
false;
127 while ((opt = getopt(argc, (
char **) argv,
"v")) != -1)
132 showAllCasesFlag =
true;
135 cerr <<
"usage: testSW [-v]" << std::endl;
147 errors += swat(showAllCasesFlag,
"1234",
"\"#$-",
"1235", 1,
"3M1S", 0);
150 errors += swat(showAllCasesFlag,
"1234",
"\"#$-",
"1235", -1,
"4M", 12);
153 errors += swat(showAllCasesFlag,
"1234",
"\"#$-",
"0234", -1,
"1S3M", 0);
156 errors += swat(showAllCasesFlag,
"123467890",
"\"#$%^&*()-",
"1234567890", +1,
"4M1D5M", 50);
159 errors += swat(showAllCasesFlag,
"1234556789",
"\"#$%^&*()-",
"1234567890", +1,
"5M1I4M", 50);
162 errors += swat(showAllCasesFlag,
"X123467890",
"#\"#$%^&*()-",
"1234567890", -1,
"1S4M1D5M", 50);
165 errors += swat(showAllCasesFlag,
"1234556789",
"\"#$%^&*()-",
"0123456789", -1,
"4M1I5M", 50);
168 errors += swat(showAllCasesFlag,
"X1223456789",
"00000000000",
"00123456789", -1,
"1S1M1I8M", 50);
171 errors += swat(showAllCasesFlag,
"XY1223456789",
"000000000000",
"000123456789", -1,
"2S1M1I8M", 50);
174 errors += swat(showAllCasesFlag,
"123456700",
"\"#$%^&*()-",
"123456789", +1,
"7M2S", 0);
177 errors += swat(showAllCasesFlag,
"1023456700",
"\"#$%^&*()-",
"123456789", +1,
"1M1I6M2S", 50);
180 errors += swat(showAllCasesFlag,
"CTCCACCTCCCGGTT",
"111111111111111",
"TCCACCTCCCAGGTT", -1,
"1S10M1D4M", 50);
183 errors += swat(showAllCasesFlag,
"1234",
"0000",
"12345", +1,
"4M", 0);
186 errors += swat(showAllCasesFlag,
"1234X",
"00000",
"12345", +1,
"4M1S", 0);
189 errors += swat(showAllCasesFlag,
"4321",
"0000",
"7654321", -1,
"4M", 0);
192 errors += swat(showAllCasesFlag,
"X4321",
"00000",
"7654321", -1,
"1S4M", 0);
195 errors += swat(showAllCasesFlag,
"X432A10",
"0000000",
"76543210", -1,
"1S3M1I2M", 50);
198 errors += swat(showAllCasesFlag,
"1345",
"0000",
"12345", -1,
"1M1D3M", 50);
200 errors += swat(showAllCasesFlag,
"45689",
"00000",
"1234567890", -1,
"3M1D2M", 50);
204 errors += swat(showAllCasesFlag,
"TTAGAATGCTATTGTGTTTGGAGATTTGAGGAAAGTGGGCGTGAAGACTTAGTGTTCATTTCCTCAACCTCTCTCTGTGTGAACATACGTCATCGGTCAGAAATTGGG",
"000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"CCGAGATTGTGCCATTGCACTCCTGCCTGGGTAACAGAGTCAGACCCTGTCTCAAAAAAAAAAAAAAAAAAAAAAAAGATTAGGTTTTATAGATGGAAAATTCACAGCTCTCTCCAGATCAGAAATCTCCAAGAGTAAATTAGTGTCTTAAAGGGGTTGTAATAACTTTCCTATGTGACTAAGTGCATTATTAATCAATTTTTCTATGATCAAGTACTCCTTTACATACCTGCTAATACAATTTTTGATATGAAATCAGTCCTAGAGGGAATCAATGTAAGATACAGACTTGATGAGTGCTTGCAGTTTTTTATTGACAATCTGAAGAATGACTTGACTCTAAATTGCAGCTCAAGGCTTAGAATGCTATTGTGTTTGGAGATTTGAGGAAAGTGGGCGTGAAGACTTAGTGTTCATTTCCTCAACCTCTCTCTGTGTGAACATACAGGAATCAAATCTGTCTAGCCTCTCTTTTTGGCAAGGTTAAGAACAATTCCACTTCATCCTAATCCCAATGATTCCTGCCGACCCTCTTCCAAAAACTATTTAAAGACATGTTCTTCAAAGTTATATTTGTCTTTCCTTCAGGGAGAAAAAGAATACCAATCACTTATAATATGGAAACTAGCAGAAATGGGTCACATAAGTCATCTGTCAGAAATTGGGAAAATAGAGTAGGTCAGTCTTTCCAGTCATGGTACTTTTACCTTCAATCA", -1,
"88M200D20M", 50);
208 cout << endl <<
"Total Errors found: " << errors << endl;
void clear()
Clear this object so that it has no Cigar Operations.
const char * getString()
Get the string reprentation of the Cigar operations in this object, caller must delete the returned v...
The purpose of this class is to provide accessors for setting, updating, modifying the CIGAR object...