20 #include "default_param.h" 21 #include "useful_macros.h" 36 int size_kmer_in_bytes;
37 int size_kmer_in_bytes_minus_1;
38 int nb_bits_per_cell_skip_filter2;
39 int nb_bits_per_cell_skip_filter3;
40 int nb_bytes_per_cell_skip_filter2;
41 int nb_bytes_per_cell_skip_filter3;
53 } __attribute__ ((__packed__)) Node;
67 int children_type_leaf;
72 int pos_extra_filter3;
78 uint8_t substring[SIZE_BYTES_SUF_PREF];
98 annotation_array_elem* comp_set_colors;
100 info_per_level* info_per_lvl;
102 annotation_inform* ann_inf;
110 int length_comp_set_colors;
135 inline bool are_genomes_ids_overlapping(
BFT_Root* root_1,
BFT_Root* root_2);
136 inline uint64_t* create_hash_v_array(
int rand_seed1,
int rand_seed2);
137 inline Node* createNode(
void);
138 inline void initiateNode(Node* node);
139 inline resultPresence* create_resultPresence();
140 inline void initialize_resultPresence(resultPresence* res);
142 inline bool are_genomes_ids_overlapping(
BFT_Root* root_1,
BFT_Root* root_2){
144 ASSERT_NULL_PTR(root_1,
"get_overlap_genomes_ids()\n")
145 ASSERT_NULL_PTR(root_2,"get_overlap_genomes_ids()\n")
147 if (strcmp(root_1->filenames[root_1->nb_genomes-1], root_2->filenames[0]) == 0)
153 inline uint64_t* create_hash_v_array(
int rand_seed1,
int rand_seed2){
156 uint32_t nb_hash_v = pow(4, NB_CHAR_SUF_PREF);
158 uint64_t* hash_v = malloc(nb_hash_v * 2 *
sizeof(uint64_t));
159 ASSERT_NULL_PTR(hash_v,
"create_hash_v_array()")
161 uint8_t gen_sub[SIZE_BYTES_SUF_PREF];
163 for (uint32_t i = 0; i < nb_hash_v; i++){
165 nb_bits = NB_CHAR_SUF_PREF * 2;
167 for (j = 0; j < SIZE_BYTES_SUF_PREF; j++){
169 nb_bits -= SIZE_BITS_UINT_8T;
171 if (nb_bits >= 0) gen_sub[j] = (i >> nb_bits) & 0xff;
172 else gen_sub[j] = (i << (-nb_bits)) & 0xff;
175 hash_v[i * 2] = XXH64(gen_sub, SIZE_BYTES_SUF_PREF, rand_seed1);
176 hash_v[i * 2 + 1] = XXH64(gen_sub, SIZE_BYTES_SUF_PREF, rand_seed2);
189 inline Node* createNode(
void){
190 Node* node = malloc(
sizeof(Node));
191 ASSERT_NULL_PTR(node,
"createNode()")
193 node->CC_array = NULL;
194 initializeUC(&(node->UC_array));
207 inline
void initiateNode(Node* node){
209 ASSERT_NULL_PTR(node,
"initiateNode()")
211 node->CC_array = NULL;
212 initializeUC(&(node->UC_array));
217 inline resultPresence* create_resultPresence(){
219 resultPresence* res = calloc(1,
sizeof(resultPresence));
220 ASSERT_NULL_PTR(res,
"create_resultPresence()")
223 res->container = NULL;
224 res->link_child = NULL;
225 res->posFilter2 = INT_MAX;
226 res->posFilter3 = INT_MAX;
227 res->pos_extra_filter3 = INT_MAX;
232 inline
void initialize_resultPresence(resultPresence* res){
234 ASSERT_NULL_PTR(res,
"initialize_resultPresence()")
237 res->container = NULL;
238 res->link_child = NULL;
239 res->pos_container = 0;
242 res->pos_sub_bucket = 0;
244 res->presFilter2 = 0;
245 res->presFilter3 = 0;
246 res->count_children = 0;
247 res->count_nodes = 0;
248 res->pos_children = 0;
249 res->children_type_leaf = 0;
250 res->container_is_UC = 0;
251 res->posFilter2 = INT_MAX;
252 res->posFilter3 = INT_MAX;
253 res->pos_extra_filter3 = INT_MAX;
char ** filenames
Inserted genome file names.
Definition: Node.h:92
int treshold_compression
Color compression is triggered every BFT_Root::treshold_compression genome inserted.
Definition: Node.h:111
int nb_genomes
Number of genomes inserted.
Definition: Node.h:109
resultPresence * res
Contains information about the location of BFT_kmer::kmer in a BFT_Root.
Definition: Node.h:127
int k
Size of k-mers.
Definition: Node.h:106
uint8_t * kmer_comp
2 bits encoded form of BFT_kmer::kmer.
Definition: Node.h:126
K-mer stored in a BFT_Root.
Definition: Node.h:124
char * kmer
ASCII null-terminated k-mer.
Definition: Node.h:125
Root vertex of a BFT.
Definition: Node.h:91