SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
seqan3::detail::find_optimum_policy< alignment_algorithm_t > Class Template Reference

The CRTP-policy to determine the optimum of the dynamic programming matrix. More...

#include <seqan3/alignment/pairwise/policy/find_optimum_policy.hpp>

Protected Member Functions

template<typename cell_t , typename score_t >
constexpr void check_and_update (cell_t const &cell, alignment_algorithm_state< score_t > &state) const noexcept
 Tests if the score in the current cell is greater than the current alignment optimum.
 
template<typename cell_t , typename score_t >
constexpr void check_score_of_cell (cell_t const &current_cell, alignment_algorithm_state< score_t > &state) const noexcept
 Checks if a given cell is a new optimum in the alignment.
 
template<typename alignment_column_t , typename score_t >
constexpr void check_score_of_cells_in_last_column (alignment_column_t &&last_column, alignment_algorithm_state< score_t > &state) const noexcept
 Checks all cells of the last alignment column for a new alignment optimum.
 
template<typename cell_t , typename score_t >
constexpr void check_score_of_last_cell (cell_t const &last_cell, alignment_algorithm_state< score_t > &state) const noexcept
 Checks if the last cell of the alignment matrix is a new optimum in the alignment.
 
template<typename cell_t , typename score_t >
constexpr void check_score_of_last_row_cell (cell_t const &last_row_cell, 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.
 

Private Member Functions

Constructors, destructor and assignment
constexpr find_optimum_policy ()=default
 Defaulted.
 
constexpr find_optimum_policy (find_optimum_policy const &)=default
 Defaulted.
 
constexpr find_optimum_policy (find_optimum_policy &&)=default
 Defaulted.
 
constexpr find_optimum_policyoperator= (find_optimum_policy const &)=default
 Defaulted.
 
constexpr find_optimum_policyoperator= (find_optimum_policy &&)=default
 Defaulted.
 
 ~find_optimum_policy ()=default
 Defaulted.
 
template<typename configuration_t >
 find_optimum_policy (configuration_t const &config)
 Initialises the policy with the configuration.
 

Private Attributes

friend alignment_algorithm_t
 Befriends the derived class to grant it access to the private members.
 
bool test_every_cell {false}
 Whether every cell of the alignment matrix shall be tracked.
 
bool test_last_column_cell {false}
 Whether cells of the last column shall be tracked.
 
bool test_last_row_cell {false}
 Whether cells of the last row shall be tracked.
 

Friends

template<typename other_alignment_algorithm_t >
class affine_gap_init_policy
 Allow seqan3::detail::affine_gap_init_policy to access check_score.
 
template<typename other_alignment_algorithm_t , typename score_t , typename is_local_t >
class affine_gap_policy
 Allow seqan3::detail::affine_gap_policy to access check_score.
 
template<typename other_alignment_algorithm_t , simd_concept score_t, typename is_local_t >
class simd_affine_gap_policy
 

Detailed Description

template<typename alignment_algorithm_t>
class seqan3::detail::find_optimum_policy< alignment_algorithm_t >

The CRTP-policy to determine the optimum of the dynamic programming matrix.

Template Parameters
alignment_algorithm_tThe derived type (seqan3::detail::alignment_algorithm) to be augmented with this CRTP-policy.

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.

Member Function Documentation

◆ check_and_update()

template<typename alignment_algorithm_t >
template<typename cell_t , typename score_t >
constexpr void seqan3::detail::find_optimum_policy< alignment_algorithm_t >::check_and_update ( cell_t const &  cell,
alignment_algorithm_state< score_t > &  state 
) const
inlineconstexprprotectednoexcept

Tests if the score in the current cell is greater than the current alignment optimum.

Template Parameters
cell_tThe type of the alignment matrix cell. The cell type corresponds to the value type of the range returned by seqan3::detail::alignment_matrix_policy::current_alignment_column.
score_tThe alignment algorithm score type.
Parameters
[in]cellThe current cell to get the score and the coordinate from.
[in,out]stateThe state with the current optimum to update.

◆ check_score_of_cell()

template<typename alignment_algorithm_t >
template<typename cell_t , typename score_t >
constexpr void seqan3::detail::find_optimum_policy< alignment_algorithm_t >::check_score_of_cell ( cell_t const &  current_cell,
alignment_algorithm_state< score_t > &  state 
) const
inlineconstexprprotectednoexcept

Checks if a given cell is a new optimum in the alignment.

Template Parameters
cell_tThe type of the alignment matrix cell.
score_tThe type of the score.
Parameters
[in]current_cellThe currently computed alignment matrix cell.
[in,out]stateThe state with the current optimum to update.

This function resolves to a "NO-OP" function if the trait for searching every cell is set to std::false_type.

◆ check_score_of_cells_in_last_column()

template<typename alignment_algorithm_t >
template<typename alignment_column_t , typename score_t >
constexpr void seqan3::detail::find_optimum_policy< alignment_algorithm_t >::check_score_of_cells_in_last_column ( alignment_column_t &&  last_column,
alignment_algorithm_state< score_t > &  state 
) const
inlineconstexprprotectednoexcept

Checks all cells of the last alignment column for a new alignment optimum.

Template Parameters
alignment_column_tThe type of an alignment column.
score_tThe type of the optimal score.
Parameters
[in]last_columnThe last column of the alignment matrix.
[in,out]stateThe 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.

◆ check_score_of_last_cell()

template<typename alignment_algorithm_t >
template<typename cell_t , typename score_t >
constexpr void seqan3::detail::find_optimum_policy< alignment_algorithm_t >::check_score_of_last_cell ( cell_t const &  last_cell,
alignment_algorithm_state< score_t > &  state 
) const
inlineconstexprprotectednoexcept

Checks if the last cell of the alignment matrix is a new optimum in the alignment.

Template Parameters
cell_tThe type of the last cell.
score_tThe type of the score.
Parameters
[in]last_cellThe last cell of the alignment matrix.
[in,out]stateThe 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.

◆ check_score_of_last_row_cell()

template<typename alignment_algorithm_t >
template<typename cell_t , typename score_t >
constexpr void seqan3::detail::find_optimum_policy< alignment_algorithm_t >::check_score_of_last_row_cell ( cell_t const &  last_row_cell,
alignment_algorithm_state< score_t > &  state 
) const
inlineconstexprprotectednoexcept

Checks if a cell in the last row of the alignment matrix is a new optimum in the alignment.

Template Parameters
cell_tThe type of the alignment matrix cell.
score_tThe type of the score.
Parameters
[in]last_row_cellThe cell of the current column in the last row of the alignment matrix.
[in,out]stateThe 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.


The documentation for this class was generated from the following file:
Hide me