0
|
1 #ifndef STRUCTS_H
|
|
2 #define STRUCTS_H
|
|
3
|
|
4 #include <inttypes.h>
|
|
5
|
|
6 //Structs required for the dotplot workflow
|
|
7 #define MAXLID 200
|
|
8 //#define READBUF 2000000000 //2 GB
|
|
9 #define READBUF 500000000 //500MB
|
|
10 #define INITSEQS 3000 //Number of starting sequences (in database)
|
|
11 #define POINT 4
|
|
12
|
|
13 #define FIXED_K 12
|
|
14
|
|
15 #define MAXLID 200
|
|
16 #define ALIGN_LEN 60 //For NW alignment
|
|
17 #define MAX_READ_SIZE 10000 //Maximum length of read to have a portion of the table allocated
|
|
18 #define MAX_WINDOW_SIZE 1000 //Maximum window length to explore NW table
|
|
19 //#define POOL_SIZE 2500000000 // by 16 bytes it is 40 GB
|
|
20 #define POOL_SIZE 12500000 // 1 GB if 16 bytes
|
|
21 #define MAX_MEM_POOLS 128
|
|
22 #define FIXED_LOADING_THREADS 4
|
|
23
|
|
24 #define FALSE 0
|
|
25 #define TRUE 1
|
|
26
|
|
27 extern uint64_t custom_kmer;
|
|
28
|
|
29 typedef char _vector_char __attribute__ ((vector_size (32*sizeof(char))));
|
|
30
|
|
31 //Struct for linked list of positions
|
|
32 typedef struct linked_list_pos{
|
|
33 uint64_t pos;
|
|
34 uint64_t s_id;
|
|
35 //uint64_t extended_hash;
|
|
36 struct linked_list_pos * next;
|
|
37 } llpos;
|
|
38
|
|
39 typedef struct AVL_Node{
|
|
40 uint64_t key;
|
|
41 struct AVL_Node * left;
|
|
42 struct AVL_Node * right;
|
|
43 uint64_t height;
|
|
44 uint64_t count;
|
|
45 llpos * next;
|
|
46 } AVLTree;
|
|
47
|
|
48 //Struct for memory pool por lists
|
|
49 typedef struct mempool_l{
|
|
50 llpos * base;
|
|
51 uint64_t current;
|
|
52 } Mempool_l;
|
|
53
|
|
54 //Struct for memory pool por AVLtree
|
|
55 typedef struct mempool_AVL{
|
|
56 AVLTree * base;
|
|
57 uint64_t current;
|
|
58 } Mempool_AVL;
|
|
59
|
|
60
|
|
61 //Struct for a whole sequence(s) data
|
|
62 typedef struct seqinfo{
|
|
63 unsigned char * sequences;
|
|
64 uint64_t * start_pos;
|
|
65 uint64_t total_len;
|
|
66 uint64_t n_seqs;
|
|
67 } SeqInfo;
|
|
68
|
|
69 //Struct for the alignment of a quick hit
|
|
70 typedef struct quickfrag{
|
|
71 uint64_t x_start;
|
|
72 uint64_t y_start;
|
|
73 uint64_t t_len;
|
|
74 long double coverage;
|
|
75 long double e_value;
|
|
76 } Quickfrag;
|
|
77
|
|
78 typedef struct point{
|
|
79 uint64_t x;
|
|
80 uint64_t y;
|
|
81 } Point;
|
|
82
|
|
83 typedef struct container{
|
|
84 llpos * table[4][4][4][4][4][4][4][4][4][4][4]; // One reduced; A,C,G,T tables in use
|
|
85 } Container;
|
|
86
|
|
87 typedef struct AVLcontainer{
|
|
88 AVLTree root[4][4][4][4][4][4][4][4][4][4][4];
|
|
89 } AVLContainer;
|
|
90
|
|
91 typedef struct{
|
|
92 char * temp_seq_buffer;
|
|
93 SeqInfo * data_database;
|
|
94 uint64_t t_len;
|
|
95 uint64_t word_size;
|
|
96 uint64_t read_from;
|
|
97 uint64_t read_to;
|
|
98 uint64_t contained_reads;
|
|
99 uint64_t base_coordinates;
|
|
100 uint64_t n_allocs;
|
|
101 char thread_id;
|
|
102 AVLContainer * ct;
|
|
103 Mempool_l * mp;
|
|
104 uint64_t n_pools_used;
|
|
105 uint64_t n_pools_used_AVL;
|
|
106 Mempool_AVL * mp_AVL;
|
|
107 } LoadingDBArgs;
|
|
108
|
|
109 struct cell{
|
|
110 int64_t score;
|
|
111 uint64_t xfrom;
|
|
112 uint64_t yfrom;
|
|
113 };
|
|
114
|
|
115 struct positioned_cell{
|
|
116 int64_t score;
|
|
117 uint64_t xpos;
|
|
118 uint64_t ypos;
|
|
119 };
|
|
120
|
|
121 struct best_cell{
|
|
122 struct positioned_cell c;
|
|
123 uint64_t j_prime;
|
|
124 };
|
|
125
|
|
126 typedef struct{
|
|
127 uint64_t identities;
|
|
128 uint64_t length;
|
|
129 uint64_t igaps;
|
|
130 uint64_t egaps;
|
|
131 } BasicAlignment;
|
|
132
|
|
133 typedef struct queue{
|
|
134 uint64_t r1; //reads region
|
|
135 uint64_t r2;
|
|
136 struct queue * next;
|
|
137 } Queue;
|
|
138
|
|
139 typedef struct{
|
|
140 Queue * head;
|
|
141 } Head;
|
|
142
|
|
143
|
|
144 #endif
|