Mercurial > repos > lecorguille > xcms_summary
annotate xcms_summary.r @ 9:dc6b3773f8de draft
planemo upload for repository https://github.com/workflow4metabolomics/xcms commit 1bf8810447bdd1268f67bfb64ead95ce82d8d85c
| author | lecorguille |
|---|---|
| date | Fri, 08 Apr 2016 06:18:24 -0400 |
| parents | 254b81d1275a |
| children | b302779347de |
| 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 | 3 #@author Gildas Le Corguille lecorguille@sb-roscoff.fr ABIMS TEAM |
| 4 | |
| 5 | |
| 6 | |
| 7 # ----- ARGUMENTS BLACKLIST ----- | |
| 8 #xcms.r | |
| 9 argBlacklist=c("zipfile","xfunction","xsetRdataOutput","sampleMetadataOutput","ticspdf","bicspdf","rplotspdf") | |
| 10 #CAMERA.r | |
| 11 argBlacklist=c(argBlacklist,"dataMatrixOutput","variableMetadataOutput","new_file_path") | |
| 12 | |
| 13 # ----- PACKAGE ----- | |
| 14 | |
| 15 pkgs=c("parallel","BiocGenerics", "Biobase", "Rcpp", "mzR", "tcltk","igraph", "xcms","snow","CAMERA","multtest","batch") | |
| 16 for(pkg in pkgs) { | |
| 17 suppressPackageStartupMessages( stopifnot( library(pkg, quietly=TRUE, logical.return=TRUE, character.only=TRUE))) | |
| 18 } | |
| 19 | |
| 20 | |
| 21 # ----- FUNCTION ----- | |
| 22 writehtml = function(...) { cat(...,"\n", file=htmlOutput,append = TRUE,sep="") } | |
| 23 | |
| 24 | |
| 25 # ----- ARGUMENTS ----- | |
| 26 | |
| 27 listArguments = parseCommandArgs(evaluate=FALSE) #interpretation of arguments given in command line as an R list of objects | |
| 28 | |
| 29 | |
| 30 # ----- ARGUMENTS PROCESSING ----- | |
| 31 | |
| 32 #image is an .RData file necessary to use xset variable given by previous tools | |
| 33 load(listArguments[["image"]]); | |
| 34 | |
| 35 htmlOutput = "summary.html" | |
| 36 if (!is.null(listArguments[["htmlOutput"]])) htmlOutput = listArguments[["htmlOutput"]]; | |
| 37 | |
| 38 user_email = NULL | |
| 39 if (!is.null(listArguments[["user_email"]])) user_email = listArguments[["user_email"]]; | |
| 40 | |
| 41 # if the RData come from CAMERA | |
| 42 if (!exists("xset") & exists("xa")) xset=xa@xcmsSet | |
| 43 | |
| 44 # retrocompatability | |
| 5 | 45 if (!exists("sampleNamesList")) sampleNamesList=list("sampleNamesMakeNames"=make.names(sampnames(xset))) |
| 0 | 46 |
| 47 if (!exists("xset")) stop("You need at least a xset or a xa object.") | |
| 48 | |
| 49 | |
| 50 | |
| 51 # ----- MAIN PROCESSING INFO ----- | |
| 52 writehtml("<!DOCTYPE html>") | |
| 53 writehtml("<HTML lang='en'>") | |
| 54 | |
| 55 writehtml("<HEAD>") | |
| 56 writehtml("<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />") | |
| 57 | |
| 58 writehtml("<title>[W4M] XCMS analysis summary</title>") | |
| 59 | |
| 60 writehtml("<style>") | |
| 61 writehtml("table, tr, td, th { border: 1px solid #000000; border-collapse:collapse; }") | |
| 62 writehtml("td,th { padding: 5px; padding-right: 12px; }") | |
| 63 writehtml("th { background: #898989; text-align:left;color: white;}") | |
| 64 writehtml("h2 { color: #FFA212; }") | |
| 65 writehtml("ul li { margin-bottom:10px; }") | |
| 66 writehtml("</style>") | |
| 67 writehtml("</HEAD>") | |
| 68 | |
| 69 writehtml("<BODY>") | |
| 70 writehtml("<div><h1>___ XCMS analysis summary using Workflow4Metabolomics ___</h1>") | |
| 71 # to pass the planemo shed_test | |
| 72 if (user_email != "test@bx.psu.edu") { | |
| 73 if (!is.null(user_email)) writehtml("By: ",user_email," - ") | |
| 74 writehtml("Date: ",format(Sys.time(), "%y%m%d-%H:%M:%S")) | |
| 75 } | |
| 76 writehtml("</div>") | |
| 77 | |
| 78 writehtml("<h2>Samples used:</h2>") | |
| 79 writehtml("<div><table>") | |
| 5 | 80 if (all(sampnames(xset) == sampleNamesList$sampleNamesMakeNames)) { |
| 0 | 81 sampleNameHeaderHtml = paste("<th>sample</th>") |
| 82 sampleNameHtml = paste("<td>",sampnames(xset),"</td>") | |
| 83 } else { | |
| 84 sampleNameHeaderHtml = paste("<th>sample</th><th>sample renamed</th>") | |
| 85 sampleNameHtml = paste("<td>",sampnames(xset),"</td><td>",sampleNamesList$sampleNamesMakeNames,"</td>") | |
| 86 } | |
| 87 | |
| 88 if (!exists("md5sumList")) { | |
| 89 md5sumHeaderHtml = "" | |
| 90 md5sumHtml = "" | |
| 91 md5sumLegend="" | |
| 5 | 92 } else if (is.null(md5sumList$removalBadCharacters)) { |
| 0 | 93 md5sumHeaderHtml = paste("<th>md5sum<sup>*</sup></th>") |
| 94 md5sumHtml = paste("<td>",md5sumList$origin,"</td>") | |
| 95 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." | |
| 96 } else { | |
| 97 md5sumHeaderHtml = paste("<th>md5sum<sup>*</sup></th><th>md5sum<sup>**</sup> after bad characters removal</th>") | |
| 6 | 98 md5sumHtml = paste("<td>",md5sumList$origin,"</td><td>",md5sumList$removalBadCharacters,"</td>") |
| 0 | 99 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/>" |
| 100 } | |
| 101 | |
| 102 writehtml("<tr>",sampleNameHeaderHtml,"<th>filename</th>",md5sumHeaderHtml,"</tr>") | |
| 103 writehtml(paste("<tr>",sampleNameHtml,"<td>",xset@filepaths,"</td>",md5sumHtml,"</tr>")) | |
| 104 | |
| 105 writehtml("</table>") | |
| 106 writehtml(md5sumLegend) | |
| 107 writehtml("</div>") | |
| 108 | |
| 109 writehtml("<h2>Function launched:</h2>") | |
| 110 writehtml("<div><table>") | |
| 111 writehtml("<tr><th>timestamp<sup>***</sup></th><th>function</th><th>argument</th><th>value</th></tr>") | |
| 112 for(tool in names(listOFlistArguments)) { | |
| 113 listOFlistArgumentsDisplay=listOFlistArguments[[tool]][!(names(listOFlistArguments[[tool]]) %in% argBlacklist)] | |
| 114 | |
| 115 timestamp = strsplit(tool,"_")[[1]][1] | |
| 116 xcmsFunction = strsplit(tool,"_")[[1]][2] | |
| 117 writehtml("<tr><td rowspan='",length(listOFlistArgumentsDisplay),"'>",timestamp,"</td><td rowspan='",length(listOFlistArgumentsDisplay),"'>",xcmsFunction,"</td>") | |
| 118 line_begin="" | |
| 119 for (arg in names(listOFlistArgumentsDisplay)) { | |
| 120 writehtml(line_begin,"<td>",arg,"</td><td>",unlist(listOFlistArgumentsDisplay[arg][1]),"</td></tr>") | |
| 121 line_begin="<tr>" | |
| 122 } | |
| 123 } | |
| 124 writehtml("</table>") | |
| 125 writehtml("<br/><sup>***</sup>timestamp format: yymmdd-hh:mm:ss") | |
| 126 writehtml("</div>") | |
| 127 | |
| 128 writehtml("<h2>Informations about the xcmsSet object:</h2>") | |
| 129 | |
| 130 writehtml("<div><pre>") | |
| 131 log_file=file(htmlOutput, open = "at") | |
| 132 sink(log_file) | |
| 133 sink(log_file, type = "output") | |
| 134 xset | |
| 135 sink() | |
| 136 writehtml("</pre></div>") | |
| 137 | |
| 138 if (exists("xa")) { | |
| 139 writehtml("<h2>Informations about the CAMERA object:</h2>") | |
| 140 | |
| 141 writehtml("<div>") | |
| 5 | 142 writehtml("Number of pcgroup: ",length(xa@pspectra)) |
| 0 | 143 writehtml("</div>") |
| 144 } | |
| 145 | |
| 146 writehtml("<h2>Citations:</h2>") | |
| 147 writehtml("<div><ul>") | |
| 148 writehtml("<li>To cite the <b>XCMS</b> package in publications use:") | |
| 149 writehtml("<ul>") | |
| 150 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>") | |
| 151 writehtml("<li>","Ralf Tautenhahn, Christoph Boettcher, Steffen Neumann: Highly sensitive feature detection for high resolution LC/MS BMC Bioinformatics, 9:504 (2008)","</li>") | |
| 152 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>") | |
| 153 writehtml("</ul>") | |
| 154 writehtml("</li>") | |
| 155 | |
| 156 writehtml("<li>To cite the <b>CAMERA</b> package in publications use:") | |
| 157 writehtml("<ul>") | |
| 158 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>") | |
| 159 writehtml("</ul>") | |
| 160 writehtml("</li>") | |
| 161 | |
| 162 writehtml("<li>To cite the <b>Workflow4Metabolimics (W4M)</b> project in publications use:") | |
| 163 writehtml("<ul>") | |
| 164 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>") | |
| 165 writehtml("</ul>") | |
| 166 writehtml("</li>") | |
| 167 writehtml("</ul></div>") | |
| 168 | |
| 169 writehtml("</BODY>") | |
| 170 | |
| 171 writehtml("</HTML>") | |
| 172 |
