Mercurial > repos > galaxyp > msi_ion_images
changeset 1:845fee459824 draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/msi_ion_images commit edbf2a6cb50fb04d0db56a7557a64e3bb7a0806a
author | galaxyp |
---|---|
date | Thu, 01 Mar 2018 08:25:18 -0500 |
parents | 385e8a4accd9 |
children | b2ad54eabcca |
files | msi_ion_images.xml test-data/Heatmaps_LM8_file16.pdf test-data/Heatmaps_analyze75.pdf test-data/Heatmaps_imzml.pdf test-data/Heatmaps_rdata.pdf test-data/inputpeptides.csv test-data/inputpeptides.tabular test-data/inputpeptides.txt test-data/inputpeptides2.tabular |
diffstat | 9 files changed, 81 insertions(+), 42 deletions(-) [+] |
line wrap: on
line diff
--- a/msi_ion_images.xml Mon Nov 27 13:49:35 2017 -0500 +++ b/msi_ion_images.xml Thu Mar 01 08:25:18 2018 -0500 @@ -1,4 +1,4 @@ -<tool id="mass_spectrometry_imaging_ion_images" name="MSI ion images" version="1.7.0"> +<tool id="mass_spectrometry_imaging_ion_images" name="MSI ion images" version="1.7.0.1"> <description> mass spectrometry imaging heatmaps </description> @@ -36,24 +36,13 @@ ## Read MALDI Imaging dataset #if $infile.ext == 'imzml' - msidata <- readMSIData('infile.imzML') + msidata = readMSIData('infile.imzML') #elif $infile.ext == 'analyze75' - msidata <- readMSIData('infile.hdr') + 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 ###################### @@ -115,12 +104,32 @@ peakpickinginfo=processinginfo@peakPicking } -### calculate how many input masses are valid: -inputmasses = input_list[input_list[,1]>minmz & input_list[,1]<maxmz,] +#if $massfile: + ### Read tabular file with peptide masses for plots and heatmap images: + input_list = read.delim("$massfile", header = FALSE, stringsAsFactors = FALSE) + if (ncol(input_list) == 1) + { + input_list = cbind(input_list, input_list) + } + ### calculate how many input masses are valid: + inputmasses = input_list[input_list[,1]>minmz & input_list[,1]<maxmz,] -inputmz = inputmasses[,1] -inputnames = inputmasses[,2] + inputmz = inputmasses[,1] + inputnames = inputmasses[,2] +#else + input_list = data.frame(0, 0) + inputmz = 0 +#end if + +countpixels = rowSums(spectra(msidata)[features(msidata, mz=inputmz),]>0) +percentpixels = round(countpixels/pixelcount*100, digits=1) +valuesdataframe = cbind(inputmz, cbind(countpixels, percentpixels)) + + +write.table(valuesdataframe, file="$pixel_count", quote = FALSE, row.names = TRUE, col.names=NA, sep = "\t") + +colnames(input_list)[1:2] = c("mz", "name") properties = c("Number of mz features", "Range of mz values [Da]", "Number of pixels", @@ -136,7 +145,7 @@ "Baseline reduction", "Peak picking", "Centroided", - paste0("# valid masses in ", "$filename")) + paste0("# valid masses in ", "$massfile.display_name")) values = c(paste0(maxfeatures), paste0(minmz, " - ", maxmz), @@ -157,6 +166,9 @@ property_df = data.frame(properties, values) + + + ######################################## PDF ############################################# ########################################################################################## ########################################################################################## @@ -176,15 +188,19 @@ 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)"))) + + + 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 = $plusminus_dalton, contrast.enhance = "$image_contrast", smooth.image = "$image_smoothing", + main= paste0(mass, ") ", inputnames[mass], " (", round(inputmz[mass], digits = 2)," ± ", $plusminus_dalton, " Da)"))) } - } else {print("The input masses were outside the mass range")} + } else {print("The input masses were invalid")} dev.off() @@ -198,12 +214,23 @@ <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" + <param name="massfile" type="data" 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"/> + <param name="image_contrast" type="select" label="Select a contrast enhancement function for the heatmap images." help="The 'histogram' equalization method flatterns the distribution of intensities. The hotspot 'suppression' method uses thresholding to reduce the intensities of hotspots"> + <option value="none" selected="True">none</option> + <option value="suppression">suppression</option> + <option value="histogram">histogram</option> + </param> + <param name="image_smoothing" type="select" label="Select an image smoothing function for the heatmap images." help="The 'gaussian' smoothing method smooths images with a simple gaussian kernel. The 'adaptive' method uses bilateral filtering to preserve edges."> + <option value="none" selected="True">none</option> + <option value="gaussian">gaussian</option> + <option value="adaptive">adaptive</option> + </param> + <param name="plusminus_dalton" 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"/> + <data format="tabular" name="pixel_count" label="Number of pixels per mz with intensity"/> </outputs> <tests> <test> @@ -211,9 +238,10 @@ <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="massfile" value="inputpeptides.tabular" ftype="tabular"/> + <param name="plusminus_dalton" value="0.25"/> <param name="filename" value="Testfile_imzml"/> + <param name="image_contrast" value="histogram"/> <output name="plots" file="Heatmaps_imzml.pdf" compare="sim_size" delta="20000"/> </test> @@ -223,37 +251,48 @@ <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="massfile" value="inputpeptides2.tabular" ftype="tabular"/> + <param name="plusminus_dalton" value="0.5"/> <param name="filename" value="Testfile_analyze75"/> + <param name="image_smoothing" value="gaussian"/> <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="massfile" value="inputpeptides.tabular" ftype="tabular"/> + <param name="plusminus_dalton" 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="massfile" value="inputpeptides2.tabular" ftype="tabular"/> + <param name="plusminus_dalton" 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. +Heatmaps for different masses in mass-spectrometry imaging data as pdf output. -Input data: 3 types of input data can be used: +Input data: + +3 types of mass-spectrometry imaging 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. +tabular file with masses: +- tab separated file (.tabular), datatype in Galaxy must be tabular (if Galaxy auto-detection was wrong, datatype can be changed by pressing the pen button) +- no empty fields or letters are allowed (tool crashes with empty fields and a single letter prohibits generation of images) +- separate point numbers by point (a single number with comma prohibits generation of images) + +Trouble shooting: +- no heatmaps are plotted when tabular file contains letters or point numbers with commas or when the input MSI file had no intensities > 0 +- contrast enhance functions need masses with intensities > 0 in about 1.5% of all pixels - tool crashes when contrast enhance is used on too few intensities + ]]> </help>
--- a/test-data/inputpeptides.csv Mon Nov 27 13:49:35 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -152 mass1 -328.9 mass2 -185.2 mass3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-data/inputpeptides.tabular Thu Mar 01 08:25:18 2018 -0500 @@ -0,0 +1,3 @@ +152 mass1 +328.9 mass2 +185.2 mass3