SeqAn3 3.2.0-rc.1
The Modern C++ library for sequence analysis.
align_result_selector.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
15#include <optional>
16#include <seqan3/std/ranges>
17#include <type_traits>
18
33
34namespace seqan3::detail
35{
42template <std::ranges::forward_range first_range_t, std::ranges::forward_range second_range_t, typename configuration_t>
43 requires is_type_specialisation_of_v<std::remove_cvref_t<configuration_t>, configuration>
45{
46private:
50 using score_type =
74 typename lazy_conditional_t<traits_type::compute_sequence_alignment,
77
82
86
92
93public:
103};
104
105} // 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.
Implements an internal alignment coordinate that can be used as an argument to the std::ranges::iota_...
Definition: advanceable_alignment_coordinate.hpp:66
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 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
The <ranges> header from C++20's standard library.
Helper metafunction to select the alignment result type based on the configuration.
Definition: align_result_selector.hpp:45
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:79
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: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:51
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:61
std::conditional_t< traits_type::compute_begin_positions, seqan3::detail::advanceable_alignment_coordinate<>, disabled_type > configured_begin_position_type
The configured begin position type if selected.
Definition: align_result_selector.hpp:71
std::conditional_t< traits_type::compute_end_positions, seqan3::detail::advanceable_alignment_coordinate<>, disabled_type > configured_end_position_type
The configured end position type if selected.
Definition: align_result_selector.hpp:67
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:102
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:81
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:63
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:85
A traits type for the alignment algorithm that exposes static information stored within the alignment...
Definition: type_traits.hpp:83
static constexpr bool compute_sequence_alignment
Flag indicating whether the sequence alignment shall be computed.
Definition: type_traits.hpp:165
static constexpr bool compute_begin_positions
Flag indicating whether the begin positions shall be computed.
Definition: type_traits.hpp:162
static constexpr bool is_debug
Flag indicating whether debug mode is enabled.
Definition: type_traits.hpp:125
static constexpr bool compute_end_positions
Flag indicating whether the end positions shall be computed.
Definition: type_traits.hpp:160
A struct that contains the actual alignment result data.
Definition: alignment_result.hpp:51
An empty type whose only purpose is to hold an uninstantiated template plus its arguments.
Definition: lazy_conditional.hpp:33
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.