annotate xcms_summary.r @ 11:b302779347de draft

planemo upload for repository https://github.com/workflow4metabolomics/xcms commit 727b4a74b8e424af622dc0e2b0c910cdd020cd29
author lecorguille
date Mon, 25 Apr 2016 11:10:08 -0400
parents dc6b3773f8de
children a2908411620e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9
dc6b3773f8de planemo upload for repository https://github.com/workflow4metabolomics/xcms commit 1bf8810447bdd1268f67bfb64ead95ce82d8d85c
lecorguille
parents: 6
diff changeset
1 #!/usr/bin/env Rscript
dc6b3773f8de planemo upload for repository https://github.com/workflow4metabolomics/xcms commit 1bf8810447bdd1268f67bfb64ead95ce82d8d85c
lecorguille
parents: 6
diff changeset
2 # version="1.0.0"
0
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
3 #@author Gildas Le Corguille lecorguille@sb-roscoff.fr ABIMS TEAM
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
4
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
5
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
6
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
7 # ----- ARGUMENTS BLACKLIST -----
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
8 #xcms.r
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
9 argBlacklist=c("zipfile","xfunction","xsetRdataOutput","sampleMetadataOutput","ticspdf","bicspdf","rplotspdf")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
10 #CAMERA.r
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
11 argBlacklist=c(argBlacklist,"dataMatrixOutput","variableMetadataOutput","new_file_path")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
12
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
13 # ----- PACKAGE -----
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
14
11
b302779347de planemo upload for repository https://github.com/workflow4metabolomics/xcms commit 727b4a74b8e424af622dc0e2b0c910cdd020cd29
lecorguille
parents: 9
diff changeset
15 pkgs=c("parallel","BiocGenerics", "Biobase", "Rcpp", "mzR", "igraph", "xcms","CAMERA","batch")
0
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
16 for(pkg in pkgs) {
11
b302779347de planemo upload for repository https://github.com/workflow4metabolomics/xcms commit 727b4a74b8e424af622dc0e2b0c910cdd020cd29
lecorguille
parents: 9
diff changeset
17 cat(pkg,"\n")
0
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
18 suppressPackageStartupMessages( stopifnot( library(pkg, quietly=TRUE, logical.return=TRUE, character.only=TRUE)))
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
19 }
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
20
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
21
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
22 # ----- FUNCTION -----
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
23 writehtml = function(...) { cat(...,"\n", file=htmlOutput,append = TRUE,sep="") }
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
24
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
25
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
26 # ----- ARGUMENTS -----
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
27
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
28 listArguments = parseCommandArgs(evaluate=FALSE) #interpretation of arguments given in command line as an R list of objects
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
29
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
30
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
31 # ----- ARGUMENTS PROCESSING -----
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
32
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
33 #image is an .RData file necessary to use xset variable given by previous tools
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
34 load(listArguments[["image"]]);
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
35
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
36 htmlOutput = "summary.html"
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
37 if (!is.null(listArguments[["htmlOutput"]])) htmlOutput = listArguments[["htmlOutput"]];
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
38
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
39 user_email = NULL
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
40 if (!is.null(listArguments[["user_email"]])) user_email = listArguments[["user_email"]];
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
41
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
42 # if the RData come from CAMERA
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
43 if (!exists("xset") & exists("xa")) xset=xa@xcmsSet
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
44
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
45 # retrocompatability
5
11df21afc204 planemo upload
lecorguille
parents: 4
diff changeset
46 if (!exists("sampleNamesList")) sampleNamesList=list("sampleNamesMakeNames"=make.names(sampnames(xset)))
0
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
47
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
48 if (!exists("xset")) stop("You need at least a xset or a xa object.")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
49
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
50
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
51
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
52 # ----- MAIN PROCESSING INFO -----
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
53 writehtml("<!DOCTYPE html>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
54 writehtml("<HTML lang='en'>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
55
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
56 writehtml("<HEAD>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
57 writehtml("<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
58
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
59 writehtml("<title>[W4M] XCMS analysis summary</title>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
60
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
61 writehtml("<style>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
62 writehtml("table, tr, td, th { border: 1px solid #000000; border-collapse:collapse; }")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
63 writehtml("td,th { padding: 5px; padding-right: 12px; }")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
64 writehtml("th { background: #898989; text-align:left;color: white;}")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
65 writehtml("h2 { color: #FFA212; }")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
66 writehtml("ul li { margin-bottom:10px; }")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
67 writehtml("</style>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
68 writehtml("</HEAD>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
69
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
70 writehtml("<BODY>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
71 writehtml("<div><h1>___ XCMS analysis summary using Workflow4Metabolomics ___</h1>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
72 # to pass the planemo shed_test
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
73 if (user_email != "test@bx.psu.edu") {
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
74 if (!is.null(user_email)) writehtml("By: ",user_email," - ")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
75 writehtml("Date: ",format(Sys.time(), "%y%m%d-%H:%M:%S"))
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
76 }
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
77 writehtml("</div>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
78
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
79 writehtml("<h2>Samples used:</h2>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
80 writehtml("<div><table>")
5
11df21afc204 planemo upload
lecorguille
parents: 4
diff changeset
81 if (all(sampnames(xset) == sampleNamesList$sampleNamesMakeNames)) {
0
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
82 sampleNameHeaderHtml = paste("<th>sample</th>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
83 sampleNameHtml = paste("<td>",sampnames(xset),"</td>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
84 } else {
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
85 sampleNameHeaderHtml = paste("<th>sample</th><th>sample renamed</th>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
86 sampleNameHtml = paste("<td>",sampnames(xset),"</td><td>",sampleNamesList$sampleNamesMakeNames,"</td>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
87 }
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
88
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
89 if (!exists("md5sumList")) {
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
90 md5sumHeaderHtml = ""
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
91 md5sumHtml = ""
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
92 md5sumLegend=""
5
11df21afc204 planemo upload
lecorguille
parents: 4
diff changeset
93 } else if (is.null(md5sumList$removalBadCharacters)) {
0
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
94 md5sumHeaderHtml = paste("<th>md5sum<sup>*</sup></th>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
95 md5sumHtml = paste("<td>",md5sumList$origin,"</td>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
96 md5sumLegend = "<br/><sup>*</sup>The program md5sum is designed to verify data integrity. So you can check if the data were uploaded correctly or if the data were chancged during the process."
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
97 } else {
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
98 md5sumHeaderHtml = paste("<th>md5sum<sup>*</sup></th><th>md5sum<sup>**</sup> after bad characters removal</th>")
6
254b81d1275a planemo upload
lecorguille
parents: 5
diff changeset
99 md5sumHtml = paste("<td>",md5sumList$origin,"</td><td>",md5sumList$removalBadCharacters,"</td>")
0
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
100 md5sumLegend = "<br/><sup>*</sup>The program md5sum is designed to verify data integrity. So you can check if the data were uploaded correctly or if the data were chancged during the process.<br/><sup>**</sup>Because some bad characters (eg: accent) were removed from your original file, the checksum have changed too.<br/>"
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
101 }
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
102
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
103 writehtml("<tr>",sampleNameHeaderHtml,"<th>filename</th>",md5sumHeaderHtml,"</tr>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
104 writehtml(paste("<tr>",sampleNameHtml,"<td>",xset@filepaths,"</td>",md5sumHtml,"</tr>"))
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
105
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
106 writehtml("</table>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
107 writehtml(md5sumLegend)
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
108 writehtml("</div>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
109
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
110 writehtml("<h2>Function launched:</h2>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
111 writehtml("<div><table>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
112 writehtml("<tr><th>timestamp<sup>***</sup></th><th>function</th><th>argument</th><th>value</th></tr>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
113 for(tool in names(listOFlistArguments)) {
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
114 listOFlistArgumentsDisplay=listOFlistArguments[[tool]][!(names(listOFlistArguments[[tool]]) %in% argBlacklist)]
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
115
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
116 timestamp = strsplit(tool,"_")[[1]][1]
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
117 xcmsFunction = strsplit(tool,"_")[[1]][2]
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
118 writehtml("<tr><td rowspan='",length(listOFlistArgumentsDisplay),"'>",timestamp,"</td><td rowspan='",length(listOFlistArgumentsDisplay),"'>",xcmsFunction,"</td>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
119 line_begin=""
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
120 for (arg in names(listOFlistArgumentsDisplay)) {
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
121 writehtml(line_begin,"<td>",arg,"</td><td>",unlist(listOFlistArgumentsDisplay[arg][1]),"</td></tr>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
122 line_begin="<tr>"
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
123 }
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
124 }
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
125 writehtml("</table>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
126 writehtml("<br/><sup>***</sup>timestamp format: yymmdd-hh:mm:ss")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
127 writehtml("</div>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
128
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
129 writehtml("<h2>Informations about the xcmsSet object:</h2>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
130
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
131 writehtml("<div><pre>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
132 log_file=file(htmlOutput, open = "at")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
133 sink(log_file)
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
134 sink(log_file, type = "output")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
135 xset
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
136 sink()
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
137 writehtml("</pre></div>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
138
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
139 if (exists("xa")) {
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
140 writehtml("<h2>Informations about the CAMERA object:</h2>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
141
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
142 writehtml("<div>")
5
11df21afc204 planemo upload
lecorguille
parents: 4
diff changeset
143 writehtml("Number of pcgroup: ",length(xa@pspectra))
0
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
144 writehtml("</div>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
145 }
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
146
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
147 writehtml("<h2>Citations:</h2>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
148 writehtml("<div><ul>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
149 writehtml("<li>To cite the <b>XCMS</b> package in publications use:")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
150 writehtml("<ul>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
151 writehtml("<li>","Smith, C.A. and Want, E.J. and O'Maille, G. and Abagyan,R. and Siuzdak, G.XCMS: Processing mass spectrometry data for metabolite profiling using nonlinear peak alignment, matching and identification, Analytical Chemistry, 78:779-787 (2006)","</li>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
152 writehtml("<li>","Ralf Tautenhahn, Christoph Boettcher, Steffen Neumann: Highly sensitive feature detection for high resolution LC/MS BMC Bioinformatics, 9:504 (2008)","</li>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
153 writehtml("<li>","H. Paul Benton, Elizabeth J. Want and Timothy M. D. Ebbels Correction of mass calibration gaps in liquid chromatography-mass spectrometry metabolomics data Bioinformatics, 26:2488 (2010)","</li>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
154 writehtml("</ul>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
155 writehtml("</li>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
156
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
157 writehtml("<li>To cite the <b>CAMERA</b> package in publications use:")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
158 writehtml("<ul>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
159 writehtml("<li>","Kuhl, C., Tautenhahn, R., Boettcher, C., Larson, T. R. and Neumann,S. CAMERA: an integrated strategy for compound spectra extraction and annotation of liquid chromatography/mass spectrometry data sets. Analytical Chemistry, 84:283-289 (2012)","</li>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
160 writehtml("</ul>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
161 writehtml("</li>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
162
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
163 writehtml("<li>To cite the <b>Workflow4Metabolimics (W4M)</b> project in publications use:")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
164 writehtml("<ul>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
165 writehtml("<li>","Franck Giacomoni, Gildas Le Corguillé, Misharl Monsoor, Marion Landi, Pierre Pericard, Mélanie Pétéra, Christophe Duperier, Marie Tremblay-Franco, Jean-François Martin, Daniel Jacob, Sophie Goulitquer, Etienne A. Thévenot and Christophe Caron (2014). Workflow4Metabolomics: A collaborative research infrastructure for computational metabolomics. Bioinformatics doi:10.1093/bioinformatics/btu813","</li>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
166 writehtml("</ul>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
167 writehtml("</li>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
168 writehtml("</ul></div>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
169
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
170 writehtml("</BODY>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
171
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
172 writehtml("</HTML>")
6260844b9a17 planemo upload
lecorguille
parents:
diff changeset
173