SeqAn3  3.0.3
The Modern C++ library for sequence analysis.
detail.hpp
Go to the documentation of this file.
1 // -----------------------------------------------------------------------------------------------------
2 // Copyright (c) 2006-2020, Knut Reinert & Freie Universität Berlin
3 // Copyright (c) 2016-2020, Knut Reinert & MPI für molekulare Genetik
4 // This file may be used, modified and/or redistributed under the terms of the 3-clause BSD-License
5 // shipped with this file and also available at: https://github.com/seqan/seqan3/blob/master/LICENSE.md
6 // -----------------------------------------------------------------------------------------------------
7 
13 #pragma once
14 
16 
17 namespace seqan3::detail
18 {
19 
23 enum struct align_config_id : uint8_t
24 {
25  band,
26  debug,
27  gap,
28  global,
29  local,
30  min_score,
31  on_result,
37  output_score,
38  parallel,
39  result_type,
40  score_type,
41  scoring,
42  vectorised,
43  SIZE
44 };
45 
46 // ----------------------------------------------------------------------------
47 // compatibility_table
48 // ----------------------------------------------------------------------------
49 
55 template <>
58 {
59  { //band
60  //| debug
61  //| | gap
62  //| | | global
63  //| | | | local
64  //| | | | | min_score
65  //| | | | | | on_result
66  //| | | | | | | output_alignment
67  //| | | | | | | | output_begin_position
68  //| | | | | | | | | output_end_position
69  //| | | | | | | | | | output_sequence1_id
70  //| | | | | | | | | | | output_sequence2_id
71  //| | | | | | | | | | | | output_score
72  //| | | | | | | | | | | | | parallel
73  //| | | | | | | | | | | | | | result_type
74  //| | | | | | | | | | | | | | | score_type
75  //| | | | | | | | | | | | | | | | scoring
76  //| | | | | | | | | | | | | | | | | vectorised
77  { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 0: band
78  { 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 1: debug
79  { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 2: gap
80  { 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 3: global
81  { 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 4: local
82  { 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 5: max_error
83  { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 6: on_result
84  { 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 7: output_alignment
85  { 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 8: output_begin_position
86  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1}, // 9: output_end_position
87  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1}, // 10: output_sequence1_id
88  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1}, // 11: output_sequence2_id
89  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1}, // 12: output_score
90  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1}, // 13: parallel
91  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1}, // 14: result_type
92  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1}, // 15: score_type
93  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1}, // 16: scoring
94  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0} // 17: vectorised
95  }
96 };
97 
98 } // namespace seqan3::detail
Provides various auxiliary functions with which parts of the configurations can be checked.
constexpr std::array< std::array< bool, static_cast< uint8_t >align_config_id::SIZE)>, static_cast< uint8_t >align_config_id::SIZE)> compatibility_table< align_config_id >
Declaration of algorithm specific compatibility table.
Definition: detail.hpp:58
align_config_id
An internal enum to check for a consistent configuration object.
Definition: detail.hpp:24
@ output_score
ID for the score output option.
@ output_sequence2_id
ID for the sequence2 id output option.
@ output_alignment
ID for the alignment output option.
@ on_result
ID for the on_result option.
@ parallel
ID for the parallel option.
@ band
ID for the band option.
@ output_end_position
ID for the end position output option.
@ SIZE
Represents the number of configuration elements.
@ output_sequence1_id
ID for the sequence1 id output option.
@ result_type
ID for the result_type option.
@ global
ID for the global alignment option.
@ output_begin_position
ID for the begin position output option.
@ debug
ID for the debug option.
@ min_score
ID for the min_score option.
@ vectorised
ID for the vectorised option.
@ gap
ID for the gap_cost_affine option.
@ scoring
ID for the scoring_scheme option.
@ score_type
ID for the score_type option.
@ local
ID for the local alignment option.
The internal SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29