Example Program
Local Alignments
Computing local alignments between two sequences.
 1 #include  2 #include  3 #include  4 5 using namespace seqan; 6 7 int main() 8 {
Example 1: This program applies the Smith-Waterman algorithm to compute the best local alignment between two given sequences.
 9 StringSet strings; 10 Align > ali; 11 resize(rows(ali), 2); 12 assignSource(row(ali, 0), "aphilologicaltheorem"); 13 assignSource(row(ali, 1), "bizarreamphibology"); 14 int score = localAlignment(ali, Score(3,-3,-2, -2)); 15 std::cout << "Score = " << score << std::endl; 16 std::cout << ali; 17 unsigned cBeginPos = clippedBeginPosition(row(ali, 0)); 18 unsigned cEndPos = clippedEndPosition(row(ali, 0)) - 1; 19 std::cout << "Aligns Seq1[" << cBeginPos << ":" << cEndPos << "]"; 20 std::cout << " and Seq2[" << cBeginPos << ":" << cEndPos << "]" << std::endl << std::endl; 21 22
Example 2: This program applies the Waterman-Eggert algorithm to compute all non-overlapping local alignments with score better or equal 2.
 23 Align > ali2; 24 resize(rows(ali2), 2); 25 assignSource(row(ali2, 0), "ataagcgtctcg"); 26 assignSource(row(ali2, 1), "tcatagagttgc"); 27 28 Score scoring(2, -1, -2, 0); 29 LocalAlignmentEnumerator, Unbanded> enumerator(scoring, 2); 30 while (nextLocalAlignment(ali2, enumerator)) 31 { 32 std::cout << "Score = " << getScore(enumerator) << std::endl; 33 std::cout << ali2; 34 unsigned cBeginPos0 = clippedBeginPosition(row(ali2, 0)); 35 unsigned cEndPos0 = clippedEndPosition(row(ali2, 0)) - 1; 36 unsigned cBeginPos1 = clippedBeginPosition(row(ali2, 1)); 37 unsigned cEndPos1 = clippedBeginPosition(row(ali2, 1)) - 1; 38 std::cout << "Aligns Seq1[" << cBeginPos0 << ":" << cEndPos0 << "]"; 39 std::cout << " and Seq2[" << cBeginPos1 << ":" <<  cEndPos1 << "]"; 40 std::cout << std::endl << std::endl; 41 } 42
Example 3
 43 Align > ali3; 44 resize(rows(ali3), 2); 45 assignSource(row(ali3, 0), "cccccc"); 46 assignSource(row(ali3, 1), "tttttggccccccgg"); 47 48 Score scoring3(1, -1, -1, -1); 49 LocalAlignmentEnumerator, Unbanded> enumerator3(scoring3, 5); 50 while (nextLocalAlignment(ali3, enumerator3)) 51 { 52 std::cout << "Score = " << getScore(enumerator3) << std::endl; 53 std::cout << ali3; 54 unsigned cBeginPos0 = clippedBeginPosition(row(ali3, 0)); 55 unsigned cEndPos0 = clippedEndPosition(row(ali3, 0)) - 1; 56 unsigned cBeginPos1 = clippedBeginPosition(row(ali3, 1)); 57 unsigned cEndPos1 = clippedEndPosition(row(ali3, 1)) - 1; 58 std::cout << "Aligns Seq1[" << cBeginPos0 << ":" << cEndPos0 << "]"; 59 std::cout << " and Seq2[" << cBeginPos1 << ":" << cEndPos1 << "]"; 60 std::cout << std::endl << std::endl; 61 } 62
Example 4: This program applies the banded Waterman-Eggert algorithm to compute all non-overlapping local alignments with score or equal 5 in the band from diagonal -1 to diagonal 8.
 63 Align > ali4; 64 resize(rows(ali4), 2); 65 assignSource(row(ali4, 0), "AAAAAAANAAAGGGNGGGGGGGGNGGGGGANAA"); 66 assignSource(row(ali4, 1), "GGGGGGCGGGGGGGA"); 67 68 LocalAlignmentFinder<> finder4(ali4); 69 Score scoring4(1, -1, -1, -1); 70 LocalAlignmentEnumerator, Banded> enumerator4(scoring3, -1, 8, 5); 71 while (nextLocalAlignment(ali4, enumerator4)) 72 { 73 std::cout << "Score = " << getScore(enumerator4) << std::endl; 74 std::cout << ali4; 75 unsigned cBeginPos0 = clippedBeginPosition(row(ali4, 0)); 76 unsigned cEndPos0 = clippedEndPosition(row(ali4, 0)) - 1; 77 unsigned cBeginPos1 = clippedBeginPosition(row(ali4, 1)); 78 unsigned cEndPos1 = clippedEndPosition(row(ali4, 1)) - 1; 79 std::cout << "Aligns Seq1[" << cBeginPos0 << ":" << cEndPos0 << "]"; 80 std::cout << " and Seq2[" << cBeginPos1 << ":" << cEndPos1 << "]"; 81 std::cout << std::endl << std::endl; 82 } 83 84 return 0; 85 }
See
SeqAn - Sequence Analysis Library - www.seqan.de

Page built @2013/07/11 09:12:35