From 0a9476fe2aa09610a23b2a54974bbb733b478a92 Mon Sep 17 00:00:00 2001 From: Calvin Morrison Date: Fri, 30 Aug 2013 14:33:50 -0400 Subject: check for fasta headers --- count_nucleobases | Bin 0 -> 5496 bytes count_nucleobases.c | 19 +++++++++++++------ 2 files changed, 13 insertions(+), 6 deletions(-) create mode 100755 count_nucleobases diff --git a/count_nucleobases b/count_nucleobases new file mode 100755 index 0000000..8c1b122 Binary files /dev/null and b/count_nucleobases differ diff --git a/count_nucleobases.c b/count_nucleobases.c index d1a4f1c..c2aafe5 100755 --- a/count_nucleobases.c +++ b/count_nucleobases.c @@ -5,27 +5,34 @@ #include int main(int argc, char **argv) { + char *line = NULL; + size_t len = 0; + ssize_t read; if(argc != 2) { printf("Please supply a filename, and only a filename\n"); exit(EXIT_FAILURE); } + FILE *fh = fopen(argv[1], "r" ); if(fh == NULL) { fprintf(stderr, "Couldn't open: %s\n", argv[1]); exit(EXIT_FAILURE); } - char line[8192]; - long unsigned long counts[256]; - while (fgets(line, 8192, fh) != NULL) { + unsigned long long counts[256] = {0}; - unsigned int i = 0; - for(i = 0; i < strlen(line); i++) { - counts[line[i]]++; + while ((read = getline(&line, &len, fh)) != -1) { + if(line[0] != '>') { + unsigned int i = 0; + for(i = 0; i < strlen(line); i++) { + counts[line[i]]++; + } } } + free(line); + printf("A:%llu\nC:%llu\nG:%llu\nT:%llu\n", counts['a'] + counts['A'], counts['c'] + counts['C'], -- cgit v1.2.3