BitMagic-C++
Public Types | Public Member Functions | Protected Member Functions
DNA_FingerprintScanner Class Reference

Utility for keeping all DNA finger print vectors and search using various techniques. More...

Public Types

enum  {
  eA = 0 , eC , eG , eT ,
  eN , eEnd
}
 
enum  {
  eA = 0 , eC , eG , eT ,
  eN , eEnd
}
 

Public Member Functions

 DNA_FingerprintScanner ()
 
void Build (const vector< char > &sequence)
 Build fingerprint bit-vectors from the original sequence. More...
 
const bm::bvectorGetVector (char letter) const
 Return fingerprint bit-vector. More...
 
void Find (const string &word, vector< unsigned > &res)
 Find word strings using shift + and on fingerprint vectors (horizontal, non-fused basic method) More...
 
void FindAggFused (const string &word, vector< unsigned > &res)
 This method uses cache blocked aggregator with fused SHIFT+AND kernel. More...
 
void FindCollection (const vector< tuple< string, int > > &words, vector< vector< unsigned >> &hits)
 Find a set of words in one pass using pipeline of aggregators (this is very experimental) More...
 
 DNA_FingerprintScanner ()
 
void Build (const vector< char > &sequence)
 Build fingerprint bit-vectors from the original sequence. More...
 
void BuildBulk (const vector< char > &sequence)
 Build index using bulk insert iterator. More...
 
void BuildParallel (const vector< char > &sequence, unsigned threads)
 Build fingerprint bit-vectors using bulk insert iterator and parallel processing. More...
 
void MergeVector (char letter, bm::bvector<> &bv)
 Thread sync bit-vector merge. More...
 
const bm::bvectorGetVector (char letter) const
 Return fingerprint bit-vector. More...
 

Protected Member Functions

void TranslateResults (const bm::bvector<> &bv, unsigned left_shift, vector< unsigned > &res)
 Translate search results vector using (word size) left shift. More...
 

Detailed Description

Utility for keeping all DNA finger print vectors and search using various techniques.

Examples
xsample04.cpp, xsample04a.cpp, and xsample07.cpp.

Definition at line 180 of file xsample04.cpp.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
eA 
eC 
eG 
eT 
eN 
eEnd 

Definition at line 183 of file xsample04.cpp.

◆ anonymous enum

anonymous enum
Enumerator
eA 
eC 
eG 
eT 
eN 
eEnd 

Definition at line 154 of file xsample04a.cpp.

Member Function Documentation

◆ Build() [1/2]

void DNA_FingerprintScanner::Build ( const vector< char > &  sequence)
inline

Build fingerprint bit-vectors from the original sequence.

Examples
xsample04.cpp, and xsample04a.cpp.

Definition at line 189 of file xsample04.cpp.

References bm::BM_SORTED, eA, eC, eG, eN, and eT.

Referenced by main().

◆ Build() [2/2]

void DNA_FingerprintScanner::Build ( const vector< char > &  sequence)
inline

Build fingerprint bit-vectors from the original sequence.

Definition at line 160 of file xsample04a.cpp.

References eA, eC, eG, eN, eT, and bm::bvector< Alloc >::inserter().

◆ BuildBulk()

void DNA_FingerprintScanner::BuildBulk ( const vector< char > &  sequence)
inline

Build index using bulk insert iterator.

Examples
xsample04a.cpp.

Definition at line 196 of file xsample04a.cpp.

References bm::BM_SORTED, eA, eC, eG, eN, and eT.

Referenced by BuildParallel().

◆ BuildParallel()

void DNA_FingerprintScanner::BuildParallel ( const vector< char > &  sequence,
unsigned  threads 
)
inline

Build fingerprint bit-vectors using bulk insert iterator and parallel processing.

Examples
xsample04a.cpp, and xsample07.cpp.

Definition at line 234 of file xsample04a.cpp.

References bm::BM_SORTED, BuildBulk(), bm::bvector< Alloc >::bulk_insert_iterator::flush(), and MergeVector().

Referenced by main().

◆ Find()

void DNA_FingerprintScanner::Find ( const string &  word,
vector< unsigned > &  res 
)
inline

Find word strings using shift + and on fingerprint vectors (horizontal, non-fused basic method)

Examples
xsample04.cpp.

Definition at line 250 of file xsample04.cpp.

References bm::bvector< Alloc >::any(), GetVector(), bm::bvector< Alloc >::shift_right(), and TranslateResults().

Referenced by main().

◆ FindAggFused()

void DNA_FingerprintScanner::FindAggFused ( const string &  word,
vector< unsigned > &  res 
)
inline

This method uses cache blocked aggregator with fused SHIFT+AND kernel.

Examples
xsample04.cpp.

Definition at line 277 of file xsample04.cpp.

References bm::aggregator< BV >::add(), bm::aggregator< BV >::combine_shift_right_and(), GetVector(), bm::aggregator< BV >::reset(), and TranslateResults().

Referenced by main().

◆ FindCollection()

void DNA_FingerprintScanner::FindCollection ( const vector< tuple< string, int > > &  words,
vector< vector< unsigned >> &  hits 
)
inline

Find a set of words in one pass using pipeline of aggregators (this is very experimental)

Examples
xsample04.cpp.

Definition at line 302 of file xsample04.cpp.

References bm::aggregator_pipeline_execute(), bm::aggregator< bm::bvector<> >::BM_SHIFT_R_AND, bm::aggregator< BV >::get_target(), GetVector(), and TranslateResults().

Referenced by main().

◆ GetVector() [1/2]

const bm::bvector& DNA_FingerprintScanner::GetVector ( char  letter) const
inline

Return fingerprint bit-vector.

Examples
xsample04.cpp, and xsample04a.cpp.

Definition at line 226 of file xsample04.cpp.

References eA, eC, eG, eN, and eT.

Referenced by Find(), FindAggFused(), FindCollection(), and fingerprint_compare().

◆ GetVector() [2/2]

const bm::bvector& DNA_FingerprintScanner::GetVector ( char  letter) const
inline

Return fingerprint bit-vector.

Definition at line 371 of file xsample04a.cpp.

References eA, eC, eG, eN, and eT.

◆ MergeVector()

void DNA_FingerprintScanner::MergeVector ( char  letter,
bm::bvector<> &  bv 
)
inline

Thread sync bit-vector merge.

Examples
xsample04a.cpp.

Definition at line 324 of file xsample04a.cpp.

References eA, eC, eG, eN, eT, and bm::bvector< Alloc >::merge().

Referenced by BuildParallel().

◆ TranslateResults()

void DNA_FingerprintScanner::TranslateResults ( const bm::bvector<> &  bv,
unsigned  left_shift,
vector< unsigned > &  res 
)
inlineprotected

Translate search results vector using (word size) left shift.

Examples
xsample04.cpp.

Definition at line 344 of file xsample04.cpp.

References bm::bvector< Alloc >::first(), and bm::bvector< Alloc >::iterator_base::valid().

Referenced by Find(), FindAggFused(), and FindCollection().


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