17namespace seqan3::detail
25template <
typename alignment_configuration_t>
26class policy_affine_gap_with_trace_recursion_banded :
27 protected policy_affine_gap_with_trace_recursion<alignment_configuration_t>
31 using base_t = policy_affine_gap_with_trace_recursion<alignment_configuration_t>;
33 using typename base_t::affine_cell_type;
34 using typename base_t::score_type;
35 using typename base_t::traits_type;
38 using base_t::gap_extension_score;
39 using base_t::gap_open_score;
44 policy_affine_gap_with_trace_recursion_banded() =
default;
46 policy_affine_gap_with_trace_recursion_banded(policy_affine_gap_with_trace_recursion_banded
const &) =
default;
48 policy_affine_gap_with_trace_recursion_banded(policy_affine_gap_with_trace_recursion_banded &&) =
default;
49 policy_affine_gap_with_trace_recursion_banded &
50 operator=(policy_affine_gap_with_trace_recursion_banded
const &) =
default;
51 policy_affine_gap_with_trace_recursion_banded &
52 operator=(policy_affine_gap_with_trace_recursion_banded &&) =
default;
53 ~policy_affine_gap_with_trace_recursion_banded() =
default;
56 explicit policy_affine_gap_with_trace_recursion_banded(alignment_configuration_t
const & config) : base_t{config}
61 template <
typename affine_cell_t>
62 affine_cell_type initialise_band_first_cell(score_type diagonal_score,
63 affine_cell_t previous_cell,
64 score_type
const sequence_score)
const noexcept
66 diagonal_score += sequence_score;
67 score_type horizontal_score = previous_cell.horizontal_score();
68 trace_directions best_trace{};
70 best_trace = previous_cell.horizontal_trace();
71 diagonal_score = (diagonal_score < horizontal_score)
73 : (best_trace |= trace_directions::diagonal, diagonal_score);
75 score_type from_optimal_score = diagonal_score + gap_open_score;
76 trace_directions next_horizontal_trace = trace_directions::left;
78 horizontal_score += gap_extension_score;
79 horizontal_score = (horizontal_score < from_optimal_score)
80 ? (next_horizontal_trace = trace_directions::left_open, from_optimal_score)
83 return {{diagonal_score, horizontal_score, from_optimal_score},
84 {best_trace, next_horizontal_trace, trace_directions::up_open}};
Provides seqan3::detail::policy_affine_gap_with_trace_recursion.