SeqAn3 3.1.0
The Modern C++ library for sequence analysis.
detail.hpp
Go to the documentation of this file.
1// -----------------------------------------------------------------------------------------------------
2// Copyright (c) 2006-2021, Knut Reinert & Freie Universität Berlin
3// Copyright (c) 2016-2021, 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
14#pragma once
15
17
18namespace seqan3::detail
19{
20
21// ----------------------------------------------------------------------------
22// search_config_id
23// ----------------------------------------------------------------------------
24
42enum struct search_config_id : uint8_t
43{
44 max_error_total,
45 max_error_substitution,
46 max_error_insertion,
47 max_error_deletion,
48 on_result,
49 output_query_id,
50 output_reference_id,
51 output_reference_begin_position,
52 output_index_cursor,
53 hit,
54 parallel,
55 result_type,
57 // ATTENTION: Must always be the last item; will be used to determine the number of ids.
58 SIZE
60};
61
62// ----------------------------------------------------------------------------
63// search_config_validation_matrix
64// ----------------------------------------------------------------------------
65
77template <>
78inline constexpr std::array<std::array<bool, static_cast<uint8_t>(search_config_id::SIZE)>,
79 static_cast<uint8_t>(search_config_id::SIZE)> compatibility_table<search_config_id> =
80{
81 {
82 // max_error_total,
83 // | max_error_substitution,
84 // | | max_error_insertion,
85 // | | | max_error_deletion,
86 // | | | | on_result,
87 // | | | | | output_query_id,
88 // | | | | | | output_reference_id,
89 // | | | | | | | output_reference_begin_position,
90 // | | | | | | | | output_index_cursor,
91 // | | | | | | | | | hit,
92 // | | | | | | | | | | parallel,
93 // | | | | | | | | | | | result_type
94 { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // max_error_total
95 { 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // max_error_substitution
96 { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // max_error_insertion
97 { 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1}, // max_error_deletion
98 { 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1}, // on_result
99 { 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1}, // output_query_id
100 { 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1}, // output_reference_id
101 { 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1}, // output_reference_begin_position
102 { 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1}, // output_index_cursor
103 { 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1}, // hit
104 { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1}, // parallel
105 { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0} // result_type
106 }
107};
108
109} // namespace seqan3::detail
Provides concepts for the configuration classes.
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:38
on_result(callback_t &&) -> on_result< std::decay_t< callback_t > >
Deduces the callback type from a forwarding constructor argument.