SeqAn3  3.0.1
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  aligned_ends,
26  band,
27  debug,
28  gap,
29  global,
30  local,
31  max_error,
32  parallel,
33  result,
34  scoring,
35  vectorise,
36  SIZE
37 };
38 
39 // ----------------------------------------------------------------------------
40 // compatibility_table
41 // ----------------------------------------------------------------------------
42 
48 template <>
49 inline constexpr std::array<std::array<bool, static_cast<uint8_t>(align_config_id::SIZE)>,
50  static_cast<uint8_t>(align_config_id::SIZE)> compatibility_table<align_config_id>
51 {
52  { //0 1 2 3 4 5 6 7 8 9 10
53  { 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1}, // 0: aligned_ends
54  { 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1}, // 1: band
55  { 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1}, // 2: debug
56  { 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1}, // 3: gap
57  { 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1}, // 4: global
58  { 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1}, // 5: local
59  { 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1}, // 6: max_error
60  { 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1}, // 7: parallel
61  { 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1}, // 8: result
62  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1}, // 9: scoring
63  { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0} // 10: vectorise
64  }
65 };
66 
67 } // namespace seqan3::detail
seqan3::align_cfg::parallel
seqan3::detail::parallel_mode< std::integral_constant< detail::align_config_id, 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:40
seqan3::align_cfg::vectorise
constexpr detail::vectorise_tag vectorise
Enables the vectorised alignment computation if possible for the current configuration.
Definition: align_config_vectorise.hpp:55
std::array
configuration_utility.hpp
Provides functionality to access get function by enum values.