20 namespace seqan3::detail
37 template <
typename config_t,
typename traits_t>
38 class edit_distance_algorithm
44 constexpr edit_distance_algorithm() =
default;
45 constexpr edit_distance_algorithm(edit_distance_algorithm
const &) =
default;
46 constexpr edit_distance_algorithm(edit_distance_algorithm &&) =
default;
47 constexpr edit_distance_algorithm & operator=(edit_distance_algorithm
const &) =
default;
48 constexpr edit_distance_algorithm & operator=(edit_distance_algorithm &&) =
default;
49 ~edit_distance_algorithm() =
default;
62 constexpr edit_distance_algorithm(config_t
const & cfg) : cfg_ptr{
new config_t(cfg)}
79 template <indexed_sequence_pair_range indexed_sequence_pairs_t>
80 constexpr
auto operator()(indexed_sequence_pairs_t && indexed_sequence_pairs)
82 using indexed_sequence_pair_t = std::ranges::range_value_t<indexed_sequence_pairs_t>;
83 using sequence_pair_t = std::tuple_element_t<0, indexed_sequence_pair_t>;
86 using alignment_result_value_t =
typename align_result_selector<sequence1_t, sequence2_t, config_t>::type;
91 for (
auto && [sequence_pair, index] : indexed_sequence_pairs)
92 result_vector.
push_back(compute_single_pair(index, get<0>(sequence_pair), get<1>(sequence_pair)));
107 template <std::ranges::forward_range first_range_t, std::ranges::forward_range second_range_t>
108 constexpr
auto compute_single_pair(
size_t const idx, first_range_t && first_range, second_range_t && second_range)
110 using edit_traits = default_edit_distance_trait_type<first_range_t,
113 typename traits_t::is_semi_global_type>;
114 edit_distance_unbanded algo{first_range, second_range, *cfg_ptr, edit_traits{}};