diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/msi_ion_images.xml	Mon Nov 27 13:49:35 2017 -0500
@@ -0,0 +1,263 @@
+<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>