44 template <std::ranges::input_range score_matrix_t, std::ranges::input_range trace_matrix_t>
46 requires (std::ranges::input_range<std::ranges::range_reference_t<score_matrix_t>> &&
47 std::ranges::input_range<std::ranges::range_reference_t<trace_matrix_t>>)
59 score_matrix_t score_matrix{};
61 trace_matrix_t trace_matrix{};
96 template <std::
integral column_index_t, std::
integral row_index_t>
101 score_matrix_t tmp_score_matrix{};
102 tmp_score_matrix.resize(column_count, row_count, initial_score);
104 trace_matrix_t tmp_trace_matrix{};
105 tmp_trace_matrix.resize(column_count, row_count);
107 score_matrix =
std::move(tmp_score_matrix);
108 trace_matrix =
std::move(tmp_trace_matrix);
117 return iterator{score_matrix.begin(), trace_matrix.begin()};
126 return sentinel{score_matrix.end()};
141 auto trace_path(matrix_coordinate
const & from_coordinate)
const
143 return trace_matrix.trace_path(from_coordinate);
158 template <std::ranges::input_range score_matrix_t, std::ranges::input_range trace_matrix_t>
160 requires (std::ranges::input_range<std::ranges::range_reference_t<score_matrix_t>> &&
161 std::ranges::input_range<std::ranges::range_reference_t<trace_matrix_t>>)
171 static_assert(std::ranges::viewable_range<score_matrix_reference_type>);
172 static_assert(std::ranges::viewable_range<trace_matrix_reference_type>);
176 std::declval<trace_matrix_reference_type>()));
183 template <std::ranges::input_range other_score_matrix_t, std::ranges::input_range other_trace_matrix_t>
185 requires (std::ranges::input_range<std::ranges::range_reference_t<other_score_matrix_t>> &&
186 std::ranges::input_range<std::ranges::range_reference_t<other_trace_matrix_t>>)
191 static constexpr auto transform_to_combined_matrix_cell =
std::views::
transform([] (auto && tpl)
194 using fwd_tuple_t = decltype(tpl);
208 using value_type = decltype(std::declval<combined_column_type>() | transform_to_combined_matrix_cell);
236 score_matrix_it{
std::move(score_matrix_it)},
237 trace_matrix_it{
std::move(trace_matrix_it)}
247 return views::zip(*score_matrix_it, *trace_matrix_it) | transform_to_combined_matrix_cell;
277 template <std::ranges::input_range score_matrix_t, std::ranges::input_range trace_matrix_t>
279 requires (std::ranges::input_range<std::ranges::range_reference_t<score_matrix_t>> &&
280 std::ranges::input_range<std::ranges::range_reference_t<trace_matrix_t>>)
307 score_matrix_sentinel{
std::move(score_matrix_sentinel)}
317 return rhs.equal(lhs);
329 return !(lhs == rhs);
335 return !(lhs == rhs);
351 return iter.score_matrix_it == score_matrix_sentinel;
Provides seqan3::detail::affine_cell_proxy.
A proxy for an affine score matrix cell.
Definition: affine_cell_proxy.hpp:122
Combined score and trace matrix iterator for the pairwise sequence alignment.
Definition: combined_score_and_trace_matrix.hpp:164
void operator++(int)
Advance the iterator to the next alignment matrix column.
Definition: combined_score_and_trace_matrix.hpp:263
iterator(iterator const &)=default
Defaulted.
std::ranges::iterator_t< trace_matrix_t > trace_matrix_iter_type
The type of the trace matrix iterator.
Definition: combined_score_and_trace_matrix.hpp:180
value_type reference
The reference type.
Definition: combined_score_and_trace_matrix.hpp:210
iterator & operator=(iterator &&)=default
Defaulted.
reference operator*() const
Returns the range over the current column.
Definition: combined_score_and_trace_matrix.hpp:245
void pointer
The pointer type.
Definition: combined_score_and_trace_matrix.hpp:212
std::ranges::range_reference_t< score_matrix_t > score_matrix_reference_type
The reference type of the score matrix.
Definition: combined_score_and_trace_matrix.hpp:167
iterator(iterator &&)=default
Defaulted.
iterator()=default
Defaulted.
iterator & operator++()
Advance the iterator to the next alignment matrix column.
Definition: combined_score_and_trace_matrix.hpp:255
decltype(std::declval< combined_column_type >()|transform_to_combined_matrix_cell) value_type
The value type.
Definition: combined_score_and_trace_matrix.hpp:208
score_matrix_iter_type score_matrix_it
The current iterator over the score matrix.
Definition: combined_score_and_trace_matrix.hpp:199
std::ranges::iterator_t< score_matrix_t > score_matrix_iter_type
The type of the score matrix iterator.
Definition: combined_score_and_trace_matrix.hpp:178
iterator(score_matrix_iter_type score_matrix_it, trace_matrix_iter_type trace_matrix_it) noexcept
Initialises the iterator from the underlying matrix.
Definition: combined_score_and_trace_matrix.hpp:234
std::ranges::range_reference_t< trace_matrix_t > trace_matrix_reference_type
The reference type of the trace matrix.
Definition: combined_score_and_trace_matrix.hpp:169
~iterator()=default
Defaulted.
iterator & operator=(iterator const &)=default
Defaulted.
trace_matrix_iter_type trace_matrix_it
The current iterator over the trace matrix.
Definition: combined_score_and_trace_matrix.hpp:201
decltype(views::zip(std::declval< score_matrix_reference_type >(), std::declval< trace_matrix_reference_type >())) combined_column_type
The combined column type.
Definition: combined_score_and_trace_matrix.hpp:176
The sentinel type for the seqan3::detail::combined_score_and_trace_matrix.
Definition: combined_score_and_trace_matrix.hpp:283
friend bool operator==(iterator const &lhs, sentinel const &rhs) noexcept
Checks if the iterator reached the end of the matrix.
Definition: combined_score_and_trace_matrix.hpp:315
friend bool operator!=(iterator const &lhs, sentinel const &rhs) noexcept
Checks if the iterator did not reach the end of the matrix.
Definition: combined_score_and_trace_matrix.hpp:327
~sentinel()=default
Defaulted.
sentinel & operator=(sentinel const &)=default
Defaulted.
constexpr bool equal(iterator const &iter) const noexcept
Compares the stored score matrix sentinel with the given iterator.
Definition: combined_score_and_trace_matrix.hpp:349
friend bool operator!=(sentinel const &lhs, iterator const &rhs) noexcept
Checks if the iterator did not reach the end of the matrix.
Definition: combined_score_and_trace_matrix.hpp:333
sentinel(sentinel &&)=default
Defaulted.
friend bool operator==(sentinel const &lhs, iterator const &rhs) noexcept
Checks if the iterator reached the end of the matrix.
Definition: combined_score_and_trace_matrix.hpp:321
sentinel & operator=(sentinel &&)=default
Defaulted.
sentinel(sentinel const &)=default
Defaulted.
sentinel(score_matrix_sentinel_type score_matrix_sentinel) noexcept
Initialises the sentinel from the underlying matrix.
Definition: combined_score_and_trace_matrix.hpp:306
std::ranges::sentinel_t< score_matrix_t > score_matrix_sentinel_type
The sentinel type of the underlying score matrix.
Definition: combined_score_and_trace_matrix.hpp:286
sentinel()=default
Defaulted.
An alignment matrix that combines a score matrix with a trace matrix into a common interface.
Definition: combined_score_and_trace_matrix.hpp:50
sentinel end() const =delete
This alignment matrix is not const-iterable.
auto trace_path(matrix_coordinate const &from_coordinate) const
Returns a trace path starting from the given coordinate and ending in the cell with seqan3::detail::t...
Definition: combined_score_and_trace_matrix.hpp:141
combined_score_and_trace_matrix & operator=(combined_score_and_trace_matrix const &)=default
Defaulted.
void resize(column_index_type< column_index_t > const column_count, row_index_type< row_index_t > const row_count, score_type const initial_score=score_type{})
Resizes the matrix.
Definition: combined_score_and_trace_matrix.hpp:97
~combined_score_and_trace_matrix()=default
Defaulted.
combined_score_and_trace_matrix()=default
Defaulted.
combined_score_and_trace_matrix(combined_score_and_trace_matrix &&)=default
Defaulted.
iterator begin()
Returns the iterator pointing to the first alignment column.
Definition: combined_score_and_trace_matrix.hpp:115
combined_score_and_trace_matrix & operator=(combined_score_and_trace_matrix &&)=default
Defaulted.
combined_score_and_trace_matrix(combined_score_and_trace_matrix const &)=default
Defaulted.
iterator begin() const =delete
This score matrix is not const-iterable.
sentinel end()
Returns the sentinel pointing behind the last alignment column.
Definition: combined_score_and_trace_matrix.hpp:124
Provides various transformation traits used by the range module.
Provides concepts for core language types and relations that don't have concepts in C++20 (yet).
decltype(detail::transform< trait_t >(list_t{})) transform
Apply a transformation trait to every type in the list and return a seqan3::type_list of the results.
Definition: traits.hpp:434
auto const move
A view that turns lvalue-references into rvalue-references.
Definition: move.hpp:70
Provides seqan3::detail::alignment_coordinate and associated strong types.
The internal SeqAn3 namespace.
Definition: aligned_sequence_concept.hpp:29
SeqAn specific customisations in the standard namespace.
Adaptations of concepts from the Ranges TS.
A strong type for designated initialisation of the column index of a matrix.
Definition: matrix_coordinate.hpp:34
A strong type for designated initialisation of the row index of a matrix.
Definition: matrix_coordinate.hpp:65
Provides seqan3::views::zip.