Example Program
Global Alignments
Computing an optimal global alignment between two sequences.
A tutorial about global alignments.
1#include <iostream>
2#include <seqan/align.h>
3#include <seqan/graph_align.h>
4
5using namespace seqan;
6
7int 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}
SeqAn - Sequence Analysis Library - www.seqan.de