SeqAn3  3.2.0-rc.1
The Modern C++ library for sequence analysis.
align_config_method.hpp
Go to the documentation of this file.
1 // -----------------------------------------------------------------------------------------------------
2 // Copyright (c) 2006-2022, Knut Reinert & Freie Universität Berlin
3 // Copyright (c) 2016-2022, 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 
17 #pragma once
18 
23 
24 namespace seqan3::align_cfg
25 {
26 
45 {
46 public:
50  method_local() = default;
51  method_local(method_local const &) = default;
52  method_local(method_local &&) = default;
53  method_local & operator=(method_local const &) = default;
55  ~method_local() = default;
56 
58 
61  static constexpr seqan3::detail::align_config_id id{seqan3::detail::align_config_id::local};
62 };
63 
67 struct free_end_gaps_sequence1_leading : public seqan3::detail::strong_type<bool, free_end_gaps_sequence1_leading>
68 {
70  using base_t = seqan3::detail::strong_type<bool, free_end_gaps_sequence1_leading>;
71  using base_t::base_t; // Import the base class constructors
72 };
73 
77 struct free_end_gaps_sequence2_leading : public seqan3::detail::strong_type<bool, free_end_gaps_sequence2_leading>
78 {
80  using base_t = seqan3::detail::strong_type<bool, free_end_gaps_sequence2_leading>;
81  using base_t::base_t; // Import the base class constructors
82 };
83 
87 struct free_end_gaps_sequence1_trailing : public seqan3::detail::strong_type<bool, free_end_gaps_sequence1_trailing>
88 {
90  using base_t = seqan3::detail::strong_type<bool, free_end_gaps_sequence1_trailing>;
91  using base_t::base_t; // Import the base class constructors
92 };
93 
97 struct free_end_gaps_sequence2_trailing : public seqan3::detail::strong_type<bool, free_end_gaps_sequence2_trailing>
98 {
100  using base_t = seqan3::detail::strong_type<bool, free_end_gaps_sequence2_trailing>;
101  using base_t::base_t; // Import the base class constructors
102 };
103 
122 {
123 public:
127  method_global() = default;
128  method_global(method_global const &) = default;
129  method_global(method_global &&) = default;
130  method_global & operator=(method_global const &) = default;
132  ~method_global() = default;
133 
147  seqan3::align_cfg::free_end_gaps_sequence2_trailing free_sequence2_trailing) noexcept :
148  free_end_gaps_sequence1_leading{free_sequence1_leading.get()},
149  free_end_gaps_sequence2_leading{free_sequence2_leading.get()},
150  free_end_gaps_sequence1_trailing{free_sequence1_trailing.get()},
151  free_end_gaps_sequence2_trailing{free_sequence2_trailing.get()}
152  {}
154 
163 
166  static constexpr seqan3::detail::align_config_id id{seqan3::detail::align_config_id::global};
167 };
168 
169 } // namespace seqan3::align_cfg
Sets the global alignment method.
Definition: align_config_method.hpp:122
method_global()=default
Defaulted.
bool free_end_gaps_sequence1_trailing
If set to true, trailing gaps in sequence1 are not penalised when computing the optimal alignment.
Definition: align_config_method.hpp:160
bool free_end_gaps_sequence2_trailing
If set to true, trailing gaps in sequence2 are not penalised when computing the optimal alignment.
Definition: align_config_method.hpp:162
method_global(method_global const &)=default
Defaulted.
method_global & operator=(method_global &&)=default
Defaulted.
constexpr method_global(seqan3::align_cfg::free_end_gaps_sequence1_leading free_sequence1_leading, seqan3::align_cfg::free_end_gaps_sequence2_leading free_sequence2_leading, seqan3::align_cfg::free_end_gaps_sequence1_trailing free_sequence1_trailing, seqan3::align_cfg::free_end_gaps_sequence2_trailing free_sequence2_trailing) noexcept
Construct method_global with a specific free end gap configuration.
Definition: align_config_method.hpp:144
~method_global()=default
Defaulted.
method_global & operator=(method_global const &)=default
Defaulted.
method_global(method_global &&)=default
Defaulted.
Sets the local alignment method.
Definition: align_config_method.hpp:45
method_local & operator=(method_local &&)=default
Defaulted.
method_local(method_local const &)=default
Defaulted.
~method_local()=default
Defaulted.
method_local & operator=(method_local const &)=default
Defaulted.
method_local()=default
Defaulted.
method_local(method_local &&)=default
Defaulted.
Provides seqan3::detail::empty_type.
A special sub namespace for the alignment configurations.
Definition: align_config_band.hpp:25
Provides seqan3::pipeable_config_element.
Provides basic data structure for strong types.
A strong type representing free_end_gaps_sequence1_leading of the seqan3::align_cfg::method_global.
Definition: align_config_method.hpp:68
seqan3::detail::strong_type< bool, free_end_gaps_sequence1_leading > base_t
The type of the strong type base class.
Definition: align_config_method.hpp:70
A strong type representing free_end_gaps_sequence1_trailing of the seqan3::align_cfg::method_global.
Definition: align_config_method.hpp:88
seqan3::detail::strong_type< bool, free_end_gaps_sequence1_trailing > base_t
The type of the strong type base class.
Definition: align_config_method.hpp:90
A strong type representing free_end_gaps_sequence2_leading of the seqan3::align_cfg::method_global.
Definition: align_config_method.hpp:78
seqan3::detail::strong_type< bool, free_end_gaps_sequence2_leading > base_t
The type of the strong type base class.
Definition: align_config_method.hpp:80
A strong type representing free_end_gaps_sequence2_trailing of the seqan3::align_cfg::method_global.
Definition: align_config_method.hpp:98
seqan3::detail::strong_type< bool, free_end_gaps_sequence2_trailing > base_t
The type of the strong type base class.
Definition: align_config_method.hpp:100
Adds pipe interface to configuration elements.
Definition: pipeable_config_element.hpp:32