SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
|
The SeqAn Bidirectional FM Index. More...
#include <seqan3/search/fm_index/bi_fm_index.hpp>
Public Types | |
Text types | |
using | alphabet_type = typename fm_index_type::alphabet_type |
The type of the underlying character of the indexed text. | |
using | size_type = typename sdsl_index_type::size_type |
Type for representing positions in the indexed text. | |
Cursor types | |
using | cursor_type = bi_fm_index_cursor< bi_fm_index > |
The type of the bidirectional cursor. | |
using | fwd_cursor_type = fm_index_cursor< fm_index_type > |
The type of the unidirectional cursor on the original text. | |
Public Member Functions | |
cursor_type | cursor () const noexcept |
Returns a seqan3::bi_fm_index_cursor on the index that can be used for searching. . | |
bool | empty () const noexcept |
Checks whether the index is empty. | |
fwd_cursor_type | fwd_cursor () const noexcept |
Returns a unidirectional seqan3::fm_index_cursor on the original text of the bidirectional index that can be used for searching. | |
bool | operator!= (bi_fm_index const &rhs) const noexcept |
Compares two indices. | |
bool | operator== (bi_fm_index const &rhs) const noexcept |
Compares two indices. | |
size_type | size () const noexcept |
Returns the length of the indexed text including sentinel characters. | |
Constructors, destructor and assignment | |
bi_fm_index ()=default | |
Defaulted. | |
bi_fm_index (bi_fm_index const &)=default | |
Defaulted. | |
bi_fm_index & | operator= (bi_fm_index const &)=default |
Defaulted. | |
bi_fm_index (bi_fm_index &&)=default | |
Defaulted. | |
bi_fm_index & | operator= (bi_fm_index &&)=default |
Defaulted. | |
~bi_fm_index ()=default | |
Defaulted. | |
template<std::ranges::range text_t> | |
bi_fm_index (text_t &&text) | |
Constructor that immediately constructs the index given a range. The range cannot be empty. | |
Static Public Attributes | |
static constexpr text_layout | text_layout_mode = text_layout_mode_ |
Indicates whether index is built over a collection. | |
Friends | |
template<typename bi_fm_index_t > | |
class | bi_fm_index_cursor |
The SeqAn Bidirectional FM Index.
alphabet_t | The alphabet type; must model seqan3::semialphabet. |
text_layout_mode_ | Indicates whether this index works on a text collection or a single text. See seqan3::text_layout. |
sdsl_index_type_ | The type of the underlying SDSL index, must model seqan3::detail::sdsl_index. |
The seqan3::bi_fm_index is a fast and space-efficient bidirectional string index to search strings and collections of strings. In general, we recommend to favour the seqan3::bi_fm_index over the unidirectional seqan3::fm_index if you want to allow multiple errors when searching.
Here is a short example on how to build an index and search a pattern using an cursor. Please note that there is a very powerful search module with a high-level interface seqan3::search that encapsulates the use of cursors.
Here is an example using a collection of strings (e.g. a genome with multiple chromosomes or a protein database):
|
inline |
Constructor that immediately constructs the index given a range. The range cannot be empty.
text_t | The type of range to construct from; must model std::ranges::bidirectional_range. |
[in] | text | The text to construct from. |
At least linear.
|
inlinenoexcept |
Returns a seqan3::bi_fm_index_cursor on the index that can be used for searching. .
Constant.
No-throw guarantee.
|
inlinenoexcept |
Checks whether the index is empty.
true
if the index is empty, false
otherwise.Constant.
No-throw guarantee.
|
inlinenoexcept |
Returns a unidirectional seqan3::fm_index_cursor on the original text of the bidirectional index that can be used for searching.
Constant.
No-throw guarantee.
|
inlinenoexcept |
Compares two indices.
true
if the indices are unequal, false otherwise.Linear.
No-throw guarantee.
|
inlinenoexcept |
Compares two indices.
true
if the indices are equal, false otherwise.Linear.
No-throw guarantee.
|
inlinenoexcept |
Returns the length of the indexed text including sentinel characters.
Constant.
No-throw guarantee.