annotate chromeister/src/structs.h @ 0:7fdf47a0bae8 draft

Uploaded
author alvarofaure
date Wed, 12 Dec 2018 07:18:40 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
1 #ifndef STRUCTS_H
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
2 #define STRUCTS_H
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
3
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
4 #include <inttypes.h>
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
5
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
6 //Structs required for the dotplot workflow
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
7 #define MAXLID 200
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
8 //#define READBUF 2000000000 //2 GB
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
9 #define READBUF 500000000 //50MB
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
10 #define INITSEQS 3000 //Number of starting sequences (in database)
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
11 #define POINT 4
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
12
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
13 #define FIXED_K 12
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
14 #define TOTAL_ENTRIES 16777216
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
15
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
16 #define MAXLID 200
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
17 #define ALIGN_LEN 60 //For NW alignment
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
18 #define MAX_READ_SIZE 20000 //Maximum length of read to have a portion of the table allocated
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
19 #define MAX_WINDOW_SIZE 500 //Maximum window length to explore NW table
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
20 //#define POOL_SIZE 2500000000 // by 16 bytes it is 40 GB
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
21 #define POOL_SIZE 12500000 // 1 GB if 16 bytes
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
22 #define MAX_MEM_POOLS 256
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
23
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
24 #define BYTES_IN_MER 4
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
25 #define MAX_DECOMP_HASH 10
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
26 #define FALSE 0
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
27 #define TRUE 1
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
28
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
29 #define MAX(x, y) (((x) > (y)) ? (x) : (y))
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
30 #define MIN(x, y) (((x) <= (y)) ? (x) : (y))
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
31
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
32 extern uint64_t custom_kmer;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
33 extern uint64_t diffuse_z;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
34
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
35 //Struct for linked list of positions
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
36 typedef struct linked_list_pos{
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
37 uint64_t pos;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
38 //uint64_t extended_hash;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
39 //unsigned char decomp_hash[MAX_DECOMP_HASH]; // Fits up to MAX_DECOMP_HASH*4 letters = 256 length kmer
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
40 //uint64_t hits_count;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
41 struct linked_list_pos * next;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
42 } llpos;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
43
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
44
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
45 // An AVL tree node
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
46 typedef struct AVL_Node{
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
47 uint64_t key;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
48 struct AVL_Node * left;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
49 struct AVL_Node * right;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
50 uint64_t height;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
51 uint64_t count;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
52 llpos * next;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
53 } AVLTree;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
54
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
55
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
56 // Tuple of data
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
57 typedef struct tuple_hits{
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
58 int repetition;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
59 int hit_count;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
60 uint64_t key;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
61 uint64_t pos;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
62 uint64_t pos_in_y;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
63 } Tuple_hits;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
64
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
65 typedef struct hash_holder{
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
66 uint64_t key;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
67 uint64_t pos;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
68 } Hash_holder;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
69
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
70
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
71
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
72 //Struct for memory pool por lists
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
73 typedef struct mempool_l{
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
74 llpos * base;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
75 uint64_t current;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
76 } Mempool_l;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
77
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
78 //Struct for memory pool por AVLtree
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
79 typedef struct mempool_AVL{
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
80 AVLTree * base;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
81 uint64_t current;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
82 } Mempool_AVL;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
83
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
84 //Struct for a whole sequence(s) data
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
85 typedef struct seqinfo{
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
86 unsigned char * sequences;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
87 uint64_t * start_pos;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
88 uint64_t total_len;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
89 uint64_t n_seqs;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
90 } SeqInfo;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
91
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
92 //Struct for the alignment of a quick hit
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
93 typedef struct quickfrag{
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
94 uint64_t x_start;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
95 uint64_t y_start;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
96 uint64_t t_len;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
97 long double coverage;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
98 long double e_value;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
99 } Quickfrag;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
100
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
101 typedef struct point{
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
102 uint64_t x;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
103 uint64_t y;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
104 } Point;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
105
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
106
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
107
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
108 struct cell{
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
109 int64_t score;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
110 uint64_t xfrom;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
111 uint64_t yfrom;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
112 };
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
113
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
114 struct positioned_cell{
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
115 int64_t score;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
116 uint64_t xpos;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
117 uint64_t ypos;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
118 };
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
119
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
120 struct best_cell{
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
121 struct positioned_cell c;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
122 uint64_t j_prime;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
123 };
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
124
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
125 typedef struct{
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
126 uint64_t identities;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
127 uint64_t length;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
128 uint64_t igaps;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
129 uint64_t egaps;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
130 } BasicAlignment;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
131
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
132 typedef struct queue{
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
133 uint64_t r1; //reads region
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
134 uint64_t r2;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
135 struct queue * next;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
136 } Queue;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
137
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
138 typedef struct{
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
139 Queue * head;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
140 } Head;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
141
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
142
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
143 #endif