| Example Program Global Alignments Computing an optimal global alignment between two sequences. File "alignment.cpp" A tutorial about global alignments.
1 | #include <iostream>
2 | #include <seqan/align.h>
3 | #include <seqan/graph_align.h>
4 |
5 | using namespace seqan;
6 |
7 | int main()
8 | {
Two DNA sequences that shall be aligned.
9 | typedef String<Dna> TSequence;
10 | TSequence seq1 = "atcgaatgcgga";
11 | TSequence seq2 = "actcgttgca";
Scoring objects are used to define a scoring scheme. In this case, affine gap costs with match = 0, mismatch = -1, gapextend = -1 and gapopen = -2.
12 | Score<int> score(0, -1, -1, -2);
Example 1: We use Align to align the two sequences. Since we do not specify an algorithm tag when we call globalAlignment, a suitable algorithm (Gotoh) is automatically choosen.
13 | Align<TSequence, ArrayGaps> align;
14 | resize(rows(align), 2);
15 | assignSource(row(align, 0), seq1);
16 | assignSource(row(align, 1), seq2);
17 |
18 | ::std::cout << "Score = " << globalAlignment(align, score) << ::std::endl;
19 | ::std::cout << align << ::std::endl;
Example 2: We now choose explicitely the algorithm MyersHirschberg. Since this algorithm always works on Levenshtein distance, score is ignored here. Therefore, this algorithm computes a different alignment and returns a different score.
20 | ::std::cout << "Score = " << globalAlignment(align, score, MyersHirschberg()) << ::std::endl;
21 | ::std::cout << align << ::std::endl;
Example 3: We now do the same as in case 1, but now we use an Alignment Graph for storing the alignment. Here we use Gotoh's algorithm.
22 | typedef StringSet<TSequence, Dependent<> > TStringSet;
23 | typedef Graph<Alignment<TStringSet, void> > TAlignmentGraph;
24 |
25 | TStringSet string_set;
26 | appendValue(string_set, seq1);
27 | appendValue(string_set, seq2);
28 | TAlignmentGraph alignment_graph(string_set);
29 |
30 | ::std::cout << "Score = " << globalAlignment(alignment_graph, score, Gotoh()) << ::std::endl;
31 | ::std::cout << alignment_graph << ::std::endl;
32 | return 0;
33 | }
See Align, Alignment Graph, globalAlignment, Score SeqAn - Sequence Analysis Library - www.seqan.de