view metaMS/metams_lcms_pick_and_group.xml @ 25:9f03c8587d6b draft default tip

MetExp msclust upload format changed from tabular to csv
author linda-bakker
date Fri, 24 Aug 2018 09:56:05 -0400
parents 4393f982d18f
children
line wrap: on
line source

<tool id="metams_lcms_pick_and_group" name="METAMS-LC/MS Pick, Align and Group"  version="0.0.4">
	<description> Runs metaMS process for LC/MS feature picking, aligning and grouping</description>
	<requirements>
		<requirement type="package" version="3.1.1">R_bioc_metams</requirement>
	</requirements>	
	<command interpreter="Rscript">
		metaMS_cmd_pick_and_group.r 
	    $data_files
	    $customMetaMSsettings
	    $outputFile 
	    $xsetOut
	    $polarity
	    $htmlReportFile
	    $htmlReportFile.files_path
	    $outputLog
	</command>
<inputs>
	<param name="data_files" type="data" format="prims.fileset.zip" label="Data files (.zip file with CDF, mzML or mzXML files)" help=".zip file containing the CDF, mzML or mzXML files of the new measurements"/>
	
	<param name="protocolName" type="text" size="30" label="protocolName" value="e.g. Synapt.QTOF.RP" 
		help="Choose a name to give for the specific settings in the parameters below"/><!-- TODO - let user choose this -->
	
	<param name="polarity" type="select" size="30" label="polarity" 
		help="Which polarity mode was used for measuring of the ms sample">
		<option value="positive" selected="true">positive</option>
		<option value="negative" >negative</option>
	</param>
	
	
	<!-- ===========NB : if peak picking, alignment OR CAMERA settings have to be reused for runGC wrapper in the future, we can use Galaxy macro expansions here
	                     to avoid defining these parameters again in the runGC wrapper ========================= -->
	<conditional name="peakPicking">
		<param name="method" type="select" size="30" label="PEAK PICKING method ====================================================="
		help="matchedFilter=Feature detection in the chromatographic time domain ; centWave=Feature detection for high resolution LC/MS data">
			<option value="matchedFilter" selected="true">matchedFilter</option>
			<option value="centWave" >centWave</option>
		</param>
		<when value="matchedFilter">	
			<param name="fwhm" type="integer" size="10" value="20" label="fwhm" 
			help="full width at half maximum of matched filtration gaussian model peak. Only used to calculate the actual sigma" />
			<param name="sigma_denom" type="float" size="10" value="2.3548" label="sigma_denominator" 
			help="denominator for standard deviation (width) of matched filtration model peak (e.g. sigma = fwhm/2.3548)" />
			<param name="max" type="integer" size="10" value="50" label="max" 
			help="maximum number of peaks per extracted ion chromatogram" />
			<param name="snthresh" type="integer" size="10" value="4" label="snthresh" 
			help="signal to noise ratio cutoff" />
			<param name="step" type="float" size="10" value="0.05" label="step" 
			help="step size to use for profile generation"/>
			<param name="steps" type="integer" size="10" value="2" label="steps" 
			help="number of steps to merge prior to filtration"/>
			<param name="mzdiff" type="float" size="10" value="0.8" label="mzdiff" 
			help="minimum difference in m/z for peaks with overlapping retention times"/>
		</when>
		<when value="centWave">
			<param name="ppm" type="integer" size="10" value="25" label="ppm" 
			help="maxmial tolerated m/z deviation in consecutive scans, in ppm" />
			<param name="peakwidth" type="text" size="10" value="20,50" label="peakwidth" 
			help="Chromatographic peak width, given as range (min,max) in seconds" />
			<param name="snthresh" type="integer" size="10" value="10" label="snthresh" 
			help="signal to noise ratio cutoff" />			
			<param name="prefilter" type="text" size="10" value="3,100" label="prefilter=c(k,I)" 
				help="Prefilter step for the first phase. Mass traces are only retained if 
				they contain at least k peaks with intensity &gt; = I" />			
			<param name="mzCenterFun" type="select" size="30" label="mzCenterFun" 
				help="Function to calculate the m/z center of the feature: wMean intensity weighted mean of the 
				feature m/z values, mean mean of the feature m/z values, apex use m/z value at peak apex, 
				wMeanApex3 intensity weighted mean of the m/z value at peak apex and the m/z value left and 
				right of it, meanApex3 mean of the m/z value at peak apex and the m/z value left and right of it">
				<option value="wMean" selected="true">wMean</option>
				<option value="mean" >mean</option>
				<option value="apex" >apex</option>
				<option value="wMeanApex3" >wMeanApex3</option>
				<option value="meanApex3" >meanApex3</option>
			</param>
			<param name="integrate" type="select" size="30" label="integrate" 
				help="Integration method. If =1 peak limits are found through descent 
				on the mexican hat filtered data, if =2 the descent is done on the real data. 
				Method 2 is very accurate but prone to noise, while method 1 is more robust to noise but less exact">
				<option value="1" selected="true">1</option>
				<option value="2" >2</option>
			</param>
			<param name="mzdiff" type="float" size="10" value="-0.001" label="mzdiff" 
				help="minimum difference in m/z for peaks with overlapping retention times, can be negative to allow overlap" />
			<param name="fitgauss" type="integer" size="10" value="20" label="fitgauss" 
				help="logical, if Yes: a Gaussian is fitted to each peak" >
				<option value="TRUE" selected="true">Yes</option>
				<option value="FALSE" >No</option>
			</param>
			<param name="noise" type="integer" size="10" value="0" label="noise" 
				help="optional argument which is useful for data that was centroided without any intensity
				 threshold, centroids with intensity &lt; noise are omitted from ROI detection" />
		</when>
	</conditional>

	
	<param name="min_class_fraction" type="float" size="10" value="0.3" label="ALIGNMENT min.class.fraction =====================================================" 
		    help="Minimum fraction of samples necessary in the alignment to make it a valid alignment/group"/>
	<param name="min_class_size" type="integer" size="10" value="3" label="min.class.size" 
			help="Minimum number of samples necessary in the alignment to make it a valid alignment/group. The lowest criteria
			between this and min.class.fraction will be used." />
	<param name="mzwid" type="float" size="10" value="0.1" label="mzwid" 
			help="width of overlapping m/z slices to use for creating peak density chromatograms and grouping peaks across samples"/>
	<param name="bws" type="text" size="10" value="30,10" label="bws" 
			help="bandwidth (standard deviation or half width at half maximum) of gaussian smoothing kernel 
			to apply to the peak density chromatogram. Fill in two values separated by comma. First value is used for 
			first grouping round, seccond value is used for last grouping/alignment round after retention time
			correction. "/>
	
	<conditional name="retcor">
		<param name="retcormethod" type="select" size="30" label="retcormethod" 
			help="retention time correction method. 'peakgroups' is the default density based approach, 'obiwarp' is 
			  alignment data by Ordered Bijective Interpolated Warping ">
			<option value="peakgroups" selected="true">peakgroups</option>
			<option value="obiwarp" >obiwarp</option>
		</param>
		<when value="peakgroups">
			<param name="retcorfamily" type="select" size="30" label="retcorfamily" 
				help="retention time correction method type/family">
				<option value="symmetric" selected="true">symmetric</option>
				<option value="gaussian">gaussian</option>
			</param>
			<param name="smooth" type="select" size="30" label="smooth" 
				help="either 'loess' for non-linear alignment or 'linear' for linear alignment">
				<option value="linear" selected="true">linear</option>
				<option value="loess">loess (TODO - waiting for metaMS to add/parse this option)</option>
			</param>
			<param name="missingratio" type="float" size="10" value="0.2" label="missingratio" 
				help="ratio of missing samples to allow in retention time correction groups"/>
			<param name="extraratio" type="float" size="10" value="0.1" label="extraratio" 
				help="ratio of extra peaks to allow in retention time correction correction groups"/>
		</when>
		<when value="obiwarp">
			<param name="profStep" type="integer" size="10" value="1" label="profStep" 
				help="step size (in m/z) to use for profile generation from the raw data files" />
		</when>
	</conditional>
		
	<param name="fillPeaks" type="select" size="30" label="fillPeaks" 
		help="Fill missing peaks in peak groups/alignments that do not include peaks from every sample. 
		This method produces intensity values for those missing samples by integrating raw data in peak group region.">
		<option value="TRUE" selected="true">Yes</option>
		<option value="FALSE">No</option>
	</param>
	<param name="perfwhm" type="float" size="10" value="0.6" label="CAMERA perfwhm =====================================================" 
		help="percentage of FWHM width"/>
	<param name="cor_eic_th" type="float" size="10" value="0.7" label="cor_eic_th" 
		help="correlation threshold (0..1)" />
	<param name="ppm" type="float" size="10" value="5.0" label="ppm" 
		help="General ppm error" />
	
	<param name="groupCorr_graphMethod" type="select" size="30" label="(groupCorr)graphMethod" 
		help="Method selection for grouping peaks after correlation analysis into pseudospectra.">
		<option value="hcs" selected="true">hcs</option>
	</param>
		
	<param name="groupCorr_pval" type="float" size="10" value="0.05" label="(groupCorr)pval" 
		help="significant correlation threshold" />	

	<param name="groupCorr_calcCiS" type="select" size="30" label="(groupCorr)calcCiS" 
		help="Use correlation inside samples for peak grouping">
		<option value="TRUE" selected="true">Yes</option>
		<option value="FALSE">No</option>
	</param>
	
	<param name="groupCorr_calcIso" type="select" size="30" label="(groupCorr)calcIso" 
		help="Use isotopic relationship for peak grouping">
		<option value="TRUE" >Yes</option>
		<option value="FALSE" selected="true">No</option>
	</param>
	
	<param name="groupCorr_calcCaS" type="select" size="30" label="(groupCorr)calcCaS" 
		help="Use correlation across samples for peak grouping">
		<option value="TRUE" >Yes</option>
		<option value="FALSE" selected="true">No</option>
	</param>
	
	
	<param name="findIsotopes_maxcharge" type="integer" size="10" value="3" label="(findIsotopes)maxcharge" 
			help="max. ion charge" />
			
	<param name="findIsotopes_maxiso" type="integer" size="10" value="4" label="(findIsotopes)maxiso" 
			help="max. number of expected isotopes" />	
			
	<param name="findIsotopes_minfrac" type="float" size="10" value="0.5" label="(findIsotopes)minfrac" 
		help="The ratio for the number of samples, which must satisfy the C12/C13 rule for isotope annotation" />					
	

	<param name="findAdducts_multiplier" type="integer" size="10" value="3" label="(findAdducts)multiplier" 
			help="If no ruleset is provided, calculate ruleset with max. number n of [nM+x] clusterions" />


	
