40 template <
typename search_configuration_t,
typename index_t,
typename query_index_t>
72 template <
typename configuration_t,
typename index_t,
typename... policies_t>
76 using type = lazy_conditional_t<template_specialisation_of<typename index_t::cursor_type, bi_fm_index_cursor>,
92 template <
typename configuration_t>
110 template <
typename configuration_t>
132 template <
typename configuration_t>
135 static_assert(detail::is_type_specialisation_of_v<configuration_t, configuration>,
136 "cfg must be a specialisation of seqan3::configuration.");
159 template <
typename query_t,
typename configuration_t,
typename index_t>
162 using query_index_t = std::tuple_element_t<0, query_t>;
165 using type_erased_algorithm_t =
std::function<void(query_t, callback_t)>;
168 return std::pair{configure_hit_strategy<type_erased_algorithm_t>(complete_config, index), complete_config};
171 template <
typename algorithm_t,
typename configuration_t,
typename index_t>
188 template <
typename algorithm_t,
typename configuration_t,
typename index_t>
191 using selected_algorithm_t =
197 return selected_algorithm_t{config, index};
221template <
typename algorithm_t,
typename configuration_t,
typename index_t>
225 auto next_config_step = [&](
auto new_cfg) -> algorithm_t
227 return select_and_return_algorithm<algorithm_t>(new_cfg, index);
231 if constexpr (configuration_t::template exists<search_cfg::hit>())
233 auto hit_variant = get<search_cfg::hit>(cfg).hit_variant;
235 if (std::holds_alternative<empty_type>(hit_variant))
237 "Please refer to the configuration documentation of the search algorithm for "
241 auto cfg_without_hit = cfg.template remove<search_cfg::hit>();
244 if (std::holds_alternative<search_cfg::hit_all_best>(hit_variant))
248 else if (std::holds_alternative<search_cfg::hit_single_best>(hit_variant))
252 else if (std::holds_alternative<search_cfg::hit_strata>(hit_variant))
254 return next_config_step(cfg_without_hit | std::get<search_cfg::hit_strata>(hit_variant));
262 "The hit strategy for the search algorithm was not configured. "
263 "Please refer to the configuration documentation of the search algorithm for more details.");
265 return next_config_step(cfg);
Class used to update the search configuration, e.g. add defaults.
Definition search_configurator.hpp:32
static auto add_default_output_configuration(configuration_t const &cfg)
Add seqan3::search_cfg::text_position to the configuration if seqan3::search_cfg::output was not set.
Definition search_configurator.hpp:111
static auto add_default_hit_configuration(configuration_t const &cfg)
Add seqan3::search_cfg::hit_all to the configuration if no search strategy (hit configuration) was ch...
Definition search_configurator.hpp:93
static auto add_defaults(configuration_t const &cfg)
Adds default configurations if they were not set by the user.
Definition search_configurator.hpp:133
static algorithm_t configure_hit_strategy(configuration_t const &, index_t const &)
Configures the algorithm with the correct hit strategy.
Definition search_configurator.hpp:222
static auto configure_algorithm(configuration_t const &cfg, index_t const &index)
Chooses the appropriate search algorithm depending on the index.
Definition search_configurator.hpp:160
static algorithm_t select_and_return_algorithm(configuration_t const &config, index_t const &index)
Select and return the configured search algorithm.
Definition search_configurator.hpp:189
The algorithm that performs a bidirectional search on a bidirectional FM index using (optimal) search...
Definition search_scheme_algorithm.hpp:34
The algorithm that performs a unidirectional search on an FM index using trivial backtracking.
Definition unidirectional_search_algorithm.hpp:42
Configuration element storing the configured seqan3::search_result for the search algorithm.
Definition result_type.hpp:42
Configuration element to receive all hits with the lowest number of errors within the error bounds.
Definition hit.hpp:56
Configuration element to receive all hits within the error bounds.
Definition hit.hpp:31
Configuration element to receive a single best hit with the lowest number of errors within the error ...
Definition hit.hpp:81
Include the query_id in the seqan3::search_result returned by a call to seqan3::search.
Definition search/configuration/output.hpp:28
Include the reference_begin_position in the seqan3::search_result returned by a call to seqan3::searc...
Definition search/configuration/output.hpp:78
Include the reference_id in the seqan3::search_result returned by a call to seqan3::search.
Definition search/configuration/output.hpp:53
The result class generated by the seqan3::seach algorithm.
Definition search_result.hpp:76
Provides the configuration to define the hit strategies "hit_strata", "hit_all", "hit_all_best",...
Provides lazy template instantiation traits.
Provides the configuration for maximum number of errors for all error types.
Provides a type that combines multiple invocables.
The internal SeqAn3 namespace.
Definition aligned_sequence_concept.hpp:26
Provides the seqan3::detail::policy_max_error.
Provides the seqan3::detail::policy_search_result_builder.
Provides seqan3::search_cfg::detail::result_type.
Provides the configuration for the content of the search result.
Provides seqan3::search_result.
Provides the algorithm to search in an index using search schemes.
An empty type whose only purpose is to hold an uninstantiated template plus its arguments.
Definition lazy_conditional.hpp:30
Provides the function max_error_counts if inherited by a search algorithm.
Definition policy_max_error.hpp:24
Provides the function make_results if inherited by a search algorithm.
Definition policy_search_result_builder.hpp:25
Selects the search algorithm based on the index type.
Definition search_configurator.hpp:74
lazy_conditional_t< template_specialisation_of< typename index_t::cursor_type, bi_fm_index_cursor >, lazy< search_scheme_algorithm, configuration_t, index_t, policies_t... >, lazy< unidirectional_search_algorithm, configuration_t, index_t, policies_t... > > type
The selected algorithm type based on the index.
Definition search_configurator.hpp:78
Select the search result based on the configuration and the index type.
Definition search_configurator.hpp:42
typename index_t::size_type index_size_type
The size type of the index.
Definition search_configurator.hpp:47
typename index_t::cursor_type index_cursor_type
The cursor type of the index.
Definition search_configurator.hpp:45
A collection of traits extracted from the search configuration.
Definition search_traits.hpp:31
Provides type traits for working with templates.
Provides an approximate string matching algorithm based on simple backtracking. This should only be u...