SeqAn3  3.0.3
The Modern C++ library for sequence analysis.
align_result_selector.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 
15 #include <optional>
16 #include <seqan3/std/ranges>
17 #include <type_traits>
18 
34 
35 namespace seqan3::detail
36 {
43 template <std::ranges::forward_range first_range_t,
44  std::ranges::forward_range second_range_t,
45  typename configuration_t>
47  requires is_type_specialisation_of_v<std::remove_cvref_t<configuration_t>, configuration>
50 {
51 private:
56  std::remove_reference_t<configuration_t>>::original_score_type;
80  first_range_t &,
81  second_range_t &>,
83 
88 
93 
99 
100 public:
110 };
111 
112 } // namespace seqan3::detail
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 seqan3::detail::alignment_coordinate.
Represents the begin/end of the pairwise alignment in the respective sequences.
Definition: alignment_coordinate.hpp:341
A two dimensional matrix used inside of alignment algorithms.
Definition: two_dimensional_matrix.hpp:65
Provides seqan3::configuration and utility functions.
Provides various transformation traits used by the range module.
Provides type traits for working with templates.
Provides seqan3::gap_decorator.
Provides seqan3::gapped.
@ column
Accesses matrix in column major order.
Provides lazy template instantiation traits.
The internal SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
Adaptations of concepts from the Ranges TS.
Helper metafunction to select the alignment result type based on the configuration.
Definition: align_result_selector.hpp:50
std::conditional_t< traits_type::output_sequence1_id, uint32_t, disabled_type > configured_sequence1_id_type
The configured sequence id type for the first sequence if selected.
Definition: align_result_selector.hpp:85
typename lazy_conditional_t< traits_type::compute_sequence_alignment, lazy< make_pairwise_alignment_type, first_range_t &, second_range_t & >, std::type_identity< disabled_type > >::type configured_alignment_type
The configured alignment type if selected.
Definition: align_result_selector.hpp:82
std::conditional_t< traits_type::compute_end_positions, alignment_coordinate, disabled_type > configured_end_position_type
The configured end position type if selected.
Definition: align_result_selector.hpp:72
std::conditional_t< traits_type::compute_begin_positions, alignment_coordinate, disabled_type > configured_begin_position_type
The configured begin position type if selected.
Definition: align_result_selector.hpp:76
typename alignment_configuration_traits< std::remove_reference_t< configuration_t > >::original_score_type score_type
The user configured score type.
Definition: align_result_selector.hpp:56
two_dimensional_matrix< std::optional< trace_directions >, std::allocator< std::optional< trace_directions > >, matrix_major_order::column > debug_trace_matrix_type
Trace matrix type in debug mode.
Definition: align_result_selector.hpp:66
alignment_result_value_type< configured_sequence1_id_type, configured_sequence2_id_type, configured_score_type, configured_end_position_type, configured_begin_position_type, configured_alignment_type, configured_debug_score_matrix_type, configured_debug_trace_matrix_type > type
The selected result type.
Definition: align_result_selector.hpp:109
std::conditional_t< traits_type::output_sequence2_id, uint32_t, disabled_type > configured_sequence2_id_type
The configured sequence id type for the second sequence if selected.
Definition: align_result_selector.hpp:87
std::conditional_t< traits_type::compute_score, score_type, disabled_type > configured_score_type
The configured score type if selected.
Definition: align_result_selector.hpp:68
std::conditional_t< traits_type::is_debug, debug_score_matrix_type, disabled_type > configured_debug_score_matrix_type
The debug score matrix type if selected.
Definition: align_result_selector.hpp:92
two_dimensional_matrix< std::optional< score_type >, std::allocator< std::optional< score_type > >, matrix_major_order::column > debug_score_matrix_type
Score matrix type in debug mode.
Definition: align_result_selector.hpp:62
A traits type for the alignment algorithm that exposes static information stored within the alignment...
Definition: type_traits.hpp:87
static constexpr bool compute_sequence_alignment
Flag indicating whether the sequence alignment shall be computed.
Definition: type_traits.hpp:174
static constexpr bool compute_begin_positions
Flag indicating whether the begin positions shall be computed.
Definition: type_traits.hpp:171
static constexpr bool is_debug
Flag indicating whether debug mode is enabled.
Definition: type_traits.hpp:132
static constexpr bool compute_end_positions
Flag indicating whether the end positions shall be computed.
Definition: type_traits.hpp:168
A struct that contains the actual alignment result data.
Definition: alignment_result.hpp:55
An empty type whose only purpose is to hold an uninstantiated template plus its arguments.
Definition: lazy_conditional.hpp:36
A transformation trait that returns the correct pairwise alignment type for two given sequence types.
Definition: aligned_sequence_builder.hpp:80
Provides the declaration of seqan3::detail::trace_directions.
Provides seqan3::detail::two_dimensional_matrix.
Provides seqan3::views::type_reduce.
Provides various type traits on generic types.
Provides seqan3::detail::transformation_trait_or.