SeqAn3  3.0.3
The Modern C++ library for sequence analysis.
seqan3::interleaved_bloom_filter< data_layout_mode_ >::membership_agent Class Reference

Manages membership queries for the seqan3::interleaved_bloom_filter. More...

#include <seqan3/search/dream_index/interleaved_bloom_filter.hpp>

Classes

class  binning_bitvector
 A bitvector representing the result of a call to bulk_contains of the seqan3::interleaved_bloom_filter. More...
 

Public Member Functions

Lookup
binning_bitvector const & bulk_contains (size_t const value) &noexcept
 Determines set membership of a given value. More...
 
binning_bitvector const & bulk_contains (size_t const value) &&noexcept=delete
 

Public Attributes

binning_bitvector result_buffer
 Stores the result of bulk_contains().
 

Constructors, destructor and assignment

 membership_agent ()=default
 Defaulted.
 
 membership_agent (membership_agent const &)=default
 Defaulted.
 
membership_agentoperator= (membership_agent const &)=default
 Defaulted.
 
 membership_agent (membership_agent &&)=default
 Defaulted.
 
membership_agentoperator= (membership_agent &&)=default
 Defaulted.
 
 ~membership_agent ()=default
 Defaulted.
 

Detailed Description

template<data_layout data_layout_mode_ = data_layout::uncompressed>
class seqan3::interleaved_bloom_filter< data_layout_mode_ >::membership_agent

Manages membership queries for the seqan3::interleaved_bloom_filter.

Attention
Calling seqan3::interleaved_bloom_filter::increase_bin_number_to on ibf invalidates the membership_agent.

Example

int main()
{
// Construct an Interleaved Bloom Filter to be used with the membership_agent.
// The membership_agent can now be constructed by calling `membership_agent` on the Interleaved Bloom Filter.
auto agent = ibf.membership_agent();
// Calling `increase_bin_number_to` invalidates the agent.
ibf.increase_bin_number_to(seqan3::bin_count{60u});
// So make sure to construct a new membership_agent.
agent = ibf.membership_agent();
}
The IBF binning directory. A data structure that efficiently answers set-membership queries for multi...
Definition: interleaved_bloom_filter.hpp:132
Provides seqan3::interleaved_bloom_filter.
A strong type that represents the number of bins for the seqan3::interleaved_bloom_filter.
Definition: interleaved_bloom_filter.hpp:38
A strong type that represents the number of bits for each bin in the seqan3::interleaved_bloom_filter...
Definition: interleaved_bloom_filter.hpp:44
A strong type that represents the number of hash functions for the seqan3::interleaved_bloom_filter.
Definition: interleaved_bloom_filter.hpp:50

Member Function Documentation

◆ bulk_contains()

template<data_layout data_layout_mode_ = data_layout::uncompressed>
binning_bitvector const& seqan3::interleaved_bloom_filter< data_layout_mode_ >::membership_agent::bulk_contains ( size_t const  value) &
inlinenoexcept

Determines set membership of a given value.

Parameters
[in]valueThe raw value to process.
Attention
The result of this function must always be bound via reference, e.g. auto &, to prevent copying.
Sequential calls to this function invalidate the previously returned reference.

Example

int main()
{
ibf.emplace(126, seqan3::bin_index{0u});
ibf.emplace(712, seqan3::bin_index{3u});
ibf.emplace(237, seqan3::bin_index{9u});
// Query the Interleaved Bloom Filter. Note that there may be false positive results!
// A `1` at position `i` indicates the (probable) presence of the query in bin `i`.
// Capture the result by reference to avoid copies.
auto agent = ibf.membership_agent();
auto & result = agent.bulk_contains(712);
seqan3::debug_stream << result << '\n'; // prints [0,0,0,1,0,0,0,0,0,0,0,0]
// Calling `increase_bin_number_to` invalidates the agent.
ibf.increase_bin_number_to(seqan3::bin_count{60u});
// So make sure to construct a new membership_agent.
agent = ibf.membership_agent();
}
Provides seqan3::debug_stream and related types.
debug_stream_type debug_stream
A global instance of seqan3::debug_stream_type.
Definition: debug_stream.hpp:42
A strong type that represents the bin index for the seqan3::interleaved_bloom_filter.
Definition: interleaved_bloom_filter.hpp:56

Thread safety

Concurrent invocations of this function are not thread safe, please create a seqan3::interleaved_bloom_filter::membership_agent for each thread.


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