packages feed

biohazard-2.0: cbits/trim.c

#include <stdint.h>

static const uint8_t compls[] =
    { 0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15 } ;

int prim_match_reads( int i1
                    , int i2
                    , int r
                    , const uint8_t *rd1
                    , const uint8_t *qs1
                    , const uint8_t *rd2
                    , const uint8_t *qs2 )
{
    int acc = 0 ;
    while( r != 0 )
    {
        --i2 ;
        uint8_t n1 = rd1[ i1 ] ;
        uint8_t n2 = rd2[ i2 ] ;
        uint8_t q1 = qs1[ i1 ] ;
        uint8_t q2 = qs2[ i2 ] ;

        acc += (n1 & 0xF) == compls[ n2 & 0xF ] ? 0 : 5 + (q1 < q2 ? q1 : q2) ;

        ++i1 ;
        --r ;
    }
    return acc ;
}

int prim_match_ad( int off
                 , int i
                 , const uint8_t *rd
                 , const uint8_t *qs
                 , const uint8_t *ad )
{
    int acc = 0 ;
    while( i > 0 )
    {
        --i;
        acc += rd[ i+off ] == ad[ i ] ? 0 : 5 +
               (qs[ i+off ] < 25 ? qs[ i+off ] : 25) ;
    }
    return acc ;
}