X-Git-Url: https://git.donarmstrong.com/?p=fastq-tools.git;a=blobdiff_plain;f=src%2Ffastq-kmers.c;h=d78a453b58d75757910012c4ab669f38afe209f0;hp=43fa3026b8bf02919cced34663fc14fc4999d066;hb=48a5939e574874106f1450fd278f602b731d2a83;hpb=54e8755d8c3bf9df0e27aae9ac6ee8976d5943c4 diff --git a/src/fastq-kmers.c b/src/fastq-kmers.c index 43fa302..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); } @@ -154,7 +157,6 @@ int main(int argc, char* argv[]) uint32_t* cs; /* counts */ FILE* fin; - gzFile gzfin; int opt; int opt_idx; @@ -222,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++) { @@ -240,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); } }