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;
The purpose of this class is to provide accessors for setting, updating, modifying the CIGAR object....
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...