Mercurial > repos > galaxyp > msi_ion_images
view msi_ion_images.xml @ 0:385e8a4accd9 draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/msi_ion_images commit 6d271de132f364b1e16b0222ad2d6e315586f0dd
author | galaxyp |
---|---|
date | Mon, 27 Nov 2017 13:49:35 -0500 |
parents | |
children | 845fee459824 |
line wrap: on
line source
<tool id="mass_spectrometry_imaging_ion_images" name="MSI ion images" version="1.7.0"> <description> mass spectrometry imaging heatmaps </description> <requirements> <requirement type="package" version="1.7.0">bioconductor-cardinal</requirement> <requirement type="package" version="2.2.1">r-gridextra</requirement> <requirement type="package" version="2.23-15">r-kernsmooth</requirement> <requirement type="package" version="0.20-35">r-lattice</requirement> </requirements> <command detect_errors="aggressive"> <![CDATA[ #if $infile.ext == 'imzml' cp '${infile.extra_files_path}/imzml' infile.imzML && cp '${infile.extra_files_path}/ibd' infile.ibd && #elif $infile.ext == 'analyze75' cp '${infile.extra_files_path}/hdr' infile.hdr && cp '${infile.extra_files_path}/img' infile.img && cp '${infile.extra_files_path}/t2m' infile.t2m && #else ln -s $infile infile.RData && #end if cat '${MSI_heatmaps}' && Rscript '${MSI_heatmaps}' ]]> </command> <configfiles> <configfile name="MSI_heatmaps"><![CDATA[ ################################# load libraries and read file ######################### library(Cardinal) library(gridExtra) library(KernSmooth) library(lattice) ## Read MALDI Imaging dataset #if $infile.ext == 'imzml' msidata <- readMSIData('infile.imzML') #elif $infile.ext == 'analyze75' msidata <- readMSIData('infile.hdr') #else load('infile.RData') #end if #if $massfile: ### Read tabular file with peptide masses for plots and heatmap images: input_list = read.delim("$massfile", header = FALSE, na.strings=c("","NA", "#NUM!", "#ZAHL!"), stringsAsFactors = FALSE) if (ncol(input_list) == 1) { input_list = cbind(input_list, input_list) } #else input_list = data.frame(0, 0) #end if colnames(input_list)[1:2] = c("mz", "name") ###################################### file properties in numbers ###################### ## Number of features (mz) maxfeatures = length(features(msidata)) ## Range mz minmz = round(min(mz(msidata)), digits=2) maxmz = round(max(mz(msidata)), digits=2) ## Number of spectra (pixels) pixelcount = length(pixels(msidata)) ## Range x coordinates minimumx = min(coord(msidata)[,1]) maximumx = max(coord(msidata)[,1]) ## Range y coordinates minimumy = min(coord(msidata)[,2]) maximumy = max(coord(msidata)[,2]) ## Range of intensities minint = round(min(spectra(msidata)[]), digits=2) maxint = round(max(spectra(msidata)[]), digits=2) medint = round(median(spectra(msidata)[]), digits=2) ## Number of intensities > 0 npeaks= sum(spectra(msidata)[]>0) ## Spectra multiplied with mz (potential number of peaks) numpeaks = ncol(spectra(msidata)[])*nrow(spectra(msidata)[]) ## Percentage of intensities > 0 percpeaks = round(npeaks/numpeaks*100, digits=2) ## Number of empty TICs TICs = colSums(spectra(msidata)[]) NumemptyTIC = sum(TICs == 0) ## Processing informations processinginfo = processingData(msidata) centroidedinfo = processinginfo@centroided # TRUE or FALSE ## if TRUE write processinginfo if no write FALSE ## normalization if (length(processinginfo@normalization) == 0) { normalizationinfo='FALSE' } else { normalizationinfo=processinginfo@normalization } ## smoothing if (length(processinginfo@smoothing) == 0) { smoothinginfo='FALSE' } else { smoothinginfo=processinginfo@smoothing } ## baseline if (length(processinginfo@baselineReduction) == 0) { baselinereductioninfo='FALSE' } else { baselinereductioninfo=processinginfo@baselineReduction } ## peak picking if (length(processinginfo@peakPicking) == 0) { peakpickinginfo='FALSE' } else { peakpickinginfo=processinginfo@peakPicking } ### calculate how many input masses are valid: inputmasses = input_list[input_list[,1]>minmz & input_list[,1]<maxmz,] inputmz = inputmasses[,1] inputnames = inputmasses[,2] properties = c("Number of mz features", "Range of mz values [Da]", "Number of pixels", "Range of x coordinates", "Range of y coordinates", "Range of intensities", "Median of intensities", "Intensities > 0", "Number of zero TICs", "Preprocessing", "Normalization", "Smoothing", "Baseline reduction", "Peak picking", "Centroided", paste0("# valid masses in ", "$filename")) values = c(paste0(maxfeatures), paste0(minmz, " - ", maxmz), paste0(pixelcount), paste0(minimumx, " - ", maximumx), paste0(minimumy, " - ", maximumy), paste0(minint, " - ", maxint), paste0(medint), paste0(percpeaks, " %"), paste0(NumemptyTIC), paste0(" "), paste0(normalizationinfo), paste0(smoothinginfo), paste0(baselinereductioninfo), paste0(peakpickinginfo), paste0(centroidedinfo), paste0(length(inputmz), "/", length(input_list[,1]))) property_df = data.frame(properties, values) ######################################## PDF ############################################# ########################################################################################## ########################################################################################## pdf("heatmaps.pdf", fonts = "Times", pointsize = 12) plot(0,type='n',axes=FALSE,ann=FALSE) #if not $filename: #set $filename = $infile.display_name #end if title(main=paste("Quality control of MSI data\n\n", "Filename:", "$filename")) ############################# I) numbers #################################### ############################################################################# grid.table(property_df, rows= NULL) if (npeaks > 0) { if (length(inputmz) != 0) { for (mass in 1:length(inputmz)) { print(image(msidata, mz=inputmz[mass], strip = strip.custom(bg="lightgrey", par.strip.text=list(col="black", cex=.9)), lattice=TRUE, ylim = c(maximumy+1,minimumy-1), plusminus = $plusminusinDalton, contrast.enhance = "histogram", main= paste0(mass, ") ", inputnames[mass], " (", round(inputmz[mass], digits = 2)," ± ", $plusminusinDalton, " Da)"))) } } else {print("The input masses were outside the mass range")} dev.off() }else{ print("inputfile has no intensities > 0") dev.off() } ]]></configfile> </configfiles> <inputs> <param name="infile" type="data" format="imzml,rdata,analyze75" label="Inputfile as imzML, Analyze7.5 or Cardinal MSImageSet saved as RData" help="Upload composite datatype imzml (ibd+imzML) or analyze75 (hdr+img+t2m) or regular upload .RData (Cardinal MSImageSet)"/> <param name="filename" type="text" value="" label="Title" help="will appear in the quality report. If nothing given it will take the dataset name."/> <param name="massfile" type="data" optional="true" format="tabular" label="Text file with masses and names" help="first column mass (m/z), second column mass name, tab separated file"/> <param name="plusminusinDalton" value="0.25" type="float" label="Mass range" help="plusminus mass window in Dalton"/> </inputs> <outputs> <data format="pdf" name="plots" from_work_dir="heatmaps.pdf" label = "${tool.name} on $infile.display_name"/> </outputs> <tests> <test> <param name="infile" value="" ftype="imzml"> <composite_data value="Example_Continuous.imzML"/> <composite_data value="Example_Continuous.ibd"/> </param> <param name="massfile" value="inputpeptides.csv" ftype="tabular"/> <param name="plusminusinDalton" value="0.25"/> <param name="filename" value="Testfile_imzml"/> <output name="plots" file="Heatmaps_imzml.pdf" compare="sim_size" delta="20000"/> </test> <test> <param name="infile" value="" ftype="analyze75"> <composite_data value="Analyze75.hdr"/> <composite_data value="Analyze75.img"/> <composite_data value="Analyze75.t2m"/> </param> <param name="massfile" value="inputpeptides.txt" ftype="tabular"/> <param name="plusminusinDalton" value="0.5"/> <param name="filename" value="Testfile_analyze75"/> <output name="plots" file="Heatmaps_analyze75.pdf" compare="sim_size" delta="20000"/> </test> <test> <param name="infile" value="preprocessing_results1.RData" ftype="rdata"/> <param name="massfile" value="inputpeptides.csv" ftype="tabular"/> <param name="plusminusinDalton" value="0.1"/> <param name="filename" value="Testfile_rdata"/> <output name="plots" file="Heatmaps_rdata.pdf" compare="sim_size" delta="20000"/> </test> <test> <param name="infile" value="LM8_file16.rdata" ftype="rdata"/> <param name="massfile" value="inputpeptides.txt" ftype="tabular"/> <param name="plusminusinDalton" value="0.1"/> <param name="filename" value="Testfile_rdata"/> <output name="plots" file="Heatmaps_LM8_file16.pdf" compare="sim_size" delta="20000"/> </test> </tests> <help><![CDATA[ Heatmaps for different ion masses in mass-spectrometry imaging data. Input data: 3 types of input data can be used: - imzml file (upload imzml and ibd file via the "composite" function) `Introduction to the imzml format <http://ms-imaging.org/wp/introduction/>`_ - Analyze7.5 (upload hdr, img and t2m file via the "composite" function) - Cardinal "MSImageSet" data (with variable name "msidata", saved as .RData) The output of this tool contains heatmaps for every ion mass of interest as pdf. ]]> </help> <citations> <citation type="doi">10.1093/bioinformatics/btv146</citation> </citations> </tool>