From 4d00f90fd8b1b9e38eea297336ee83a5e5c9e764 Mon Sep 17 00:00:00 2001 From: Calvin Morrison Date: Sat, 28 Sep 2013 11:52:45 -0700 Subject: idea --- kmer_utils.c | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'kmer_utils.c') diff --git a/kmer_utils.c b/kmer_utils.c index c0441e2..7b483ea 100644 --- a/kmer_utils.c +++ b/kmer_utils.c @@ -16,31 +16,43 @@ // long kmer - how long of a index value you want to return // long error_pos - what index to return for a non ACGT character // -inline long convert_kmer_to_index(const char *str, int kmer, long error_pos) { +inline long num_to_index(const char *str, int kmer, long error_pos) { int i = 0; unsigned long out = 0; unsigned long multiply = 1; for(i = kmer - 1; i >= 0; i--){ + + out += str[i] * multiply; + multiply = multiply << 2; + } + + return out; +} + +void convert_kmer_to_num(char *str, long length) { + + long i = 0; + + for(i = 0; i < length; i++) { switch(str[i] | 0x20 ) { case 'a': + str[i] = 0; break; case 'c': - out += 1 * multiply; + str[i] = 1; break; case 'g': - out += 2 * multiply; + str[i] = 2; break; case 't': - out += 3 * multiply; + str[i] = 3; break; default: - return error_pos; + str[i] = 5; } - multiply = multiply << 2; } - return out; } -- cgit v1.2.1