From 7a406388fad470fb5fc443b546523a4d87d96439 Mon Sep 17 00:00:00 2001 From: Mart Lubbers Date: Mon, 2 Feb 2015 10:08:23 +0100 Subject: [PATCH] ass1 done --- ass1/mart/s4109503-s4202015-sws1.tar.gz | Bin 0 -> 1237 bytes .../exercise2/parsegenome.c | 43 +++++++----------- 2 files changed, 17 insertions(+), 26 deletions(-) create mode 100644 ass1/mart/s4109503-s4202015-sws1.tar.gz diff --git a/ass1/mart/s4109503-s4202015-sws1.tar.gz b/ass1/mart/s4109503-s4202015-sws1.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d3162b4ba581c443375991e4bc6af69398d2a5dd GIT binary patch literal 1237 zcmV;`1Sjlz^51ubORv5CF_Wy$$<2gBN~(4g5#7;tmR>c@D5P=efSGT;2We6m`4* zGvS~6-|Kng|CLbde>U#u4-f0Pad6;y_xL}!=6~Nq6*!O7$9wso`=13k z&{h!~X{og96_5VyJ>0EYH`1Nhn`oHgA z&;KmwQT|^AZ=w0qlP2cv_t12kZ~{-Cg2n}50vpH42JGN%*2Ek<%Vh?3ikGgrJQHBY zlzhK`YUAJK|N8ll`TZN`KSt-jmGA^ci8_<{0DS9gCUK+n{*?`(*4d!j75T?Zr+>;x z)JgMMHxwFl#@BT@F8)SmMTv$vkCK)Vcs>(b zAVQvR8u|3?N!$8lHH-qpua$rwDwBB}B@%|lojs4#aU%=)R z>uDLA*M}~gpX2>p%(GT$IXl@hkG6+Hrwz{+j}Bm(W-_@{B5$_QkZ9V%x`yz_>%+sg z)xa({G8`d2Z8cvfd>l*ADVQfqGmTYceVtC{I4LV=W8`g*L;?@45dTddc7R${R9@nl8>JXUY81-^UcZT3Q4nABy-B{|MVNuh5;})+N zOBym(60o&JbE6G2P+~aT*jq{mOX+B%eZ!a?V@ugEbT{{TB0fTv#vd`4L_9{w8yxTD-lI-%HyIOHxA=St1y~s{_LRR zc-uyL=K0&5?EqDb1upBj?VEkAMxg4fDKO3@e|O=E(zQ7B=&-cVrXN!gr%IwrE*!rc z%Jt #include +#include int main(int argc, char* argv[]) { - if(argc != 2) - { - printf("Usage: %s filepath\n", argv[0]); - return 2; - } - char c; - int charsperline = 0; - int numlines = 0; - int occs[4] = {0, 0, 0, 0}; - - FILE *f = fopen(argv[1], "r"); + char charsperline = 0; + short numlines = 0; + long long unsigned int occs = 0; + /* When the filepath is not given or "-" assume stdin */ + FILE *f = (argc!=2 || strcmp(argv[1], "-")==0) ? stdin : fopen(argv[1], "r"); if(f == NULL) { - printf("Unable to open file..."); + printf("Unable to open file or stdin...\n"); return 2; } - while((c = fgetc(f)) != EOF) { - if(c == '\n') + if(c == '\n' && charsperline == 100 && numlines <= 500) { - if(charsperline != 100 || numlines > 500) - return -1; numlines += 1; charsperline = 0; } - else - { -/* Fancy polynome that translates A: 0, C: 1, G: 2, T: 3 */ - if(c == 'A' || c == 'C' || c == 'G' || c == 'T') - occs[(int)(.001657140781*c*c*c-0.3780662484*c*c+28.74757194*c-726.3545635)] += 1; - else - return -1; + else if((c == 'A' || c=='C' || c=='G' || c=='T') && charsperline < 100) + { /*Fancy polynomial that translates the ascii value to a bitshift*/ + occs += 1LL<<(int)(0.026514*c*c*c-6.049*c*c+459.96*c-11621.2); charsperline += 1; } + else + break; } - fclose(f); + if(f != stdout) + fclose(f); if(numlines != 500) return -1; - - printf("A: %d\nC: %d\nG: %d\nT: %d\n", occs[0], occs[1], occs[2], occs[3]); + printf("A: %llu\nC: %llu\nG: %llu\nT: %llu\n", occs & 0xFFFF, + (occs >> 16) & 0xFFFF, (occs >> 32) & 0xFFFF, (occs >> 48) & 0xFFFF); return 0; } -- 2.20.1