comparison msi_spectra_plots.xml @ 4:dcf79af72c8f draft

planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/msi_spectra_plots commit 37da74ed68228b16efbdbde776e7c38cc06eb5d5
author galaxyp
date Tue, 19 Jun 2018 18:06:46 -0400
parents 693a8efdfdeb
children bc931322e4d6
comparison
equal deleted inserted replaced
3:693a8efdfdeb 4:dcf79af72c8f
1 <tool id="mass_spectrometry_imaging_mzplots" name="MSI plot spectra" version="1.10.0.1"> 1 <tool id="mass_spectrometry_imaging_mzplots" name="MSI plot spectra" version="1.10.0.2">
2 <description> 2 <description>
3 mass spectrometry imaging mass spectra plots 3 mass spectrometry imaging mass spectra plots
4 </description> 4 </description>
5 <requirements> 5 <requirements>
6 <requirement type="package" version="1.10.0">bioconductor-cardinal</requirement> 6 <requirement type="package" version="1.10.0">bioconductor-cardinal</requirement>
7 <requirement type="package" version="2.2.1">r-gridextra</requirement> 7 <requirement type="package" version="2.2.1">r-gridextra</requirement>
8 <requirement type="package" version="2.2.1">r-ggplot2</requirement>
9 <requirement type="package" version="0.5.0">r-scales</requirement>
8 </requirements> 10 </requirements>
9 <command detect_errors="exit_code"> 11 <command detect_errors="exit_code">
10 <![CDATA[ 12 <![CDATA[
11 #if $infile.ext == 'imzml' 13 #if $infile.ext == 'imzml'
12 ln -s '${infile.extra_files_path}/imzml' infile.imzML && 14 ln -s '${infile.extra_files_path}/imzml' infile.imzML &&
27 29
28 ################################# load libraries and read file ################# 30 ################################# load libraries and read file #################
29 31
30 library(Cardinal) 32 library(Cardinal)
31 library(gridExtra) 33 library(gridExtra)
32 34 library(ggplot2)
33 ## Read MALDI Imaging dataset 35 library(scales)
34 36
35 #if $infile.ext == 'imzml' 37 #if $infile.ext == 'imzml'
36 msidata = readImzML('infile') 38 msidata <- readImzML('infile', mass.accuracy=$accuracy, units.accuracy = "$units")
37 #elif $infile.ext == 'analyze75' 39 #elif $infile.ext == 'analyze75'
38 msidata = readAnalyze('infile') 40 msidata = readAnalyze('infile')
39 #else 41 #else
40 load('infile.RData') 42 load('infile.RData')
41 #end if 43 #end if
69 TICs = colSums(spectra(msidata)[]) 71 TICs = colSums(spectra(msidata)[])
70 NumemptyTIC = sum(TICs == 0) 72 NumemptyTIC = sum(TICs == 0)
71 73
72 ## Processing informations 74 ## Processing informations
73 processinginfo = processingData(msidata) 75 processinginfo = processingData(msidata)
74 centroidedinfo = processinginfo@centroided # TRUE or FALSE 76 centroidedinfo = processinginfo@centroided
75 77
76 ## if TRUE write processinginfo if no write FALSE 78 ## if TRUE write processinginfo if FALSE write FALSE
77 79
78 ## normalization 80 ## normalization
79 if (length(processinginfo@normalization) == 0) { 81 if (length(processinginfo@normalization) == 0) {
80 normalizationinfo='FALSE' 82 normalizationinfo='FALSE'
81 } else { 83 } else {
99 } else { 101 } else {
100 peakpickinginfo=processinginfo@peakPicking 102 peakpickinginfo=processinginfo@peakPicking
101 } 103 }
102 104
103 properties = c("Number of m/z features", 105 properties = c("Number of m/z features",
104 "Range of m/z values [Da]", 106 "Range of m/z values",
105 "Number of pixels", 107 "Number of pixels",
106 "Range of x coordinates", 108 "Range of x coordinates",
107 "Range of y coordinates", 109 "Range of y coordinates",
108 "Range of intensities", 110 "Range of intensities",
109 "Median of intensities", 111 "Median of intensities",
206 208
207 ############################# sample pixel ################################ 209 ############################# sample pixel ################################
208 ########################################################################### 210 ###########################################################################
209 211
210 #elif str( $pixel_conditional.pixel_type) == 'sample_pixel': 212 #elif str( $pixel_conditional.pixel_type) == 'sample_pixel':
211 print("sample_pixel") 213 print("sample pixels")
212 214
213 ##################### I) Sample: plot full mass spectrum ############## 215 ##################### I) Sample: plot full mass spectrum ##############
214 216
215 plot(msidata, pixel=1:ncol(msidata), pixel.groups=msidata\$combined_sample, key=TRUE, col=c("blue", "orange", "green", "red", "yellow", "grey"), superpose=TRUE) 217 ## coloured plot with mean over all spectra for combined_sample, otherwise only 1 black plot
218 if (!is.null(levels(msidata\$combined_sample))){
219 print("combined samples")
220
221 ## overview plot over combined sample, in case more than 10 combined_samples legend has to be taken from this plot
222 number_combined = length(levels(msidata\$combined_sample))
223
224 ## the more combined_samples a file has the smaller will be the legend
225 if (number_combined<20){
226 legend_size = 10
227 }else if (number_combined>20 && number_combined<40){
228 legend_size = 9
229 }else if (number_combined>40 && number_combined<60){
230 legend_size = 8
231 }else if (number_combined>60 && number_combined<100){
232 legend_size = 7
233 }else{
234 legend_size = 6
235 }
236
237 position_df = cbind(coord(msidata)[,1:2], msidata\$combined_sample)
238 colnames(position_df)[3] = "sample_name"
239
240 combine_plot = ggplot(position_df, aes(x=x, y=y, fill=sample_name))+
241 geom_tile() +
242 coord_fixed()+
243 ggtitle("Spatial orientation of combined data")+
244 theme_bw()+
245 theme(plot.title = element_text(hjust = 0.5))+
246 theme(text=element_text(family="ArialMT", face="bold", size=12))+
247 theme(legend.position="bottom",legend.direction="vertical")+
248 theme(legend.key.size = unit(0.2, "line"), legend.text = element_text(size = legend_size))+
249 guides(fill=guide_legend(ncol=5,byrow=TRUE))
250 coord_labels = aggregate(cbind(x,y)~sample_name, data=position_df, mean)
251 coord_labels\$file_number = gsub( "_.*$", "", coord_labels\$sample_name)
252 for(file_count in 1:nrow(coord_labels))
253 {combine_plot = combine_plot + annotate("text",x=coord_labels[file_count,"x"],
254 y=coord_labels[file_count,"y"],label=toString(coord_labels[file_count,4]))}
255
256 print(combine_plot)
257
258 ## print legend only for less than 10 samples
259 if (length(levels(msidata\$combined_sample)) < 10){
260 key_legend = TRUE
261 }else{key_legend = FALSE}
262
263 plot(msidata, pixel=1:ncol(msidata), pixel.groups=msidata\$combined_sample, key=key_legend, col=hue_pal()(length(levels(msidata\$combined_sample))),superpose=TRUE)
264 }else{
265 plot(msidata, pixel=1:ncol(msidata), key=TRUE)}
216 266
217 ##################### II) Sample: plot zoom-in mass spectrum ########## 267 ##################### II) Sample: plot zoom-in mass spectrum ##########
218 268
219 #if $pixel_conditional.zoomed_sample: 269 #if $pixel_conditional.zoomed_sample:
220 #for $token in $pixel_conditional.zoomed_sample: 270 #for $token in $pixel_conditional.zoomed_sample:
271 print("zoomed sample pixels")
221 272
222 minmasspixel = features(msidata, mz=$token.xlimmin) 273 minmasspixel = features(msidata, mz=$token.xlimmin)
223 maxmasspixel = features(msidata, mz=$token.xlimmax) 274 maxmasspixel = features(msidata, mz=$token.xlimmax)
224 275
225 plot(msidata[minmasspixel:maxmasspixel,], pixel=1:ncol(msidata), 276 ## coloured plot with mean over all spectra for combined_sample, otherwise only 1 black plot
226 xlim= c($token.xlimmin,$token.xlimmax),pixel.groups=msidata\$combined_sample, 277 if (!is.null(levels(msidata\$combined_sample))){
227 key=TRUE,col=c("blue", "orange", "green", "red", "yellow", "grey"), superpose=TRUE) 278 print("combined samples")
279 plot(msidata[minmasspixel:maxmasspixel,], pixel=1:ncol(msidata),
280 xlim= c($token.xlimmin,$token.xlimmax),pixel.groups=msidata\$combined_sample,
281 key=key_legend,col=hue_pal()(length(levels(msidata\$combined_sample))), superpose=TRUE)
282 }else{
283 plot(msidata[minmasspixel:maxmasspixel,], pixel=1:ncol(msidata), key=TRUE, xlim= c($token.xlimmin,$token.xlimmax))}
228 284
229 #end for 285 #end for
230 #end if 286 #end if
231 287 if (!is.null(levels(msidata\$combined_sample))){
232 pixeldf = data.frame(table(msidata\$combined_sample)) 288 pixeldf = data.frame(table(msidata\$combined_sample))
289 }else{
290 pixeldf = data.frame("$filename", ncol(msidata))}
233 colnames(pixeldf) = c("sample name", "number of pixels") 291 colnames(pixeldf) = c("sample name", "number of pixels")
234 292
235 #end if 293 #end if
236 294
295 ### overview table of pixels or samples:
237 plot(0,type='n',axes=FALSE,ann=FALSE) 296 plot(0,type='n',axes=FALSE,ann=FALSE)
238 title(main="Overview of chosen pixel:") 297 title(main="Overview of chosen pixel:")
239 grid.table(pixeldf, rows= NULL) 298
299 ### for more than 20 combined samples print only 20 samples per page:
300 if (is.null(levels(msidata\$combined_sample))){
301 grid.table(pixeldf, rows= NULL)
302 }else if (length(levels(msidata\$combined_sample)) <= 20){
303 grid.table(pixeldf, rows= NULL)
304 }else{
305 grid.table(pixeldf[1:20,], rows= NULL)
306 mincount = 21
307 maxcount = 40
308 for (count20 in 1:(ceiling(nrow(pixeldf)/20)-1)){
309 plot(0,type='n',axes=FALSE,ann=FALSE)
310 if (maxcount <= nrow(pixeldf)){
311 grid.table(pixeldf[mincount:maxcount,], rows= NULL)
312 mincount = mincount+20
313 maxcount = maxcount+20
314 }else{### stop last page with last sample otherwise NA in table
315 grid.table(pixeldf[mincount:nrow(pixeldf),], rows= NULL)}
316 }
317 }
240 318
241 dev.off() 319 dev.off()
242 320
243 }else{ 321 }else{
244 print("Inputfile has no intensities > 0") 322 print("Inputfile has no intensities > 0")
247 ]]></configfile> 325 ]]></configfile>
248 </configfiles> 326 </configfiles>
249 <inputs> 327 <inputs>
250 <param name="infile" type="data" format="imzml,rdata,analyze75" label="Inputfile as imzML, Analyze7.5 or Cardinal MSImageSet saved as RData" 328 <param name="infile" type="data" format="imzml,rdata,analyze75" label="Inputfile as imzML, Analyze7.5 or Cardinal MSImageSet saved as RData"
251 help="Upload composite datatype imzml (ibd+imzML) or analyze75 (hdr+img+t2m) or regular upload .RData (Cardinal MSImageSet)"/> 329 help="Upload composite datatype imzml (ibd+imzML) or analyze75 (hdr+img+t2m) or regular upload .RData (Cardinal MSImageSet)"/>
330 <param name="accuracy" type="float" value="50" label="Only for processed imzML files: enter mass accuracy to which the m/z values will be binned" help="This should be set to the native accuracy of the mass spectrometer, if known"/>
331 <param name="units" display="radio" type="select" label="Only for processed imzML files: unit of the mass accuracy" help="either m/z or ppm">
332 <option value="mz" >mz</option>
333 <option value="ppm" selected="True" >ppm</option>
334 </param>
252 <param name="filename" type="text" value="" label="Title" help="will appear in the pdf output. If nothing given it will take the dataset name"/> 335 <param name="filename" type="text" value="" label="Title" help="will appear in the pdf output. If nothing given it will take the dataset name"/>
253 <conditional name="pixel_conditional"> 336 <conditional name="pixel_conditional">
254 <param name="pixel_type" type="select" label="Select if you want to plot the mass spectrum of a single pixel or of all pixels of a sample"> 337 <param name="pixel_type" type="select" label="Select if you want to plot the mass spectrum of a single pixel or of all pixels of a sample">
255 <option value="single_pixel" selected="True">Single pixel</option> 338 <option value="single_pixel" selected="True">Single pixel</option>
256 <option value="sample_pixel">All pixels of a sample</option> 339 <option value="sample_pixel">All pixels of a sample</option>
351 <repeat name="repeatpixel"> 434 <repeat name="repeatpixel">
352 <param name="plusminusinDalton" value="0.25"/> 435 <param name="plusminusinDalton" value="0.25"/>
353 <param name="inputx" value="2"/> 436 <param name="inputx" value="2"/>
354 <param name="inputy" value="2"/> 437 <param name="inputy" value="2"/>
355 </repeat> 438 </repeat>
356 </conditional> 439 </conditional>
357 <output name="plots" file="Plot_analyze75.pdf" compare="sim_size" delta="20000"/> 440 <output name="plots" file="Plot_analyze75.pdf" compare="sim_size" delta="20000"/>
441 </test>
442 <test>
443 <param name="infile" value="" ftype="analyze75">
444 <composite_data value="Analyze75.hdr"/>
445 <composite_data value="Analyze75.img"/>
446 <composite_data value="Analyze75.t2m"/>
447 </param>
448 <conditional name="pixel_conditional">
449 <param name="pixel_type" value="sample_pixel"/>
450 <repeat name="zoomed_sample">
451 <param name="xlimmin" value="1250"/>
452 <param name="xlimmax" value="1270"/>
453 </repeat>
454 </conditional>
455 <output name="plots" file="Plot_analyze75_allpixels.pdf" compare="sim_size" delta="20000"/>
358 </test> 456 </test>
359 <test> 457 <test>
360 <param name="infile" value="123_combined.RData" ftype="rdata"/> 458 <param name="infile" value="123_combined.RData" ftype="rdata"/>
361 <conditional name="pixel_conditional"> 459 <conditional name="pixel_conditional">
362 <param name="pixel_type" value="sample_pixel"/> 460 <param name="pixel_type" value="sample_pixel"/>
363 <repeat name="zoomed_sample"> 461 <repeat name="zoomed_sample">
364 <param name="xlimmin" value="350"/> 462 <param name="xlimmin" value="350"/>
365 <param name="xlimmax" value="360"/> 463 <param name="xlimmax" value="360"/>
366 </repeat> 464 </repeat>
367 </conditional> 465 </conditional>
368 <output name="plots" file="Plot_rdata.pdf" compare="sim_size" delta="20000"/> 466 <output name="plots" file="Plot_rdata.pdf" compare="sim_size" delta="20000"/>
369 </test> 467 </test>
370 <test> 468 <test>
371 <param name="infile" value="empty_spectra.rdata" ftype="rdata"/> 469 <param name="infile" value="empty_spectra.rdata" ftype="rdata"/>
372 <param name="plusminusinDalton" value="0.1"/> 470 <conditional name="pixel_conditional">
373 <param name="inputx" value="1"/> 471 <param name="pixel_type" value="single_pixel"/>
374 <param name="inputy" value="1"/> 472 <repeat name="repeatpixel">
375 <repeat name="repeatpixel"> 473 <param name="plusminusinDalton" value="0.1"/>
376 <param name="plusminusinDalton" value="0.25"/> 474 <param name="inputx" value="1"/>
377 <param name="inputx" value="2"/> 475 <param name="inputy" value="1"/>
378 <param name="inputy" value="2"/> 476 </repeat>
379 <repeat name="zoomedplot"> 477 </conditional>
380 <param name="xlimmin" value="1000"/>
381 <param name="xlimmax" value="1050"/>
382 </repeat>
383 </repeat>
384 <output name="plots" file="Plot_empty_spectra.pdf" compare="sim_size" delta="20000"/> 478 <output name="plots" file="Plot_empty_spectra.pdf" compare="sim_size" delta="20000"/>
385 </test> 479 </test>
386 </tests> 480 </tests>
387 <help><![CDATA[ 481 <help><![CDATA[
388 482
401 - "single pixel": Returns a full mass spectrum plot for one pixel, which is defined by its x- and y-coordinates 495 - "single pixel": Returns a full mass spectrum plot for one pixel, which is defined by its x- and y-coordinates
402 496
403 - Enter the x and y coordinates of your pixel of interest 497 - Enter the x and y coordinates of your pixel of interest
404 - To have a visual control for the selected pixel, a heatmap of a m/z of interest will be drawn. Two intersecting lines will show the pixel location. This procedure requires an m/z of interest together with a m/z range and for the lines the colour and type. 498 - To have a visual control for the selected pixel, a heatmap of a m/z of interest will be drawn. Two intersecting lines will show the pixel location. This procedure requires an m/z of interest together with a m/z range and for the lines the colour and type.
405 - Additionally zoom into mass spectra plots is possible by providing the minimum and maximum m/z value to define the limits of the plot 499 - Additionally zoom into mass spectra plots is possible by providing the minimum and maximum m/z value to define the limits of the plot
406 - "All pixels of a sample": Returns a full average mass spectrum plot with different colours for each subfile 500 - "All pixels of a sample": Returns a full average mass spectrum plot with different colours for the sample/each combined sample
407 501
408 - This option only works on files that have previosly been combined in the combine tool
409 - Additionally zoom into mass spectra plots is possible by providing the minimum and maximum m/z value to define the limits of the plot 502 - Additionally zoom into mass spectra plots is possible by providing the minimum and maximum m/z value to define the limits of the plot
410 503
411 Output: 504 Output:
412 505
413 - Pdf with the selected mass spectra plots and additional control plots 506 - Pdf with the selected mass spectra plots and additional control plots