SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
alignment/configuration/detail.hpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2006-2024 Knut Reinert & Freie Universität Berlin
2// SPDX-FileCopyrightText: 2016-2024 Knut Reinert & MPI für molekulare Genetik
3// SPDX-License-Identifier: BSD-3-Clause
4
10#pragma once
11
13
14namespace seqan3::detail
15{
16
20enum struct align_config_id : uint8_t
21{
22 band,
23 debug,
24 gap,
25 global,
26 local,
27 min_score,
28 on_result,
29 output_alignment,
30 output_begin_position,
31 output_end_position,
32 output_sequence1_id,
33 output_sequence2_id,
34 output_score,
35 parallel,
36 result_type,
37 score_type,
38 scoring,
39 vectorised,
40 SIZE
41};
42
43// ----------------------------------------------------------------------------
44// compatibility_table
45// ----------------------------------------------------------------------------
46
52template <>
53inline constexpr std::array<std::array<bool, static_cast<uint8_t>(align_config_id::SIZE)>,
54 static_cast<uint8_t>(align_config_id::SIZE)>
55 compatibility_table<align_config_id>{{
56 //band
57 //| debug
58 //| | gap
59 //| | | global
60 //| | | | local
61 //| | | | | min_score
62 //| | | | | | on_result
63 //| | | | | | | output_alignment
64 //| | | | | | | | output_begin_position
65 //| | | | | | | | | output_end_position
66 //| | | | | | | | | | output_sequence1_id
67 //| | | | | | | | | | | output_sequence2_id
68 //| | | | | | | | | | | | output_score
69 //| | | | | | | | | | | | | parallel
70 //| | | | | | | | | | | | | | result_type
71 //| | | | | | | | | | | | | | | score_type
72 //| | | | | | | | | | | | | | | | scoring
73 //| | | | | | | | | | | | | | | | | vectorised
74 {0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 0: band
75 {1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 1: debug
76 {1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 2: gap
77 {1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 3: global
78 {1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 4: local
79 {1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 5: max_error
80 {1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 6: on_result
81 {1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 7: output_alignment
82 {1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 8: output_begin_position
83 {1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1}, // 9: output_end_position
84 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1}, // 10: output_sequence1_id
85 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1}, // 11: output_sequence2_id
86 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1}, // 12: output_score
87 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1}, // 13: parallel
88 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1}, // 14: result_type
89 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1}, // 15: score_type
90 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1}, // 16: scoring
91 {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0} // 17: vectorised
92 }};
93
94} // namespace seqan3::detail
Provides concepts for the configuration classes.
seqan3::detail::debug_mode< std::integral_constant< seqan3::detail::align_config_id, seqan3::detail::align_config_id::debug > > debug
Configuration element for debugging the alignment algorithm.
Definition align_config_debug.hpp:32
seqan3::detail::parallel_mode< std::integral_constant< seqan3::detail::align_config_id, seqan3::detail::align_config_id::parallel > > parallel
Enables the parallel execution of the alignment algorithm if possible for the given configuration.
Definition align_config_parallel.hpp:35
on_result(callback_t &&) -> on_result< std::decay_t< callback_t > >
Deduces the callback type from a forwarding constructor argument.
Hide me