BitMagic Library samples

Bit-vector operations

./bvsample01 - basic operations to set/get bits with bvector<> container, find cardinality (bit count)
./bvsample02 - set algebra operations, unions, intersections, equivalence of sets, lexicographical comparison
               find_first_mismatch()

./bvsample03 - use of different in-memory bitset compression options, calculate memory footprint
./bvsample04 - serialization of bvector<> to save compressed BLOB to a file or a database
./bvsample05 - use of bvector<>::enumerator - fast iterator to decode bit-vector into indexes of 1 bits
./bvsample06 - allocator example
./bvsample07 - Example how to use logical operations between arrays and bit vectors
./bvsample08 - STL interoperability and set operations with iterators
./bvsample09 - simple binary distance functions and pipeline for complex binary distance formulas
./bvsample10 - extraction of a random subset for Monte Carlo simulations
./bvsample11 - how to compute population counts for ranges in bit-vector (count_range(), count_to(), count_and())
./bvsample12 - review and comparison of different methods to set and clear bits 
./bvsample14 - serialization of bvector<>, logical operations on compressed BLOBs
./bvsample15 - bvector<>::find, search for first and last set bit, dynamic range detection
./bvsample16 - bm::aggregator<> - utility class for fast logical operations on bvector<> groups
               Tech.note: http://bitmagic.io/aggregator.html
./bvsample17 - rank-select operations on bvector<> using rs_index
./bvsample18 - bvector<>::bulk_insert_iterator (efficient bit-vector construction)
./bvsample18a - Import of bvector<> from an external bit-steam ("bmbvimport.h")
./bvsample19 - bvector<>::merge - merge of bit-vectors (can be used for partitioned processing)
./bvsample20 - bvector<>::shift_right() and bvector<>::insert() - bit-shifting / insertion sample
./bvsample21 - bvector<>::shift_left() and bvector<>::erase() - bit-shifting / bit delete sample

./bvsample22 - algorithms for ranges, intervals (bmintervals.h) and bvector<>::find_reverse()
./bvsample23 - bm::interval_enumerator<> - iterator for interval traversal of bit-vector (bmintervals.h) 
./bvsample24 - bm::rank_range_split(..) algorithm to split bit-vector into equal rank(weight) ranges



./bvsetalgebra - Tutorial for Algebra of Sets operations
Tutorial: http://bitmagic.io/set-algebra.html

./bv3vlogic  - Demo for three-valued logic (Kleene) implemented on bit-vectors.


./bvsample01_64 - basic operations with 64-bit bit-vectors, shows how to initialize and compile 
                  BitMagic classes using 48-bit address space.






Sparse vector (bit-transposed vector) for scalar integer types.


