X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2Ffastq-kmers.c;h=d78a453b58d75757910012c4ab669f38afe209f0;hb=48a5939e574874106f1450fd278f602b731d2a83;hp=551ff88a51249ee9aaf6277ed564eefe7eb21d33;hpb=1a97afb4a336f49f700eae050908c3e68f415ee6;p=fastq-tools.git diff --git a/src/fastq-kmers.c b/src/fastq-kmers.c index 551ff88..d78a453 100644 --- a/src/fastq-kmers.c +++ b/src/fastq-kmers.c @@ -1,22 +1,23 @@ -/* - * fastq-kmers: kmer frequences within fastq files +/* + * This file is part of fastq-tools. * - * Febuary 2011 / Daniel Jones + * Copyright (c) 2011 by Daniel C. Jones + * + * fastq-kmers : + * Tabulate k-mer frequencies with FASTQ files. * */ - - +#include "fastq-common.h" +#include "fastq-parse.h" +#include #include #include #include #include #include -#include "kseq.h" -KSEQ_INIT(gzFile, gzread) - #if defined(MSDOS) || defined(OS2) || defined(WIN32) || defined(__CYGWIN__) # include @@ -105,15 +106,16 @@ void unpackkmer( uint32_t kmer, char* s, int k ) } -void count_fastq_kmers(gzFile* fin, uint32_t* cs) +void count_fastq_kmers(FILE* fin, uint32_t* cs) { - kseq_t* seq = kseq_init(fin); + seq_t* seq = fastq_alloc_seq(); + fastq_t* fqf = fastq_open(fin); int i; int n; uint32_t kmer; - while (kseq_read(seq) >= 0) { - n = (int)seq->seq.l - k + 1; + while (fastq_next(fqf, seq)) { + n = (int)seq->seq.n - k + 1; for (i = 0; i < n; i++) { if( packkmer(seq->seq.s + i, &kmer, k) ) { cs[kmer]++; @@ -121,7 +123,8 @@ void count_fastq_kmers(gzFile* fin, uint32_t* cs) } } - kseq_destroy(seq); + fastq_free_seq(seq); + fastq_close(fqf); } @@ -144,6 +147,9 @@ void print_kmer_freqs(FILE* fout, uint32_t* cs) int main(int argc, char* argv[]) { + SET_BINARY_MODE(stdin); + SET_BINARY_MODE(stdout); + help_flag = 0; k = 1; @@ -151,7 +157,6 @@ int main(int argc, char* argv[]) uint32_t* cs; /* counts */ FILE* fin; - gzFile gzfin; int opt; int opt_idx; @@ -219,15 +224,7 @@ int main(int argc, char* argv[]) } if (optind >= argc || (argc - optind == 1 && strcmp(argv[optind],"-") == 0)) { - gzfin = gzdopen( fileno(stdin), "rb" ); - if (gzfin == NULL) { - fprintf(stderr, "Malformed file 'stdin'.\n"); - return 1; - } - - count_fastq_kmers(gzfin, cs); - - gzclose(gzfin); + count_fastq_kmers(stdin, cs); } else { for (; optind < argc; optind++) { @@ -237,15 +234,7 @@ int main(int argc, char* argv[]) continue; } - gzfin = gzdopen(fileno(fin), "rb"); - if (gzfin == NULL) { - fprintf(stderr, "Malformed file '%s'.\n", argv[optind]); - continue; - } - - count_fastq_kmers(gzfin, cs); - - gzclose(gzfin); + count_fastq_kmers(fin, cs); } }