diff options
author | Calvin Morrison <mutantturkey@gmail.com> | 2014-01-17 13:42:09 -0500 |
---|---|---|
committer | Calvin Morrison <mutantturkey@gmail.com> | 2014-01-17 13:42:09 -0500 |
commit | 96fdab29cf1cf500246d6ac84f1334bf7fa93bd4 (patch) | |
tree | 570ce4f6e06254e73be3657e16333f415d7e25c6 /melting_range.c | |
parent | c5442da2baef615119e65f10e874886be452958c (diff) |
add melting_range c code, update python, update makefile
Diffstat (limited to 'melting_range.c')
-rw-r--r-- | melting_range.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/melting_range.c b/melting_range.c new file mode 100644 index 0000000..2c89195 --- /dev/null +++ b/melting_range.c @@ -0,0 +1,58 @@ +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <unistd.h> + +float melting_temperature(char *mer) { + + float a = 0; + float c = 0; + float g = 0; + float t = 0; + int i = 0; + + for(i = 0; i < strlen(mer); i++) { + switch(mer[i]) { + case 'A': + a++; + break; + case 'C': + c++; + break; + case 'G': + g++; + break; + case 'T': + t++; + break; + default: + break; + } + } + + if(strlen(mer) < 13) + return ((a+t) * 2) + ((c+g) * 4); + else + return 64.9 + 41.0*(g+c-16.4)/(a+t+g+c); +} + +int main(int argc, char **argv){ + + if(argc < 3) { + printf("please supply the min and max as stdargs"); + exit(EXIT_FAILURE); + } + float min = atof(argv[1]); + float max = atof(argv[2]); + + char mer[24] = { 0 }; + int count = 0; + + while(fscanf(stdin, "%s\t%d\n", &mer, &count) == 2) { + float temp = melting_temperature(mer); + if( (temp > min) && (temp < max) ) + printf("%s\t%d\n", mer, count); + } + + exit(EXIT_SUCCESS); +} |