function cor(ii){ sxy=0;sx=0;s2x=0;sy=0;s2y=0; for (ii=1;ii<=n;ii++){x=xd[ii];y=yd[ii]; if (verb) print x" "y; sxy+=x*y sx+=x;s2x+=x*x; sy+=y;s2y+=y*y;} if (verb) print "n*s2x-sx*sx " n*s2x-sx*sx" (n*s2y-sy*sy) "(n*s2y-sy*sy) pearsonCorr= (n*sxy-sx*sy)/(sqrt(n*s2x-sx*sx)*sqrt(n*s2y-sy*sy)) return pearsonCorr; } BEGIN{ getline;h=$0; #print "gene "h print "maxAnticorr maxAnticorrCond nAnticorr AvgAnticorr maxAntiIso gene "h" "h; split(h,hf," "); nsamp=NF-7; nsamp2=nsamp/2; }{ # print $1" A" id=$3;all[id]=$0;ok[id]=1;nr++; gid=$2;Aqval[id]=$7; i=++ngid[gid];tgrp[gid,i]=id; if ($1!="NA"){gn[gid]=$1;gnok[gid]=1;} }END{ # print "ref transcripts "nr >>"/dev/stderr" # printf("%s iso2geneName iso2geneID iso2transcriptID iso2logFC iso2logCPM iso2PValue iso2FDR",h); # printf("\n"); # n=nsamp; n=4; for (gid in ngid){ ng=ngid[gid]; if (ng>1){ if (substr(gn[gid],2,7)=="Mapkap1") {verb=1;print "DBG:Mapkap1"}else{verb=0;} gok=0;minq=1; for (i=1;i<=ng;i++){ id=tgrp[gid,i]; if (1.0*Aqval[id]<=0.05){ j=++gok;Lgok=i; if (verb==1){print "OK1"gid" "Aqval[id]" "id" "Afc[id]" "Apval[id];} } #one sig DE iso if (1.0*Aqval[id]<=minq){minq=1.0*Aqval[id];Lgok=i;} } if (gok>1){nc=0; for (i=1;i<=ng;i++){ id=tgrp[gid,i]; if (1.0*Aqval[id]<=0.05){#get the DE isoforms j=++nc;cortest[j]=all[id]; if (gnok[gid]==1) {x=gn[gid];}else{x="NA";} if (verb) printf("%s %s\n",x,all[id]); } } if (verb) print "IsoGroupSize "nc; oneCondAS=0; nanticorr=0;maxantic=1;santic=0; for (cond=1;cond<=nsamp2;cond+=2){ if (verb) print "cond "cond" hA1 "hf[cond+7]" hA2 "hf[cond+8]" hB1 "hf[cond+7+nsamp2]" hB2"hf[cond+8+nsamp2] for (i=1;i0){ x=cor(); # if ((fca*fcb<0)&&(x<=-0.5)){nanticorr++; #the overall expression might not be anticorrelated, just one condition is if ((x<=-0.5)){nanticorr++; santic+=x; if (x0){ if (gnok[gid]==1) {x=gn[gid];}else{x="NA";} print maxantic" "hf[maxanticCond]" "nanticorr" "santic/nanticorr" "antic_b" "x" "cortest[antic_i]" "cortest[antic_j]; totAS++; } } } } }