diff msi_preprocessing.xml @ 0:74fcb3c95a53 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/msi_preprocessing commit c4e490c83537b39418b5f09d624f7d4da3f3ad55
author galaxyp
date Tue, 31 Oct 2017 15:05:05 -0400
parents
children c4abf42419c2
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/msi_preprocessing.xml	Tue Oct 31 15:05:05 2017 -0400
@@ -0,0 +1,340 @@
+<tool id="mass_spectrometry_imaging_preprocessing" name="MSI preprocessing" version="1.7.0">
+    <description>
+        mass spectrometry imaging preprocessing
+    </description>
+    <requirements>
+        <requirement type="package" version="1.7.0">bioconductor-cardinal</requirement>
+    </requirements>
+    <command detect_errors="exit_code">
+    <![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 '${cardinal_preprocessing}' &&
+        Rscript '${cardinal_preprocessing}'
+
+    ]]>
+    </command>
+    <configfiles>
+        <configfile name="cardinal_preprocessing"><![CDATA[
+library(Cardinal)
+
+#if $infile.ext == 'imzml'
+    msidata <- readMSIData('infile.imzML')
+#elif $infile.ext == 'analyze75'
+    msidata <- readMSIData('infile.hdr')
+#else
+    load('infile.RData')
+#end if
+
+maxpixel = length(pixels(msidata)) 
+pixelnumber = c(1:maxpixel)
+
+#for $method in $methods:
+    #if str( $method.methods_conditional.preprocessing_method ) == 'Normalization':
+        print('Normalization')
+        ##normalization
+        msidata <- normalize(msidata, pixel=pixelnumber, method="tic")
+
+    #elif str( $method.methods_conditional.preprocessing_method ) == 'Baseline_reduction':
+        print('Baseline_reduction')
+        ##baseline reduction
+        msidata = reduceBaseline(msidata, pixel=pixelnumber, method="median", blocks=$method.methods_conditional.blocks_baseline)
+
+    #elif str( $method.methods_conditional.preprocessing_method ) == 'Smoothing':
+        print('Smoothing')
+        ## Smoothing
+
+        #if str( $method.methods_conditional.methods_for_smoothing.smoothing_method) == 'gaussian':
+            print('gaussian smoothing')
+            msidata <- smoothSignal(msidata, method="$method.methods_conditional.methods_for_smoothing.smoothing_method", window=$method.methods_conditional.window_smoothing, sd = $method.methods_conditional.methods_for_smoothing.sd_gaussian)
+        #elif str( $method.methods_conditional.methods_for_smoothing.smoothing_method) == 'sgolay':
+            print('sgolay smoothing')
+            msidata <- smoothSignal(msidata, method="$method.methods_conditional.methods_for_smoothing.smoothing_method", window=$method.methods_conditional.window_smoothing, order = $method.methods_conditional.methods_for_smoothing.order_of_filters)
+        #elif str($method.methods_conditional.methods_for_smoothing.smoothing_method) == 'ma':
+            print('sgolay smoothing')
+            msidata <- smoothSignal(msidata, method="$method.methods_conditional.methods_for_smoothing.smoothing_method", window=$method.methods_conditional.window_smoothing, coef = $method.methods_conditional.methods_for_smoothing.coefficients_ma_filter)
+        #end if
+
+    #elif str( $method.methods_conditional.preprocessing_method) == 'Peak_picking':
+        print('Peak_picking')
+        ## Peakpicking
+
+        #if str( $method.methods_conditional.methods_for_picking.picking_method) == 'adaptive':
+            print('adaptive peakpicking')
+            msidata = peakPick(msidata, pixel=pixelnumber, window = $method.methods_conditional.window_picking, blocks = $method.methods_conditional.blocks_picking, method='$method.methods_conditional.methods_for_picking.picking_method', SNR=$method.methods_conditional.SNR_picking_method, spar=$method.methods_conditional.methods_for_picking.spar_picking)
+
+        #elif str( $method.methods_conditional.methods_for_picking.picking_method) == 'limpic':
+            print('limpic peakpicking')
+            msidata = peakPick(msidata, pixel=pixelnumber, window = $method.methods_conditional.window_picking, blocks = $method.methods_conditional.blocks_picking, method='$method.methods_conditional.methods_for_picking.picking_method', SNR=$method.methods_conditional.SNR_picking_method, thresh=$method.methods_conditional.methods_for_picking.tresh_picking)
+
+        #elif str( $method.methods_conditional.methods_for_picking.picking_method) == 'simple':
+            print('simple peakpicking')
+            msidata = peakPick(msidata, pixel=pixelnumber, window = $method.methods_conditional.window_picking, blocks = $method.methods_conditional.blocks_picking, method='$method.methods_conditional.methods_for_picking.picking_method', SNR=$method.methods_conditional.SNR_picking_method)
+        #end if
+
+    #elif str( $method.methods_conditional.preprocessing_method ) == 'Peak_alignment':
+        print('Peak_alignment')
+        ## Peakalignment
+
+        #if str( $method.methods_conditional.methods_for_alignment.alignment_method) == 'diff':
+            print('diff peaklignment')
+            msidata = peakAlign(msidata, method='$method.methods_conditional.methods_for_alignment.alignment_method',diff.max =$method.methods_conditional.methods_for_alignment.value_diffalignment, units = "$method.methods_conditional.methods_for_alignment.units_diffalignment")
+
+       #elif str( $method.methods_conditional.methods_for_alignment.alignment_method) == 'DP':
+            print('DPpeaklignment')
+        msidata = peakAlign(msidata, method='$method.methods_conditional.methods_for_alignment.alignment_method',gap = $method.methods_conditional.methods_for_alignment.gap_DPalignment )
+       #end if
+
+    #elif str( $method.methods_conditional.preprocessing_method) == 'Peak_filtering':
+        print('Peak_filtering')
+        msidata = peakFilter(msidata, method='freq', freq.min = $method.methods_conditional.frequ_filtering)
+    #end if
+#end for
+
+## save as as (.RData)
+save(msidata, file="$msidata_preprocessed")
+
+## save as intensity matrix (.csv)
+csvmatrix = spectra(msidata)
+rownames(csvmatrix) = mz(msidata)
+newmatrix = rbind(pixels(msidata), csvmatrix)
+write.csv(newmatrix[2:nrow(newmatrix),], file="$preprocessed_intensity_matrix")
+
+    ]]></configfile>
+    </configfiles>
+    <inputs>
+        <param name="infile" type="data" format="imzml,rdata,analyze75"
+               label="MSI rawdata as imzml or Cardinal MSImageSet saved as RData"
+               help="load imzml and ibd file by uploading composite datatype imzml"/>
+
+        <repeat name="methods" title="Preprocessing" min="1" max="50">
+            <conditional name="methods_conditional">
+                <param name="preprocessing_method" type="select" label="Select the preprocessing methods you want to apply">
+                    <option value="Normalization" selected="True">Normalization to TIC</option>
+                    <option value="Baseline_reduction">Baseline Reduction</option>
+                    <option value="Smoothing">Peak smoothing</option>
+                    <option value="Peak_picking">Peak picking</option>
+                    <option value="Peak_alignment">Peak alignment</option>
+                    <option value="Peak_filtering">Peak filtering</option>
+                </param>
+                <when value="Normalization"/>
+                <when value="Baseline_reduction">
+                    <param name="blocks_baseline" type="integer" value="50"
+                        label="blocks"/>
+                </when>
+                <when value="Smoothing">
+                    <conditional name="methods_for_smoothing">
+                        <param name="smoothing_method" type="select" label="Smoothing method">
+                            <option value="gaussian" selected="True">gaussian</option>
+                            <option value="sgolay">Savitsky-Golay</option>
+                            <option value="ma">moving average</option>
+                        </param>
+                        <when value="gaussian">
+                            <param name="sd_gaussian" type="float" value="4"
+                                   label="The standard deviation for the Gaussian kernel (window/sd)"/>
+                        </when>
+                        <when value="sgolay">
+                            <param name="order_of_filters" type="integer" value="3"
+                                   label="The order of the smoothing filter"/>
+                        </when>
+                        <when value="ma">
+                            <param name="coefficients_ma_filter" type="integer" value="1"
+                                   label="The coefficients for the moving average filter"/>
+                        </when>
+                    </conditional>
+                    <param name="window_smoothing" type="integer" value="9"
+                                label="Window size"/>
+                </when>
+                <when value="Peak_picking">
+                    <param name="SNR_picking_method" type="integer" value="3"
+                        label="Signal to noise ratio"
+                        help="The minimal signal to noise ratio for peaks to be considered as a valid peak."/>
+                    <param name="blocks_picking" type="integer" value="100" label = "number of blocks"
+                        help="Number of blocks in which to divide mass spectrum to calculate noise"/>
+                    <param name="window_picking" type="integer" value="5" label= "window size" help="Window width for seeking local maxima"/>
+                    <conditional name="methods_for_picking">
+                        <param name="picking_method" type="select" label="Peak picking method" help = "only simple works for processed imzML files">
+                            <option value="adaptive" selected="True">adaptive</option>
+                            <option value="limpic">limpic</option>
+                            <option value="simple">simple</option>
+                        </param>
+                        <when value="adaptive">
+                            <param name="spar_picking" type="float" value="1.0"
+                                label="spar value" 
+                                help = "Smoothing parameter for the spline smoothing 
+                                  applied to the spectrum in order to decide the cutoffs 
+                                  for throwing away false noise spikes that might occur inside peaks"/>
+                        </when>
+                        <when value="limpic">
+                            <param name="tresh_picking" type="float" value="0.75"
+                                label="thresh value" help = "The thresholding quantile to use when comparing slopes in order to throw away peaks that are too flat"/>
+                        </when> 
+                        <when value="simple"/>
+                    </conditional>
+                </when>
+                <when value="Peak_alignment">
+                    <conditional name="methods_for_alignment">
+                        <param name="alignment_method" type="select" label="Alignment method">
+                            <option value="diff" selected="True">diff</option>
+                            <option value="DP">DP</option>
+                        </param>
+                        <when value="diff">
+                            <param name="value_diffalignment" type="integer" value="200"
+                                   label="diff.max" help="Peaks that differ less than this value will be aligned together"/>
+                            <param name="units_diffalignment" type="select" display = "radio" optional = "False"
+                                   label="units" help= "The coefficients for the moving average filter">
+                                    <option value="ppm" selected="True">ppm</option>
+                                    <option value="Da">Da</option>
+                            </param>
+                        </when>
+                        <when value="DP">
+                            <param name="gap_DPalignment" type="integer" value="0"
+                                   label="gap" help = "The gap penalty for the dynamic programming sequence alignment"/>
+                        </when>
+                    </conditional>
+                </when>
+                <when value="Peak_filtering">
+                    <param name="frequ_filtering" type="float" value="1"
+                        label="freq.min" help = "Peaks that occur in the dataset fewer times than this will be removed"/>
+                </when>
+            </conditional>
+        </repeat>
+    </inputs>
+    <outputs>
+        <data format="rdata" name="msidata_preprocessed" label="Preprocessed_output"/>
+        <data format="csv" name="preprocessed_intensity_matrix" label="preprocessed intensity matrix" />
+    </outputs>
+    <tests>
+        <test>
+            <param name="infile" value="" ftype="imzml">
+                <composite_data value="Example_Continuous.imzML" ftype="imzml"/>
+                <composite_data value="Example_Continuous.ibd" ftype="ibd"/>
+            </param>
+            <repeat name="methods">
+                <conditional name="methods_conditional">
+                    <param name="preprocessing_method" value="Normalization" />
+                </conditional>
+            </repeat>
+            <repeat name="methods">
+                <conditional name="methods_conditional">
+                    <param name="preprocessing_method" value="Smoothing" />
+                    <conditional name="methods_for_smoothing">
+                        <param name="smoothing_method" value="sgolay" />
+                    </conditional>
+                </conditional>
+            </repeat>
+            <repeat name="methods">
+                <conditional name="methods_conditional">
+                    <param name="preprocessing_method" value="Peak_picking" />
+                    <conditional name="methods_for_picking">
+                        <param name="picking_method" value="adaptive" />
+                    </conditional>
+                    <param name="blocks_picking" value="3" />
+                    <param name="window_picking" value="3" />
+                </conditional>
+            </repeat>
+            <repeat name="methods">
+                <conditional name="methods_conditional">
+                    <param name="preprocessing_method" value="Peak_alignment" />
+                    <conditional name="methods_for_alignment">
+                        <param name="alignment_method" value="DP" />
+                    </conditional>
+                </conditional>
+            </repeat>
+            <repeat name="methods">
+                <conditional name="methods_conditional">
+                    <param name="preprocessing_method" value="Peak_filtering" />
+                </conditional>
+            </repeat>
+            <output name="msidata_preprocessed" file="preprocessing_results1.RData" compare="sim_size" />
+            <output name="preprocessed_intensity_matrix" file="preprocessing_results1.csv" />
+        </test>
+        <test>
+            <param name="infile" value="LM5_first68pixel.RData" ftype="rdata"/>
+            <repeat name="methods">
+                <conditional name="methods_conditional">
+                    <param name="preprocessing_method" value="Baseline_reduction" />
+                    <param name="blocks_baseline" value="50" />
+                </conditional>
+            </repeat>
+            <repeat name="methods">
+                <conditional name="methods_conditional">
+                    <param name="preprocessing_method" value="Peak_picking" />
+                    <param name="blocks_picking" value="3" />
+                    <param name="window_picking" value="5" />
+                    <param name="methods_for_picking" value="simple" />
+                </conditional>
+            </repeat>
+            <repeat name="methods">
+                <conditional name="methods_conditional">
+                    <param name="preprocessing_method" value="Peak_alignment" />
+                    <param name="methods_for_alignment" value="DP" />
+                </conditional>
+            </repeat>
+            <output name="msidata_preprocessed" file="preprocessing_results2.RData" compare="sim_size" />
+            <output name="preprocessed_intensity_matrix" file="preprocessing_results2.csv" lines_diff="2"/>
+        </test>
+        <test>
+            <param name="infile" value="" ftype="analyze75">
+                <composite_data value="Analyze75.hdr" ftype="hdr"/>
+                <composite_data value="Analyze75.img" ftype="img"/>
+                <composite_data value="Analyze75.t2m" ftype="t2m"/>
+            </param>
+            <repeat name="methods">
+                <conditional name="methods_conditional">
+                    <param name="preprocessing_method" value="Normalization" />
+                </conditional>
+            </repeat>
+            <repeat name="methods">
+                <conditional name="methods_conditional">
+                    <param name="preprocessing_method" value="Smoothing" />
+                    <conditional name="methods_for_smoothing">
+                        <param name="smoothing_method" value="gaussian" />
+                    </conditional>
+                </conditional>
+            </repeat>
+            <repeat name="methods">
+                <conditional name="methods_conditional">
+                    <param name="preprocessing_method" value="Peak_picking" />
+                    <param name="blocks_picking" value="3" />
+                    <param name="window_picking" value="5" />
+                    <param name="methods_for_picking" value="limpic" />
+                </conditional>
+            </repeat>
+            <repeat name="methods">
+                <conditional name="methods_conditional">
+                    <param name="preprocessing_method" value="Peak_alignment" />
+                    <param name="methods_for_alignment" value="diff" />
+                </conditional>
+            </repeat>
+            <output name="msidata_preprocessed" file="preprocessing_results3.RData" compare="sim_size" />
+            <output name="preprocessed_intensity_matrix" file="preprocessing_results3.csv" />
+        </test>
+    </tests>
+    <help>
+    <![CDATA[
+Cardinal is an R package that implements statistical & computational tools for analyzing mass spectrometry imaging datasets.
+
+**Preprocessing steps:**
+
+- Smoothening: Smoothing of the mass peaks reduces noise and improves peak detection
+- Normalization: Normalization of intensities to total ion current (TIC)
+- Baseline reduction: Baseline  reduction removes backgroundintensity generated by chemical noise (common in MALDI datasets)
+- Peak picking: relevant peaks are picked while noise-peaks are removed
+- Peak alignment: mz inaccuracies are removed by alignment of same peaks to a common mz value
+- Peak filtering: removes peaks that occur infrequently, such as those which only occur in a small proportion of pixels
+        ]]>
+    </help>
+    <citations>
+        <citation type="doi">10.1093/bioinformatics/btv146</citation>
+    </citations>
+</tool>