annotate chromeister/src/combine_reads.c @ 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 #include <stdio.h>
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
2 #include <stdlib.h>
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
3 #include <string.h>
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
4 #include <ctype.h>
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
5 #include "structs.h"
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
6 #include "commonFunctions.h"
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
7
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
8 #define MAX(x, y) (((x) > (y)) ? (x) : (y))
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
9 #define MIN(x, y) (((x) <= (y)) ? (x) : (y))
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
10 #define STARTING_SEQS 1000
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
11 #define PIECE_OF_DB_REALLOC 3200000 //half a gigabyte if divided by 8 bytes
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
12 #define MATVAL 101
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
13
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
14 int main(int argc, char ** av){
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
15
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
16 if(argc != 2) terror("USE:: combine_reads <file>");
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
17
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
18 FILE * results, * data;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
19 data = fopen(av[1], "rt");
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
20 if(data == NULL) terror("Could not open input file");
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
21
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
22 uint64_t * mat = (uint64_t *) calloc(MATVAL, sizeof(uint64_t));
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
23 if(mat == NULL) terror("Could not allocate matrix array");
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
24
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
25 char buffer[MAXLID];
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
26 if ((results = fopen("accu.log", "r")) == NULL){
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
27 results = fopen("accu.log", "wt");
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
28 }else{
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
29 // Load the matrix
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
30 uint64_t i;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
31
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
32 for(i=0;i<100;i++){
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
33 if(0 == fgets(buffer, MAXLID, results)) terror("Missing number on load");
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
34
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
35 //fprintf(stdout, "Have %s\n", buffer);
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
36 buffer[strlen(buffer)-1] = '\0';
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
37 mat[i] = asciiToUint64(buffer);
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
38 //fprintf(stdout, "%"PRIu64"\n", mat[i]);
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
39 //getchar();
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
40 }
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
41 fclose(results);
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
42 results = fopen("accu.log", "wt"); // Re open
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
43 }
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
44
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
45 // Read file
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
46 uint64_t read_id_1, read_id_2, coverage, identity, length, current, currmax, j;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
47 while(!feof(data)){
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
48 if(0 == fgets(buffer, MAXLID, data) && !feof(data)) terror("Missing values");
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
49 // 2 77277 89 64 213
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
50 sscanf(buffer, "%"PRIu64" %"PRIu64" %"PRIu64" %"PRIu64" %"PRIu64, &read_id_1, &read_id_2, &coverage, &identity, &length);
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
51 //fprintf(stdout, "%"PRIu64" %"PRIu64" %"PRIu64" %"PRIu64" %"PRIu64"\n", read_id_1, read_id_2, coverage, identity, length);
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
52 currmax = MIN(identity, coverage);
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
53 //fprintf(stdout, "%"PRIu64"\n", currmax);
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
54 current = read_id_1;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
55 /*
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
56 for(j=currmax; j > 1; j--){
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
57 if(current != lasts[j]){
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
58 mat[j]++;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
59 lasts[j] = current;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
60 }
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
61 }
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
62 */
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
63 mat[currmax] += 1;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
64
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
65 }
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
66
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
67 for(j=99; j>0; j--){
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
68 mat[j] += mat[j+1];
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
69 }
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
70 mat[0] = mat[1];
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
71
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
72 for(j=0; j<100; j++){
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
73 fprintf(stdout, "%"PRIu64"\n", mat[j]);
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
74 fprintf(results, "%"PRIu64"\n", mat[j]);
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
75 }
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
76
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
77
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
78 fclose(results);
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
79 fclose(data);
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
80 free(mat);
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
81 return 0;
7fdf47a0bae8 Uploaded
alvarofaure
parents:
diff changeset
82 }