ARB
PRD_Globals.hxx
Go to the documentation of this file.
1 #ifndef PRD_GLOBALS_HXX
2 #define PRD_GLOBALS_HXX
3 
4 #ifndef _GLIBCXX_CLIMITS
5 #include <climits>
6 #endif
7 #ifndef ARB_ASSERT_H
8 #include <arb_assert.h>
9 #endif
10 #ifndef ARBTOOLS_H
11 #include <arbtools.h>
12 #endif
13 
14 #define prd_assert(cond) arb_assert(cond)
15 
16 #ifndef MAX_LONG
17 #define MAX_LONG LONG_MAX
18 #endif
19 
20 #define PRD_MAX_SEQUENCE_POS MAX_LONG
21 typedef long int PRD_Sequence_Pos;
22 
23 
24 //
25 // BaseInverter is used to invert bases while matching sequence
26 // backwards vs. the primertrees
27 //
28 struct BaseInverter {
29  char BASE[128];
30 
32  for (int i=0; i < 128; i++)
33  BASE[i] = '\x00';
34 
35  BASE[(unsigned char)'A'] = 'T';
36  BASE[(unsigned char)'T'] = 'A';
37  BASE[(unsigned char)'U'] = 'A';
38  BASE[(unsigned char)'C'] = 'G';
39  BASE[(unsigned char)'G'] = 'C';
40 
41  BASE[(unsigned char)'R'] = 'Y';
42  BASE[(unsigned char)'M'] = 'K';
43  BASE[(unsigned char)'S'] = 'S';
44  BASE[(unsigned char)'Y'] = 'R';
45  BASE[(unsigned char)'K'] = 'M';
46  BASE[(unsigned char)'W'] = 'W';
47  BASE[(unsigned char)'V'] = 'B';
48  BASE[(unsigned char)'B'] = 'V';
49  BASE[(unsigned char)'D'] = 'H';
50  BASE[(unsigned char)'H'] = 'D';
51  BASE[(unsigned char)'N'] = 'N';
52  }
53 };
54 
56 
57 
59  int INDEX[128];
60 
62  for (int i=0; i < 128; i++) INDEX[i] = -1;
63 
64  INDEX[(unsigned char)'C'] = 0;
65  INDEX[(unsigned char)'G'] = 1;
66  INDEX[(unsigned char)'A'] = 2;
67  INDEX[(unsigned char)'T'] = 3;
68  INDEX[(unsigned char)'U'] = 3;
69  }
70 };
71 
73 
74 
75 class BitField {
76  // Meaning of single bits:
77  // 2^0 = 1 = A
78  // 2^1 = 2 = T/U
79  // 2^2 = 4 = C
80  // 2^3 = 8 = G
81 public:
82  unsigned int FIELD[128]; // bitoperations are done as unsigned int :(
83 
85  for (int i=0; i < 128; i++)
86  FIELD[i] = 0;
87 
88  FIELD[(unsigned char)'A'] = 1;
89  FIELD[(unsigned char)'T'] = 2;
90  FIELD[(unsigned char)'U'] = 2;
91  FIELD[(unsigned char)'C'] = 4;
92  FIELD[(unsigned char)'G'] = 8;
93 
94  FIELD[(unsigned char)'R'] = 9; // A G
95  FIELD[(unsigned char)'M'] = 5; // A C
96  FIELD[(unsigned char)'S'] = 12; // CG
97  FIELD[(unsigned char)'Y'] = 6; // TC
98  FIELD[(unsigned char)'K'] = 10; // T G
99  FIELD[(unsigned char)'W'] = 3; // AT
100  FIELD[(unsigned char)'V'] = 13; // A CG
101  FIELD[(unsigned char)'B'] = 14; // TCG
102  FIELD[(unsigned char)'D'] = 11; // AT G
103  FIELD[(unsigned char)'H'] = 7; // ATC
104  FIELD[(unsigned char)'N'] = 15; // ATCG
105  }
106 };
107 
109 
110 #else
111 #error PRD_Globals.hxx included twice
112 #endif // PRD_GLOBALS_HXX
unsigned int FIELD[128]
Definition: PRD_Globals.hxx:82
static BitField CHAR2BIT
static ChildLookupTable CHAR2CHILD
Definition: PRD_Globals.hxx:72
static BaseInverter INVERT
Definition: PRD_Globals.hxx:55
long int PRD_Sequence_Pos
Definition: PRD_Globals.hxx:21
char BASE[128]
Definition: PRD_Globals.hxx:29