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