1 //![main]
2 #include <iostream>
3 #include <seqan/align.h>
4
5 using namespace seqan;
6
main()7 int main()
8 {
9 //![main]
10 //![typedefs]
11 typedef char TChar; // character type
12 typedef String<TChar> TSequence; // sequence type
13 typedef Align<TSequence, ArrayGaps> TAlign; // align type
14 typedef Row<TAlign>::Type TRow; // gapped sequence type
15 //![typedefs]
16
17 std::cout << "//![output_init]\n";
18 //![init]
19 TSequence seq1 = "CDFGDC";
20 TSequence seq2 = "CDEFGAHGC";
21
22 TAlign align;
23 resize(rows(align), 2);
24 assignSource(row(align, 0), seq1);
25 assignSource(row(align, 1), seq2);
26 std::cout << align;
27 //![init]
28 std::cout << "//![output_init]\n";
29
30 std::cout << "//![output_manipulation]\n";
31 //![manipulation]
32 TRow & row1 = row(align, 0);
33 TRow & row2 = row(align, 1);
34 insertGap(row1, 2);
35 std::cout << align;
36 insertGaps(row1, 5, 2);
37 std::cout << align;
38 //![manipulation]
39 std::cout << "//![output_manipulation]\n";
40
41 std::cout << "//![output_source_positions]\n";
42 //![printingSourcePos]
43 std::cout << std::endl << "ViewToSource1: " << std::endl;
44 for (auto c: row1)
45 std::cout << c << " ";
46 std::cout << std::endl;
47
48 for (unsigned i = 0; i < length(row1); ++i)
49 std::cout << toSourcePosition(row1, i) << " ";
50 std::cout << std::endl;
51
52
53 std::cout << std::endl << "ViewToSource2: " << std::endl;
54 for (auto c: row2)
55 std::cout << c << " ";
56 std::cout << std::endl;
57
58 for (unsigned i = 0; i < length(row2); ++i)
59 std::cout << toSourcePosition(row2, i) << " ";
60 std::cout << std::endl;
61 //![printingSourcePos]
62 std::cout << "//![output_source_positions]\n";
63
64 std::cout << "//![output_view_positions]\n";
65 //![printingViewPos]
66 std::cout << std::endl << "SourceToView1: " << std::endl;
67 for (auto c: source(row1))
68 std::cout << c << " ";
69 std::cout << std::endl;
70
71 for (unsigned i = 0; i < length(source(row1)); ++i)
72 std::cout << toViewPosition(row1, i) << " ";
73 std::cout << std::endl;
74
75
76 std::cout << std::endl << "SourceToView2: " << std::endl;
77 for (auto c: source(row2))
78 std::cout << c << " ";
79 std::cout << std::endl;
80
81 for (unsigned i = 0; i < length(source(row2)); ++i)
82 std::cout << toViewPosition(row2, i) << " ";
83 std::cout << std::endl;
84 //![printingViewPos]
85 std::cout << "//![output_view_positions]\n";
86
87 std::cout << "//![output_clipping]\n";
88 //![clipping]
89 std::cout << std::endl << "Before clipping:\n" << align;
90 setClippedBeginPosition(row1, 1);
91 setClippedEndPosition(row1, 7);
92 setClippedBeginPosition(row2, 1);
93 setClippedEndPosition(row2, 7);
94 std::cout << std::endl << "After clipping:\n" << align;
95 //![clipping]
96 std::cout << "//![output_clipping]\n";
97
98 std::cout << "//![output_clipping_positions]\n";
99 //![clipping_positions]
100 std::cout << std::endl << "ViewToSource1: ";
101 for (unsigned i = 0; i < length(row1); ++i)
102 std::cout << toSourcePosition(row1, i) << " ";
103
104 std::cout << std::endl << "ViewToSource2: ";
105 for (unsigned i = 0; i < length(row2); ++i)
106 std::cout << toSourcePosition(row2, i) << " ";
107 std::cout << std::endl;
108
109 std::cout << std::endl << "SourceToView1: ";
110 for (unsigned i = 0; i < length(source(row1)); ++i)
111 std::cout << toViewPosition(row1, i) << " ";
112
113 std::cout << std::endl << "SourceToView2: ";
114 for (unsigned i = 0; i < length(source(row2)); ++i)
115 std::cout << toViewPosition(row2, i) << " ";
116 std::cout << std::endl;
117 //![clipping_positions]
118 std::cout << "//![output_clipping_positions]\n";
119
120 std::cout << "//![output_iteratingRowClipped]\n";
121 //![iteratingRowClipped]
122 typedef Iterator<TRow>::Type TRowIterator;
123 TRowIterator it = begin(row1),
124 itEnd = end(row1);
125 for (; it != itEnd; ++it)
126 {
127 TChar c = isGap(it) ? gapValue<TChar>() : *it;
128 std::cout << c << " ";
129 }
130 std::cout << std::endl;
131 //![iteratingRowClipped]
132 std::cout << "//![output_iteratingRowClipped]\n";
133
134 std::cout << "//![output_iteratingRowClipped2]\n";
135 //![iteratingRowClipped2]
136 clearClipping(row1);
137
138 it = begin(row1);
139 itEnd = end(row1);
140 for (; it != itEnd; ++it)
141 {
142 TChar c = isGap(it) ? gapValue<TChar>() : *it;
143 std::cout << c << " ";
144 }
145 std::cout << std::endl;
146 //![iteratingRowClipped2]
147 std::cout << "//![output_iteratingRowClipped2]\n";
148 //![return]
149 return 0;
150 }
151 //![return]
152