|
SeqAn3 3.4.0-rc.4
The Modern C++ library for sequence analysis.
|
The algorithm that performs a bidirectional search on a bidirectional FM index using (optimal) search schemes. More...
#include <seqan3/search/detail/search_scheme_algorithm.hpp>
Inheritance diagram for seqan3::detail::search_scheme_algorithm< configuration_t, index_t, policies_t >:Public Member Functions | |
| template<tuple_like indexed_query_t, typename callback_t > requires (std::tuple_size_v<indexed_query_t> == 2) && std::ranges::forward_range<std::tuple_element_t<1, indexed_query_t>> && std::invocable<callback_t, search_result_type> | |
| void | operator() (indexed_query_t &&indexed_query, callback_t &&callback) |
| Searches a query sequence in a bidirectional index. | |
Constructors, destructor and assignment | |
| search_scheme_algorithm ()=default | |
| Defaulted. | |
| search_scheme_algorithm (search_scheme_algorithm const &)=default | |
| Defaulted. | |
| search_scheme_algorithm (search_scheme_algorithm &&)=default | |
| Defaulted. | |
| search_scheme_algorithm & | operator= (search_scheme_algorithm const &)=default |
| Defaulted. | |
| search_scheme_algorithm & | operator= (search_scheme_algorithm &&)=default |
| Defaulted. | |
| ~search_scheme_algorithm ()=default | |
| Defaulted. | |
| search_scheme_algorithm (configuration_t const &cfg, index_t const &index) | |
| Constructs from a configuration object and an index. | |
Private Types | |
| using | search_result_type = typename traits_t::search_result_type |
| The search result type. | |
| using | traits_t = search_traits< configuration_t > |
| The search configuration traits. | |
Private Member Functions | |
| template<typename query_t , typename delegate_t > | |
| void | perform_search_by_hit_strategy (std::vector< typename index_t::cursor_type > &internal_hits, query_t &query, search_param error_state, delegate_t const &on_hit_delegate) |
| Calls search_algo_bi depending on the search strategy (hit configuration) given in the configuration. | |
| template<bool abort_on_hit, typename query_t , typename delegate_t > requires (template_specialisation_of<typename index_t::cursor_type, bi_fm_index_cursor>) | |
| void | search_algo_bi (query_t &query, search_param const error_left, delegate_t &&delegate) |
| Searches a query sequence in a bidirectional index. | |
Private Attributes | |
| index_t const * | index_ptr {nullptr} |
| A pointer to the bidirectional fm index which is used to perform the bidirectional search. | |
| uint8_t | stratum {} |
| The stratum value if set. | |
The algorithm that performs a bidirectional search on a bidirectional FM index using (optimal) search schemes.
| configuration_t | The search configuration type. |
| index_t | The type of index; index_t::cursor_type must model seqan3::detail::template_specialisation_of a seqan3::bi_fm_index_cursor. |
|
inline |
Constructs from a configuration object and an index.
| configuration_t | The search configuration type. |
| index_t | The type of index; index_t::cursor_type must model seqan3::detail::template_specialisation_of a seqan3::bi_fm_index_cursor. |
| [in] | cfg | The configuration object that guides the search algorithm. |
| [in] | index | The index used in the algorithm. |
Initialises the stratum value from the configuration if it was set by the user.
|
inline |
Searches a query sequence in a bidirectional index.
| indexed_query_t | The type of the indexed query sequence; must model seqan3::tuple_like with exactly two elements and the second tuple element must model std::ranges::forward_range over the index's alphabet. |
| callback_t | The callback type to be invoked on a search result; must model std::invocable with the search result. |
| [in] | indexed_query | The indexed query sequence to be searched in the index. |
| [in] | callback | The callback to call on a search result. |
The indexed_query parameter is a pair of an index and a query which shall be searched in the index. The search result can then be identified by the index that was associated with the given query.
\(O(|query|^e)\) where \(e\) is the total number of maximum errors.
|
inlineprivate |
Calls search_algo_bi depending on the search strategy (hit configuration) given in the configuration.
| query_t | Must model std::ranges::input_range over the index's alphabet. |
| [in,out] | internal_hits | The result vector to be filled. |
| [in] | query | Query sequence to be searched with the cursor. |
| [in] | error_state | Number of errors for matching the query sequence. |
| [in] | on_hit_delegate | The function to be executed on every single (hit) result. |