--- /dev/null
+MergeIso <-
+function(IsoSIMout, Num, Path="./"){
+NumSample=ncol(do.call(rbind, IsoSIMout[[i]]$generateData))
+
+NumIso=rep(0,Num)
+for (i in 1:Num)NumIso[i]=nrow(do.call(rbind, IsoSIMout[[i]]$generateData))
+
+MinNumIso=min(NumIso)
+AproxNumDE=length(unlist(IsoSIMout[[1]]$TrueDE))
+
+IsoMergeTable=matrix(rep(0,60),nrow=10)
+ for(i in 1:Num)IsoMergeTable=IsoMergeTable+IsoSIMout[[i]][[1]]
+ IsoMergeTable=IsoMergeTable/Num
+ IsoMergeTable=round(IsoMergeTable,2)
+
+ IsoMergeDVD=rep(0,2)
+ for(i in 1:Num)IsoMergeDVD=IsoMergeDVD+IsoSIMout[[i]][[3]]
+ IsoMergeDVD=round(IsoMergeDVD/Num,2)
+
+ IsoMergePhi=matrix(rep(0,18),nrow=2)
+ for(i in 1:Num)IsoMergePhi=IsoMergePhi+IsoSIMout[[i]][[4]]
+ IsoMergePhi=round(IsoMergePhi/Num,2)
+## Write
+TXTname=paste(paste("../IsoOutput/",paste("Iso","DVD",IsoMergeDVD[1], IsoMergeDVD[2],"Sample",NumSample,sep="_"),sep=""),".txt",sep="")
+write.table(IsoMergeTable, file=TXTname)
+
+
+####### Note everytime # DE genes and # total genes may different. (since NA issue)
+ IsoMergeFD=matrix(rep(0,5*MinNumIso),ncol=5)
+ IsoMergeFD.p=matrix(rep(0,5*MinNumIso),ncol=5)
+ IsoMergeTP.p=matrix(rep(0,5*MinNumIso),ncol=5)
+ IsoMergeFN.p=matrix(rep(0,5*MinNumIso),ncol=5)
+ IsoMergeTN.p=matrix(rep(0,5*MinNumIso),ncol=5)
+ IsoMergeFDR=matrix(rep(0,5*MinNumIso),ncol=5)
+ IsoMergeTPR=matrix(rep(0,5*MinNumIso),ncol=5)
+ IsoMergeFPR=matrix(rep(0,5*MinNumIso),ncol=5)
+
+ for(i in 1:Num){
+ # Make sure names in the same order
+ # Get FD number for each number of genes found
+ # columns are samples
+ TotalNum=nrow(do.call(rbind, IsoSIMout[[i]]$generateData))
+ NumDE=length(unlist(IsoSIMout[[i]]$TrueDE))
+ EBSeqNames=names(IsoSIMout[[i]]$EBSeqPP)
+ tmpMatrix=cbind(IsoSIMout[[i]]$DESeqP[EBSeqNames],IsoSIMout[[i]]$edgeRP[EBSeqNames], exp(IsoSIMout[[i]]$BaySeqPP[EBSeqNames,2]),IsoSIMout[[i]]$BBSeqP[EBSeqNames],IsoSIMout[[i]]$EBSeqPP)
+ # Bayseq and EBseq are PP. Others are p value
+ tmpFD=TopCts(tmpMatrix, c(0,0,1,0,1), unlist(IsoSIMout[[i]]$TrueDE)[unlist(IsoSIMout[[i]]$TrueDE)%in%EBSeqNames], MinNumIso)
+ # Get percentage for FP, TP, TN, FN!
+ tmpFD.p=tmpFD/TotalNum
+ # TP = Find - FD
+ tmpTP.p=(outer(c(1:MinNumIso),rep(1,5))-tmpFD)/TotalNum
+ # FN = TrueDE - TP
+ tmpFN.p=NumDE/TotalNum - tmpTP.p
+ # TN = TrueEE - FD
+ tmpTN.p=(TotalNum-NumDE)/TotalNum - tmpFD.p
+
+ tmpFDR=tmpFD.p/(tmpFD.p+tmpTP.p)
+ tmpFPR=tmpFD.p/(tmpFD.p+tmpTN.p)
+ tmpTPR=tmpTP.p/(tmpFN.p+tmpTP.p)
+ IsoMergeFDR=IsoMergeFDR+tmpFDR
+ IsoMergeTPR=IsoMergeTPR+tmpTPR
+ IsoMergeFPR=IsoMergeFPR+tmpFPR
+
+ IsoMergeFD.p=IsoMergeFD.p+tmpFD.p
+ IsoMergeTP.p=IsoMergeTP.p+tmpTP.p
+ IsoMergeFN.p=IsoMergeFN.p+tmpFN.p
+ IsoMergeTN.p=IsoMergeTN.p+tmpTN.p
+
+ IsoMergeFD=IsoMergeFD+tmpFD
+ }
+ IsoMergeFD=IsoMergeFD/Num
+ IsoMergeFD.p=IsoMergeFD.p/Num
+ IsoMergeTP.p=IsoMergeTP.p/Num
+ IsoMergeFN.p=IsoMergeFN.p/Num
+ IsoMergeTN.p=IsoMergeTN.p/Num
+ IsoMergeFDR=IsoMergeFDR/Num
+ IsoMergeTPR=IsoMergeTPR/Num
+ IsoMergeFPR=IsoMergeFPR/Num
+
+PlotTopName=paste(paste(Path,paste("Top","Iso","DVD",IsoMergeDVD[1], IsoMergeDVD[2],"Sample",NumSample, sep="_"),sep=""),".pdf",sep="")
+
+TrueDELength=length(unlist(IsoSIMout[[i]]$TrueDE)[unlist(IsoSIMout[[i]]$TrueDE)%in%EBSeqNames])
+pdf(PlotTopName)
+ PlotTopCts(TrueDELength,IsoMergeFD[1:TrueDELength,],c("DESeq","edgeR","BaySeq","BBSeq","EBSeq"))
+dev.off()
+
+
+PlotFDName=paste(paste(Path,paste("FDTP","Iso","DVD",IsoMergeDVD[1], IsoMergeDVD[2],"Sample",NumSample,sep="_"),sep=""),".pdf",sep="")
+pdf(PlotFDName)
+ PlotFDTP(MinNumIso,IsoMergeFDR, IsoMergeTPR, c("DESeq","edgeR","BaySeq","BBSeq","EBSeq"))
+dev.off()
+
+PlotFPName=paste(paste(Path,paste("FPRTP","Iso","DVD",IsoMergeDVD[1], IsoMergeDVD[2],"Sample",NumSample,sep="_"),sep=""),".pdf",sep="")
+pdf(PlotFPName)
+ PlotFPTP(MinNumIso,IsoMergeFPR, IsoMergeTPR, c("DESeq","edgeR","BaySeq","BBSeq","EBSeq"))
+ dev.off()
+
+
+out=list(IsoMergeTable=IsoMergeTable, IsoMergeDVD=IsoMergeDVD, IsoMergePhi=IsoMergePhi, IsoMergeFD=IsoMergeFD)
+
+
+}
+