biohazard-2.0: cbits/loops.c
void nuc_loop( char* p, int stride, char* q, int u, int v )
{
u *= stride ;
v *= stride ;
while( u < v ) {
char a = q[ u ] ;
char b = q[ u + stride ] ;
char a1 = a ? 0x10 << (a&3) : 0xf0 ;
char b1 = b ? 0x1 << (b&3) : 0xf ;
*p++ = a1 | b1 ;
u += stride+stride ;
}
if( u == v ) {
char a = q[ u ] ;
char a1 = a ? 0x10 << (a&3) : 0xf0 ;
*p = a1 ;
}
}
void nuc_loop_wide( char* p, int stride, char* q, int u, int v )
{
u *= stride ;
v *= stride ;
while( u < v ) {
char a = q[ u ] ;
*p++ = a ? 0x1 << (a&3) : 0xf ;
u += stride ;
}
}
void nuc_loop_asc( char* p, int stride, char* q, int u, int v )
{
u *= stride ;
v *= stride ;
while( u <= v ) {
char a = q[ u ] ;
*p++ = a == 0 ? 'N' : (a&3) == 0 ? 'A' : (a&3) == 1 ? 'C' : (a&3) == 2 ? 'G' : 'T' ;
u += stride ;
}
*p = 0 ;
}
void nuc_loop_asc_rev( char* p, int stride, char* q, int u, int v )
{
u *= stride ;
v *= stride ;
while( u <= v ) {
char a = q[ v ] ;
*p++ = a == 0 ? 'N' : (a&3) == 0 ? 'T' : (a&3) == 1 ? 'G' : (a&3) == 2 ? 'C' : 'A' ;
v -= stride ;
}
*p = 0 ;
}
void qual_loop( char* p, int stride, char* q, int u, int v )
{
u *= stride ;
v *= stride ;
while( u <= v ) {
*p++ = (q[u] >> 2) & 0x3f ;
u += stride ;
}
}
void qual_loop_asc( char* p, int stride, char* q, int u, int v )
{
u *= stride ;
v *= stride ;
while( u <= v ) {
*p++ = 33 + ((q[u] >> 2) & 0x3f) ;
u += stride ;
}
*p = 0 ;
}
void qual_loop_asc_rev( char* p, int stride, char* q, int u, int v )
{
u *= stride ;
v *= stride ;
while( u <= v ) {
*p++ = 33 + ((q[v] >> 2) & 0x3f) ;
v -= stride ;
}
*p = 0 ;
}
int int_loop( char* p, int x )
{
*p++ = ':' ;
if( x == 0 ) {
*p = '0' ;
return 2 ;
}
char *q = p ;
while( x > 0 ) {
*q++ = '0' + x % 10 ;
x /= 10 ;
}
int r = q-p ;
--q ;
while( p < q ) {
char c = *p ;
*p++ = *q ;
*q-- = c ;
}
return r+1 ;
}