NCBI C++ ToolKit
seq_masker_util.cpp
Go to the documentation of this file.

Go to the SVN repository for this file.

1 /* $Id: seq_masker_util.cpp 86312 2019-04-29 12:24:20Z morgulis $
2  * ===========================================================================
3  *
4  * PUBLIC DOMAIN NOTICE
5  * National Center for Biotechnology Information
6  *
7  * This software/database is a "United States Government Work" under the
8  * terms of the United States Copyright Act. It was written as part of
9  * the author's official duties as a United States Government employee and
10  * thus cannot be copyrighted. This software/database is freely available
11  * to the public for use. The National Library of Medicine and the U.S.
12  * Government have not placed any restriction on its use or reproduction.
13  *
14  * Although all reasonable efforts have been taken to ensure the accuracy
15  * and reliability of the software and data, the NLM and the U.S.
16  * Government do not and cannot warrant the performance or results that
17  * may be obtained by using this software or data. The NLM and the U.S.
18  * Government disclaim all warranties, express or implied, including
19  * warranties of performance, merchantability or fitness for any particular
20  * purpose.
21  *
22  * Please cite the author in any work or product based on this material.
23  *
24  * ===========================================================================
25  *
26  * Author: Aleksandr Morgulis
27  *
28  * File Description:
29  * CSeqMaskerUtil class member and method definitions.
30  *
31  */
32 
33 #include <ncbi_pch.hpp>
35 
37 
38 //-------------------------------------------------------------------------
40 {
41  if( !bit_value ) return BitCount( ~mask, 1 );
42  else
43  {
44  Uint1 result = 0;
45 
46  for( Uint1 i = 0; i < 8*sizeof( mask ); ++i )
47  if( (1ULL<<i)&mask ) ++result;
48 
49  return result;
50  }
51 }
52 
53 //-------------------------------------------------------------------------
55 {
56  Uint4 result( 0 );
57 
58  for( Uint1 i( 0 ); i < size; ++i )
59  {
60  Uint4 letter( ~(((seq>>(2*i))&0x3)|(~0x3)) );
61  result = (result<<2)|letter;
62  }
63 
64  return result;
65 }
66 
ncbi::TMaskedQueryRegions mask
static Uint1 BitCount(Uint4 mask, Uint1 bit_value=1)
Count the bits with given value in a given bit pattern.
static Uint4 reverse_complement(Uint4 seq, Uint1 size)
Reverse complement of a unit.
uint8_t Uint1
1-byte (8-bit) unsigned integer
Definition: ncbitype.h:99
uint32_t Uint4
4-byte (32-bit) unsigned integer
Definition: ncbitype.h:103
#define END_NCBI_SCOPE
End previously defined NCBI scope.
Definition: ncbistl.hpp:103
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
Definition: ncbistl.hpp:100
int i
const struct ncbi::grid::netcache::search::fields::SIZE size
else result
Definition: token2.c:20
static Uint4 letter(char c)
Modified on Mon Mar 04 05:14:15 2024 by modify_doxy.py rev. 669887