1 // ==========================================================================
2 //                 SeqAn - The Library for Sequence Analysis
3 // ==========================================================================
4 // Copyright (c) 2006-2010, Knut Reinert, FU Berlin
5 // All rights reserved.
6 //
7 // Redistribution and use in source and binary forms, with or without
8 // modification, are permitted provided that the following conditions are met:
9 //
10 //     * Redistributions of source code must retain the above copyright
11 //       notice, this list of conditions and the following disclaimer.
12 //     * Redistributions in binary form must reproduce the above copyright
13 //       notice, this list of conditions and the following disclaimer in the
14 //       documentation and/or other materials provided with the distribution.
15 //     * Neither the name of Knut Reinert or the FU Berlin nor the names of
16 //       its contributors may be used to endorse or promote products derived
17 //       from this software without specific prior written permission.
18 //
19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 // ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
23 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
25 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
26 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
29 // DAMAGE.
30 //
31 // ==========================================================================
32 
33 #ifndef SEQAN_HEADER_BASIC_TAG_H
34 #define SEQAN_HEADER_BASIC_TAG_H
35 
36 namespace SEQAN_NAMESPACE_MAIN
37 {
38 
39 
40 //////////////////////////////////////////////////////////////////////////////
41 
42 /**
43 .Tag.DotDrawing
44 ..summary:Switch to trigger drawing in dot format.
45 ..value.DotDrawing:Graphs in dot format.
46 ..include:seqan/basic.h
47 */
48 
49 struct DotDrawing_;
50 typedef Tag<DotDrawing_> const DotDrawing;
51 
52 
53 /**
54 .Tag.HammingDistance
55 ..summary:Switch to trigger Hamming distance, which is a measure of character substitutions.
56 ..include:seqan/basic.h
57 */
58 
59 /**
60 .Tag.LevenshteinDistance
61 ..summary:Switch to trigger Levenshtein distance, which is a measure of edit operations (character substitutions, deletions or insertions).
62 ..remarks:$EditDistance$ is a synonym for $LevenshteinDistance$.
63 ..see:Spec.EditDistance
64 ..include:seqan/basic.h
65 */
66 
67 struct HammingDistance_;
68 struct LevenshteinDistance_;
69 
70 typedef Tag<HammingDistance_>		HammingDistance;
71 typedef Tag<LevenshteinDistance_>	LevenshteinDistance;
72 typedef Tag<LevenshteinDistance_>	EditDistance;
73 
74 
75 //////////////////////////////////////////////////////////////////////////////
76 
77 
78 //////////////////////////////////////////////////////////////////////////////
79 // Alignment: Tags
80 //////////////////////////////////////////////////////////////////////////////
81 //Sollte eigentlich nach align/, aber da jetzt ja so viele
82 //alignment algorithmen in graph/ gelandet sind...
83 
84 /**
85 .Tag.Global Alignment Algorithms:
86 ..summary:Global alignment algorithm used by globalAlignment.
87 ..see:Function.globalAlignment
88 ..see:Tag.Local Alignment Algorithms
89 ..include:seqan/basic.h
90 */
91 
92 //////////////////////////////////////////////////////////////////////////////
93 
94 /**
95 .Tag.Global Alignment Algorithms.value.NeedlemanWunsch:
96 	Dynamic programming algorithm for alignments by Needleman and Wunsch.
97 ..include:seqan/basic.h
98 */
99 
100 struct NeedlemanWunsch_;
101 typedef Tag<NeedlemanWunsch_> NeedlemanWunsch;
102 
103 //////////////////////////////////////////////////////////////////////////////
104 
105 /**
106 .Tag.Global Alignment Algorithms.value.BandedNeedlemanWunsch:
107 	The Needleman-Wunsch alignment algorithm in a banded version.
108 ..include:seqan/basic.h
109 */
110 struct BandedNeedlemanWunsch_;
111 typedef Tag<BandedNeedlemanWunsch_> BandedNeedlemanWunsch;
112 
113 
114 //////////////////////////////////////////////////////////////////////////////
115 
116 /**
117 .Tag.Global Alignment Algorithms.value.Gotoh:
118 	Gotoh's affine gap cost alignment algorithm.
119 ..include:seqan/basic.h
120 */
121 struct Gotoh_;
122 typedef Tag<Gotoh_> Gotoh;
123 
124 //////////////////////////////////////////////////////////////////////////////
125 
126 /**
127 .Tag.Global Alignment Algorithms.value.BandedGotoh:
128 	Gotoh's affine gap cost alignment algorithm in a banded version.
129 ..include:seqan/basic.h
130 */
131 struct BandedGotoh_;
132 typedef Tag<BandedGotoh_> BandedGotoh;
133 
134 //////////////////////////////////////////////////////////////////////////////
135 
136 /**
137 .Tag.Global Alignment Algorithms.value.MyersBitVector:
138 	Myers' bit vector alignment algorithm for edit distance.
139 	Note that this algorithm does not returns the alignment itself, but only computes the score.
140 ..include:seqan/basic.h
141 */
142 struct MyersBitVector_;
143 typedef Tag<MyersBitVector_> const MyersBitVector;
144 
145 //////////////////////////////////////////////////////////////////////////////
146 
147 /**
148 .Tag.Global Alignment Algorithms.value.MyersHirschberg:
149 	Myers' bit vector algorithm for edit distance combined with Hirschberg's linear space alignment algorithm.
150 ..include:seqan/basic.h
151 */
152 struct MyersHirschberg_;
153 typedef Tag<MyersHirschberg_> const MyersHirschberg;
154 
155 //////////////////////////////////////////////////////////////////////////////
156 
157 /**
158 .Tag.Global Alignment Algorithms.value.Hirschberg:
159 	Hirschberg's linear space global alignment algorithm.
160 ..include:seqan/basic.h
161 */
162 struct Hirschberg_;
163 typedef Tag<Hirschberg_> const Hirschberg;
164 
165 //////////////////////////////////////////////////////////////////////////////
166 
167 /**
168 .Tag.Global Alignment Algorithms.value.Lcs:
169 	Longest common subsequence algorithm.
170 ..include:seqan/basic.h
171 */
172 struct Lcs_;
173 typedef Tag<Lcs_> const Lcs;
174 
175 //////////////////////////////////////////////////////////////////////////////
176 //////////////////////////////////////////////////////////////////////////////
177 
178 /**
179 .Tag.Local Alignment Algorithms:
180 ..summary:Local alignment algorithm used by localAlignment.
181 ..see:Function.localAlignment
182 ..include:seqan/basic.h
183 */
184 
185 //////////////////////////////////////////////////////////////////////////////
186 
187 /**
188 .Tag.Local Alignment Algorithms.value.SmithWaterman:
189 	Triggers a Smith Waterman local alignment algorithm.
190 ..include:seqan/basic.h
191 */
192 struct SmithWaterman_;
193 typedef Tag<SmithWaterman_> const SmithWaterman;
194 
195 //////////////////////////////////////////////////////////////////////////////
196 
197 /**
198 .Tag.Local Alignment Algorithms.value.BandedSmithWaterman:
199 	Triggers a banded version of the Smith Waterman local alignment algorithm.
200 ..include:seqan/basic.h
201 */
202 struct BandedSmithWaterman_;
203 typedef Tag<BandedSmithWaterman_> const BandedSmithWaterman;
204 
205 //////////////////////////////////////////////////////////////////////////////
206 
207 /**
208 .Tag.Local Alignment Algorithms.value.WatermanEggert:
209 	Local alignment algorithm by Waterman and Eggert with "declumping" (i.e. only non-overlapping local alignments are computed).
210 .Tag.Local Alignment Algorithms.value.SmithWatermanClump:
211 	Same as $WatermanEggert$.
212 ..include:seqan/basic.h
213 */
214 struct SmithWatermanClump_;
215 typedef Tag<SmithWatermanClump_> const SmithWatermanClump;
216 typedef Tag<SmithWatermanClump_> const WatermanEggert;
217 
218 //////////////////////////////////////////////////////////////////////////////
219 
220 /**
221 .Tag.Local Alignment Algorithms.value.BandedWatermanEggert:
222 	Triggers a banded version of the local alignment algorithm by Waterman and Eggert with "declumping".
223 .Tag.Local Alignment Algorithms.value.BandedSmithWatermanClump:
224 	Same as $BandedWatermanEggert$.
225 ..include:seqan/basic.h
226 */
227 struct BandedWatermanEggert_;
228 typedef Tag<BandedWatermanEggert_> const BandedSmithWatermanClump;
229 typedef Tag<BandedWatermanEggert_> const BandedWatermanEggert;
230 
231 //////////////////////////////////////////////////////////////////////////////
232 
233 /*DISABLED
234 .Tag.RNA Folding Algorithms.value.Nussinov:
235 	Nussinov style RNA folding algorithm
236 ..include:seqan/basic.h
237 */
238 struct Nussinov_;
239 typedef Tag<Nussinov_> const Nussinov;
240 
241 //////////////////////////////////////////////////////////////////////////////
242 
243 struct Blat_;
244 typedef Tag<Blat_> const Blat;
245 
246 
247 //////////////////////////////////////////////////////////////////////////////
248 
249 }// namespace SEQAN_NAMESPACE_MAIN
250 
251 #endif //#ifndef SEQAN_HEADER_...
252