aboutsummaryrefslogtreecommitdiff
path: root/kmer_total_count.c
diff options
context:
space:
mode:
Diffstat (limited to 'kmer_total_count.c')
-rw-r--r--kmer_total_count.c34
1 files changed, 24 insertions, 10 deletions
diff --git a/kmer_total_count.c b/kmer_total_count.c
index 4fadf03..113c979 100644
--- a/kmer_total_count.c
+++ b/kmer_total_count.c
@@ -7,7 +7,19 @@
#include "kmer_utils.h"
-long position = 0;
+unsigned long position = 0;
+
+const unsigned char alpha[256] =
+{5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 1, 5, 5, 5, 2, 5, 5, 5, 5, 5, 5,
+5, 5, 5, 5, 5, 5, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 1, 5, 5, 5, 2,
+5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
+5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5};
int main(int argc, char **argv) {
@@ -16,14 +28,12 @@ int main(int argc, char **argv) {
ssize_t read;
long i = 0;
- unsigned long long *counts;
-
if(argc != 3) {
printf("Please supply a filename and a kmer\n");
exit(EXIT_FAILURE);
}
- FILE *fh = fopen(argv[1], "r");
+ FILE * const fh = fopen(argv[1], "r");
if(fh == NULL) {
fprintf(stderr, "Error opening %s - %s\n", argv[1], strerror(errno));
exit(EXIT_FAILURE);
@@ -33,16 +43,20 @@ int main(int argc, char **argv) {
const unsigned int kmer = atoi(argv[2]);
// width is 4^kmer
- const unsigned long width = (int)pow(4, kmer);
+ const unsigned long width = pow(4, kmer);
// malloc our counts matrix
- counts = malloc((width+ 1) * sizeof(unsigned long long));
+ unsigned long long * const counts = malloc((width+ 1) * sizeof(unsigned long long));
+
if(counts == NULL)
exit(EXIT_FAILURE);
-
+
while ((read = getline(&line, &len, fh)) != -1) {
if(line[0] != '>' && read > kmer) {
- convert_kmer_to_num(line, read);
+
+ for(i = 0; i < read; i++) {
+ line[i] = alpha[line[i]];
+ }
for(position = 0; position < (read - kmer); position++) {
counts[num_to_index(&line[position],kmer, width)]++;
@@ -50,8 +64,8 @@ int main(int argc, char **argv) {
}
}
- for(i = 0; i < (unsigned)width; i++)
- printf("%llu\n", counts[i]);
+ for(i = 0; i < (unsigned)width; i=i+4)
+ printf("%llu\n%llu\n%llu\n%llu\n", counts[i], counts[i+1], counts[i+2], counts[i+3]);
return EXIT_SUCCESS;