annotate MetaRNASeq.R @ 5:5d25fe2fcab2 draft

use optparse
author sblanck
date Wed, 12 Apr 2017 03:45:10 -0400
parents 93451f832736
children e5a94bc69bd6
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
93451f832736 Uploaded
sblanck
parents:
diff changeset
1 cargs <- commandArgs()
93451f832736 Uploaded
sblanck
parents:
diff changeset
2 cargs <- cargs[(which(cargs == "--args")+1):length(cargs)]
93451f832736 Uploaded
sblanck
parents:
diff changeset
3 nbargs=length(cargs)
93451f832736 Uploaded
sblanck
parents:
diff changeset
4 listfiles=vector()
93451f832736 Uploaded
sblanck
parents:
diff changeset
5 listfilenames=vector()
93451f832736 Uploaded
sblanck
parents:
diff changeset
6 for (i in seq(1,nbargs-6,2)) {
93451f832736 Uploaded
sblanck
parents:
diff changeset
7 listfiles=c(listfiles,cargs[[i]])
93451f832736 Uploaded
sblanck
parents:
diff changeset
8 listfilenames=c(listfilenames,cargs[[i+1]])
93451f832736 Uploaded
sblanck
parents:
diff changeset
9 }
93451f832736 Uploaded
sblanck
parents:
diff changeset
10 #mod<-cargs[[length(cargs) - 6]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
11 outputfile <- cargs[[length(cargs) - 5]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
12 result.html = cargs[[length(cargs) - 4]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
13 html.files.path=cargs[[length(cargs) - 3]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
14 result.template=cargs[[length(cargs) - 2]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
15
93451f832736 Uploaded
sblanck
parents:
diff changeset
16 alpha=0.05
93451f832736 Uploaded
sblanck
parents:
diff changeset
17
93451f832736 Uploaded
sblanck
parents:
diff changeset
18 #print(comparison)
93451f832736 Uploaded
sblanck
parents:
diff changeset
19
93451f832736 Uploaded
sblanck
parents:
diff changeset
20 listData=lapply(listfiles,read.table)
93451f832736 Uploaded
sblanck
parents:
diff changeset
21 orderData=lapply(listData, function(x) x[order(x[1]), ])
93451f832736 Uploaded
sblanck
parents:
diff changeset
22 rawpval=lapply(orderData,function(x) x[6])
93451f832736 Uploaded
sblanck
parents:
diff changeset
23 rawpval=lapply(rawpval, function(x) as.numeric(unlist(x)))
93451f832736 Uploaded
sblanck
parents:
diff changeset
24
93451f832736 Uploaded
sblanck
parents:
diff changeset
25 DE=list()
93451f832736 Uploaded
sblanck
parents:
diff changeset
26 DE=lapply(orderData, function(x) ifelse(x[7]<=0.05,1,0))
93451f832736 Uploaded
sblanck
parents:
diff changeset
27
93451f832736 Uploaded
sblanck
parents:
diff changeset
28 FC=list()
93451f832736 Uploaded
sblanck
parents:
diff changeset
29 FC=lapply(orderData, function(x) x[3])
93451f832736 Uploaded
sblanck
parents:
diff changeset
30
93451f832736 Uploaded
sblanck
parents:
diff changeset
31 DE=as.data.frame(DE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
32 colnames(DE)=listfilenames
93451f832736 Uploaded
sblanck
parents:
diff changeset
33 FC=as.data.frame(FC)
93451f832736 Uploaded
sblanck
parents:
diff changeset
34 colnames(FC)=listfilenames
93451f832736 Uploaded
sblanck
parents:
diff changeset
35 # the comparison must only have two values and the conds must
93451f832736 Uploaded
sblanck
parents:
diff changeset
36 # be a vector from those values, at least one of each.
93451f832736 Uploaded
sblanck
parents:
diff changeset
37
93451f832736 Uploaded
sblanck
parents:
diff changeset
38 #if (length(comparison) != 2) {
93451f832736 Uploaded
sblanck
parents:
diff changeset
39 # stop("Comparison type must be a tuple: ", cargs[length(cargs) - 8])
93451f832736 Uploaded
sblanck
parents:
diff changeset
40 #}
93451f832736 Uploaded
sblanck
parents:
diff changeset
41
93451f832736 Uploaded
sblanck
parents:
diff changeset
42 sink("/dev/null")
93451f832736 Uploaded
sblanck
parents:
diff changeset
43 dir.create(html.files.path, recursive=TRUE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
44 #library(DESeq)
93451f832736 Uploaded
sblanck
parents:
diff changeset
45 #library(HTSFilter)
93451f832736 Uploaded
sblanck
parents:
diff changeset
46
93451f832736 Uploaded
sblanck
parents:
diff changeset
47 #DE=list()
93451f832736 Uploaded
sblanck
parents:
diff changeset
48 #FC=list()
93451f832736 Uploaded
sblanck
parents:
diff changeset
49 #i=1
93451f832736 Uploaded
sblanck
parents:
diff changeset
50
93451f832736 Uploaded
sblanck
parents:
diff changeset
51 # Open the html output file
93451f832736 Uploaded
sblanck
parents:
diff changeset
52 #file.conn = file(diag.html, open="w")
93451f832736 Uploaded
sblanck
parents:
diff changeset
53
93451f832736 Uploaded
sblanck
parents:
diff changeset
54 #writeLines( c("<html><body>"), file.conn)
93451f832736 Uploaded
sblanck
parents:
diff changeset
55
93451f832736 Uploaded
sblanck
parents:
diff changeset
56 # Perform deseq analysis on each study
93451f832736 Uploaded
sblanck
parents:
diff changeset
57 #for(i in 1:length(listfiles))
93451f832736 Uploaded
sblanck
parents:
diff changeset
58 #{
93451f832736 Uploaded
sblanck
parents:
diff changeset
59 # f=listfiles[i]
93451f832736 Uploaded
sblanck
parents:
diff changeset
60 # fname=listfilenames[i]
93451f832736 Uploaded
sblanck
parents:
diff changeset
61 # study_name=unlist(strsplit(fname,"[.]"))[1]
93451f832736 Uploaded
sblanck
parents:
diff changeset
62 # print(paste0("study.name ",study_name))
93451f832736 Uploaded
sblanck
parents:
diff changeset
63 # d <- read.table(f, sep=" ", header=TRUE, row.names=1)
93451f832736 Uploaded
sblanck
parents:
diff changeset
64 # conds<-sapply(strsplit(colnames(d),"[.]"),FUN=function(x) x[1])
93451f832736 Uploaded
sblanck
parents:
diff changeset
65 # if (length(unique(conds)) != 2) {
93451f832736 Uploaded
sblanck
parents:
diff changeset
66 # warning(as.data.frame(strsplit(colnames(d),"[.]")))
93451f832736 Uploaded
sblanck
parents:
diff changeset
67 # stop("You can only have two columns types: ", paste(conds,collapse=" "))
93451f832736 Uploaded
sblanck
parents:
diff changeset
68 # }
93451f832736 Uploaded
sblanck
parents:
diff changeset
69 # if (!identical(sort(comparison), sort(unique(conds)))) {
93451f832736 Uploaded
sblanck
parents:
diff changeset
70 # stop("Column types must use the two names from Comparison type, and vice versa. Must have at least one of each in the Column types.\nColumn types: ", cargs[2], "\n", "Comparison type: ", cargs[3])
93451f832736 Uploaded
sblanck
parents:
diff changeset
71 # }
93451f832736 Uploaded
sblanck
parents:
diff changeset
72 # if (length(d) != length(conds)) {
93451f832736 Uploaded
sblanck
parents:
diff changeset
73 # stop("Number of total sample columns in counts file must correspond to the columns types field. E.g. if column types is 'kidney,kidney,liver,liver' then number of sample columns in counts file must be 4 as well.")
93451f832736 Uploaded
sblanck
parents:
diff changeset
74 # }
93451f832736 Uploaded
sblanck
parents:
diff changeset
75 #
93451f832736 Uploaded
sblanck
parents:
diff changeset
76 # cds <- newCountDataSet(d, conds)
93451f832736 Uploaded
sblanck
parents:
diff changeset
77 # cds <- estimateSizeFactors(cds)
93451f832736 Uploaded
sblanck
parents:
diff changeset
78 #
93451f832736 Uploaded
sblanck
parents:
diff changeset
79 # cdsBlind <- estimateDispersions( cds, method="blind" )
93451f832736 Uploaded
sblanck
parents:
diff changeset
80 #
93451f832736 Uploaded
sblanck
parents:
diff changeset
81 # if (length(conds) != 2) {
93451f832736 Uploaded
sblanck
parents:
diff changeset
82 # cds <- estimateDispersions( cds )
93451f832736 Uploaded
sblanck
parents:
diff changeset
83 # norep = FALSE
93451f832736 Uploaded
sblanck
parents:
diff changeset
84 # }
93451f832736 Uploaded
sblanck
parents:
diff changeset
85 #
93451f832736 Uploaded
sblanck
parents:
diff changeset
86 # if (length(conds) == 2) {
93451f832736 Uploaded
sblanck
parents:
diff changeset
87 # cds <- estimateDispersions( cds, method=method, sharingMode=mod, fitType="parametric" )
93451f832736 Uploaded
sblanck
parents:
diff changeset
88 # norep = TRUE
93451f832736 Uploaded
sblanck
parents:
diff changeset
89 # }
93451f832736 Uploaded
sblanck
parents:
diff changeset
90 #
93451f832736 Uploaded
sblanck
parents:
diff changeset
91 # filter<-HTSFilter(cds, plot=FALSE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
92 # cds.filter<-filter$filteredData
93451f832736 Uploaded
sblanck
parents:
diff changeset
93 # on.index<-which(filter$on==1)
93451f832736 Uploaded
sblanck
parents:
diff changeset
94 #
93451f832736 Uploaded
sblanck
parents:
diff changeset
95 # res<-as.data.frame(matrix(NA,nrow=nrow(cds),ncol=ncol(cds)))
93451f832736 Uploaded
sblanck
parents:
diff changeset
96 # nbT <- nbinomTest(cds.filter, comparison[1], comparison[2])
93451f832736 Uploaded
sblanck
parents:
diff changeset
97 # colnames(res)<-colnames(nbT)
93451f832736 Uploaded
sblanck
parents:
diff changeset
98 # res[on.index,]<-nbT
93451f832736 Uploaded
sblanck
parents:
diff changeset
99 # #write.table(res[order(res$padj), ], file=outputfile, quote=FALSE, row.names=FALSE, sep="\t")
93451f832736 Uploaded
sblanck
parents:
diff changeset
100 #
93451f832736 Uploaded
sblanck
parents:
diff changeset
101 #
93451f832736 Uploaded
sblanck
parents:
diff changeset
102 # temp.pval.plot = file.path( html.files.path, paste("PvalHist",i,".png",sep=""))
93451f832736 Uploaded
sblanck
parents:
diff changeset
103 # png( temp.pval.plot, width=500, height=500 )
93451f832736 Uploaded
sblanck
parents:
diff changeset
104 # hist(res$pval, breaks=100, col="skyblue", border="slateblue", main="")
93451f832736 Uploaded
sblanck
parents:
diff changeset
105 # dev.off()
93451f832736 Uploaded
sblanck
parents:
diff changeset
106 #
93451f832736 Uploaded
sblanck
parents:
diff changeset
107 # writeLines( c("<h2>P-value histogram for ",study_name,"</h2>"), file.conn)
93451f832736 Uploaded
sblanck
parents:
diff changeset
108 # writeLines( c("<img src='PvalHist",i,".png'><br/><br/>"), file.conn)
93451f832736 Uploaded
sblanck
parents:
diff changeset
109 #
93451f832736 Uploaded
sblanck
parents:
diff changeset
110 # #on enregistre la p-value
93451f832736 Uploaded
sblanck
parents:
diff changeset
111 # rawpval[[study_name]]<-res$pval
93451f832736 Uploaded
sblanck
parents:
diff changeset
112 # DE[[study_name]]<-ifelse(res$padj<=alpha,1,0)
93451f832736 Uploaded
sblanck
parents:
diff changeset
113 # FC[[study_name]]<-res$log2FoldChange
93451f832736 Uploaded
sblanck
parents:
diff changeset
114 #
93451f832736 Uploaded
sblanck
parents:
diff changeset
115 # i=i+1
93451f832736 Uploaded
sblanck
parents:
diff changeset
116 #}
93451f832736 Uploaded
sblanck
parents:
diff changeset
117
93451f832736 Uploaded
sblanck
parents:
diff changeset
118
93451f832736 Uploaded
sblanck
parents:
diff changeset
119 # combinations
93451f832736 Uploaded
sblanck
parents:
diff changeset
120 library(metaRNASeq)
93451f832736 Uploaded
sblanck
parents:
diff changeset
121 fishcomb<-fishercomb(rawpval, BHth=alpha)
93451f832736 Uploaded
sblanck
parents:
diff changeset
122 warning(length(rawpval))
93451f832736 Uploaded
sblanck
parents:
diff changeset
123 invnormcomb<-invnorm(rawpval, nrep=c(8,8), BHth=alpha)
93451f832736 Uploaded
sblanck
parents:
diff changeset
124 #DE[["fishercomb"]]<-ifelse(fishcomb$adjpval<=alpha,1,0)
93451f832736 Uploaded
sblanck
parents:
diff changeset
125 #DE[["invnormcomb"]]<-ifelse(invnormcomb$adjpval<=alpha,1,0)
93451f832736 Uploaded
sblanck
parents:
diff changeset
126
93451f832736 Uploaded
sblanck
parents:
diff changeset
127 signsFC<-mapply(FC,FUN=function(x) sign(x))
93451f832736 Uploaded
sblanck
parents:
diff changeset
128 sumsigns<-apply(signsFC,1,sum)
93451f832736 Uploaded
sblanck
parents:
diff changeset
129 commonsgnFC<-ifelse(abs(sumsigns)==dim(signsFC)[2],sign(sumsigns),0)
93451f832736 Uploaded
sblanck
parents:
diff changeset
130
93451f832736 Uploaded
sblanck
parents:
diff changeset
131 DEresults <- data.frame(DE=DE,"DE.fishercomb"=ifelse(fishcomb$adjpval<=alpha,1,0),"DE.invnorm"=ifelse(invnormcomb$adjpval<=alpha,1,0))
93451f832736 Uploaded
sblanck
parents:
diff changeset
132
93451f832736 Uploaded
sblanck
parents:
diff changeset
133 unionDE <- unique(c(fishcomb$DEindices,invnormcomb$DEindices))
93451f832736 Uploaded
sblanck
parents:
diff changeset
134 FC.selecDE <- data.frame(DEresults[unionDE,],FC[unionDE,],signFC=commonsgnFC[unionDE])
93451f832736 Uploaded
sblanck
parents:
diff changeset
135 keepDE <- FC.selecDE[which(abs(FC.selecDE$signFC)==1),]
93451f832736 Uploaded
sblanck
parents:
diff changeset
136
93451f832736 Uploaded
sblanck
parents:
diff changeset
137 fishcomb_de <- rownames(keepDE)[which(keepDE[,"DE.fishercomb"]==1)]
93451f832736 Uploaded
sblanck
parents:
diff changeset
138 invnorm_de <- rownames(keepDE)[which(keepDE[,"DE.invnorm"]==1)]
93451f832736 Uploaded
sblanck
parents:
diff changeset
139 indstudy_de = list()
93451f832736 Uploaded
sblanck
parents:
diff changeset
140 for (i in 1:length(listfiles)) {
93451f832736 Uploaded
sblanck
parents:
diff changeset
141 currentIndstudy_de = rownames(keepDE)[which(keepDE[,i]==1)]
93451f832736 Uploaded
sblanck
parents:
diff changeset
142 indstudy_de[[listfilenames[i]]]=currentIndstudy_de
93451f832736 Uploaded
sblanck
parents:
diff changeset
143 }
93451f832736 Uploaded
sblanck
parents:
diff changeset
144
93451f832736 Uploaded
sblanck
parents:
diff changeset
145 IDDIRRfishcomb=IDD.IRR(fishcomb_de,indstudy_de)
93451f832736 Uploaded
sblanck
parents:
diff changeset
146 IDDIRRinvnorm=IDD.IRR(invnorm_de,indstudy_de)
93451f832736 Uploaded
sblanck
parents:
diff changeset
147
93451f832736 Uploaded
sblanck
parents:
diff changeset
148 #conflits<-data.frame(ID=listData[[1]][rownames(DEresults),1],Fishercomb=DEresults[["DE.fishercomb"]],Invnormcomb=DEresults[["DE.invnorm"]],sign=commonsgnFC)
93451f832736 Uploaded
sblanck
parents:
diff changeset
149 conflits<-data.frame(ID=listData[[1]][rownames(DEresults),1],DE=DEresults,FC=FC,signFC=commonsgnFC)
93451f832736 Uploaded
sblanck
parents:
diff changeset
150 #write DE outputfile
93451f832736 Uploaded
sblanck
parents:
diff changeset
151 write.table(conflits, outputfile,sep="\t",,row.names=FALSE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
152 library(VennDiagram)
93451f832736 Uploaded
sblanck
parents:
diff changeset
153 DE_num=apply(DEresults, 2, FUN=function(x) which(x==1))
93451f832736 Uploaded
sblanck
parents:
diff changeset
154 venn.plot<-venn.diagram(x=as.list(DE_num),filename=NULL, col="black", fill=1:length(DE_num)+1,alpha=0.6)
93451f832736 Uploaded
sblanck
parents:
diff changeset
155 temp.venn.plot = file.path( html.files.path, paste("venn.png"))
93451f832736 Uploaded
sblanck
parents:
diff changeset
156 png(temp.venn.plot,width=500,height=500)
93451f832736 Uploaded
sblanck
parents:
diff changeset
157 grid.draw(venn.plot)
93451f832736 Uploaded
sblanck
parents:
diff changeset
158 dev.off()
93451f832736 Uploaded
sblanck
parents:
diff changeset
159
93451f832736 Uploaded
sblanck
parents:
diff changeset
160 library(jsonlite)
93451f832736 Uploaded
sblanck
parents:
diff changeset
161 matrixConflits=as.matrix(conflits)
93451f832736 Uploaded
sblanck
parents:
diff changeset
162 datajson=toJSON(matrixConflits,pretty = TRUE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
163 summaryFishcombjson=toJSON(as.matrix(t(IDDIRRfishcomb)),pretty = TRUE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
164 summaryinvnormjson=toJSON(as.matrix(t(IDDIRRinvnorm)),pretty = TRUE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
165
93451f832736 Uploaded
sblanck
parents:
diff changeset
166
93451f832736 Uploaded
sblanck
parents:
diff changeset
167 #vennsplit=strsplit(result.venn,split="/")[[1]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
168 #venn=paste0("./",vennsplit[length(vennsplit)])
93451f832736 Uploaded
sblanck
parents:
diff changeset
169
93451f832736 Uploaded
sblanck
parents:
diff changeset
170
93451f832736 Uploaded
sblanck
parents:
diff changeset
171 vennFilename="venn.png"
93451f832736 Uploaded
sblanck
parents:
diff changeset
172 vennFile=file.path(html.files.path,vennFilename)
93451f832736 Uploaded
sblanck
parents:
diff changeset
173 htmlfile=readChar(result.template, file.info(result.template)$size)
93451f832736 Uploaded
sblanck
parents:
diff changeset
174 htmlfile=gsub(x=htmlfile,pattern = "###DATAJSON###",replacement = datajson, fixed = TRUE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
175 htmlfile=gsub(x=htmlfile,pattern = "###FISHSUMMARYJSON###",replacement = summaryFishcombjson, fixed = TRUE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
176 htmlfile=gsub(x=htmlfile,pattern = "###INVSUMMARYJSON###",replacement = summaryinvnormjson, fixed = TRUE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
177 htmlfile=gsub(x=htmlfile,pattern = "###VENN###",replacement = vennFilename, fixed = TRUE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
178 write(htmlfile,result.html)
93451f832736 Uploaded
sblanck
parents:
diff changeset
179
93451f832736 Uploaded
sblanck
parents:
diff changeset
180 #library(VennDiagram)
93451f832736 Uploaded
sblanck
parents:
diff changeset
181 #flog.threshold(ERROR)
93451f832736 Uploaded
sblanck
parents:
diff changeset
182 #
93451f832736 Uploaded
sblanck
parents:
diff changeset
183 ##venn.plot<-venn.diagram(x = c(res[c(1:(length(res)-3))],meta=list(res$Meta)),filename = v, col = "black", fill = c(1:(length(res)-2)), margin=0.05, alpha = 0.6,imagetype = "png")
93451f832736 Uploaded
sblanck
parents:
diff changeset
184 #dir.create(result.path, showWarnings = TRUE, recursive = FALSE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
185 #
93451f832736 Uploaded
sblanck
parents:
diff changeset
186 #showVenn<-function(liste,file)
93451f832736 Uploaded
sblanck
parents:
diff changeset
187 #{
93451f832736 Uploaded
sblanck
parents:
diff changeset
188 # venn.plot<-venn.diagram(x = liste,
93451f832736 Uploaded
sblanck
parents:
diff changeset
189 # filename = vennFilename, col = "black",
93451f832736 Uploaded
sblanck
parents:
diff changeset
190 # fill = 1:length(liste)+1,
93451f832736 Uploaded
sblanck
parents:
diff changeset
191 # margin=0.05, alpha = 0.6,imagetype = "png")
93451f832736 Uploaded
sblanck
parents:
diff changeset
192 ## png(file);
93451f832736 Uploaded
sblanck
parents:
diff changeset
193 ## grid.draw(venn.plot);
93451f832736 Uploaded
sblanck
parents:
diff changeset
194 ## dev.off();
93451f832736 Uploaded
sblanck
parents:
diff changeset
195 #
93451f832736 Uploaded
sblanck
parents:
diff changeset
196 #}
93451f832736 Uploaded
sblanck
parents:
diff changeset
197 #
93451f832736 Uploaded
sblanck
parents:
diff changeset
198 #l=list()
93451f832736 Uploaded
sblanck
parents:
diff changeset
199 #for(i in 1:length(esets))
93451f832736 Uploaded
sblanck
parents:
diff changeset
200 #{
93451f832736 Uploaded
sblanck
parents:
diff changeset
201 # l[[paste("study",i,sep="")]]<-res[[i]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
202 #}
93451f832736 Uploaded
sblanck
parents:
diff changeset
203 #l[["Meta"]]=res[[length(res)-1]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
204 #showVenn(l,vennFile)
93451f832736 Uploaded
sblanck
parents:
diff changeset
205 #file.copy(vennFilename,result.path)
93451f832736 Uploaded
sblanck
parents:
diff changeset
206
93451f832736 Uploaded
sblanck
parents:
diff changeset
207
93451f832736 Uploaded
sblanck
parents:
diff changeset
208 #writeLines( c("<h2>Venn Plot</h2>"), file.conn)
93451f832736 Uploaded
sblanck
parents:
diff changeset
209 #writeLines( c("<img src='venn.png'><br/><br/>"), file.conn)
93451f832736 Uploaded
sblanck
parents:
diff changeset
210 #writeLines( c("</body></html>"), file.conn)
93451f832736 Uploaded
sblanck
parents:
diff changeset
211 #close(file.conn)
93451f832736 Uploaded
sblanck
parents:
diff changeset
212 #print("passe6")
93451f832736 Uploaded
sblanck
parents:
diff changeset
213 #sink(NULL)