./svsample01 - basic example of sparse_vector<> container
./svsample02 - sparse_vector<> serialization example, also shows how to turn on 
               XOR compression (for more details: http://bitmagic.io/bm-xor.html)
./svsample03 - sparse_vector<> import, join, extract methods
./svsample04 - sparse_vector<> operations with NULL-able vectors and values
./svsample05 - set transformation algorithm (image) to translate one set to another
               using memory-efficient bit-transposed sparse_vector as a translation function
               Tech.note: http://bitmagic.io/set2set-assoc-remap-opt.html
./svsample06 - load data and search for value(s) in sparse_vector. This sample illustrates back insert 
               iterator, const_iterator and bm::sparse_vector_scanner<> search class 
	       Benchmark different search/scan methods.
	       Tech.note: http://bitmagic.io/sparse-vector-search.html
./svsample07 - insertion sort using bm::sparse_vector_scanner<>::lower_bound()
./svsample08 - sparse_vector<> deserialization to extract specific elements and ranges.
               Example illustrates how to add bookmarks to the serialized BLOB for faster 
               range deserialization
./svsample09 - bm::sparse_vector_find_first_mismatch

RSC sparse vector (Succinct vector based on Rank-Select methods) for scalar integer types


./rscsample01 - basics of rsc_sparse_vector<> container. Load, unload, serialize.
./rscsample02 - back insert iterator for rsc_sparse_vector<> container. 
                Gather and range deserialization of a rank-select compressed container.
./rscsample03 - how to use rsc_sparse_vector<>::const_iterator 
./rscsample04 - how to construct rsc_sparse_vector<> with a list of known NOT NULL elements and
                randomly set() and inc() them in fast rank-select index mode
./rscsample05 - How to serialize a group of sparse vectors (data frame) using XOR compression
                See also: http://bitmagic.io/bm-xor.html
                

String sparse vector (bit-transposed vector) for ASCII(z) strings


./strsvsample01 - basic example of str_sparse_vector<> container, add values, optimize, iterate
./strsvsample02 - insertion sort using str_sparse_vector<> and sparse_vector_scanner<>::lower_bound_str()
./strsvsample03 - str_sparse_vector<>::back_insert_iterator is used, then sparse vector
                  remap compressed and saved to disk using serialization API.
./strsvsample04 - Use str_sparse_vector<> container with NULL (unassigned) values
./strsvsample05 - Use str_sparse_vector<> container selective (gather) deserialization and range deserialization.
                  How to add bookmarks to the the serialized BLOB for faster range deserialization.
./strsvsample06 - str_sparse_vector<>::const_iterator in substring mode, 
                  bm::sparse_vector_scanner<> to search for a string and iterate the result-set
./strsvsample07 - bm::sparse_vector_scanner<>::pipeline to bulk search for a thousands of strings,
                  or calculate statistics, benchmarking various search modes and showing how to use 
                  succinct vector remapping to save RAM without loosing performance of search



More complex examples to illustrate mixed techniques and use cases:


./xsample01 - advanced: different methods of handling of super sparse sets. Benchmarks of set operations for each method. 
               Details at: http://bitmagic.io/case-ER-join.html

./xsample02 - sparse vector based counting sort and histogram construction techniques compared to std::sort()
               Details at: http://bitmagic.io/hist-sort.html

./xsample03 - Search in human genome data (bioinformatics) using bm::sparse_vector<>, bm::rsc_sparse_vector<> 
              Details at: http://bitmagic.io/succinct-snp-search.html 

./xsample04 - Fingerprint pattern matching, SHIFT-AND Bitap algorithm. Search for DNA substrings.
              Details at: http://bitmagic.io/dna-search.html 

./xsample04a - Fast construction of bit-indexes using bulk insert iterator, multi-threaded partitioning and merge.
              Details at: http://bitmagic.io/dna-search-idx.html

./xsample05 - Example how to build a memory compressed dictionary, benchmark how fast BitMagic can search in it.
              As a sample data we use a part of NED catalog of celestial objects.
              Details at: http://bitmagic.io/star-search.html

./xsample06 - Example on how to use DNA 2-bit per bp compression using
              sparse_vector<> and use of bm::sparse_vector_find_first_mismatch()
              to create comparison function. Benchmarks for variants of mismatch search and comparison.
              http://bitmagic.io/dna-compare.html

./xsample07 - DNA k-mer counting example for short (K < 24 ) k-mers.
              Example generates k-mer codes, stores it with 64-bit bvector and computes frequency for each k-mer 
              for term-frequency analysis (TF/IDF). Illustrates use of bvector<>, succinct rsc_sparse_vector<> and
              search scanner for succinct vector. Example shows multi-threading techniques, map-reduce like techniques 
	      when using BitMagic containers.
              

./xsample08 - Example on how to build data model for Genomics Viewer using bit-intervals and succinct
              vectors. Example illustrates a toy rendering with ASCII art and data model range slicing.
              http://bitmagic.io/gen-layout.html

./xsample09 - Another example on histogram construction using memory compact vectors.
              http://bitmagic.io/bm-hist-compr.html

./xsample10 - Example-benchmark on how to implement compressive scrolling of a data set for (Model View Controller).
              Show cases bm::sparse_vector_serializer<>::set_bookmarks( ) and use of range deserialization of sparse vectors.
	      http://bitmagic.io/bm-mvc.html

