|
template<typename cell_t , typename score_t > |
constexpr void | check_score_of_cell ([[maybe_unused]] cell_t const ¤t_cell, [[maybe_unused]] alignment_algorithm_state< score_t > &state) const noexcept |
| Checks if a given cell is a new optimum in the alignment. More...
|
|
template<typename alignment_column_t , typename score_t > |
constexpr void | check_score_of_cells_in_last_column ([[maybe_unused]] alignment_column_t &&last_column, [[maybe_unused]] alignment_algorithm_state< score_t > &state) const noexcept |
| Checks all cells of the last alignment column for a new alignment optimum. More...
|
|
template<typename cell_t , typename score_t > |
constexpr void | check_score_of_last_cell ([[maybe_unused]] cell_t const &last_cell, [[maybe_unused]] alignment_algorithm_state< score_t > &state) const noexcept |
| Checks if the last cell of the alignment matrix is a new optimum in the alignment. More...
|
|
template<typename cell_t , typename score_t > |
constexpr void | check_score_of_last_row_cell ([[maybe_unused]] cell_t const &last_row_cell, [[maybe_unused]] alignment_algorithm_state< score_t > &state) const noexcept |
| Checks if a cell in the last row of the alignment matrix is a new optimum in the alignment. More...
|
|
template<std::ranges::forward_range sequence1_collection_t, std::ranges::forward_range sequence2_collection_t, arithmetic score_t> |
void | initialise_find_optimum_policy ([[maybe_unused]] sequence1_collection_t &&sequence1_collection, [[maybe_unused]] sequence2_collection_t &&sequence2_collection, [[maybe_unused]] score_t const padding_score) |
| Initialises the global alignment state for the current batch of sequences. More...
|
|
template<typename alignment_algorithm_t, simd::simd_concept simd_t>
class seqan3::detail::simd_find_optimum_policy< alignment_algorithm_t, simd_t >
The CRTP-policy to determine the optimum of the dynamic programming matrix.
- Template Parameters
-
This class determines the matrix wide optimum. The search space can be further refined using the traits_type
which configures the search space of the alignment matrix.
This class inherits from seqan3::detail::simd_global_alignment_state if it is a global alignment, otherwise it inherits from seqan3::detail::empty_type that is optimised away due to empty base class optimisation. The tracking behaviour for the optimum of the global alignment is slightly modified compared to the local alignment or free end gap computation. Specifically, instead of checking for a new optimal score the coordinates are checked. For the global alignment the cell which contains the optimum is already fixed (the sink of each matrix). To account for different sizes of the sequences a padding match score is used to always add match scores after the end of a smaller sequence has been reached. Accordingly, the target score will be mapped to a cell on the last row or last column of the global matrix. Note the dimensions of the global matrix is defined by the size of the longest sequence in collection 1 and 2 respectively. If the last cell of any of the contained matrices is projected to a cell on the last row (following the diagonal going through the sink of this particular matrix), then the column indices are tested to check if any sequence ends in this projected end point. Similarly, if the last cell is projected to a cell on the last column, then the row indices are compared. The found score as well as the indices are finally corrected to represent the original score and coordinates as if the sequence pair was computed in scalar mode.
template<typename alignment_algorithm_t , simd::simd_concept simd_t>
template<bool in_last_row, typename cell_t , typename score_t >
|
inlineconstexprprivatenoexcept |
Tests if the current row, respectively column, is part of a global alignment to track.
- Template Parameters
-
- Parameters
-
[in] | cell | The current cell to get the score and the coordinate from. |
[in,out] | state | The state with the current optimum to update. |
Checks for the last row if the current column coordinate matches any column coordinate stored in the mask for the last row, respectively for the last column if the current row coordinate matches any row coordinate stored in the mask for the last column.
template<typename alignment_algorithm_t , simd::simd_concept simd_t>
template<typename alignment_column_t , typename score_t >
|
inlineconstexprprotectednoexcept |
Checks all cells of the last alignment column for a new alignment optimum.
- Template Parameters
-
alignment_column_t | The type of an alignment column. |
score_t | The type of the optimal score. |
- Parameters
-
[in] | last_column | The last column of the alignment matrix. |
[in,out] | state | The state with the current optimum to update. |
This function resolves to a "NO-OP" function if the trait for searching the last column is set to std::false_type or if the trait for searching every cell is set to std::true_type.
template<typename alignment_algorithm_t , simd::simd_concept simd_t>
template<typename cell_t , typename score_t >
|
inlineconstexprprotectednoexcept |
Checks if the last cell of the alignment matrix is a new optimum in the alignment.
- Template Parameters
-
cell_t | The type of the last cell. |
score_t | The type of the score. |
- Parameters
-
[in] | last_cell | The last cell of the alignment matrix. |
[in,out] | state | The state with the current optimum to update. |
This function resolves to a "NO-OP" function if the last cell has been checked already as part of the last row, last column, or in case every cell was checked.
template<typename alignment_algorithm_t , simd::simd_concept simd_t>
template<typename cell_t , typename score_t >
|
inlineconstexprprotectednoexcept |
Checks if a cell in the last row of the alignment matrix is a new optimum in the alignment.
- Template Parameters
-
cell_t | The type of the alignment matrix cell. |
score_t | The type of the score. |
- Parameters
-
[in] | last_row_cell | The cell of the current column in the last row of the alignment matrix. |
[in,out] | state | The state with the current optimum to update. |
This function resolves to a "NO-OP" function if the trait for searching the last row is set to std::false_type or if the trait for searching every cell is set to std::true_type.
template<typename alignment_algorithm_t , simd::simd_concept simd_t>
template<std::ranges::forward_range sequence1_collection_t, std::ranges::forward_range sequence2_collection_t, arithmetic score_t>
Initialises the global alignment state for the current batch of sequences.
- Template Parameters
-
sequence1_collection_t | The type of the first collection; must model std::ranges::forward_range and the value type must model std::ranges::forward_range. |
sequence2_collection_t | The type of the second collection; must model std::ranges::forward_range and the value type must model std::ranges::forward_range. |
score_t | The type of the scoring scheme's padding score; must model seqan3::arithmetic. |
- Parameters
-
[in] | sequence1_collection | The first collection used for initialisation. |
[in] | sequence2_collection | The second collection used for initialisation. |
[in] | padding_score | The padding match score used for determining the resulting score offset. |