]> git.donarmstrong.com Git - rsem.git/blobdiff - EBSeq/R/TPFDRplot.R
Included EBSeq for downstream differential expression analysis
[rsem.git] / EBSeq / R / TPFDRplot.R
diff --git a/EBSeq/R/TPFDRplot.R b/EBSeq/R/TPFDRplot.R
new file mode 100644 (file)
index 0000000..9304330
--- /dev/null
@@ -0,0 +1,39 @@
+TPFDRplot <-
+function(DESeqP, EBZ, TrueDE, main, FDR=NULL){
+       Seq=seq(0.001,0.5,by=0.001)
+       DETPR=rep(0,length(Seq))
+       EBTPR=rep(0,length(Seq))
+       DEFDR=rep(0,length(Seq))
+       EBFDR=rep(0,length(Seq))
+       DETPNum=rep(0,length(Seq))
+    EBTPNum=rep(0,length(Seq))
+    DEFDNum=rep(0,length(Seq))
+    EBFDNum=rep(0,length(Seq))
+       for (i in 1:length(Seq)){
+               DESeqOnes=names(DESeqP)[DESeqP<=Seq[i]]
+               if (length(FDR)==0) EBOnes=names(EBZ)[EBZ>=crit.fun(1-EBZ, Seq[i])]
+               else if (FDR=="H") EBOnes=names(EBZ)[EBZ>=(1-Seq[i])]
+                       else EBOnes=names(EBZ)[EBZ>=FDR[i]]
+
+               DETPNum[i]=sum(DESeqOnes%in%TrueDE)
+               EBTPNum[i]=sum(EBOnes%in%TrueDE)
+               DEFDNum[i]=sum(!DESeqOnes%in%TrueDE)
+               EBFDNum[i]=sum(!EBOnes%in%TrueDE)
+               
+               DETPR[i]=DETPNum[i]/length(TrueDE)
+               EBTPR[i]=EBTPNum[i]/length(TrueDE)
+               DEFDR[i]=DEFDNum[i]/length(TrueDE)
+               EBFDR[i]=EBFDNum[i]/length(TrueDE)
+       }
+       plot(Seq,DETPR,ylim=c(0,1),xlim=c(0,.5),type="l",col="red", main=paste(main, "TPR"),xlab="controled FDR level", ylab="TPR",lwd=2)
+       lines(Seq,EBTPR,col="blue",lwd=2)
+       legend("bottomright",lwd=2, col=c("red","blue"), c("DESeq","EBSeq"))
+
+       plot(Seq,DEFDR,ylim=c(0,1),xlim=c(0,.5),type="l",col="red", main=paste(main, "FDR"),xlab="controled FDR level", ylab="TPR",lwd=2)
+       lines(Seq,EBFDR,col="blue",lwd=2)
+       legend("topleft", lwd=2, col=c("red","blue"), c("DESeq","EBSeq"))
+
+
+       output=cbind( DETPR,EBTPR, DEFDR,EBFDR,DETPNum,EBTPNum,DEFDNum,EBFDNum)
+}
+