SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
align_result_selector.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
12#include <optional>
13#include <ranges>
14#include <type_traits>
15
30
31namespace seqan3::detail
32{
39template <std::ranges::forward_range first_range_t, std::ranges::forward_range second_range_t, typename configuration_t>
40 requires is_type_specialisation_of_v<std::remove_cvref_t<configuration_t>, configuration>
41struct align_result_selector
42{
43private:
45 using traits_type = alignment_configuration_traits<configuration_t>;
47 using score_type =
48 typename alignment_configuration_traits<std::remove_reference_t<configuration_t>>::original_score_type;
50 using disabled_type = std::nullopt_t *;
52 using debug_score_matrix_type = two_dimensional_matrix<std::optional<score_type>,
54 matrix_major_order::column>;
56 using debug_trace_matrix_type = two_dimensional_matrix<std::optional<trace_directions>,
58 matrix_major_order::column>;
62 using configured_end_position_type = std::conditional_t<traits_type::compute_end_positions,
63 seqan3::detail::advanceable_alignment_coordinate<>,
64 disabled_type>;
66 using configured_begin_position_type = std::conditional_t<traits_type::compute_begin_positions,
67 seqan3::detail::advanceable_alignment_coordinate<>,
68 disabled_type>;
70 using configured_alignment_type =
71 typename lazy_conditional_t<traits_type::compute_sequence_alignment,
72 lazy<make_pairwise_alignment_type, first_range_t &, second_range_t &>,
74
79
81 using configured_debug_score_matrix_type =
83
85 using configured_debug_trace_matrix_type =
86 std::conditional_t<traits_type::is_debug && traits_type::compute_sequence_alignment,
87 debug_trace_matrix_type,
88 disabled_type>;
89
90public:
92 using type = alignment_result_value_type<configured_sequence1_id_type,
93 configured_sequence2_id_type,
94 configured_score_type,
95 configured_end_position_type,
96 configured_begin_position_type,
97 configured_alignment_type,
98 configured_debug_score_matrix_type,
99 configured_debug_trace_matrix_type>;
100};
101
102} // namespace seqan3::detail
Provides seqan3::detail::advanceable_alignment_coordinate.
Provides seqan3::align_cfg::detail::debug.
Provides seqan3::detail::aligned_sequence_builder.
Provides helper type traits for the configuration and execution of the alignment algorithm.
Provides various type traits on generic types.
Provides seqan3::configuration and utility functions.
Provides various transformation traits used by the range module.
Provides seqan3::gap_decorator.
Provides seqan3::gapped.
Provides lazy template instantiation traits.
Provides type traits for working with templates.
Provides the declaration of seqan3::detail::trace_directions.
Provides seqan3::detail::transformation_trait_or.
Provides seqan3::detail::two_dimensional_matrix.
Hide me