aboutsummaryrefslogtreecommitdiff
path: root/kmer_utils.c
diff options
context:
space:
mode:
authorCalvin Morrison <mutantturkey@gmail.com>2013-09-28 11:52:45 -0700
committerCalvin Morrison <mutantturkey@gmail.com>2013-09-28 11:52:45 -0700
commit4d00f90fd8b1b9e38eea297336ee83a5e5c9e764 (patch)
tree23c4d52aeb90b3c4cf2f8166161a06244a08cab3 /kmer_utils.c
parent8d1e990611a128d123e47f8a068ff9b045794db4 (diff)
idea
Diffstat (limited to 'kmer_utils.c')
-rw-r--r--kmer_utils.c26
1 files changed, 19 insertions, 7 deletions
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;
}