annotate MetaMA.R @ 5:5d25fe2fcab2 draft

use optparse
author sblanck
date Wed, 12 Apr 2017 03:45:10 -0400
parents 93451f832736
children 328f4031e5d3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2
93451f832736 Uploaded
sblanck
parents:
diff changeset
1 library(metaMA)
93451f832736 Uploaded
sblanck
parents:
diff changeset
2 library(affy)
93451f832736 Uploaded
sblanck
parents:
diff changeset
3 library(annaffy)
93451f832736 Uploaded
sblanck
parents:
diff changeset
4 library(VennDiagram)
93451f832736 Uploaded
sblanck
parents:
diff changeset
5 library(GEOquery)
93451f832736 Uploaded
sblanck
parents:
diff changeset
6
93451f832736 Uploaded
sblanck
parents:
diff changeset
7 cargs<-commandArgs()
93451f832736 Uploaded
sblanck
parents:
diff changeset
8 cargs<-cargs[(which(cargs=="--args")+1):length(cargs)]
93451f832736 Uploaded
sblanck
parents:
diff changeset
9
93451f832736 Uploaded
sblanck
parents:
diff changeset
10 nbargs=length(cargs)
93451f832736 Uploaded
sblanck
parents:
diff changeset
11 rdataList=list()
93451f832736 Uploaded
sblanck
parents:
diff changeset
12 condition1List=list()
93451f832736 Uploaded
sblanck
parents:
diff changeset
13 condition2List=list()
93451f832736 Uploaded
sblanck
parents:
diff changeset
14
93451f832736 Uploaded
sblanck
parents:
diff changeset
15 for (i in 1:(nbargs-5))
93451f832736 Uploaded
sblanck
parents:
diff changeset
16 {
93451f832736 Uploaded
sblanck
parents:
diff changeset
17 Rdata=cargs[[i]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
18 #condition1=cargs[[i+1]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
19 #condition2=cargs[[i+2]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
20 load(Rdata)
93451f832736 Uploaded
sblanck
parents:
diff changeset
21
93451f832736 Uploaded
sblanck
parents:
diff changeset
22 rdataList=c(rdataList,(eset))
93451f832736 Uploaded
sblanck
parents:
diff changeset
23 #condition1List=c(condition1List,condition1)
93451f832736 Uploaded
sblanck
parents:
diff changeset
24 #condition2List=c(condition2List,condition2)
93451f832736 Uploaded
sblanck
parents:
diff changeset
25 condition1List=c(condition1List,saveConditions[1])
93451f832736 Uploaded
sblanck
parents:
diff changeset
26 condition2List=c(condition2List,saveConditions[2])
93451f832736 Uploaded
sblanck
parents:
diff changeset
27
93451f832736 Uploaded
sblanck
parents:
diff changeset
28 }
93451f832736 Uploaded
sblanck
parents:
diff changeset
29
93451f832736 Uploaded
sblanck
parents:
diff changeset
30 #tables<-cargs[[1]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
31 #tech<-cargs[[2]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
32 result.html<-cargs[[nbargs-4]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
33 result.path<-cargs[[nbargs-3]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
34 #result.venn<-cargs[[nbargs-3]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
35 result.template<-cargs[[nbargs-2]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
36
93451f832736 Uploaded
sblanck
parents:
diff changeset
37 #sink("/dev/null")
93451f832736 Uploaded
sblanck
parents:
diff changeset
38 #dir.create(temp.files.path,recursive=TRUE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
39 #file.conn=file(diag.html,open="w")
93451f832736 Uploaded
sblanck
parents:
diff changeset
40
93451f832736 Uploaded
sblanck
parents:
diff changeset
41 #writeLines(c("<html><body bgcolor='lightgray'>"),file.conn)
93451f832736 Uploaded
sblanck
parents:
diff changeset
42
93451f832736 Uploaded
sblanck
parents:
diff changeset
43 showVenn<-function(res,file)
93451f832736 Uploaded
sblanck
parents:
diff changeset
44 {
93451f832736 Uploaded
sblanck
parents:
diff changeset
45 venn.plot<-venn.diagram(x = c(res[c(1:(length(res)-3))],meta=list(res$Meta)),
93451f832736 Uploaded
sblanck
parents:
diff changeset
46 filename = NULL, col = "black",
93451f832736 Uploaded
sblanck
parents:
diff changeset
47 fill = c(1:(length(res)-2)),
93451f832736 Uploaded
sblanck
parents:
diff changeset
48 margin=0.05, alpha = 0.6)
93451f832736 Uploaded
sblanck
parents:
diff changeset
49 jpeg(file)
93451f832736 Uploaded
sblanck
parents:
diff changeset
50 grid.draw(venn.plot)
93451f832736 Uploaded
sblanck
parents:
diff changeset
51 dev.off()
93451f832736 Uploaded
sblanck
parents:
diff changeset
52 }
93451f832736 Uploaded
sblanck
parents:
diff changeset
53
93451f832736 Uploaded
sblanck
parents:
diff changeset
54
93451f832736 Uploaded
sblanck
parents:
diff changeset
55 library("org.Hs.eg.db")
93451f832736 Uploaded
sblanck
parents:
diff changeset
56 x <- org.Hs.egUNIGENE
93451f832736 Uploaded
sblanck
parents:
diff changeset
57 mapped_genes <- mappedkeys(x)
93451f832736 Uploaded
sblanck
parents:
diff changeset
58 link <- as.list(x[mapped_genes])
93451f832736 Uploaded
sblanck
parents:
diff changeset
59
93451f832736 Uploaded
sblanck
parents:
diff changeset
60 probe2unigene<-function(expset){
93451f832736 Uploaded
sblanck
parents:
diff changeset
61 #construction of the map probe->unigene
93451f832736 Uploaded
sblanck
parents:
diff changeset
62 probes=rownames(exprs(expset))
93451f832736 Uploaded
sblanck
parents:
diff changeset
63 gene_id=fData(expset)[probes,"ENTREZ_GENE_ID"]
93451f832736 Uploaded
sblanck
parents:
diff changeset
64 unigene=link[gene_id]
93451f832736 Uploaded
sblanck
parents:
diff changeset
65 names(unigene)<-probes
93451f832736 Uploaded
sblanck
parents:
diff changeset
66 probe_unigene=unigene
93451f832736 Uploaded
sblanck
parents:
diff changeset
67 }
93451f832736 Uploaded
sblanck
parents:
diff changeset
68
93451f832736 Uploaded
sblanck
parents:
diff changeset
69 unigene2probe<-function(map)
93451f832736 Uploaded
sblanck
parents:
diff changeset
70 {
93451f832736 Uploaded
sblanck
parents:
diff changeset
71 suppressWarnings(x <- cbind(unlist(map), names(map)))
93451f832736 Uploaded
sblanck
parents:
diff changeset
72 unigene_probe=split(x[,2], x[,1])
93451f832736 Uploaded
sblanck
parents:
diff changeset
73 }
93451f832736 Uploaded
sblanck
parents:
diff changeset
74
93451f832736 Uploaded
sblanck
parents:
diff changeset
75 convert2metaMA<-function(listStudies,mergemeth=mean)
93451f832736 Uploaded
sblanck
parents:
diff changeset
76 {
93451f832736 Uploaded
sblanck
parents:
diff changeset
77 if (!(class(listStudies) %in% c("list"))) {
93451f832736 Uploaded
sblanck
parents:
diff changeset
78 stop("listStudies must be a list")
93451f832736 Uploaded
sblanck
parents:
diff changeset
79 }
93451f832736 Uploaded
sblanck
parents:
diff changeset
80 conv_unigene=lapply(listStudies,
93451f832736 Uploaded
sblanck
parents:
diff changeset
81 FUN=function(x) unigene2probe(probe2unigene(x)))
93451f832736 Uploaded
sblanck
parents:
diff changeset
82
93451f832736 Uploaded
sblanck
parents:
diff changeset
83 id=lapply(conv_unigene,names)
93451f832736 Uploaded
sblanck
parents:
diff changeset
84 inter=Reduce(intersect,id)
93451f832736 Uploaded
sblanck
parents:
diff changeset
85 if(length(inter)<=0){stop("no common genes")}
93451f832736 Uploaded
sblanck
parents:
diff changeset
86 print(paste(length(inter),"genes in common"))
93451f832736 Uploaded
sblanck
parents:
diff changeset
87 esets=lapply(1:length(listStudies),FUN=function(i){
93451f832736 Uploaded
sblanck
parents:
diff changeset
88 l=lapply(conv_unigene[[i]][inter],
93451f832736 Uploaded
sblanck
parents:
diff changeset
89 FUN=function(x) exprs(listStudies[[i]])[x,,drop=TRUE])
93451f832736 Uploaded
sblanck
parents:
diff changeset
90 esetsgr=t(sapply(l,FUN=function(ll) if(is.null(dim(ll))){ll}
93451f832736 Uploaded
sblanck
parents:
diff changeset
91 else{apply(ll,2,mergemeth)}))
93451f832736 Uploaded
sblanck
parents:
diff changeset
92 esetsgr
93451f832736 Uploaded
sblanck
parents:
diff changeset
93 })
93451f832736 Uploaded
sblanck
parents:
diff changeset
94 return(list(esets=esets,conv.unigene=conv_unigene))
93451f832736 Uploaded
sblanck
parents:
diff changeset
95 }
93451f832736 Uploaded
sblanck
parents:
diff changeset
96
93451f832736 Uploaded
sblanck
parents:
diff changeset
97 normalization<-function(data){
93451f832736 Uploaded
sblanck
parents:
diff changeset
98 ex <- exprs(data)
93451f832736 Uploaded
sblanck
parents:
diff changeset
99 qx <- as.numeric(quantile(ex, c(0., 0.25, 0.5, 0.75, 0.99, 1.0), na.rm=T))
93451f832736 Uploaded
sblanck
parents:
diff changeset
100 LogC <- (qx[5] > 100) ||
93451f832736 Uploaded
sblanck
parents:
diff changeset
101 (qx[6]-qx[1] > 50 && qx[2] > 0) ||
93451f832736 Uploaded
sblanck
parents:
diff changeset
102 (qx[2] > 0 && qx[2] < 1 && qx[4] > 1 && qx[4] < 2)
93451f832736 Uploaded
sblanck
parents:
diff changeset
103 if (LogC) { ex[which(ex <= 0)] <- NaN
93451f832736 Uploaded
sblanck
parents:
diff changeset
104 return (log2(ex)) } else {
93451f832736 Uploaded
sblanck
parents:
diff changeset
105 return (ex)
93451f832736 Uploaded
sblanck
parents:
diff changeset
106 }
93451f832736 Uploaded
sblanck
parents:
diff changeset
107 }
93451f832736 Uploaded
sblanck
parents:
diff changeset
108
93451f832736 Uploaded
sblanck
parents:
diff changeset
109
93451f832736 Uploaded
sblanck
parents:
diff changeset
110
93451f832736 Uploaded
sblanck
parents:
diff changeset
111
93451f832736 Uploaded
sblanck
parents:
diff changeset
112 filterCondition<-function(gset,condition1, condition2){
93451f832736 Uploaded
sblanck
parents:
diff changeset
113 selected=c(which((tolower(as.character(pData(gset)["source_name_ch1"][,1]))==condition1)),
93451f832736 Uploaded
sblanck
parents:
diff changeset
114 which(tolower(as.character(pData(gset)["source_name_ch1"][,1]))==condition2))
93451f832736 Uploaded
sblanck
parents:
diff changeset
115
93451f832736 Uploaded
sblanck
parents:
diff changeset
116 return(gset[,selected])
93451f832736 Uploaded
sblanck
parents:
diff changeset
117 }
93451f832736 Uploaded
sblanck
parents:
diff changeset
118
93451f832736 Uploaded
sblanck
parents:
diff changeset
119 rdatalist <- lapply(rdataList, FUN=function(datalist) normalization(datalist))
93451f832736 Uploaded
sblanck
parents:
diff changeset
120
93451f832736 Uploaded
sblanck
parents:
diff changeset
121 classes=list()
93451f832736 Uploaded
sblanck
parents:
diff changeset
122 filteredRdataList=list()
93451f832736 Uploaded
sblanck
parents:
diff changeset
123 for (i in 1:length(rdatalist))
93451f832736 Uploaded
sblanck
parents:
diff changeset
124 {
93451f832736 Uploaded
sblanck
parents:
diff changeset
125 currentData=rdataList[[i]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
126 currentCondition1=condition1List[[i]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
127 currentCondition2=condition2List[[i]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
128 #currentData=filterCondition(currentData,currentCondition1,currentCondition2)
93451f832736 Uploaded
sblanck
parents:
diff changeset
129 currentClasses=as.numeric(tolower(as.character(pData(currentData)["source_name_ch1"][,1]))==currentCondition1)
93451f832736 Uploaded
sblanck
parents:
diff changeset
130 filteredRdataList=c(filteredRdataList,currentData)
93451f832736 Uploaded
sblanck
parents:
diff changeset
131 classes=c(classes,list(currentClasses))
93451f832736 Uploaded
sblanck
parents:
diff changeset
132 #write(file="~/galaxy-modal/classes.txt",classes)
93451f832736 Uploaded
sblanck
parents:
diff changeset
133 }
93451f832736 Uploaded
sblanck
parents:
diff changeset
134
93451f832736 Uploaded
sblanck
parents:
diff changeset
135 #rdataList=filteredRdataList
93451f832736 Uploaded
sblanck
parents:
diff changeset
136 conv=convert2metaMA(rdataList)
93451f832736 Uploaded
sblanck
parents:
diff changeset
137 esets=conv$esets
93451f832736 Uploaded
sblanck
parents:
diff changeset
138 conv_unigene=conv$conv.unigene
93451f832736 Uploaded
sblanck
parents:
diff changeset
139
93451f832736 Uploaded
sblanck
parents:
diff changeset
140 #write(file="~/galaxy-modal/esets.txt",length(esets))
93451f832736 Uploaded
sblanck
parents:
diff changeset
141 #write(file="~/galaxy-modal/classes.txt",length(classes))
93451f832736 Uploaded
sblanck
parents:
diff changeset
142 res=pvalcombination(esets=esets,classes=classes,moderated="limma")
93451f832736 Uploaded
sblanck
parents:
diff changeset
143 resIDDIRR=IDDIRR(res$Meta,res$AllIndStudies)
93451f832736 Uploaded
sblanck
parents:
diff changeset
144 length(res$Meta)
93451f832736 Uploaded
sblanck
parents:
diff changeset
145 Hs.Meta=rownames(esets[[1]])[res$Meta]
93451f832736 Uploaded
sblanck
parents:
diff changeset
146 origId.Meta=lapply(conv_unigene,FUN=function(vec) as.vector(unlist(vec[Hs.Meta])))
93451f832736 Uploaded
sblanck
parents:
diff changeset
147
93451f832736 Uploaded
sblanck
parents:
diff changeset
148 gpllist <- lapply(rdataList, FUN=function(ann) annotation(ann))
93451f832736 Uploaded
sblanck
parents:
diff changeset
149 platflist <- lapply(gpllist, FUN=function(gpl) getGEO(gpl, AnnotGPL=TRUE))
93451f832736 Uploaded
sblanck
parents:
diff changeset
150 ncbifdlist <- lapply(platflist, FUN=function(data) data.frame(attr(dataTable(data), "table")))
93451f832736 Uploaded
sblanck
parents:
diff changeset
151 ncbifdresult=lapply(1:length(origId.Meta), FUN=function(i) ncbifdlist[[i]][which(ncbifdlist[[i]]$ID %in% origId.Meta[[i]]),])
93451f832736 Uploaded
sblanck
parents:
diff changeset
152 ncbidfannot=do.call(rbind,ncbifdresult)
93451f832736 Uploaded
sblanck
parents:
diff changeset
153 ncbidfannot <- subset(ncbidfannot, select=c("Platform_SPOTID","ID","Gene.symbol","Gene.title","Gene.ID","Chromosome.annotation","GO.Function.ID"))
93451f832736 Uploaded
sblanck
parents:
diff changeset
154
93451f832736 Uploaded
sblanck
parents:
diff changeset
155 library(jsonlite)
93451f832736 Uploaded
sblanck
parents:
diff changeset
156 matrixncbidfannot=as.matrix(ncbidfannot)
93451f832736 Uploaded
sblanck
parents:
diff changeset
157 datajson=toJSON(matrixncbidfannot,pretty = TRUE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
158 summaryjson=toJSON(as.matrix(t(resIDDIRR)),pretty = TRUE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
159
93451f832736 Uploaded
sblanck
parents:
diff changeset
160
93451f832736 Uploaded
sblanck
parents:
diff changeset
161 #vennsplit=strsplit(result.venn,split="/")[[1]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
162 #venn=paste0("./",vennsplit[length(vennsplit)])
93451f832736 Uploaded
sblanck
parents:
diff changeset
163
93451f832736 Uploaded
sblanck
parents:
diff changeset
164
93451f832736 Uploaded
sblanck
parents:
diff changeset
165 vennFilename="venn.png"
93451f832736 Uploaded
sblanck
parents:
diff changeset
166 vennFile=file.path(result.path,vennFilename)
93451f832736 Uploaded
sblanck
parents:
diff changeset
167 htmlfile=readChar(result.template, file.info(result.template)$size)
93451f832736 Uploaded
sblanck
parents:
diff changeset
168 htmlfile=gsub(x=htmlfile,pattern = "###DATAJSON###",replacement = datajson, fixed = TRUE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
169 htmlfile=gsub(x=htmlfile,pattern = "###SUMMARYJSON###",replacement = summaryjson, fixed = TRUE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
170 htmlfile=gsub(x=htmlfile,pattern = "###VENN###",replacement = vennFilename, fixed = TRUE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
171 write(htmlfile,result.html)
93451f832736 Uploaded
sblanck
parents:
diff changeset
172
93451f832736 Uploaded
sblanck
parents:
diff changeset
173 library(VennDiagram)
93451f832736 Uploaded
sblanck
parents:
diff changeset
174 flog.threshold(ERROR)
93451f832736 Uploaded
sblanck
parents:
diff changeset
175
93451f832736 Uploaded
sblanck
parents:
diff changeset
176 #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
177 dir.create(result.path, showWarnings = TRUE, recursive = FALSE)
93451f832736 Uploaded
sblanck
parents:
diff changeset
178
93451f832736 Uploaded
sblanck
parents:
diff changeset
179 showVenn<-function(liste,file)
93451f832736 Uploaded
sblanck
parents:
diff changeset
180 {
93451f832736 Uploaded
sblanck
parents:
diff changeset
181 venn.plot<-venn.diagram(x = liste,
93451f832736 Uploaded
sblanck
parents:
diff changeset
182 filename = vennFilename, col = "black",
93451f832736 Uploaded
sblanck
parents:
diff changeset
183 fill = 1:length(liste)+1,
93451f832736 Uploaded
sblanck
parents:
diff changeset
184 margin=0.05, alpha = 0.6,imagetype = "png")
93451f832736 Uploaded
sblanck
parents:
diff changeset
185 # png(file);
93451f832736 Uploaded
sblanck
parents:
diff changeset
186 # grid.draw(venn.plot);
93451f832736 Uploaded
sblanck
parents:
diff changeset
187 # dev.off();
93451f832736 Uploaded
sblanck
parents:
diff changeset
188
93451f832736 Uploaded
sblanck
parents:
diff changeset
189 }
93451f832736 Uploaded
sblanck
parents:
diff changeset
190
93451f832736 Uploaded
sblanck
parents:
diff changeset
191 l=list()
93451f832736 Uploaded
sblanck
parents:
diff changeset
192 for(i in 1:length(esets))
93451f832736 Uploaded
sblanck
parents:
diff changeset
193 {
93451f832736 Uploaded
sblanck
parents:
diff changeset
194 l[[paste("study",i,sep="")]]<-res[[i]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
195 }
93451f832736 Uploaded
sblanck
parents:
diff changeset
196 l[["Meta"]]=res[[length(res)-1]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
197 showVenn(l,vennFile)
93451f832736 Uploaded
sblanck
parents:
diff changeset
198 file.copy(vennFilename,result.path)
93451f832736 Uploaded
sblanck
parents:
diff changeset
199 #l=list()
93451f832736 Uploaded
sblanck
parents:
diff changeset
200 #for(i in 1:length(esets))
93451f832736 Uploaded
sblanck
parents:
diff changeset
201 #{
93451f832736 Uploaded
sblanck
parents:
diff changeset
202 # l[[paste("study",i,sep="")]]<-res[[i]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
203 #}
93451f832736 Uploaded
sblanck
parents:
diff changeset
204 #l[["Meta"]]=res[[length(res)-1]]
93451f832736 Uploaded
sblanck
parents:
diff changeset
205 #showVenn(res,result.venn)
93451f832736 Uploaded
sblanck
parents:
diff changeset
206 #writeLines(c("<h2>Venn diagram</h2>"),file.conn)
93451f832736 Uploaded
sblanck
parents:
diff changeset
207 #writeLines(c("<img src='venn.png'><br/><br/>"),file.conn)
93451f832736 Uploaded
sblanck
parents:
diff changeset
208 #writeLines(c("</body></html>"),file.conn)
93451f832736 Uploaded
sblanck
parents:
diff changeset
209 #close(file.conn)