</inputs>
<configfiles>

<configfile name="customMetaMSsettings">## ====================================
		## metaMS process settings
		customMetaMSsettings &lt;- metaMSsettings(protocolName = "${protocolName}",
                            chrom = "LC",
                            PeakPicking = list(
                              method = "${peakPicking.method}",
							#if $peakPicking.method == "matchedFilter"  
								fwhm = ${peakPicking.fwhm},
								sigma = ${peakPicking.fwhm}/${peakPicking.sigma_denom},
								max = ${peakPicking.max},
								snthresh = ${peakPicking.snthresh},
								step = ${peakPicking.step},
								steps = ${peakPicking.steps},
								mzdiff = ${peakPicking.mzdiff}),
							#else 
								ppm = ${peakPicking.ppm},
								peakwidth = c(${peakPicking.peakwidth}),
								snthresh = ${peakPicking.snthresh},
								prefilter = c(${peakPicking.prefilter}),
								mzCenterFun = "${peakPicking.mzCenterFun}",
								integrate = ${peakPicking.integrate},
								mzdiff = ${peakPicking.mzdiff},
								fitgauss = ${peakPicking.fitgauss},
								noise = ${peakPicking.noise}),
							#end if
                            Alignment = list(
                              min.class.fraction = ${min_class_fraction},
                              min.class.size = ${min_class_size},
                              mzwid = ${mzwid},
                              bws = c(${bws}),
                              retcormethod = "${retcor.retcormethod}",
							#if $retcor.retcormethod == "peakgroups"
                           		smooth = "${retcor.smooth}",
                            	missingratio = ${retcor.missingratio},
                            	extraratio = ${retcor.extraratio},
                            	retcorfamily = "${retcor.retcorfamily}",            
							#else
								##repeating the method as workaround/ backwards compatibility (can remove this one after fix from metaMS):
								method = "${retcor.retcormethod}", 
								profStep = ${retcor.profStep},
							#end if								                             
                              fillPeaks = ${fillPeaks}),
                            CAMERA = list(
                              perfwhm = ${perfwhm},
                              cor_eic_th = ${cor_eic_th},
                              ppm= ${ppm},
                              graphMethod= "${groupCorr_graphMethod}",
                              pval= ${groupCorr_pval},
                              calcCiS= ${groupCorr_calcCiS},
                              calcIso= ${groupCorr_calcIso},
                              calcCaS= ${groupCorr_calcCaS},
                              maxcharge= ${findIsotopes_maxcharge},
                              maxiso= ${findIsotopes_maxiso},
                              minfrac= ${findIsotopes_minfrac},
                              multiplier= ${findAdducts_multiplier}
                              ))</configfile>

