BitVecBestAlignment

Table of Contents

BitVecBestAlignment

Description

Find best overlapping alignment between two bitvectors. Returns the offset that gives the best alignment score.

Parameters

NameDirectionDescription
bv1inFirst bitvector (reference)
bv2inSecond bitvector (query)

Usage example (from documentation)

  u64 offset = BitVecBestAlignment(&reference, &query);

Usage example (Cross-references)

    }
    
    u64 BitVecBestAlignment(BitVec *bv1, BitVec *bv2) {
    ValidateBitVec(bv1);
    ValidateBitVec(bv2);
    // Test BitVecBestAlignment basic functionality
    bool test_bitvec_best_alignment_basic(void) {
    printf("Testing BitVecBestAlignment basic functionality\n");
    
    BitVec bv1    = BitVecInit();
    BitVecPush(&bv2, false);
    
    u64 best_pos = BitVecBestAlignment(&bv1, &bv2);
    result       = result && (best_pos == 0 || best_pos == 4);
    // Test BitVecBestAlignment edge cases
    bool test_bitvec_best_alignment_edge_cases(void) {
    printf("Testing BitVecBestAlignment edge cases\n");
    
    BitVec bv1    = BitVecInit();
    
    // Test empty bitvectors
    u64 best_pos = BitVecBestAlignment(&bv1, &bv2);
    result       = result && (best_pos == 0);
    BitVecPush(&bv2, false);
    
    best_pos = BitVecBestAlignment(&bv1, &bv2);
    result   = result && (best_pos == 0);
    double entropy1    = BitVecEntropy(&bv1);
    int    align_score = BitVecAlignmentScore(&bv1, &bv2, 1, -1);
    u64    best_align  = BitVecBestAlignment(&bv1, &bv2);
    
    // Test edit distance with smaller vectors (expensive operation)
    
    bool test_bitvec_best_alignment_null_bv1(void) {
    printf("Testing BitVecBestAlignment(NULL, bv2) - should fatal\n");
    BitVec bv2 = BitVecInit();
    BitVecPush(&bv2, true);
    BitVec bv2 = BitVecInit();
    BitVecPush(&bv2, true);
    BitVecBestAlignment(NULL, &bv2);
    BitVecDeinit(&bv2);
    return true;
    
    bool test_bitvec_best_alignment_null_bv2(void) {
    printf("Testing BitVecBestAlignment(bv1, NULL) - should fatal\n");
    BitVec bv1 = BitVecInit();
    BitVecPush(&bv1, true);
    BitVec bv1 = BitVecInit();
    BitVecPush(&bv1, true);
    BitVecBestAlignment(&bv1, NULL);
    BitVecDeinit(&bv1);
    return true;

Share :

Related Posts

BitVecCorrelation

BitVecCorrelation Description Calculate Pearson correlation coefficient between two bitvectors. Treats bits as 0/1 values and computes linear correlation.

Read More

BitVecEditDistance

BitVecEditDistance Description Calculate edit distance between two bitvectors. Edit distance is minimum number of single-bit operations to transform one into the other.

Read More

ALIGN_DOWN

ALIGN_DOWN Description Aligns the given value down to the nearest multiple of alignment.

Read More