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