annotate src/sickle.h @ 13:b105c7163a5b draft default tip

Deleted selected files
author nikhil-joshi
date Sat, 14 Mar 2015 18:29:47 -0400
parents c70137414dcd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
1 #ifndef SICKLE_H
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
2 #define SICKLE_H
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
3
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
4 #include <limits.h>
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
5 #include <zlib.h>
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
6 #include "kseq.h"
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
7
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
8
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
9 /* KSEQ_INIT() cannot be called here, because we only need the types
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
10 defined. Calling KSEQ_INIT() would also define functions, leading
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
11 to an unused function warning with GCC. So, the basic typedefs
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
12 kseq.h has are included here, and each file that reads needs:
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
13
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
14 __KS_GETC(gzread, BUFFER_SIZE)
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
15 __KS_GETUNTIL(gzread, BUFFER_SIZE)
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
16 __KSEQ_READ
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
17
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
18 */
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
19
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
20 #define BUFFER_SIZE 4096
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
21 __KS_TYPE(gzFile)
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
22 __KS_BASIC(gzFile, BUFFER_SIZE)
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
23 __KSEQ_TYPE(gzFile)
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
24 __KSEQ_BASIC(gzFile)
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
25
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
26 #ifndef PROGRAM_NAME
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
27 #define PROGRAM_NAME "sickle"
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
28 #endif
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
29
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
30 #ifndef AUTHORS
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
31 #define AUTHORS "Nikhil Joshi, UC Davis Bioinformatics Core\n"
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
32 #endif
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
33
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
34 #ifndef VERSION
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
35 #define VERSION 0.0
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
36 #endif
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
37
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
38 /* Options drawn from GNU's coreutils/src/system.h */
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
39 /* These options are defined so as to avoid conflicting with option
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
40 values used by commands */
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
41 enum {
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
42 GETOPT_HELP_CHAR = (CHAR_MIN - 2),
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
43 GETOPT_VERSION_CHAR = (CHAR_MIN - 3)
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
44 };
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
45 #define GETOPT_HELP_OPTION_DECL \
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
46 "help", no_argument, NULL, GETOPT_HELP_CHAR
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
47 #define GETOPT_VERSION_OPTION_DECL \
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
48 "version", no_argument, NULL, GETOPT_VERSION_CHAR
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
49 #define case_GETOPT_HELP_CHAR(Usage_call) \
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
50 case GETOPT_HELP_CHAR: \
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
51 Usage_call(EXIT_SUCCESS, NULL); \
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
52 break;
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
53 #define case_GETOPT_VERSION_CHAR(Program_name, Version, Authors) \
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
54 case GETOPT_VERSION_CHAR: \
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
55 fprintf(stdout, "%s version %0.3f\nCopyright (c) 2011 The Regents " \
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
56 "of University of California, Davis Campus.\n" \
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
57 "%s is free software and comes with ABSOLUTELY NO WARRANTY.\n"\
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
58 "Distributed under the MIT License.\n\nWritten by %s\n", \
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
59 Program_name, Version, Program_name, Authors); \
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
60 exit(EXIT_SUCCESS); \
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
61 break;
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
62 /* end code drawn from system.h */
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
63
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
64 typedef enum {
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
65 PHRED,
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
66 SANGER,
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
67 SOLEXA,
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
68 ILLUMINA
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
69 } quality_type;
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
70
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
71 static const char typenames[4][10] = {
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
72 {"Phred"},
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
73 {"Sanger"},
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
74 {"Solexa"},
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
75 {"Illumina"}
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
76 };
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
77
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
78 #define Q_OFFSET 0
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
79 #define Q_MIN 1
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
80 #define Q_MAX 2
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
81
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
82 static const int quality_constants[4][3] = {
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
83 /* offset, min, max */
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
84 {0, 4, 60}, /* PHRED */
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
85 {33, 33, 126}, /* SANGER */
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
86 {64, 58, 112}, /* SOLEXA; this is an approx; the transform is non-linear */
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
87 {64, 64, 110} /* ILLUMINA */
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
88 };
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
89
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
90 typedef struct __cutsites_ {
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
91 int five_prime_cut;
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
92 int three_prime_cut;
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
93 } cutsites;
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
94
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
95
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
96 /* Function Prototypes */
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
97 int single_main (int argc, char *argv[]);
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
98 int paired_main (int argc, char *argv[]);
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
99 cutsites* sliding_window (kseq_t *fqrec, int qualtype, int length_threshold, int qual_threshold, int no_fiveprime, int trunc_n, int debug);
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
100
c70137414dcd sickle v1.33
nikhil-joshi
parents:
diff changeset
101 #endif /*SICKLE_H*/