8
|
1 #!/usr/bin/env Rscript
|
|
2 # setup R error handling to go to stderr
|
|
3 options( show.error.messages=F, error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
|
|
4
|
|
5 # we need that to not crash galaxy with an UTF8 error on German LC settings.
|
|
6 loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
|
|
7
|
|
8 library("optparse")
|
|
9
|
|
10 ##### Read options
|
|
11 option_list=list(
|
|
12 make_option("--input",type="character",default="NULL",help="rdata object containing eset object"),
|
|
13 make_option("--normalization",type="character",default=NULL,help="normalization method"),
|
|
14 make_option("--nbresult",type="character",default=NULL,help="number of result displayed results"),
|
|
15 make_option("--rdataoutput",type="character",default="NULL",help="output rdata object containing eset object"),
|
|
16 make_option("--htmloutput",type="character",default=NULL,help="Output html report"),
|
|
17 make_option("--htmloutputpath",type="character",default="NULL",help="Path of output html report"),
|
|
18 make_option("--htmltemplate",type="character",default=NULL,help="html template)")
|
|
19 );
|
2
|
20
|
8
|
21 opt_parser = OptionParser(option_list=option_list);
|
|
22 opt = parse_args(opt_parser);
|
|
23
|
|
24 if(is.null(opt$input)){
|
|
25 print_help(opt_parser)
|
|
26 stop("input required.", call.=FALSE)
|
|
27 }
|
|
28
|
|
29 #loading libraries
|
|
30
|
|
31 suppressPackageStartupMessages(require(Biobase))
|
|
32 suppressPackageStartupMessages(require(GEOquery))
|
|
33 suppressPackageStartupMessages(require(GEOmetadb))
|
|
34 suppressPackageStartupMessages(require(limma))
|
|
35 suppressPackageStartupMessages(require(jsonlite))
|
|
36 suppressPackageStartupMessages(require(affy))
|
|
37 suppressPackageStartupMessages(library(affyPLM))
|
|
38 suppressPackageStartupMessages(require(dplyr))
|
|
39
|
|
40 listInput <- trimws( unlist( strsplit(trimws(opt$input), ",") ) )
|
|
41
|
2
|
42 celList=vector()
|
|
43 celFileNameList=vector()
|
8
|
44
|
|
45 for (i in 1:length(listInput))
|
2
|
46 {
|
8
|
47 inputFileInfo <- unlist( strsplit( listInput[i], ';' ) )
|
|
48 celList=c(celList,inputFileInfo[1])
|
|
49 celFileNameList=c(celFileNameList,inputFileInfo[2])
|
2
|
50 }
|
|
51
|
|
52
|
8
|
53 normalization=opt$normalization
|
|
54 result_export_eset=opt$rdataoutput
|
|
55 result=opt$htmloutput
|
|
56 result.path=opt$htmloutputpath
|
|
57 result.template=opt$htmltemplate
|
2
|
58
|
|
59 dir.create(result.path, showWarnings = TRUE, recursive = TRUE)
|
|
60 for(i in 1:length(celList))
|
|
61 {
|
|
62 file.copy(celList[i],paste0("./",celFileNameList[i]))
|
|
63 }
|
|
64
|
|
65 data <- ReadAffy(filenames=celFileNameList, celfile.path=".")
|
|
66 htmlfile=readChar(result.template, file.info(result.template)$size)
|
|
67
|
|
68 boxplot="boxplot.png"
|
|
69 png(boxplot,width=800,height = 400)
|
|
70 par(mar=c(7,5,1,1))
|
|
71 boxplot(data,las=2,outline=FALSE)
|
|
72 dev.off()
|
|
73 htmlfile=gsub(x=htmlfile,pattern = "###BOXPLOT###",replacement = boxplot, fixed = TRUE)
|
|
74 file.copy(boxplot,result.path)
|
|
75
|
|
76 images="images.png"
|
|
77 nblines=length(celList)%/%4 + as.numeric((length(celList)%%4)!=0)
|
|
78 png(images,width=800,height = 200*nblines)
|
|
79 par(mfrow=c(nblines,4))
|
|
80 image(data)
|
|
81 dev.off()
|
|
82 htmlfile=gsub(x=htmlfile,pattern = "###IMAGES###",replacement = images, fixed = TRUE)
|
|
83 file.copy(images,result.path)
|
|
84
|
|
85
|
|
86 plotMA="plotMA.png"
|
|
87 nblines=length(celList)%/%3 + as.numeric((length(celList)%%3)!=0)
|
|
88 png(plotMA,width=800,height =300*nblines )
|
|
89 par(mfrow=c(nblines,3))
|
|
90 MAplot(data)
|
|
91 dev.off()
|
|
92 htmlfile=gsub(x=htmlfile,pattern = "###PLOTMA###",replacement = plotMA, fixed = TRUE)
|
|
93 file.copy(plotMA,result.path)
|
|
94
|
|
95
|
|
96 if (normalization == "rma") {
|
|
97 eset <- rma(data)
|
|
98 } else if (normalization == "quantile") {
|
|
99 eset = rma(data,background = FALSE,normalize = TRUE)
|
|
100 } else if (normalization == "background"){
|
|
101 eset = rma(data,background = TRUE ,normalize = FALSE)
|
|
102 } else if (normalization == "log2") {
|
|
103 eset = rma(data,background = FALSE ,normalize = FALSE)
|
|
104 }
|
|
105
|
|
106
|
|
107 boxplotnorm="boxplotnorm.png"
|
|
108 png(boxplotnorm,width=800,height = 400)
|
|
109 par(mar=c(7,5,1,1))
|
|
110 boxplot(data.frame(exprs(eset)),las=2,outline=FALSE)
|
|
111 dev.off()
|
|
112 htmlfile=gsub(x=htmlfile,pattern = "###BOXPLOTNORM###",replacement = boxplotnorm, fixed = TRUE)
|
|
113 file.copy(boxplotnorm,result.path)
|
|
114
|
|
115 plotMAnorm="plotMAnorm.png"
|
|
116 nblines=length(celList)%/%3 + as.numeric((length(celList)%%3)!=0)
|
|
117 png(plotMAnorm,width=800,height =300*nblines )
|
|
118 par(mfrow=c(nblines,3))
|
|
119 #for (i in 1:length(celList)){
|
|
120 MAplot(eset)
|
|
121 #}
|
|
122
|
|
123 dev.off()
|
|
124 htmlfile=gsub(x=htmlfile,pattern = "###PLOTMANORM###",replacement = plotMAnorm, fixed = TRUE)
|
|
125 file.copy(plotMAnorm,result.path)
|
|
126 save(eset,file=result_export_eset)
|
|
127 write(htmlfile,result)
|
|
128
|