Skip to content

Commit 5ac8cd9

Browse files
author
Arna Óskarsdóttir
committed
seqan folder: SeqAnHTS fork of seqan
1 parent 66a9526 commit 5ac8cd9

687 files changed

Lines changed: 315232 additions & 0 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

seqan/LICENSE

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
Copyright (c) 2006-2015, Knut Reinert, FU Berlin
2+
All rights reserved.
3+
4+
Redistribution and use in source and binary forms, with or without
5+
modification, are permitted provided that the following conditions are met:
6+
7+
* Redistributions of source code must retain the above copyright
8+
notice, this list of conditions and the following disclaimer.
9+
* Redistributions in binary form must reproduce the above copyright
10+
notice, this list of conditions and the following disclaimer in the
11+
documentation and/or other materials provided with the distribution.
12+
* Neither the name of Knut Reinert or the FU Berlin nor the names of
13+
its contributors may be used to endorse or promote products derived
14+
from this software without specific prior written permission.
15+
16+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19+
ARE DISCLAIMED. IN NO EVENT SHALL KNUT REINERT OR THE FU BERLIN BE LIABLE
20+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
23+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24+
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25+
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
26+
DAMAGE.
27+

seqan/align.h

Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,214 @@
1+
// ==========================================================================
2+
// SeqAn - The Library for Sequence Analysis
3+
// ==========================================================================
4+
// Copyright (c) 2006-2015, 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+
// Author: Manuel Holtgrewe <manuel.holtgrewe@fu-berlin.de>
33+
// ==========================================================================
34+
35+
#ifndef SEQAN_INCLUDE_SEQAN_ALIGN_H_
36+
#define SEQAN_INCLUDE_SEQAN_ALIGN_H_
37+
38+
// TODO(holtgrew): Usage of gapped value in align module is not consistent, need proxies in many places, reference not cleanly implemented everywhere yet.
39+
// TODO(holtgrew): The Author: tag at the top has to be corrected in the headers of this module.
40+
// TODO(holtgrew): Anchor Gaps must be integrated completely.
41+
// TODO(holtgrew): Local alignments & Fragments don't work nicely together at the moment, multiLocalAlignments() needs an equivalent in the new align module.
42+
// TODO(holtgrew): Align<>, AlignCol<> need some love and documentation.
43+
// TODO(holtgrew): Gaps need better documentation.
44+
// TODO(holtgrew): refinement should become graph_align and also host Graph<Alignment<>>
45+
// TODO(holtgrew): graph_msa should become align_msa, or so, see whitepaper.
46+
// TODO(holtgrew): The documentation and Tutorial need heavy updates, clipping alignments howto can go away.
47+
48+
// ============================================================================
49+
// Prerequisites
50+
// ============================================================================
51+
52+
#include <seqan/basic.h>
53+
#include <seqan/modifier.h> // ModifiedAlphabet<>.
54+
#include <seqan/align/align_metafunctions.h>
55+
#include <seqan/graph_align.h> // TODO(holtgrew): We should not have to depend on this.
56+
57+
// TODO(holtgrew): Why not use priority queue from STL?
58+
#include <seqan/misc/priority_type_base.h>
59+
#include <seqan/misc/priority_type_heap.h>
60+
61+
// ============================================================================
62+
// Support
63+
// ============================================================================
64+
65+
#include <seqan/align/gapped_value_type.h>
66+
#include <seqan/align/align_config.h>
67+
#include <seqan/align/align_traceback.h>
68+
#include <seqan/align/matrix_base.h>
69+
70+
// ============================================================================
71+
// Gaps & Gaps Iterator Data Structures
72+
// ============================================================================
73+
74+
#include <seqan/align/fragment.h>
75+
76+
#include <seqan/align/gaps_base.h>
77+
#include <seqan/align/gaps_iterator_base.h>
78+
79+
#include <seqan/align/gaps_array.h>
80+
#include <seqan/align/gaps_iterator_array.h>
81+
82+
#include <seqan/align/gap_anchor.h>
83+
#include <seqan/align/gaps_anchor.h>
84+
#include <seqan/align/gaps_iterator_anchor.h>
85+
86+
// ============================================================================
87+
// Alignment Data Structures and Columns
88+
// ============================================================================
89+
90+
#include <seqan/align/align_cols.h>
91+
#include <seqan/align/align_base.h>
92+
93+
// ============================================================================
94+
// Alignment Algorithm Implementations.
95+
// ============================================================================
96+
97+
//################################################################################
98+
// New module
99+
//################################################################################
100+
101+
// The tags have to be available everywhere so we define them centrally.
102+
#include <seqan/align/alignment_algorithm_tags.h>
103+
104+
// Defines all tags needed for the DP alignment.
105+
#include <seqan/align/dp_profile.h>
106+
107+
// The DP Band
108+
#include <seqan/align/dp_band.h>
109+
110+
// The DP Scout
111+
#include <seqan/align/dp_scout.h>
112+
113+
// Stores the score value of a particular cell in the dp matrix.
114+
// If affine gap costs are selected one cell stores the three values
115+
// for all three dp matrices.
116+
#include <seqan/align/dp_cell.h>
117+
#include <seqan/align/dp_cell_linear.h>
118+
#include <seqan/align/dp_cell_affine.h>
119+
#include <seqan/align/dp_cell_dynamic.h>
120+
121+
// Stores the actual trace segment that was detected during traceback.
122+
// The trace segments can be adapted into any alignment representation
123+
// form.
124+
#include <seqan/align/dp_trace_segment.h>
125+
#include <seqan/align/dp_traceback_adaptor.h>
126+
127+
// Implements the different recursion formula of the alignment algorithms.
128+
#include <seqan/align/dp_formula.h>
129+
#include <seqan/align/dp_formula_linear.h>
130+
#include <seqan/align/dp_formula_affine.h>
131+
#include <seqan/align/dp_formula_dynamic.h>
132+
133+
// Defines meta informations which determine how to compute a column and a
134+
// certain cell for different profiles.
135+
#include <seqan/align/dp_meta_info.h>
136+
137+
// Actual matrix to store the values. Uses the matrix_base.h definitions
138+
// as a host.
139+
#include <seqan/align/dp_matrix.h>
140+
#include <seqan/align/dp_matrix_sparse.h>
141+
142+
// The navigator that based on the selected profile and band chooses the
143+
// correct way to navigate through the matrix.
144+
#include <seqan/align/dp_matrix_navigator.h>
145+
#include <seqan/align/dp_matrix_navigator_score_matrix.h>
146+
#include <seqan/align/dp_matrix_navigator_score_matrix_sparse.h>
147+
#include <seqan/align/dp_matrix_navigator_trace_matrix.h>
148+
149+
// Ensures the backwards compatibility for the global interfaces of the
150+
// alignment algorithms. Based on the called function this selects the
151+
// correct parameters for the new alignment module.
152+
#include <seqan/align/dp_context.h>
153+
#include <seqan/align/dp_setup.h>
154+
155+
// The actual implementations of the traceback and the dynamic programming that
156+
// is used by all different alignment algorithms.
157+
#include <seqan/align/dp_traceback_impl.h>
158+
#include <seqan/align/dp_algorithm_impl.h>
159+
160+
//################################################################################
161+
// Old module
162+
//################################################################################
163+
164+
// Also, we have an implementation of Hirschberg's algorithm to compute
165+
// alignments.
166+
#include <seqan/align/global_alignment_hirschberg_impl.h>
167+
168+
// The implementations of Myers' bitvector algorithm for alignments can only
169+
// compute alignment scores. The combination of Hirschberg's and Myers'
170+
// algorithm is limited in the same way.
171+
#include <seqan/align/global_alignment_myers_impl.h>
172+
#include <seqan/align/global_alignment_myers_hirschberg_impl.h>
173+
174+
// Implementations of the local alignment algorithms with declumping. We also
175+
// use them for the localAlignment() calls and return the best local alignment
176+
// only.
177+
// TODO(rmaerker): Replace this with a new implementation based on the new alignment module.
178+
#include <seqan/align/local_alignment_waterman_eggert_impl.h>
179+
#include <seqan/align/local_alignment_banded_waterman_eggert_impl.h>
180+
181+
// We carry around this implementation of Smith-Waterman because it supports
182+
// aligning into fragment strings and alignment graphs. Eventually, it could
183+
// go away if Waterman-Eggert supports them.
184+
//#include <seqan/align/local_alignment_smith_waterman_impl.h>
185+
186+
// ============================================================================
187+
// Alignment Algorithm Interfaces
188+
// ============================================================================
189+
190+
// The front-end functions for global alignments.
191+
#include <seqan/align/global_alignment_unbanded.h>
192+
#include <seqan/align/global_alignment_banded.h>
193+
194+
// The front-end functions for local alignments.
195+
#include <seqan/align/local_alignment_unbanded.h>
196+
#include <seqan/align/local_alignment_banded.h>
197+
198+
// The front-end for enumeration of local alignments.
199+
#include <seqan/align/local_alignment_enumeration.h> // documentation
200+
#include <seqan/align/local_alignment_enumeration_unbanded.h>
201+
#include <seqan/align/local_alignment_enumeration_banded.h>
202+
203+
// The front-end functions for the more specialized alignment algorithms such as
204+
// Hirschberg, Myers and Myers-Hirschberg.
205+
#include <seqan/align/global_alignment_specialized.h>
206+
207+
// ============================================================================
208+
// Operations On Alignments
209+
// ============================================================================
210+
211+
#include <seqan/align/alignment_operations.h>
212+
#include <seqan/align/evaluate_alignment.h>
213+
214+
#endif // SEQAN_INCLUDE_SEQAN_ALIGN_H_

0 commit comments

Comments
 (0)