SeqAn3 3.1.0
The Modern C++ library for sequence analysis.
policy_scoring_scheme.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
13#pragma once
14
18
19namespace seqan3::detail
20{
21
33template <typename alignment_configuration_t, typename scoring_scheme_t>
34class policy_scoring_scheme
35{
36protected:
38 scoring_scheme_t scoring_scheme{};
39
43 policy_scoring_scheme() = default;
44 policy_scoring_scheme(policy_scoring_scheme const &) = default;
45 policy_scoring_scheme(policy_scoring_scheme &&) = default;
46 policy_scoring_scheme & operator=(policy_scoring_scheme const &) = default;
47 policy_scoring_scheme & operator=(policy_scoring_scheme &&) = default;
48 ~policy_scoring_scheme() = default;
49
53 explicit policy_scoring_scheme(alignment_configuration_t const & config) :
54 scoring_scheme{seqan3::get<align_cfg::scoring_scheme>(config).scheme}
55 {}
57
73 template <typename alphabet_t>
75 requires simd_concept<std::remove_cvref_t<alphabet_t>>
77 auto scoring_scheme_profile_column(alphabet_t && alphabet) const noexcept
78 {
79 return scoring_scheme.make_score_profile(std::forward<alphabet_t>(alphabet));
80 }
81
83 template <semialphabet alphabet_t>
84 alphabet_t scoring_scheme_profile_column(alphabet_t && alphabet) const noexcept
85 {
86 return std::forward<alphabet_t>(alphabet);
87 }
88};
89
90} // namespace seqan3::detail
Provides seqan3::align_cfg::scoring_scheme.
Provides seqan3::configuration and utility functions.
The generic alphabet concept that covers most data types used in ranges.
The main SeqAn3 namespace.
Definition: cigar_operation_table.hpp:2
constexpr auto const & get(configuration< configs_t... > const &config) noexcept
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: configuration.hpp:429
Provides seqan3::simd::simd_concept.