ARB
Main Page
Namespaces
Classes
Files
File List
File Members
PRIMER_DESIGN
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
31
BaseInverter
() {
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
55
static
BaseInverter
INVERT
;
56
57
58
struct
ChildLookupTable
{
59
int
INDEX
[128];
60
61
ChildLookupTable
() {
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
72
static
ChildLookupTable
CHAR2CHILD
;
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
84
BitField
() {
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
108
static
BitField
CHAR2BIT
;
109
110
#else
111
#error PRD_Globals.hxx included twice
112
#endif // PRD_GLOBALS_HXX
BaseInverter::BaseInverter
BaseInverter()
Definition:
PRD_Globals.hxx:31
BitField::FIELD
unsigned int FIELD[128]
Definition:
PRD_Globals.hxx:82
CHAR2BIT
static BitField CHAR2BIT
Definition:
PRD_Globals.hxx:108
CHAR2CHILD
static ChildLookupTable CHAR2CHILD
Definition:
PRD_Globals.hxx:72
ChildLookupTable::INDEX
int INDEX[128]
Definition:
PRD_Globals.hxx:59
BitField
Definition:
PRD_Globals.hxx:75
ChildLookupTable::ChildLookupTable
ChildLookupTable()
Definition:
PRD_Globals.hxx:61
BaseInverter
Definition:
PRD_Globals.hxx:28
arbtools.h
BitField::BitField
BitField()
Definition:
PRD_Globals.hxx:84
arb_assert.h
ChildLookupTable
Definition:
PRD_Globals.hxx:58
INVERT
static BaseInverter INVERT
Definition:
PRD_Globals.hxx:55
char
PRD_Sequence_Pos
long int PRD_Sequence_Pos
Definition:
PRD_Globals.hxx:21
BaseInverter::BASE
char BASE[128]
Definition:
PRD_Globals.hxx:29
Generated by
1.8.8