1 // FRAGMENT(headers)
2 #include <seqan/file.h>
3 #include <seqan/align.h>
4
5 using namespace seqan;
6
7 // FRAGMENT(print-function)
8 template<typename TRow, typename TString>
printDataArray(TRow & row,TString & name)9 void printDataArray(TRow & row, TString & name) {
10 typedef typename Size<typename TRow::TArr>::Type TSize;
11 typename TRow::TArr dataArray = row.data_arr;
12
13 std::cout << "data array " << name << ": [";
14 if (length(dataArray) > 0) std::cout << value(dataArray, 0);
15 for(TSize i = 1; i < length(dataArray); ++i) {
16 std::cout << "," << value(dataArray, i);
17 }
18 std::cout << "]" << std::endl;
19 }
20
21 // FRAGMENT(main)
main(int,const char * [])22 int main(int, const char *[]) {
23
24 // FRAGMENT(unclipped)
25 Align<DnaString> align;
26 resize(rows(align), 2);
27 assignSource(row(align, 0), "acgtttacgaat");
28 assignSource(row(align, 1), "agtttatcggt");
29
30 globalAlignment(align, Score<int>(1, -1, -1));
31 std::cout << align;
32
33 printDataArray(row(align, 0), "row 0");
34 printDataArray(row(align, 1), "row 1");
35 std::cout << std::endl;
36
37 std::cout << "toViewPosition(row0, 5): " << toViewPosition(row(align, 0), 5) << std::endl;
38 std::cout << "toViewPosition(row1, 5): " << toViewPosition(row(align, 1), 5) << std::endl;
39 std::cout << std::endl;
40
41 std::cout << "toSourcePosition(row0, 4): " << toSourcePosition(row(align, 0), 4) << std::endl;
42 std::cout << "toSourcePosition(row1, 4): " << toSourcePosition(row(align, 1), 4) << std::endl;
43 std::cout << std::endl;
44
45 // FRAGMENT(clipping)
46
47 setClippedBeginPosition(row(align, 0), toSourcePosition(row(align, 0), 2));
48 setClippedBeginPosition(row(align, 1), toSourcePosition(row(align, 1), 2));
49 setClippedEndPosition(row(align, 0), toSourcePosition(row(align, 0), 10));
50 setClippedEndPosition(row(align, 1), toSourcePosition(row(align, 1), 10));
51
52 std::cout << align;
53
54 printDataArray(row(align, 0), "row 0");
55 printDataArray(row(align, 1), "row 1");
56 std::cout << std::endl;
57
58 std::cout << "clippedBeginPosition(row0): " << clippedBeginPosition(row(align, 0)) << std::endl;
59 std::cout << "clippedBeginPosition(row1): " << clippedBeginPosition(row(align, 1)) << std::endl;
60 std::cout << std::endl;
61
62 // FRAGMENT(clipped)
63
64 std::cout << "toViewPosition(row0, 5): " << toViewPosition(row(align, 0), 5) << std::endl;
65 std::cout << "toViewPosition(row1, 5): " << toViewPosition(row(align, 1), 5) << std::endl;
66 std::cout << std::endl;
67
68 std::cout << "toSourcePosition(row0, 4): " << toSourcePosition(row(align, 0), 4) << std::endl;
69 std::cout << "toSourcePosition(row1, 4): " << toSourcePosition(row(align, 1), 4) << std::endl;
70 std::cout << std::endl;
71
72 // FRAGMENT(tasks)
73
74 std::cout << "TASK 1 (clipped view pos cvp of clipped source pos csp in row 0): " << std::endl;
75 std::cout << " csp = 2 -> cvp = ";
76 std::cout << toViewPosition(row(align, 0), 2 + clippedBeginPosition(row(align, 0))) - toViewPosition(row(align, 0), clippedBeginPosition(row(align, 0))) << std::endl;
77 std::cout << " csp = 6 -> cvp = ";
78 std::cout << toViewPosition(row(align, 0), 6 + clippedBeginPosition(row(align, 0))) - toViewPosition(row(align, 0), clippedBeginPosition(row(align, 0))) << std::endl;
79 std::cout << std::endl;
80
81 std::cout << "TASK 2 (source pos sp of clipped view pos cvp in row 0): " << std::endl;
82 std::cout << " cvp = 2 -> sp = ";
83 std::cout << toSourcePosition(row(align, 0), 2 + toViewPosition(row(align, 0), clippedBeginPosition(row(align, 0)))) << std::endl;
84 std::cout << " cvp = 6 -> sp = ";
85 std::cout << toSourcePosition(row(align, 0), 6 + toViewPosition(row(align, 0), clippedBeginPosition(row(align, 0)))) << std::endl;
86 std::cout << std::endl;
87
88 std::cout << "TASK 3 (clipped source pos csp of source pos sp in row 0): " << std::endl;
89 std::cout << " sp = 4 -> csp = ";
90 std::cout << 4 - clippedBeginPosition(row(align, 0)) << std::endl;
91 std::cout << " sp = 8 -> csp = ";
92 std::cout << 8 - clippedBeginPosition(row(align, 0)) << std::endl;
93 std::cout << std::endl;
94 }
95
96