Imported Upstream version 0.12.7
[bowtie.git] / SeqAn-1.1 / seqan / basic / basic_tag.h
1  /*==========================================================================
2                 SeqAn - The Library for Sequence Analysis
3                           http://www.seqan.de 
4  ============================================================================
5   Copyright (C) 2007
6
7   This library is free software; you can redistribute it and/or
8   modify it under the terms of the GNU Lesser General Public
9   License as published by the Free Software Foundation; either
10   version 3 of the License, or (at your option) any later version.
11
12   This library is distributed in the hope that it will be useful,
13   but WITHOUT ANY WARRANTY; without even the implied warranty of
14   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15   Lesser General Public License for more details.
16
17  ============================================================================
18   $Id: basic_tag.h,v 1.1 2008/08/25 16:20:01 langmead Exp $
19  ==========================================================================*/
20
21 #ifndef SEQAN_HEADER_BASIC_TAG_H
22 #define SEQAN_HEADER_BASIC_TAG_H
23
24 namespace SEQAN_NAMESPACE_MAIN
25 {
26
27
28 //////////////////////////////////////////////////////////////////////////////
29
30 /**
31 .Tag.DotDrawing
32 ..summary:Switch to trigger drawing in dot format.
33 ..value.DotDrawing:Graphs in dot format.
34 */
35
36 struct DotDrawing_;
37 typedef Tag<DotDrawing_> const DotDrawing;
38
39
40 /**
41 .Tag.HammingDistance
42 ..summary:Switch to trigger Hamming distance, which is a measure of character substitutions.
43 */
44
45 /**
46 .Tag.LevenshteinDistance
47 ..summary:Switch to trigger Levenshtein distance, which is a measure of edit operations (character substitutions, deletions or insertions).
48 */
49
50 struct _HammingDistance;
51 struct _LevenshteinDistance;
52
53 typedef Tag<_HammingDistance>           HammingDistance;
54 typedef Tag<_LevenshteinDistance>       LevenshteinDistance;
55 typedef Tag<_LevenshteinDistance>       EditDistance;
56
57
58 //////////////////////////////////////////////////////////////////////////////
59
60
61 //////////////////////////////////////////////////////////////////////////////
62 // Alignment: Tags
63 //////////////////////////////////////////////////////////////////////////////
64 //Sollte eigentlich nach align/, aber da jetzt ja so viele
65 //alignment algorithmen in graph/ gelandet sind...
66
67 /**
68 .Tag.Global Alignment Algorithms:
69 ..summary:Global alignment algorithm used by globalAlignment.
70 ..see:Function.globalAlignment
71 ..see:Tag.Local Alignment Algorithms
72 */
73
74 //////////////////////////////////////////////////////////////////////////////
75
76 /**
77 .Tag.Global Alignment Algorithms.value.NeedlemanWunsch:
78         Dynamic programming algorithm for alignments by Needleman and Wunsch.
79 */
80
81 struct NeedlemanWunsch_;
82 typedef Tag<NeedlemanWunsch_> const NeedlemanWunsch;
83
84 //////////////////////////////////////////////////////////////////////////////
85
86 /**
87 .Tag.Global Alignment Algorithms.value.Gotoh:
88         Gotoh's affine gap cost alignment algorithm.
89 */
90 struct Gotoh_;
91 typedef Tag<Gotoh_> const Gotoh;
92
93 //////////////////////////////////////////////////////////////////////////////
94
95 /**
96 .Tag.Global Alignment Algorithms.value.MyersBitVector:
97         Myers' bit vector alignment algorithm for edit distance.
98         Note that this algorithm does not returns the alignment itself, but only computes the score.
99 */
100 struct MyersBitVector_;
101 typedef Tag<MyersBitVector_> const MyersBitVector;
102
103 //////////////////////////////////////////////////////////////////////////////
104
105 /**
106 .Tag.Global Alignment Algorithms.value.MyersHirschberg:
107         Myers' bit vector algorithm for edit distance combined with Hirschberg's linear space alignment algorithm.
108 */
109 struct MyersHirschberg_;
110 typedef Tag<MyersHirschberg_> const MyersHirschberg;
111
112 //////////////////////////////////////////////////////////////////////////////
113
114 /**
115 .Tag.Global Alignment Algorithms.value.Hirschberg:
116         Hirschberg's linear space global alignment algorithm.
117 */
118 struct Hirschberg_;
119 typedef Tag<Hirschberg_> const Hirschberg;
120
121 //////////////////////////////////////////////////////////////////////////////
122 //////////////////////////////////////////////////////////////////////////////
123
124 /**
125 .Tag.Local Alignment Algorithms:
126 ..summary:Local alignment algorithm used by localAlignment.
127 ..see:Function.localAlignment
128 */
129
130 //////////////////////////////////////////////////////////////////////////////
131
132 /**
133 .Tag.Local Alignment Algorithms.value.SmithWaterman:
134         Triggers a Smith Waterman local alignment algorithm.
135 */
136 struct SmithWaterman_;
137 typedef Tag<SmithWaterman_> const SmithWaterman;
138
139 //////////////////////////////////////////////////////////////////////////////
140
141 /**
142 .Tag.Local Alignment Algorithms.value.SmithWatermanClump:
143         Local alignment algorithm with "declumping" by Waterman and Eggert.
144 */
145 struct SmithWatermanClump_;
146 typedef Tag<SmithWatermanClump_> const SmithWatermanClump;
147
148 //////////////////////////////////////////////////////////////////////////////
149
150 /**
151 .Tag.Local Alignment Algorithms.value.SmithWatermanIsland:
152         Local alignment algorithm finding all "islands".
153 */
154 struct SmithWatermanIsland_;
155 typedef Tag<SmithWatermanIsland_> const SmithWatermanIsland;
156
157 //////////////////////////////////////////////////////////////////////////////
158
159 /*DISABLED
160 .Tag.RNA Folding Algorithms.value.Nussinov:
161         Nussinov style RNA folding algorithm
162 */
163 struct Nussinov_;
164 typedef Tag<Nussinov_> const Nussinov;
165
166 //////////////////////////////////////////////////////////////////////////////
167
168
169 //////////////////////////////////////////////////////////////////////////////
170
171 }// namespace SEQAN_NAMESPACE_MAIN
172
173 #endif //#ifndef SEQAN_HEADER_...