static void serpent_encrypt(const uint32_t in_blk[4], uint32_t out_blk[], const uint32_t *l_key) { uint32_t a,b,c,d,e,f,g,h; uint32_t t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,t13,t14,t15,t16; #ifdef BLOCK_SWAP a = byteswap32(in_blk[3]); b = byteswap32(in_blk[2]); c = byteswap32(in_blk[1]); d = byteswap32(in_blk[0]); #else a = in_blk[0]; b = in_blk[1]; c = in_blk[2]; d = in_blk[3]; #endif k_xor( 0,a,b,c,d); sb0(a,b,c,d,e,f,g,h); rot(e,f,g,h); k_xor( 1,e,f,g,h); sb1(e,f,g,h,a,b,c,d); rot(a,b,c,d); k_xor( 2,a,b,c,d); sb2(a,b,c,d,e,f,g,h); rot(e,f,g,h); k_xor( 3,e,f,g,h); sb3(e,f,g,h,a,b,c,d); rot(a,b,c,d); k_xor( 4,a,b,c,d); sb4(a,b,c,d,e,f,g,h); rot(e,f,g,h); k_xor( 5,e,f,g,h); sb5(e,f,g,h,a,b,c,d); rot(a,b,c,d); k_xor( 6,a,b,c,d); sb6(a,b,c,d,e,f,g,h); rot(e,f,g,h); k_xor( 7,e,f,g,h); sb7(e,f,g,h,a,b,c,d); rot(a,b,c,d); k_xor( 8,a,b,c,d); sb0(a,b,c,d,e,f,g,h); rot(e,f,g,h); k_xor( 9,e,f,g,h); sb1(e,f,g,h,a,b,c,d); rot(a,b,c,d); k_xor(10,a,b,c,d); sb2(a,b,c,d,e,f,g,h); rot(e,f,g,h); k_xor(11,e,f,g,h); sb3(e,f,g,h,a,b,c,d); rot(a,b,c,d); k_xor(12,a,b,c,d); sb4(a,b,c,d,e,f,g,h); rot(e,f,g,h); k_xor(13,e,f,g,h); sb5(e,f,g,h,a,b,c,d); rot(a,b,c,d); k_xor(14,a,b,c,d); sb6(a,b,c,d,e,f,g,h); rot(e,f,g,h); k_xor(15,e,f,g,h); sb7(e,f,g,h,a,b,c,d); rot(a,b,c,d); k_xor(16,a,b,c,d); sb0(a,b,c,d,e,f,g,h); rot(e,f,g,h); k_xor(17,e,f,g,h); sb1(e,f,g,h,a,b,c,d); rot(a,b,c,d); k_xor(18,a,b,c,d); sb2(a,b,c,d,e,f,g,h); rot(e,f,g,h); k_xor(19,e,f,g,h); sb3(e,f,g,h,a,b,c,d); rot(a,b,c,d); k_xor(20,a,b,c,d); sb4(a,b,c,d,e,f,g,h); rot(e,f,g,h); k_xor(21,e,f,g,h); sb5(e,f,g,h,a,b,c,d); rot(a,b,c,d); k_xor(22,a,b,c,d); sb6(a,b,c,d,e,f,g,h); rot(e,f,g,h); k_xor(23,e,f,g,h); sb7(e,f,g,h,a,b,c,d); rot(a,b,c,d); k_xor(24,a,b,c,d); sb0(a,b,c,d,e,f,g,h); rot(e,f,g,h); k_xor(25,e,f,g,h); sb1(e,f,g,h,a,b,c,d); rot(a,b,c,d); k_xor(26,a,b,c,d); sb2(a,b,c,d,e,f,g,h); rot(e,f,g,h); k_xor(27,e,f,g,h); sb3(e,f,g,h,a,b,c,d); rot(a,b,c,d); k_xor(28,a,b,c,d); sb4(a,b,c,d,e,f,g,h); rot(e,f,g,h); k_xor(29,e,f,g,h); sb5(e,f,g,h,a,b,c,d); rot(a,b,c,d); k_xor(30,a,b,c,d); sb6(a,b,c,d,e,f,g,h); rot(e,f,g,h); k_xor(31,e,f,g,h); sb7(e,f,g,h,a,b,c,d); k_xor(32,a,b,c,d); #ifdef BLOCK_SWAP out_blk[3] = byteswap32(a); out_blk[2] = byteswap32(b); out_blk[1] = byteswap32(c); out_blk[0] = byteswap32(d); #else out_blk[0] = a; out_blk[1] = b; out_blk[2] = c; out_blk[3] = d; #endif };
void abcFilterSNP::run(funkyPars *pars){ if(!doSnpStat) return; chunkyT *chk = pars->chk; if(doSnpStat==1){ kstring_t *bufstr = new kstring_t; bufstr->s=NULL;bufstr->l=bufstr->m=0; //loop over sites; for(int s=0;s<pars->numSites;s++){ if(pars->keepSites[s]==0) continue; //loop over samples int cnts[4]={0,0,0,0}; for(int i=0;i<pars->nInd;i++){ tNode *nd = chk->nd[s][i]; if(nd==NULL) continue; for(int l=0;l<nd->l;l++){ int obB = refToInt[nd->seq[l]]; // fprintf(stderr,"%c ",nd.seq[l]); int strand = (isupper(nd->seq[l])==0)<<1; // fprintf(stderr,"strand:%d\n",strand); if(obB==4) continue; if((obB!=pars->major[s] && obB!=pars->minor[s]) ) continue; if(obB!=pars->major[s]) strand +=1; //fprintf(stderr,"strand=%d\n",strand); cnts[strand]++; } } ksprintf(bufstr,"%s\t%d\t%d %d %d %d\t",header->target_name[pars->refId],pars->posi[s]+1, cnts[0],cnts[1],cnts[2],cnts[3]); ksprintf(bufstr,"%f:%f:%f\t",sb1(cnts),sb2(cnts),sb3(cnts)); funkyHWE *hweStruct = (funkyHWE *) pars->extras[8];//THIS IS VERY NASTY! the ordering within general.cpp is now important double lrt = 2*hweStruct->like0[s]-2*hweStruct->likeF[s]; double pval; if(lrt<0) pval =1; else pval =1- chi.cdf(lrt); ksprintf(bufstr,"%f:%e\t",lrt,pval); double Z = baseQbias(chk->nd[s],pars->nInd,refToInt[pars->major[s]],refToInt[pars->minor[s]]); ksprintf(bufstr,"%f:%e\n",Z,2*phi(Z)); } pars->extras[index] = bufstr; } }
void testRedraw() { FrameBuffer fb; fb.backgroundColor = (Color(255, 255, 255)); fb.clear(); ShadowBuffer sb(fb.width, fb.height, 0, 0, fb.finfo.line_length); sb.backgroundColor = Color(50, 50, 50); ShadowBuffer sb2(sb.width - 100, sb.height, 0, 0, fb.finfo.line_length); sb2.backgroundColor = (Color(100, 100, 100)); ShadowBuffer sb3(200, 200, 1166, 0, fb.finfo.line_length); sb3.backgroundColor = (Color(0, 0, 0)); sb3.clear(); sb.shadows.push_back(&sb2); sb.shadows.push_back(&sb3); for (int j = 0; j < 50; j++) { sb.clear(); sb2.clear(); //START create boxes for (int i = 0; i < 50; i++) { Color c(rand() % 255, rand() % 255, rand() % 255); int offsetX = rand() % sb2.width; int offsetY = rand() % sb2.height; for (int y = 0; y < 100; y++) { for (int x = 0; x < 100; x++) { sb2.plot(offsetX + x, offsetY + y, c); } } } sb3.offsetX -= 2; sb3.offsetY += 4; //END create boxes sb.draw(); fb.draw(sb); } }