SeqAn3  3.0.2
The Modern C++ library for sequence analysis.
seqan3::counting_vector< value_t > Class Template Reference

A data structure that behaves like a std::vector and can be used to consolidate the results of multiple calls to seqan3::interleaved_bloom_filter::membership_agent::bulk_contains. More...

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

+ Inheritance diagram for seqan3::counting_vector< value_t >:

Public Member Functions

assign (T... args)
 
at (T... args)
 
back (T... args)
 
begin (T... args)
 
capacity (T... args)
 
cbegin (T... args)
 
cend (T... args)
 
clear (T... args)
 
crbegin (T... args)
 
crend (T... args)
 
data (T... args)
 
emplace (T... args)
 
emplace_back (T... args)
 
empty (T... args)
 
end (T... args)
 
erase (T... args)
 
front (T... args)
 
get_allocator (T... args)
 
insert (T... args)
 
max_size (T... args)
 
template<typename rhs_t >
counting_vectoroperator+= (rhs_t const &rhs)
 Bin-wise adds the bits of a seqan3::interleaved_bloom_filter::membership_agent::binning_bitvector. More...
 
operator[] (T... args)
 
pop_back (T... args)
 
push_back (T... args)
 
rbegin (T... args)
 
rend (T... args)
 
reserve (T... args)
 
resize (T... args)
 
shrink_to_fit (T... args)
 
size (T... args)
 
swap (T... args)
 
Constructors, destructor and assignment
 counting_vector ()=default
 Defaulted.
 
 counting_vector (counting_vector const &)=default
 Defaulted.
 
counting_vectoroperator= (counting_vector const &)=default
 Defaulted.
 
 counting_vector (counting_vector &&)=default
 Defaulted.
 
counting_vectoroperator= (counting_vector &&)=default
 Defaulted.
 
 ~counting_vector ()=default
 Defaulted.
 

Detailed Description

template<std::integral value_t>
class seqan3::counting_vector< value_t >

A data structure that behaves like a std::vector and can be used to consolidate the results of multiple calls to seqan3::interleaved_bloom_filter::membership_agent::bulk_contains.

Template Parameters
value_tThe type of the count. Must model std::integral.

When using the seqan3::interleaved_bloom_filter::membership_agent::bulk_contains operation, a common use case is to add up, for example, the results for all k-mers in a query. This yields, for each bin, the number of k-mers of a query that are in the respective bin. Such information can be used to apply further filtering or abundance estimation based on the k-mer counts.

The seqan3::counting_vector offers an easy way to add up the individual seqan3::interleaved_bloom_filter::membership_agent::binning_bitvector by offering an += operator.

The value_t template parameter should be chosen in a way that no overflow occurs if all calls to bulk_contains return a hit for a specific bin. For example, uint8_t will suffice when processing short Illumina reads, whereas long reads will require at least uint32_t.

Example

int main()
{
ibf.emplace(126, seqan3::bin_index{0u});
ibf.emplace(126, seqan3::bin_index{3u});
ibf.emplace(126, seqan3::bin_index{9u});
ibf.emplace(712, seqan3::bin_index{3u});
ibf.emplace(237, seqan3::bin_index{9u});
// The counting_vector must be at least as big as there are bins.
auto agent = ibf.membership_agent();
counts += agent.bulk_contains(712); // `counts` contains the number of occurrences of 712 in each bin.
seqan3::debug_stream << counts << '\n'; // prints [0,0,0,1,0,0,0,0,0,0,0,0]
counts += agent.bulk_contains(237); // `counts` contains the number of occurrences of 712 and 237 in each bin.
seqan3::debug_stream << counts << '\n'; // prints [0,0,0,1,0,0,0,0,0,1,0,0]
counts += agent.bulk_contains(126); // `counts` contains the number of occurrences of 712, 237 and 126 in each bin.
seqan3::debug_stream << counts << '\n'; // prints [1,0,0,2,0,0,0,0,0,2,0,0]
}

Member Function Documentation

◆ operator+=()

template<std::integral value_t>
template<typename rhs_t >
counting_vector& seqan3::counting_vector< value_t >::operator+= ( rhs_t const &  rhs)
inline

Bin-wise adds the bits of a seqan3::interleaved_bloom_filter::membership_agent::binning_bitvector.

Template Parameters
rhs_tThe type of the right-hand side. Must be seqan3::interleaved_bloom_filter::membership_agent::binning_bitvector.
Parameters
rhsThe seqan3::interleaved_bloom_filter::membership_agent::binning_bitvector.
Attention
The counting_vector must be at least as big as rhs.

Example

int main()
{
ibf.emplace(126, seqan3::bin_index{0u});
ibf.emplace(126, seqan3::bin_index{3u});
ibf.emplace(126, seqan3::bin_index{9u});
ibf.emplace(712, seqan3::bin_index{3u});
ibf.emplace(237, seqan3::bin_index{9u});
// The counting_vector must be at least as big as there are bins.
auto agent = ibf.membership_agent();
counts += agent.bulk_contains(712); // `counts` contains the number of occurrences of 712 in each bin.
seqan3::debug_stream << counts << '\n'; // prints [0,0,0,1,0,0,0,0,0,0,0,0]
counts += agent.bulk_contains(237); // `counts` contains the number of occurrences of 712 and 237 in each bin.
seqan3::debug_stream << counts << '\n'; // prints [0,0,0,1,0,0,0,0,0,1,0,0]
counts += agent.bulk_contains(126); // `counts` contains the number of occurrences of 712, 237 and 126 in each bin.
seqan3::debug_stream << counts << '\n'; // prints [1,0,0,2,0,0,0,0,0,2,0,0]
}

The documentation for this class was generated from the following file:
debug_stream.hpp
Provides seqan3::debug_stream and related types.
seqan3::counting_vector
A data structure that behaves like a std::vector and can be used to consolidate the results of multip...
Definition: interleaved_bloom_filter.hpp:634
seqan3::interleaved_bloom_filter
The IBF binning directory. A data structure that efficiently answers set-membership queries for multi...
Definition: interleaved_bloom_filter.hpp:127
seqan3::bin_index
A strong type that represents the bin index for the seqan3::interleaved_bloom_filter.
Definition: interleaved_bloom_filter.hpp:55
seqan3::bin_count
A strong type that represents the number of bins for the seqan3::interleaved_bloom_filter.
Definition: interleaved_bloom_filter.hpp:37
seqan3::bin_size
A strong type that represents the number of bits for each bin in the seqan3::interleaved_bloom_filter...
Definition: interleaved_bloom_filter.hpp:43
seqan3::debug_stream
debug_stream_type debug_stream
A global instance of seqan3::debug_stream_type.
Definition: debug_stream.hpp:42
interleaved_bloom_filter.hpp
Provides seqan3::interleaved_bloom_filter.