Skip to content

Commit 4337241

Browse files
author
Joaquín Tárraga Giménez
committed
Adds support for handling FastQ files (hpg-fastq binary) and updates submodule hpg-libs. Resolves #7
1 parent 3c3450c commit 4337241

20 files changed

+3461
-3
lines changed

SConstruct

+8-2
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ aligner = envprogram.Program('#bin/hpg-aligner',
8686
]
8787
)
8888

89-
bams = envprogram.Program('#bin/hpg-bam',
89+
bam = envprogram.Program('#bin/hpg-bam',
9090
source = [Glob('src/tools/bam/*.c'),
9191
Glob('src/tools/bam/aux/*.c'),
9292
Glob('src/tools/bam/bfwork/*.c'),
@@ -100,7 +100,13 @@ bams = envprogram.Program('#bin/hpg-bam',
100100
]
101101
)
102102

103-
Depends(aligner, bams)
103+
fastq = envprogram.Program('#bin/hpg-fastq',
104+
source = [Glob('src/tools/fastq/*.c'),
105+
"%s/build/libhpg.a" % hpglib_path
106+
]
107+
)
108+
109+
#Depends(aligner, bam, fastq)
104110

105111
'''
106112
if 'debian' in COMMAND_LINE_TARGETS:

src/tools/fastq/commons_fastq.c

+106
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
/*
2+
* commons_fastq.c
3+
*
4+
* Created on: May 22, 2013
5+
* Author: jtarraga
6+
*
7+
*/
8+
9+
#include "commons_fastq.h"
10+
11+
//--------------------------------------------------------------------
12+
13+
void free_argtable(int num_options, void **argtable) {
14+
if (argtable != NULL) {
15+
arg_freetable(argtable, num_options);
16+
free(argtable);
17+
}
18+
}
19+
20+
//--------------------------------------------------------------------
21+
22+
void usage_argtable(char *exec_name, char *command_name, void **argtable) {
23+
printf("Usage: %s %s\n", exec_name, command_name);
24+
arg_print_syntaxv(stdout, argtable, "\n");
25+
arg_print_glossary(stdout, argtable, "%-50s\t%s\n");
26+
exit(-1);
27+
}
28+
29+
//--------------------------------------------------------------------
30+
31+
int parse_range(int *min, int *max, char *range, char *msg) {
32+
33+
*min = NO_VALUE;
34+
*max = NO_VALUE;
35+
36+
if (!range) {
37+
return 1;
38+
}
39+
40+
int lmin, lmax;
41+
char *p, *lrange = strdup(range);
42+
43+
p = strstr(lrange, ",");
44+
if (p) {
45+
//lmax = atoi(p + 1);
46+
if (strlen(p+1) == 0) {
47+
lmax = NO_VALUE;
48+
} else {
49+
if (sscanf((p+1), "%d", &lmax) != 1) {
50+
printf("\nError: Invalid maximum value in the %s (%s)\n", msg, range);
51+
free(lrange);
52+
return 0;
53+
}
54+
}
55+
if (lrange == p) {
56+
lmin = NO_VALUE;
57+
} else {
58+
*p = '\0';
59+
//lmin = atoi(lrange);
60+
if (sscanf(lrange, "%d", &lmin) != 1) {
61+
printf("\nError: Invalid minimum value in the %s (%s)\n", msg, range);
62+
free(lrange);
63+
return 0;
64+
}
65+
}
66+
} else {
67+
//lmin = atoi(lrange);
68+
if (sscanf(lrange, "%d", &lmin) != 1) {
69+
printf("\nError: Invalid minimum value in the %s (%s)\n", msg, range);
70+
free(lrange);
71+
return 0;
72+
}
73+
lmax = NO_VALUE;
74+
}
75+
76+
if (lmin != NO_VALUE && lmin < 0) {
77+
printf("\nError: Invalid %s (%s). Minimum value (%i) must be greater than 0\n",
78+
msg, range, lmin);
79+
free(lrange);
80+
return 0;
81+
}
82+
83+
if (lmax != NO_VALUE && lmax < 0) {
84+
printf("\nError: Invalid %s (%s). Maximum value (%i) must be greater than 0\n",
85+
msg, range, lmax);
86+
free(lrange);
87+
return 0;
88+
}
89+
90+
if (lmin != NO_VALUE && lmax != NO_VALUE && lmin > lmax) {
91+
printf("\nError: Invalid %s (%s). Maximum value (%i) must be greater than minimum value (%i)\n",
92+
msg, range, lmax, lmin);
93+
free(lrange);
94+
return 0;
95+
}
96+
97+
*min = lmin;
98+
*max = lmax;
99+
100+
// free local range
101+
free(lrange);
102+
return 1;
103+
}
104+
105+
//--------------------------------------------------------------------
106+
//--------------------------------------------------------------------

src/tools/fastq/commons_fastq.h

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#ifndef COMMONS_FASTQ_H
2+
#define COMMONS_FASTQ_H
3+
4+
/*
5+
* fastq_commons.h
6+
*
7+
* Created on: May 22, 2013
8+
* Author: jtarraga
9+
*
10+
*/
11+
12+
#include <stdlib.h>
13+
#include <string.h>
14+
15+
#include "argtable/argtable2.h"
16+
17+
#include "bioformats/fastq/fastq_filter.h"
18+
19+
//------------------------------------------------------------------------
20+
21+
#define NO_VALUE -1
22+
#define MIN_VALUE 0
23+
#define MAX_VALUE 100000
24+
25+
//------------------------------------------------------------------------
26+
27+
int parse_range(int *min, int *max, char *range, char *msg);
28+
29+
void free_argtable(int num_filter_options, void **argtable);
30+
void usage_argtable(char *exec_name, char *command_name, void **argtable);
31+
32+
#endif /* COMMONS_FASTQ_H */
33+
34+
//------------------------------------------------------------------------
35+
//------------------------------------------------------------------------

0 commit comments

Comments
 (0)