Mercurial > repos > galaxyp > cardinal_preprocessing
diff preprocessing.xml @ 0:8c05a34f160a draft
planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/cardinal commit 0825a4ccd3ebf4ca8a298326d14f3e7b25ae8415
author | galaxyp |
---|---|
date | Mon, 01 Oct 2018 01:07:44 -0400 |
parents | |
children | 1b22c1e7bfe7 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/preprocessing.xml Mon Oct 01 01:07:44 2018 -0400 @@ -0,0 +1,680 @@ +<tool id="cardinal_preprocessing" name="MSI preprocessing" version="@VERSION@.0"> + <description> + mass spectrometry imaging preprocessing + </description> + <macros> + <import>macros.xml</import> + </macros> + <expand macro="requirements"> + <requirement type="package" version="2.2.1">r-gridextra</requirement> + <requirement type="package" version="0.20-35">r-lattice</requirement> + <requirement type="package" version="2.2.1">r-ggplot2</requirement> + </expand> + <command detect_errors="exit_code"> + <![CDATA[ + + @INPUT_LINKING@ + cat '${cardinal_preprocessing}' && + Rscript '${cardinal_preprocessing}' + + ]]> + </command> + <configfiles> + <configfile name="cardinal_preprocessing"><![CDATA[ + +################################# load libraries and read file ################# + +library(Cardinal) +library(gridExtra) +library(lattice) +library(ggplot2) + +@READING_MSIDATA@ + +print(paste0("Number of NA in input file: ",sum(is.na(spectra(msidata)[])))) + + +if (sum(spectra(msidata)[]>0, na.rm=TRUE)> 0){ + ######################### preparations for QC report ################# + + maxfeatures = length(features(msidata)) + medianpeaks = median(colSums(spectra(msidata)[]>0, na.rm=TRUE)) + medint = round(median(spectra(msidata)[],na.rm=TRUE), digits=2) + minmz = round(min(mz(msidata)), digits=2) + maxmz = round(max(mz(msidata)), digits=2) + QC_numbers= data.frame(inputdata = c(minmz, maxmz,maxfeatures, medianpeaks, medint)) + vectorofactions = "inputdata" + + ############################### Preprocessing steps ########################### + ############################################################################### + + #for $method in $methods: + + ############################### Normalization ########################### + + #if str( $method.methods_conditional.preprocessing_method ) == 'Normalization': + print('Normalization') + ##normalization + + msidata = normalize(msidata, method="tic") + + ############################### QC ########################### + + maxfeatures = length(features(msidata)) + medianpeaks = median(colSums(spectra(msidata)[]>0, na.rm=TRUE),) + medint = round(median(spectra(msidata)[], na.rm=TRUE), digits=2) + minmz = round(min(mz(msidata)), digits=2) + maxmz = round(max(mz(msidata)), digits=2) + normalized = c(minmz, maxmz,maxfeatures, medianpeaks, medint) + QC_numbers= cbind(QC_numbers, normalized) + vectorofactions = append(vectorofactions, "normalized") + + ############################### Baseline reduction ########################### + + #elif str( $method.methods_conditional.preprocessing_method ) == 'Baseline_reduction': + print('Baseline_reduction') + ##baseline reduction + + msidata = reduceBaseline(msidata, method="median", blocks=$method.methods_conditional.blocks_baseline, spar=$method.methods_conditional.spar_baseline) + + ############################### QC ########################### + + maxfeatures = length(features(msidata)) + medianpeaks = median(colSums(spectra(msidata)[]>0, na.rm=TRUE)) + medint = round(median(spectra(msidata)[], na.rm=TRUE), digits=2) + minmz = round(min(mz(msidata)), digits=2) + maxmz = round(max(mz(msidata)), digits=2) + baseline = c(minmz, maxmz,maxfeatures, medianpeaks, medint) + QC_numbers= cbind(QC_numbers, baseline) + vectorofactions = append(vectorofactions, "baseline red.") + + ############################### Smoothing ########################### + + #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('moving average 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 + + ############################### QC ########################### + + maxfeatures = length(features(msidata)) + medianpeaks = median(colSums(spectra(msidata)[]>0, na.rm=TRUE)) + medint = round(median(spectra(msidata)[], na.rm=TRUE), digits=2) + minmz = round(min(mz(msidata)), digits=2) + maxmz = round(max(mz(msidata)), digits=2) + smoothed = c(minmz, maxmz,maxfeatures, medianpeaks, medint) + QC_numbers= cbind(QC_numbers, smoothed) + vectorofactions = append(vectorofactions, "smoothed") + + ############################### Peak picking ########################### + + #elif str( $method.methods_conditional.preprocessing_method) == 'Peak_picking': + print('Peak_picking') + ## Peakpicking + + ## remove duplicated coordinates, otherwise peak picking will fail + print(paste0(sum(duplicated(coord(msidata))), " duplicated coordinates were removed")) + msidata <- msidata[,!duplicated(coord(msidata))] + + #if str( $method.methods_conditional.methods_for_picking.picking_method) == 'adaptive': + print('adaptive peakpicking') + + msidata = peakPick(msidata, 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, 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, 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 + + ############################### QC ########################### + + maxfeatures = length(features(msidata)) + medianpeaks = median(colSums(spectra(msidata)[]>0, na.rm=TRUE)) + medint = round(median(spectra(msidata)[], na.rm=TRUE), digits=2) + minmz = round(min(mz(msidata)), digits=2) + maxmz = round(max(mz(msidata)), digits=2) + picked = c(minmz, maxmz,maxfeatures, medianpeaks, medint) + QC_numbers= cbind(QC_numbers, picked) + vectorofactions = append(vectorofactions, "picked") + + ############################### Peak alignment ########################### + + #elif str( $method.methods_conditional.preprocessing_method ) == 'Peak_alignment': + print('Peak_alignment') + ## Peakalignment + + #if str( $method.methods_conditional.align_ref_type.align_reference_datatype) == 'align_noref': + + align_peak_reference = msidata + + #elif str( $method.methods_conditional.align_ref_type.align_reference_datatype) == 'align_table': + + align_reference_table = read.delim("$method.methods_conditional.align_ref_type.mz_tabular", header = $method.methods_conditional.align_ref_type.align_mass_header, stringsAsFactors = FALSE) + align_reference_column = align_reference_table[,$method.methods_conditional.align_ref_type.align_mass_column] + align_peak_reference = align_reference_column[align_reference_column>=min(mz(msidata)) & align_reference_column<=max(mz(msidata))] + if (length(align_peak_reference) == 0) + {align_peak_reference = 0} + + #elif str( $method.methods_conditional.align_ref_type.align_reference_datatype) == 'align_msidata_ref': + + align_peak_reference = loadRData('$method.methods_conditional.align_ref_type.align_peaks_msidata') + + #end if + + #if str( $method.methods_conditional.methods_for_alignment.alignment_method) == 'diff': + print('diff peakalignment') + + 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", ref=align_peak_reference) + + #elif str( $method.methods_conditional.methods_for_alignment.alignment_method) == 'DP': + print('DPpeakalignment') + + msidata = peakAlign(msidata, method='$method.methods_conditional.methods_for_alignment.alignment_method',gap = $method.methods_conditional.methods_for_alignment.gap_DPalignment, ref=align_peak_reference) + + #end if + + ############################### QC ########################### + + maxfeatures = length(features(msidata)) + medianpeaks = median(colSums(spectra(msidata)[]>0, na.rm=TRUE)) + medint = round(median(spectra(msidata)[], na.rm=TRUE), digits=2) + minmz = round(min(mz(msidata)), digits=2) + maxmz = round(max(mz(msidata)), digits=2) + aligned = c(minmz, maxmz,maxfeatures, medianpeaks, medint) + QC_numbers= cbind(QC_numbers, aligned) + vectorofactions = append(vectorofactions, "aligned") + + ############################### Peak filtering ########################### + + #elif str( $method.methods_conditional.preprocessing_method) == 'Peak_filtering': + print('Peak_filtering') + + msidata = peakFilter(msidata, method='freq', freq.min = $method.methods_conditional.frequ_filtering) + + ############################### QC ########################### + + maxfeatures = length(features(msidata)) + medianpeaks = median(colSums(spectra(msidata)[]>0, na.rm=TRUE)) + medint = round(median(spectra(msidata)[], na.rm=TRUE), digits=2) + minmz = round(min(mz(msidata)), digits=2) + maxmz = round(max(mz(msidata)), digits=2) + filtered = c(minmz, maxmz,maxfeatures, medianpeaks, medint) + QC_numbers= cbind(QC_numbers, filtered) + vectorofactions = append(vectorofactions, "filtered") + + ############################### Data reduction ########################### + + #elif str( $method.methods_conditional.preprocessing_method) == 'Data_reduction': + print('Data_reduction') + + #if str( $method.methods_conditional.methods_for_reduction.reduction_method) == 'bin': + print('bin reduction') + + msidata = reduceDimension(msidata, method="bin", width=$method.methods_conditional.methods_for_reduction.bin_width, units="$method.methods_conditional.methods_for_reduction.bin_units", fun=$method.methods_conditional.methods_for_reduction.bin_fun) + + #elif str( $method.methods_conditional.methods_for_reduction.reduction_method) == 'resample': + print('resample reduction') + + msidata = reduceDimension(msidata, method="resample", step=$method.methods_conditional.methods_for_reduction.resample_step) + + #elif str( $method.methods_conditional.methods_for_reduction.reduction_method) == 'peaks': + print('peaks reduction') + + #if str( $method.methods_conditional.methods_for_reduction.ref_type.reference_datatype) == 'table': + + reference_table = read.delim("$method.methods_conditional.methods_for_reduction.ref_type.mz_tabular", header = $method.methods_conditional.methods_for_reduction.ref_type.mass_header, stringsAsFactors = FALSE) + reference_column = reference_table[,$method.methods_conditional.methods_for_reduction.ref_type.mass_column] + peak_reference = reference_column[reference_column>min(mz(msidata)) & reference_column<max(mz(msidata))] + + #elif str( $method.methods_conditional.methods_for_reduction.ref_type.reference_datatype) == 'msidata_ref': + + peak_reference = loadRData('$method.methods_conditional.methods_for_reduction.ref_type.peaks_msidata') + + #end if + + msidata = reduceDimension(msidata, method="peaks", ref=peak_reference, type="$method.methods_conditional.methods_for_reduction.peaks_type") + #end if + ############################### QC ########################### + + maxfeatures = length(features(msidata)) + medianpeaks = median(colSums(spectra(msidata)[]>0, na.rm=TRUE)) + medint = round(median(spectra(msidata)[], na.rm=TRUE), digits=2) + minmz = round(min(mz(msidata)), digits=2) + maxmz = round(max(mz(msidata)), digits=2) + reduced = c(minmz, maxmz,maxfeatures, medianpeaks, medint) + QC_numbers= cbind(QC_numbers, reduced) + vectorofactions = append(vectorofactions, "reduced") + + ############################### Transformation ########################### + + #elif str( $method.methods_conditional.preprocessing_method) == 'Transformation': + print('Transformation') + + #if str( $method.methods_conditional.transf_conditional.trans_type) == 'log2': + print('log2 transformation') + + spectra(msidata)[][spectra(msidata)[] ==0] = NA + print(paste0("Number of 0 which were converted into NA:",sum(is.na(spectra(msidata)[])))) + spectra(msidata)[] = log2(spectra(msidata)[]) + + #elif str( $method.methods_conditional.transf_conditional.trans_type) == 'sqrt': + print('squareroot transformation') + + spectra(msidata)[] = sqrt(spectra(msidata)[]) + + #end if + + ############################### QC ########################### + + maxfeatures = length(features(msidata)) + medianpeaks = median(colSums(spectra(msidata)[]>0, na.rm=TRUE)) + medint = round(median(spectra(msidata)[], na.rm=TRUE), digits=2) + minmz = round(min(mz(msidata)), digits=2) + maxmz = round(max(mz(msidata)), digits=2) + transformed = c(minmz, maxmz,maxfeatures, medianpeaks, medint) + QC_numbers= cbind(QC_numbers, transformed) + vectorofactions = append(vectorofactions, "transformed") + + #end if + #end for + + ############# Outputs: RData and QC report ############# + ################################################################################ + + print(paste0("Number of NA in output file: ",sum(is.na(spectra(msidata)[])))) + + ## save as (.RData) + save(msidata, file="$msidata_preprocessed") + + ## save QC report + + pdf("Preprocessing.pdf", fonts = "Times", pointsize = 12) + plot(0,type='n',axes=FALSE,ann=FALSE) + title(main=paste("Quality control during preprocessing \n", "Filename:", "$infile.display_name")) + rownames(QC_numbers) = c("min m/z", "max mz", "# features", "median\n# peaks", "median\nintensity") + grid.table(t(QC_numbers)) + + dev.off() + +}else{ + print("inputfile has no intensities > 0") +} + + ]]></configfile> + </configfiles> + <inputs> + <expand macro="reading_msidata"/> + <repeat name="methods" title="Preprocessing" min="1" max="50"> + <conditional name="methods_conditional"> + <param name="preprocessing_method" type="select" label="Preprocessing methods"> + <option value="Normalization" selected="True">Normalization</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> + <option value="Data_reduction">Data reduction</option> + <option value="Transformation">Transformation</option> + </param> + <when value="Normalization"/> + <when value="Baseline_reduction"> + <param name="blocks_baseline" type="integer" value="500" + label="Blocks"/> + <param name="spar_baseline" 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="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="2" + 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, must be smaller than window size"/> + </when> + <when value="ma"> + <param name="coefficients_ma_filter" type="float" value="1" + label="The coefficients for the moving average filter"/> + </when> + </conditional> + <param name="window_smoothing" type="float" value="8" + label="Window size"/> + </when> + <when value="Peak_picking"> + <param name="SNR_picking_method" type="integer" value="6" + 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="float" 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="float" 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"> + <option value="ppm" selected="True">ppm</option> + <option value="Da">m/z</option> + </param> + </when> + <when value="DP"> + <param name="gap_DPalignment" type="float" value="0" + label="Gap" help="The gap penalty for the dynamic programming sequence alignment"/> + </when> + </conditional> + <conditional name="align_ref_type"> + <param name="align_reference_datatype" type="select" label="Choose reference"> + <option value="align_noref" selected="True">no reference</option> + <option value="align_table" >tabular file as reference</option> + <option value="align_msidata_ref">msidata file as reference</option> + </param> + <when value="align_noref"/> + <when value="align_table"> + <expand macro="reading_1_column_mz_tabular" label="Tabular file with m/z features to use for alignment. Only the m/z values from the tabular file will be kept."/> + </when> + <when value="align_msidata_ref"> + <param name="align_peaks_msidata" type="data" format="rdata," label="Picked and aligned Cardinal MSImageSet saved as RData"/> + </when> + </conditional> + </when> + <when value="Peak_filtering"> + <param name="frequ_filtering" type="integer" value="1000" + label="Freq.min" help="Peaks that occur in the dataset fewer times than this will be removed. Number should be between 1 (no filtering) and number of spectra (pixel)"/> + </when> + <when value="Data_reduction"> + <conditional name="methods_for_reduction"> + <param name="reduction_method" type="select" label="Reduction method"> + <option value="bin" selected="True">bin</option> + <option value="resample">resample</option> + <option value="peaks">peaks</option> + </param> + <when value="bin"> + <param name="bin_width" type="float" value="1" + label="The width of a bin in m/z or ppm" help="Width must be greater than range of m/z values divided by number of m/z features"/> + <param name="bin_units" type="select" display="radio" + label="Unit for bin"> + <option value="mz" selected="True">mz</option> + <option value="ppm">ppm</option> + </param> + <param name="bin_fun" type="select" display="radio" + label="Calculate sum or mean intensity for ions of the same bin"> + <option value="mean" selected="True">mean</option> + <option value="sum">sum</option> + </param> + </when> + <when value="resample"> + <param name="resample_step" type="float" value="1" + label="The step size in m/z" help="Step size must be greater than range of m/z values divided by number of m/z features"/> + </when> + <when value="peaks"> + <param name="peaks_type" type="select" display="radio" + label="Should the peak height or area under the curve be taken as the intensity value?"> + <option value="height" selected="True">height</option> + <option value="area">area</option> + </param> + <conditional name="ref_type"> + <param name="reference_datatype" type="select" label="Choose reference datatype"> + <option value="table" selected="True">tabular file</option> + <option value="msidata_ref">msidata file</option> + </param> + <when value="table"> + <expand macro="reading_1_column_mz_tabular" label="Tabular file with m/z features to extract from input file"/> + </when> + <when value="msidata_ref"> + <param name="peaks_msidata" type="data" format="rdata," label="Picked and aligned Cardinal MSImageSet saved as RData"/> + </when> + </conditional> + </when> + </conditional> + </when> + <when value="Transformation"> + <conditional name="transf_conditional"> + <param name="trans_type" type="select" label="Intensity transformations" help="logarithm base 2 (log2) or squareroot (sqrt)"> + <option value="log2" selected="True">log2</option> + <option value="sqrt">sqrt</option> + </param> + <when value="log2"/> + <when value="sqrt"/> + </conditional> + </when> + </conditional> + </repeat> + </inputs> + <outputs> + <data format="rdata" name="msidata_preprocessed" label="${tool.name} on ${on_string}"/> + <data format="pdf" name="QC_overview" from_work_dir="Preprocessing.pdf" label = "${tool.name} on ${on_string}: QC"/> + </outputs> + <tests> + <test> + <expand macro="infile_imzml"/> + <repeat name="methods"> + <conditional name="methods_conditional"> + <param name="preprocessing_method" value="Normalization"/> + <conditional name="methods_for_normalization"> + <param name="normalization_method" value="median"/> + </conditional> + </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"/> + <param name="sd_gaussian" value="4"/> + </conditional> + <param name="window_smoothing" value="9"/> + </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"/> + <param name="SNR_picking_method" 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="diff"/> + </conditional> + </conditional> + </repeat> + <repeat name="methods"> + <conditional name="methods_conditional"> + <param name="preprocessing_method" value="Peak_filtering"/> + <param name="frequ_filtering" value="2"/> + </conditional> + </repeat> + <repeat name="methods"> + <conditional name="methods_conditional"> + <param name="preprocessing_method" value="Transformation"/> + <conditional name="transf_conditional"> + <param name="trans_type" value="sqrt"/> + </conditional> + </conditional> + </repeat> + <output name="msidata_preprocessed" file="preprocessing_results1.RData" compare="sim_size"/> + <output name="QC_overview" file="preprocessing_results1.pdf" compare="sim_size"/> + </test> + <test> + <param name="infile" value="3_files_combined.RData" ftype="rdata"/> + <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="SNR_picking_method" value="2"/> + <conditional name="methods_for_picking"> + <param name="picking_method" value="adaptive"/> + </conditional> + </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> + <output name="msidata_preprocessed" file="preprocessing_results2.RData" compare="sim_size"/> + <output name="QC_overview" file="preprocessing_results2.pdf" compare="sim_size"/> + </test> + <test> + <expand macro="infile_analyze75"/> + <repeat name="methods"> + <conditional name="methods_conditional"> + <param name="preprocessing_method" value="Normalization"/> + <conditional name="methods_for_normalization"> + <param name="normalization_method" value="median"/> + </conditional> + </conditional> + </repeat> + <repeat name="methods"> + <conditional name="methods_conditional"> + <param name="preprocessing_method" value="Peak_picking"/> + <param name="blocks_picking" value="100"/> + <param name="window_picking" value="5"/> + <param name="SNR_picking_method" value="3"/> + <param name="picking_method" value="limpic"/> + </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="diff"/> + </conditional> + </conditional> + </repeat> + <output name="msidata_preprocessed" file="preprocessing_results3.RData" compare="sim_size"/> + <output name="QC_overview" file="preprocessing_results3.pdf" compare="sim_size"/> + </test> + <test> + <expand macro="infile_analyze75"/> + <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="Data_reduction"/> + <param name="bin_width" value="0.1"/> + </conditional> + </repeat> + <output name="msidata_preprocessed" file="preprocessing_results4.RData" compare="sim_size"/> + <output name="QC_overview" file="preprocessing_results4.pdf" compare="sim_size"/> + </test> + <test> + <expand macro="infile_imzml"/> + <repeat name="methods"> + <conditional name="methods_conditional"> + <param name="preprocessing_method" value="Data_reduction"/> + <conditional name="methods_for_reduction"> + <param name="reduction_method" value="resample"/> + <param name="step_width" value="0.1"/> + </conditional> + </conditional> + </repeat> + <output name="msidata_preprocessed" file="preprocessing_results5.RData" compare="sim_size"/> + <output name="QC_overview" file="preprocessing_results5.pdf" compare="sim_size"/> + </test> + </tests> + <help> + <![CDATA[ + +@CARDINAL_DESCRIPTION@ + +----- + +This tool provides multiple Cardinal functions to preprocess mass spectrometry imaging data. + +@MSIDATA_INPUT_DESCRIPTION@ +- Coordinates stored as decimals rather than integers will be rounded to obtain a regular pixel grid. This might lead to duplicated coordinates which will be automatically removed before peak picking. +@MZ_TABULAR_INPUT_DESCRIPTION@ + +**Options** + +- Normalization: Normalization of intensities to total ion current (TIC) +- Baseline reduction: Baseline reduction removes background intensity generated by chemical noise (common in MALDI datasets) +- Smoothing: Smoothing of the peaks reduces noise and improves peak detection +- Peak picking: relevant peaks are picked while noise-peaks are removed (needs peak alignment afterwards) +- Peak alignment: only possible after peak picking, m/z inaccuracies are removed by alignment of same peaks to a common m/z value; if no reference is given the peaks are aligned to the local maxima of the mean spectrum of the current dataset; external reference data can be used from another MSI data file or a tabular file with m/z values, but then only the m/z from the reference will be kept +- Peak filtering: removes peaks that occur only in a small proportion of pixels. If not sure which cut off to choose run quality control tool first and decide according to the number of peaks per m/z plot +- Data reduction: binning, resampling or peak filtering to reduce data +- Transformation: log2 or squareroot transformation of all intensities; when using log2 transformation zero intensities will become NA, this can lead to compatibility problems. + +**Tips** + +- Peak alignment works only after peak picking +- Peak filtering works only on centroided data (peak picking and alignment or Data reduction peaks + +**Output** + +- imzML file, preprocessed +- pdf with key values after each processing step + + ]]> + </help> + <expand macro="citations"/> +</tool>