</configfiles>

<outputs>
	<data name="outputFile" format="tabular" label="${tool.name} on ${on_string} - peaks table (TSV)"/>
	<data name="outputLog" format="txt" label="${tool.name} on ${on_string} - LOG" hidden="True"/>
	<data name="xsetOut" format="rdata" label="${tool.name} on ${on_string} - xcmsSet (RDATA)"/>
	<data name="htmlReportFile" format="html" label="${tool.name} on ${on_string} - report (HTML)"/>
</outputs>
<tests>
	<test>
	</test>
</tests>
<help>

.. class:: infomark
  
Runs metaMS process for LC/MS feature feature picking, aligning and grouping. 
This part of the metaMS process makes use of the XCMS and CAMERA tools and algorithms.
CAMERA is used for automatic deconvolution/annotation of LC/ESI-MS data.
The figure below shows the main parts of the metaMS process wrapped by this tool. 

.. image:: $PATH_TO_IMAGES/metaMS_pick_align_camera.png 


From CAMERA documentation: 

.. image:: $PATH_TO_IMAGES/CAMERA_results.png 

**References**

If you use this Galaxy tool in work leading to a scientific publication please
cite the following papers:

Wehrens, R.; Weingart, G.; Mattivi, F. (2014). 
metaMS: an open-source pipeline for GC-MS-based untargeted metabolomics. 
Journal of chromatography B: biomedical sciences and applications, 996 (1): 109-116. 
doi: 10.1016/j.jchromb.2014.02.051 
handle: http://hdl.handle.net/10449/24012

Wrapper by Pieter Lukasse.


  </help>
  <citations>
        <citation type="doi">10.1016/j.jchromb.2014.02.051</citation> <!-- example 
        see also https://wiki.galaxyproject.org/Admin/Tools/ToolConfigSyntax#A.3Ccitations.3E_tag_set
        -->
   </citations>
</tool>