diff w4mcorcov.xml @ 13:2ae2d26e3270 draft

planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit e89c652c0849eb1d5a1e6c9100c72c64a8d388b4
author eschen42
date Wed, 12 Dec 2018 09:20:02 -0500
parents ddaf84e15d06
children 90708fdbc22d
line wrap: on
line diff
--- a/w4mcorcov.xml	Thu Nov 08 23:06:09 2018 -0500
+++ b/w4mcorcov.xml	Wed Dec 12 09:20:02 2018 -0500
@@ -1,10 +1,10 @@
-<tool id="w4mcorcov" name="OPLS-DA_Contrasts" version="0.98.16">
+<tool id="w4mcorcov" name="OPLS-DA_Contrasts" version="0.98.17">
     <description>OPLS-DA Contrasts of Univariate Results</description>
     <macros>
         <xml name="paramPairSigFeatOnly">
             <param name="pairSigFeatOnly" type="boolean" checked="true" truevalue="TRUE" falsevalue="FALSE"
                 label="Retain only pairwise-significant features"
-                help="When this option is set to 'Yes', analysis will be performed including only features that differ significantly for the pair of levels being contrasted; when set to 'No', any feature that varies significantly across all levels will be included (i.e., exclude any feature that is not significantly different across all levels).  See examples below." />
+                help="When this option is set to 'Yes', analysis will be performed including only features scored by the univariate test as differing significantly for the pair of levels being contrasted; when set to 'No', any feature that varies significantly across all levels will be included (i.e., exclude only features not scored by the univariate test as significantly varying when all levels are considered).  See examples below." />
         </xml>
         <xml name="cplots">
             <param name="cplot_y" label="C-plot Y-axis" type="select" help="Choose the Y-axis for C-plots.">
@@ -17,14 +17,12 @@
             <param name="cplot_o" type="boolean" checked="true" truevalue="TRUE" falsevalue="FALSE"
                 label="Produce orthogonal C-plot"
                 help="When this option is set to 'Yes', correlation will be plotted against vip4 for orthogonal loadings." />
+            <param name="fdr_features" type="text" value="ALL"
+                label="How many features for p-value calculation?"
+                help="Specify how many features should be used to perform family-wise error rate adjustment of p-values for covariance and correlation.  If you were to eliminate features from the data matrix based on significance criteria prior to running this tool, you would want to include them in the count here to avoid underestimating the p-value.  Specify 'ALL' to signify that all features that could impact p-value calculation are included in the data matrix."/>
         </xml>
     </macros>
     <requirements>
-        <!--
-        <requirement type="package" version="3.4.1">r-base</requirement>
-        <requirement type="package" version="1.1_4">r-batch</requirement>
-        <requirement type="package" version="1.2.14">bioconductor-ropls</requirement>
-        -->
         <requirement type="package">r-base</requirement>
         <requirement type="package">r-batch</requirement>
         <requirement type="package" version="1.10.0">bioconductor-ropls</requirement>
@@ -35,9 +33,9 @@
         sampleMetadata_in '$sampleMetadata_in'
         variableMetadata_in '$variableMetadata_in'
         facC '$facC'
-        #if str( $signif_test.tesC ) == "none":
-            tesC "none"
-            pairSigFeatOnly "FALSE"
+        #if str( $signif_test.tesC ) == 'none':
+            tesC 'none'
+            pairSigFeatOnly 'FALSE'
         #else:
             tesC '$signif_test.tesC'
             pairSigFeatOnly '$signif_test.pairSigFeatOnly'
@@ -45,20 +43,21 @@
         levCSV '$levCSV'
         matchingC '$matchingC'
         labelFeatures '$labelFeatures'
-        #if str( $xplots.expPlot ) == "none":
-            cplot_p "FALSE"
-            cplot_o "FALSE"
-            cplot_y "correlation"
-        #else if str( $xplots.expPlot ) == "cplot":
-            cplot_p '$xplots.cplot_p'
-            cplot_o '$xplots.cplot_o'
-            cplot_y '$xplots.cplot_y'
+        #if str( $advanced.advancedFeatures ) == 'none':
+            fdr_features 'ALL'
+            cplot_p 'FALSE'
+            cplot_o 'FALSE'
+            cplot_y 'correlation'
+        #else if str( $advanced.advancedFeatures ) == 'advanced':
+            fdr_features '$advanced.fdr_features'
+            cplot_p '$advanced.cplot_p'
+            cplot_o '$advanced.cplot_o'
+            cplot_y '$advanced.cplot_y'
         #end if
         contrast_detail '$contrast_detail'
         contrast_corcov '$contrast_corcov'
         contrast_salience '$contrast_salience'
-  ]]></command>
-
+    ]]></command>
     <inputs>
         <param name="dataMatrix_in" format="tabular" label="Data matrix file" type="data"
             help="variables &#10006; samples" />
@@ -79,7 +78,7 @@
             </sanitizer>
         </param>
         <conditional name="signif_test">
-            <param name="tesC" label="Univariate significance-test" type="select" help="Either 'none' or the name of the statistical test that was run by the 'Univariate' tool to produce the variableMetadata file; that name must also be a portion of the column names in that file.">
+            <param name="tesC" label="Univariate significance-test" type="select" help="Either 'none' or the name of the statistical test that was run by the 'Univariate' tool to produce the variableMetadata file.">
                 <option value="none">none - Display all features from variableMetadata (rather than choosing a subset based on significance in univariate testing)</option>
                 <option value="ttest">ttest - Student's t-test (parametric test, qualitative factor with exactly 2 levels)</option>
                 <option value="anova">anova - Analysis of variance (parametric test, qualitative factor with more than 2 levels)</option>
@@ -101,7 +100,7 @@
             </when>
         </conditional>
         <param name="levCSV" type="text" value="*" label="Levels of interest" 
-            help="Comma-separated level-names (or comma-less regular expressions to match level-names) to consider in analysis; must match at least two levels; levels must be non-numeric; may include wild cards or regular expressions.  Note that extra space characters will affect results - 'a,b' is correct, but 'a , b' is not and may fail or give different results.">
+            help="Comma-separated level-names (or comma-separated regular expressions to match level-names) to consider in analysis; must match at least two levels; levels must be non-numeric; may include wild cards or regular expressions.  Note that extra space characters will affect results - when 'a,b' is correct, 'a, b' is not equivalent and likely will fail or give different results.">
             <sanitizer>
                 <valid initial="string.letters">
                     <add preset="string.digits"/>
@@ -134,15 +133,17 @@
             <option value="regex">use regular expressions for matching level-names</option>
         </param>
         <param name="labelFeatures" type="text" value="3"
-            label="How many features having extreme loadings should be labelled on cov-vs.-cor plot"
+            label="How many features having extreme loadings should be labelled on cov-vs.-cor plot?"
             help="Specify the number of features at each of the loading-extremes that should be labelled (with the name of the feature) on the covariance-vs.-correlation plot; specify 'ALL' to label all features or '0' to label no features; this choice has no effect on the OPLS-DA loadings plot."/>
-        <conditional name="xplots">
-            <param name="expPlot" label="Extra plots to include" type="select" help="Choosing 'none' hides further choices.">
-                <option value="none">Do not include additonal extra plots.</option>
-                <option value="cplot">Include C-plots (predictor-loading vs. 'vip4p' and orthogonal-loading versus 'vip4o')</option>
+        <conditional name="advanced">
+            <param name="advancedFeatures" type="select" 
+                label="Advanced (C-plots and customized p-value adjustment)"
+                help="Choose 'Do not include ...' to hides further choices.">
+                <option value="advanced">Include C-plots and customize p-value adjustment.</option>
+                <option value="none">Do not include additonal C-plots or customize p-value adjustment.</option>
             </param>
             <when value="none" />
-            <when value="cplot">
+            <when value="advanced">
                 <expand macro="cplots" />
             </when>
         </conditional>
@@ -151,8 +152,9 @@
     <!--
       pdf1: summaries of each contrasts, clearly labelled by level=pair name
         * first PCA score-plot
-        * then PLS score-plot
-        * then PLS S-PLOT; color in red features with VIP > 1; color in grey any non-pairwise-significant features, if these are included
+        * then OPLS score-plot
+        * then OPLS S-PLOT; color saturation increases with VIP
+        * then C-plots if requrested
     -->
     <data name="contrast_detail" format="pdf" label="${tool.name}_${variableMetadata_in.name}_detail" />
     <!--
@@ -186,6 +188,7 @@
       <param name="facC" value="k10"/>
       <param name="pairSigFeatOnly" value="FALSE"/>
       <param name="labelFeatures" value="3"/>
+      <param name="fdr_features" value="250"/>
       <param name="levCSV" value="k[12],k[3-4]"/>
       <param name="matchingC" value="regex"/>
       <output name="contrast_corcov">
@@ -201,16 +204,27 @@
           <has_text text="level1Level2Sig" />
           <!-- first matched line -->
           <has_text text="M349.2383T700" />
-          <has_text text="-0.462909875" />
-          <has_text text="-36.6668927" />
+          <has_text text="-0.49037231902" />
+          <has_text text="-2111932280.94" />
           <has_text text="0.4914638" />
           <has_text text="0.01302117" />
+          <has_text text="-0.049216260" />
+          <has_text text="-0.00152098716" />
+          <has_text text="2.0603074801" />
+          <has_text text="-0.60020597" />
+          <has_text text="-0.3623876130" />
           <!-- second matched line -->
           <has_text text="M207.9308T206" />
           <has_text text="0.504885262" />
-          <has_text text="5.97529097" />
+          <has_text text="293403792" />
           <has_text text="0.207196379" />
           <has_text text="0.04438632" />
+          <has_text text="0.020749097" />
+          <has_text text="0.005184709" />
+          <has_text text="1.47082346" />
+          <has_text text="2.24325407" />
+          <has_text text="0.38157919" />
+          <has_text text="0.610536188" />
         </assert_contents>
       </output>
       <output name="contrast_salience">
@@ -218,20 +232,12 @@
           <!-- column-labels line -->
           <has_text text="featureID" />
           <has_text text="salientLevel" />
-          <has_text text="salientRCV" />
+          <has_text text="salienceRCV" />
           <has_text text="salience" />
-          <!-- first matched line -->
-          <has_text text="M349.2383T700" />
-          <has_text text="0.659554" />
-          <has_text text="8.81866595" />
-          <!-- second matched line -->
-          <has_text text="M207.9308T206" />
-          <has_text text="0.0578578" />
-          <has_text text="2.27527985" />
-          <!-- third matched line -->
-          <has_text text="M211.0607T263" />
-          <has_text text="9999" />
-          <has_text text="12.87766096" />
+          <!-- first three matched lines -->
+          <has_text text="M207.0654T373" /><has_text text="k4" /><has_text text="0.822733190" /><has_text text="134.087771" /><has_text text="3.9994434" /><has_text text="207.0654" /><has_text text="373" />
+          <has_text text="M222.9585T226" /><has_text text="k2" /><has_text text="0.761200229" /><has_text text="87.3672719" /><has_text text="3.9995358" /><has_text text="222.9585" /><has_text text="226" />
+          <has_text text="M235.0975T362" /><has_text text="k4" /><has_text text="0.209363850" /><has_text text="77.6255643" /><has_text text="3.99606600" /><has_text text="235.0975" /><has_text text="362" />
         </assert_contents>
       </output>
     </test>
@@ -244,6 +250,7 @@
       <param name="facC" value="k10"/>
       <param name="pairSigFeatOnly" value="TRUE"/>
       <param name="labelFeatures" value="3"/>
+      <param name="fdr_features" value="ALL"/>
       <param name="levCSV" value="k[12],k[3-4]"/>
       <param name="matchingC" value="regex"/>
       <output name="contrast_corcov">
@@ -259,8 +266,8 @@
           <has_text text="level1Level2Sig" />
           <!-- first matched line -->
           <has_text text="M200.005T296" />
-          <has_text text="-0.28035717" />
-          <has_text text="-3.3573953" />
+          <has_text text="0.0050579682" />
+          <has_text text="2607493" />
           <has_text text="0.1157346" />
           <has_text text="0.0647860" />
         </assert_contents>
@@ -270,20 +277,12 @@
           <!-- column-labels line -->
           <has_text text="featureID" />
           <has_text text="salientLevel" />
-          <has_text text="salientRCV" />
+          <has_text text="salienceRCV" />
           <has_text text="salience" />
-          <!-- first matched line -->
-          <has_text text="M349.2383T700" />
-          <has_text text="0.659554" />
-          <has_text text="8.81866595" />
-          <!-- second matched line -->
-          <has_text text="M207.9308T206" />
-          <has_text text="0.0578578" />
-          <has_text text="2.27527985" />
-          <!-- third matched line -->
-          <has_text text="M211.0607T263" />
-          <has_text text="9999" />
-          <has_text text="12.87766096" />
+          <!-- first three matched lines -->
+          <has_text text="M207.0654T373" /><has_text text="k4" /><has_text text="0.822733190" /><has_text text="134.087771" /><has_text text="3.9994434" /><has_text text="207.0654" /><has_text text="373" />
+          <has_text text="M222.9585T226" /><has_text text="k2" /><has_text text="0.761200229" /><has_text text="87.3672719" /><has_text text="3.9995358" /><has_text text="222.9585" /><has_text text="226" />
+          <has_text text="M235.0975T362" /><has_text text="k4" /><has_text text="0.209363850" /><has_text text="77.6255643" /><has_text text="3.99606600" /><has_text text="235.0975" /><has_text text="362" />
         </assert_contents>
       </output>
     </test>
@@ -295,6 +294,7 @@
       <param name="tesC" value="none"/>
       <param name="facC" value="k10"/>
       <param name="labelFeatures" value="3"/>
+      <param name="fdr_features" value="ALL"/>
       <param name="levCSV" value="k[12],k[3-4]"/>
       <param name="matchingC" value="regex"/>
       <output name="contrast_corcov">
@@ -309,38 +309,29 @@
           <has_text text="vip4o" />
           <!-- first matched line -->
           <has_text text="M349.2383T700" />
-          <has_text text="-0.4732226665" />
-          <has_text text="-37.71066" />
+          <has_text text="-0.499225" />
+          <has_text text="-2135165209" />
           <has_text text="0.5246766" />
           <has_text text="0.0103341" />
           <!-- second matched line -->
           <has_text text="M207.9308T206" />
           <has_text text="0.4927151212" />
-          <has_text text="5.86655640" />
+          <has_text text="284608538" />
           <has_text text="0.2111623" />
           <has_text text="0.0488654" />
         </assert_contents>
       </output>
-      <!-- test #4 -->
       <output name="contrast_salience">
         <assert_contents>
           <!-- column-labels line -->
           <has_text text="featureID" />
           <has_text text="salientLevel" />
-          <has_text text="salientRCV" />
+          <has_text text="salienceRCV" />
           <has_text text="salience" />
-          <!-- first matched line -->
-          <has_text text="M349.2383T700" />
-          <has_text text="0.659554" />
-          <has_text text="8.81866595" />
-          <!-- second matched line -->
-          <has_text text="M207.9308T206" />
-          <has_text text="0.0578578" />
-          <has_text text="2.27527985" />
-          <!-- third matched line -->
-          <has_text text="M211.0607T263" />
-          <has_text text="9999" />
-          <has_text text="12.87766096" />
+          <!-- first three matched lines -->
+          <has_text text="M207.0654T373" /><has_text text="k4" /><has_text text="0.822733190" /><has_text text="134.087771" /><has_text text="3.9994434" /><has_text text="207.0654" /><has_text text="373" />
+          <has_text text="M222.9585T226" /><has_text text="k2" /><has_text text="0.761200229" /><has_text text="87.3672719" /><has_text text="3.9995358" /><has_text text="222.9585" /><has_text text="226" />
+          <has_text text="M235.0975T362" /><has_text text="k4" /><has_text text="0.209363850" /><has_text text="77.6255643" /><has_text text="3.99606600" /><has_text text="235.0975" /><has_text text="362" />
         </assert_contents>
       </output>
     </test>
@@ -352,6 +343,7 @@
       <param name="tesC" value="none"/>
       <param name="facC" value="tissue_flowering"/>
       <param name="labelFeatures" value="3"/>
+      <param name="fdr_features" value="ALL"/>
       <param name="levCSV" value="*"/>
       <param name="matchingC" value="wildcard"/>
       <output name="contrast_corcov">
@@ -369,7 +361,7 @@
           <has_text text="flower_yes" />
           <has_text text="other" />
           <has_text text="0.3499550705" />
-          <has_text text="0.03526926" />
+          <has_text text="11.609255" />
           <has_text text="0.43664386" />
           <has_text text="0.587701897" />
           <has_text text="0.026082688" />
@@ -383,17 +375,14 @@
           <!-- column-labels line -->
           <has_text text="featureID" />
           <has_text text="salientLevel" />
-          <has_text text="salientRCV" />
+          <has_text text="salienceRCV" />
           <has_text text="salience" />
           <has_text text="mz" />
           <has_text text="rt" />
           <!-- first matched line -->
-          <has_text text="PM518T369" />
-          <has_text text="flower_yes" />
-          <has_text text="0.58655260" />
-          <has_text text="4.414469" />
-          <has_text text="518.1656" />
-          <has_text text="368.59817" />
+          <has_text text="NM517T428" /><has_text text="flower_yes" /><has_text text="0.02765631" /><has_text text="7.8343993" /><has_text text="1.27813793" /><has_text text="517.121714" /><has_text text="428.306854248" />
+          <has_text text="NM517T426_1" /><has_text text="0.0290065" /><has_text text="7.7151305" /><has_text text="1.2758886" /><has_text text="517.09367125" /><has_text text="426.233886719" />
+          <has_text text="NM516T284_2" /><has_text text="0.022883902" /><has_text text="7.6379724" /><has_text text="1.25603610" /><has_text text="516.082005177" /><has_text text="283.569198608" />
         </assert_contents>
       </output>
     </test>
@@ -405,6 +394,7 @@
       <param name="tesC" value="none"/>
       <param name="facC" value="k._10"/>
       <param name="labelFeatures" value="3"/>
+      <param name="fdr_features" value="ALL"/>
       <param name="levCSV" value="k1,k.2"/>
       <param name="matchingC" value="none"/>
       <output name="contrast_corcov">
@@ -420,13 +410,13 @@
           <!-- first matched line -->
           <has_text text="M349.2383T700" />
           <has_text text="0.61594030" />
-          <has_text text="37.76875778" />
+          <has_text text="3489481837.9" />
           <has_text text="0.54672558" />
           <has_text text="0.3920409" />
           <!-- second matched line -->
           <has_text text="M207.9308T206" />
           <has_text text="-0.89716403" />
-          <has_text text="-6.337903" />
+          <has_text text="-585563327.7" />
           <has_text text="0.270297" />
           <has_text text="0.037661" />
         </assert_contents>
@@ -440,6 +430,7 @@
       <param name="tesC" value="none"/>
       <param name="facC" value="k._10"/>
       <param name="labelFeatures" value="3"/>
+      <param name="fdr_features" value="ALL"/>
       <param name="levCSV" value="k_3,k-4"/>
       <param name="matchingC" value="none"/>
       <output name="contrast_corcov">
@@ -454,10 +445,15 @@
           <has_text text="vip4o" />
           <!-- first matched line -->
           <has_text text="M349.2383T700" />
-          <has_text text="-0.331230562" />
-          <has_text text="-2.47167915" />
-          <has_text text="0.0892595" />
-          <has_text text="0.0049228872" />
+          <has_text text="-0.1221966" />
+          <has_text text="-917311734" />
+          <has_text text="0.0304592" />
+          <has_text text="0.104748883" />
+          <has_text text="-0.002736415" />
+          <has_text text="-0.0113968" />
+          <has_text text="0.387723" />
+          <has_text text="-0.3812168081" />
+          <has_text text="0.154611878" />
         </assert_contents>
       </output>
     </test>
@@ -469,6 +465,7 @@
       <param name="tesC" value="none"/>
       <param name="facC" value="k._10"/>
       <param name="labelFeatures" value="3"/>
+      <param name="fdr_features" value="ALL"/>
       <param name="levCSV" value="k_3,k-4"/>
       <param name="matchingC" value="none"/>
       <output name="contrast_corcov">
@@ -484,14 +481,25 @@
           <!-- k1 rejected by levCSV, leaving only k_3 and k-4 -->
           <not_has_text text="k1" />
           <not_has_text text="other" />
+          <!-- first matched line -->
+          <has_text text="M200.005T296" />
+          <has_text text="-0.1829149760" />
+          <has_text text="-115723402" />
+          <has_text text="0.0892595" />
+          <has_text text="0.00492288" />
+          <has_text text="-0.00801895" />
+          <has_text text="0.0005356178" />
+          <has_text text="0.1848186" />
+          <has_text text="-0.428802311" />
+          <has_text text="0.0882045811" />
         </assert_contents>
       </output>
     </test>
   </tests>
   <help><![CDATA[
 
-**Run PLS-DA Contrasts of Univariate Results**
-----------------------------------------------
+**Run OPLS-DA Contrasts of Univariate Results**
+-----------------------------------------------
 
 **Author** - Arthur Eschenlauer (University of Minnesota, esch0041@umn.edu)
 
@@ -500,9 +508,9 @@
 Motivation
 ----------
 
-OPLS-DA and the SIMCA S-PLOT (Wiklund *et al.*, 2008) may be employed to draw attention to metabolomic features that are potential biomarkers, i.e. features that are potentially useful to discriminate to which class a sample should be assigned (e.g. Sun *et al.*, 2016).  Workflow4Metabolomics (W4M, Giacomoni *et al.*, 2014, Guitton *et al.*, 2017) provides a suite of tools for preprocessing and statistical analysis of LC-MS, GC-MS, and NMR metabolomics data; however, it does not (as of release 3.0) include a tool for making the equivalent of an S-PLOT.
+OPLS-DA and the SIMCA S-PLOT (Wiklund *et al.*, 2008) may be employed to draw attention to metabolomic features that are potential biomarkers, i.e. features that are potentially useful when assigning a sample to one of two classes (e.g. Sun *et al.*, 2016).  Workflow4Metabolomics (W4M, Giacomoni *et al.*, 2014, Guitton *et al.*, 2017) provides a suite of tools for preprocessing and statistical analysis of LC-MS, GC-MS, and NMR metabolomics data; however, it does not (as of release 3.2) include a tool for making the equivalent of an S-PLOT.
 
-The S-PLOT is computed from mean-centered, pareto-scaled data.  This plot presents the correlation of the first score vector from an OPLS-DA model with the sample-variables used to produce that model versus the covariance of the scores with the sample-variables.  For OPLS-DA, the first score vector represents the variation among the sample-variables that is related to the predictor (i.e., the contrasting factor).
+The S-PLOT is computed from mean-centered, pareto-scaled data.  This plot presents the correlation of the first score vector from an OPLS-DA model with the sample-variables used to produce that model versus the covariance of the scores with the sample-variables.  For OPLS-DA, the first score vector represents the variation among the sample-variables that is related to the predictor (i.e., the contrasting factor); the second score vector, variation that is orthogonal to the predictor.
 
 The primary aims of this tool are:
 
@@ -514,19 +522,19 @@
 Description
 -----------
 
-The purpose of the 'PLS-DA Contrasts' tool is to visualize GC-MS or LC-MS features that are possible biomarkers.
+The purpose of the 'OPLS-DA Contrasts' tool is to visualize GC-MS or LC-MS features that are possible biomarkers.
 
 The W4M 'Univariate' tool (Th]]>&#233;<![CDATA[venot *et al.*, 2015) adds the results of family-wise corrected pairwise significance-tests as columns of the **variableMetadata** dataset.
-For instance, suppose that you ran Kruskal-Wallis testing for a column named 'cluster' in sampleMetadata that has values 'k1' and 'k2' and at least one other value.
+For instance, if Kruskal-Wallis testing were perfomred on a column named 'cluster' in sampleMetadata that has values 'k1' and 'k2' and at least one other value:
 
 - A column of variableMetadata would be labelled 'cluster_kruskal_sig' and would have values '1' and '0'; when the samples are grouped by 'cluster', '1' means that there is strong evidence against the hypothesis that there is no difference among the intensities for the feature across all sample-groups.
 - A column of variableMetadata would be labelled 'cluster_kruskal_k1.k2_sig' and would have values '1' and '0', where '1' means that there is significant evidence against the hypothesis that samples from sampleMetadata whose 'cluster' column contains 'k1' or 'k2' have the same intensity for that feature.
 
-The 'PLS-DA Contrasts' tool produces graphics and data for OPLS-DA contrasts of feature-intensities between significantly different pairs of factor-levels.  For each factor-level, the tool performs a contrast with all other factor-levels combined and then separately with each other factor-level.
+The 'OPLS-DA Contrasts' tool produces graphics and data for OPLS-DA contrasts of feature-intensities between significantly different pairs of factor-levels.  For each factor-level, the tool performs a contrast with all other factor-levels combined and then separately with each other factor-level.
 
 **Along the left-to-right axis, the plots show the supervised projection of the variation explained by the predictor** (i.e., the factor specified when invoking the tool); **the top-to-bottom axis displays the variation that is orthogonal to the predictor level** (i.e., independent of it).
 
-Although this tool can be used in a purely exploratory manner by supplying the variableMetadata file without the columns added by the W4M 'Univariate' tool, **the preferred workflow may be to use univariate testing to exclude features that are not significantly different and then to use OPLS-DA to visualize the differences identified in univariate testing** (Th]]>&#233;<![CDATA[venot *et al.*, 2015); an appropriate exception would be to visualize contrasts of a specific list of metabolites.
+Although this tool can be used in a purely exploratory manner by supplying the variableMetadata file without the columns added by the W4M 'Univariate' tool, **a preferable workflow may be to use univariate testing to exclude features that are not significantly different and then to use OPLS-DA to visualize the differences identified in univariate testing** (Th]]>&#233;<![CDATA[venot *et al.*, 2015); an appropriate exception would be to visualize contrasts of a specific list of metabolites.  If you do exclude features, however, make sure that you set the advanced parameter "How many features for p-value calculation?" accordingly.
 
 It must be stressed that there may be no *single* definitive computational approach to select features that are reliable biomarkers, especially from a small number of samples or experiments.  A few possible choices are:
 
@@ -537,15 +545,13 @@
 
 In this spirit, this tool reports the S-PLOT covariance and correlation (Wiklund *op. cit.*) and VIP metrics, and it introduces an informal "salience" metric to flag features that may merit attention without dimensional reduction; future versions may add selectivity ratio.
 
-For a more systematic approach to biomarker identification, please consider the W4M 'biosigner' tool (Rinuardo *et al.* 2016), which applies three different identification metrics to the selection process.
-
-Regardless of how any potential biomarker is identified, further validation analysis (e.g., independent confirmatory experiments) is needed before it is recommended for general application.
+For a more systematic approach to biomarker identification, please consider the W4M 'biosigner' tool (Rinuardo *et al.* 2016), which applies three different identification metrics to the selection process.  Regardless of how any potential biomarker is identified, further validation analysis (e.g., independent confirmatory experiments) is needed before it can be recommended for general application.
 
 
 W4M Workflow Position
 ---------------------
 
-- Upstream tool: **Univariate** (category: Statistical Analysis) or (not generally recommended) any **Preprocessing** tool that produces or updates a 'variableMetadata' file.
+- Upstream tool: **Univariate** (category: Statistical Analysis) or any **Preprocessing** tool that produces or updates a 'variableMetadata' file.
 - Downstream tool categories: **Statistical Analysis**
 
 Input files
@@ -616,49 +622,68 @@
   | Specify the number of features at each of the loading-extremes that should be labelled (with the name of the feature) on the covariance-vs.-correlation plot; specify 'ALL' to label all features; this choice has no effect on the OPLS-DA loadings plot.
   |
 
+[IN] (Advanced) C-plot Y-axis
+  | Choose whether C-plots should plot the correlation (the default) or the covariance *vs.* VIP.
+  |
+
+[IN] (Advanced) Produce predictor C-plot
+  | Choose whether a C-plot should be produced for the projections parallel to the predictor.
+  |
+
+[IN] (Advanced) Produce orthogonal C-plot
+  | Choose whether a C-plot should be produced for the projections orthogonal to the predictor.
+  |
+
+[IN] (Advanced) How many features for p-value calculation?
+  | You will need to use this option when statistical criteria have previously been applied to remove features in the data matrix.  This is important for adjusting the p-values for correlation of the scores with each feature; this adjustment is necessary to avoid underestimation of the p-values.  If this is applicable, specify the sum of the number of features removed and the number of features in the data matrix.
+  |
+
 [OUT] Contrast-detail output PDF
   | File containing several plots for each two-projection OPLS-DA analysis.
 
 - (first row, left) **correlation-versus-covariance plot** of OPLS-DA results
 
-    - This is a work-alike for the S-PLOT, computed using formula in equations 1 and 2 from Wiklund, (*op. cit.*);
-    - point-color becomes saturated as the "variable importance in projection to the predictive components" (VIP\ :subscript:`4,p` from Galindo-Prieto *et al.* 2014) increases through the range from 0.83 and 1.21 (Mehmood *et al.* 2012), for use to identify features for consideration as biomarkers;
-    - plot symbols are diamonds when the adjusted p-value of correlation is greater than 0.05, circles when it is less than 0.01, and triangles when it between these limits.
+    - This is a work-alike for the S-PLOT described in Wiklund, (*op. cit.*), ignoring samples with missing values;
+    - point-color becomes saturated as the "variable importance in projection to the predictive components" (VIP\ :subscript:`4,p` from Galindo-Prieto *op. cit.*) ranges from 0.83 and 1.21 (Mehmood *et al.* 2012), for use to identify features for consideration as biomarkers;
+    - plot symbols are diamonds when the p-value of the correlation, adjusted for family-wise error rate (Yekutieli *et al.*, 2001), is greater than 0.05, circles when it is less than 0.01, and triangles when between 0.01 and 0.05.
 - (second row, left) **model-overview plot** for the two projections; grey bars are the correlation coefficient for the fitted data; black bars indicate performance in cross-validation tests (Th]]>&#233;<![CDATA[venot, 2017)
 - (first row, right) OPLS-DA **scores-plot** for the two projections (Th]]>&#233;<![CDATA[venot *et al.*, 2015)
-- (second row, right) **correlation-versus-covariance plot** of OPLS-DA results **orthogonal to the predictor** (see section "S-Plot of Orthogonal Component" in Wiklund, *op. cit.*, pp. 120-121; this characterizes features with the greatest variation independent of the predictor).
-- (third row, left, when "**predictor C-plot**" is chosen under "Extra plots to include") plot of the covariance or correlation vs. the VIP for the projection *parallel to the predictor*, for use to identify features for consideration as biomarkers.
-- (third row, right, when "**orthogonal C-plot**" is chosen under "Extra plots to include") plotof the covariance or correlation vs. the VIP for the projection *orthogonal to the predictor*, for use to identify features varying considerably without regard to the predictor.
+- (second row, right) **correlation-versus-covariance plot** of OPLS-DA results **orthogonal to the predictor** (see section "S-Plot of Orthogonal Component" in Wiklund, *op. cit.*, pp. 120-121; this characterizes variation of features that is *independent of the predictor*).
+- (third row, left, when "**predictor C-plot**" is chosen under "Advanced") plot of the correlation (or covariance) vs. the VIP\ :subscript:`4,p` (Galindo-Prieto *op. cit.*), to assist in identifying features for consideration as biomarkers.
+- (third row, right, when "**orthogonal C-plot**" is chosen under "Advanced") plot of the correlation (or covariance) vs. the VIP\ :subscript:`4,o` (*ibid.*), to assist in identifying features varying considerably without regard to the predictor.
 
 [OUT] Contrast Correlation-Covarinace data TABULAR
   | A tab-separated values file of metadata for each feature for each contrast in which it was included.
   | Thus, a given feature may appear many times, but *the combination of featureID, factorLevel1, and factorLevel2 will be unique.*
   | This file has the following columns:
 
-- **featureID** - feature-identifier
+- **featureID** - feature identifier
 - **factorLevel1** - factor-level 1
 - **factorLevel2** - factor-level 2 (or "other" when contrasting factor-level 1 with all other levels)
-- **correlation** - correlation of the features projection explaining the difference between the features, < 0 when intensity for level 1 is greater (from equation 2 in Wiklund, *op. cit.*).  Note that, for a given contrast, there is a linear relationship between 'loadp' and 'correlation'.
-- **covariance** - relative covariance of the features projection explaining the difference between the features, < 0 when intensity for level 1 is greater (from formula in *ibid.*, but scaled so that the greatest value has a magnitude of 1)
+- **correlation**\ (t\ :subscript:`p`,X\ :subscript:`i`) - for this feature (i), correlation of sample intensities for this feature (X\ :subscript:`i`) with the OPLS-DA projection's first set of scores (t\ :subscript:`p`, i.e., the scores explaining the difference between the features), computed (omitting samples missing values) using the R *stats::cor* function with the 'pearson' method (R Core Team, 2018); this is negative when intensity for level 1 is greater than for level 2
+- **covariance**\ (t\ :subscript:`p`,X\ :subscript:`i`) - computed as for correlation but using the R *stats::cov* function (*ibid.*) in lieu of *stats::cor*; this is also negative when intensity for level 1 is greater than for level 2
 - **vip4p** - "variable importance in projection" to the predictive projection, VIP\ :subscript:`4,p` (Galindo-Prieto *op. cit.*)
 - **vip4o** - "variable importance in projection" to the orthogonal projection, VIP\ :subscript:`4,o` (*ibid.*)
 - **loadp** - variable loading for the predictive projection (Wiklund *op. cit.*)
 - **loado** - variable loading for the orthogonal projection (*ibid.*)
 - **cor_p_val_raw** - p-value for Fisher-transformed correlation (Fisher, 1921; Snedecor, 1980; see also https://en.wikipedia.org/wiki/Fisher_transformation), with no family-wise error-rate correction.
-- **cor_p_value** - p-value for Fisher-transformed correlation, adjusted for family-wise error rate (Yekutieli *et al.*, 2001).  Caveat: any previous selection for features that vary notably by factor level may result in too little adjustment.
-- **cor_ci_lower** - lower limit of 95% confidence interval for correlation (see e.g. https://en.wikipedia.org/wiki/Fisher_transformation)
-- **cor_ci_upper** - upper limit of 95% confidence interval for correlation (*ibid.*)
+- **cor_p_value** - p-value for Fisher-transformed correlation, adjusted for family-wise error rate (Yekutieli *et al.*, 2001).
+- **cor_ci_lower** - lower limit of 95% confidence interval for correlation, based on cor_p_value
+- **cor_ci_upper** - upper limit of 95% confidence interval for correlation, based on cor_p_value
 - **mz** - *m/z* ratio for feature, copied from input variableMetadata
 - **rt** - retention time for feature, copied from input variableMetadata
-- **level1Level2Sig** - (Only present when a test other than "none" is chosen) '1' when feature varies significantly across all classes (i.e., not pair-wise); '0' otherwise
+- **level1Level2Sig** (Only present when a test other than "none" is chosen) - '1' when feature varies significantly across all classes (i.e., not pair-wise); '0' otherwise
 
 [OUT] Feature "Salience" data TABULAR
   | Metrics for the "salient level" for each feature, i.e., the level at which the feature is more prominent than any other level.  This is *not* at all related to the SIMCA OPLS-DA S-PLOT; rather, it is intended as a potential way to discover features for consideration as potential biomarkers without dimensionally reducting the data.  This is a tab-separated values file having the following columns:
 
 - **featureID** - feature identifier
 - **salientLevel** - salient level, i.e., for the feature, the class-level having the greatest median intensity
-- **salientRCV** - salient robust coefficient of variation, i.e., for the feature, the mean absolute deviation of the intensity for the salient level divided by the median intensity for the salient level
+- **salienceRCV** - salience robust coefficient of variation, i.e., for the feature, the mean absolute deviation of the intensity for the salient level divided by the median intensity for the salient level
+- **relativeSalientDistance** - relative salient distance, i.e., for the feature, the distance between the two highest class-level medians divided by the square root of the mean absolute deviations of those two class-level's intensities
 - **salience** - salience, i.e., for the feature, the median of the class-level having the greatest intensity divided by the mean of the medians for all class-levels
+- **mz** - *m/z* ratio for feature, copied from input variableMetadata
+- **rt** - retention time for feature, copied from input variableMetadata
 
 Wild card patterns to match level-names
 ---------------------------------------
@@ -744,6 +769,8 @@
   +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
   | Number of features having extreme loadings | ALL                                                                                                                                    |
   +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
+  | How many features for p-value calculation? | 250                                                                                                                                    |
+  +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
   | Output primary table                       | https://raw.githubusercontent.com/HegemanLab/w4mcorcov_galaxy_wrapper/master/tools/w4mcorcov/test-data/expected_contrast_corcov.tsv    |
   +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------+
   | Output salience table                      | https://raw.githubusercontent.com/HegemanLab/w4mcorcov_galaxy_wrapper/master/tools/w4mcorcov/test-data/expected_contrast_salience.tsv  |
@@ -768,6 +795,8 @@
   +--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
   | Number of features having extreme loadings | 5                                                                                                                                          |
   +--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
+  | How many features for p-value calculation? | ALL                                                                                                                                        |
+  +--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
   | Output primary table                       | https://raw.githubusercontent.com/HegemanLab/w4mcorcov_galaxy_wrapper/master/tools/w4mcorcov/test-data/expected_contrast_corcov_all.tsv    |
   +--------------------------------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
   | Output salience table                      | https://raw.githubusercontent.com/HegemanLab/w4mcorcov_galaxy_wrapper/master/tools/w4mcorcov/test-data/expected_contrast_salience_all.tsv  |
@@ -790,6 +819,8 @@
   +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+
   | Number of features having extreme loadings | 0                                                                                                                                            |
   +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+
+  | How many features for p-value calculation? | ALL                                                                                                                                          |
+  +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+
   | Output primary table                       | https://raw.githubusercontent.com/HegemanLab/w4mcorcov_galaxy_wrapper/master/tools/w4mcorcov/test-data/expected_contrast_corcov_global.tsv   |
   +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+
   | Output salience table                      | https://raw.githubusercontent.com/HegemanLab/w4mcorcov_galaxy_wrapper/master/tools/w4mcorcov/test-data/expected_contrast_salience_global.tsv |
@@ -812,6 +843,8 @@
   +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+
   | Number of features having extreme loadings | 3                                                                                                                                            |
   +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+
+  | How many features for p-value calculation? | ALL                                                                                                                                          |
+  +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+
   | Output primary table                       | https://raw.githubusercontent.com/HegemanLab/w4mcorcov_galaxy_wrapper/master/tools/w4mcorcov/test-data/expected_contrast_corcov_lohi.tsv     |
   +--------------------------------------------+----------------------------------------------------------------------------------------------------------------------------------------------+
   | Output salience table                      | https://raw.githubusercontent.com/HegemanLab/w4mcorcov_galaxy_wrapper/master/tools/w4mcorcov/test-data/expected_contrast_salience_lohi.tsv   |
@@ -830,6 +863,17 @@
   <citations>
     <!-- this tool -->
     <citation type="doi">10.5281/zenodo.1034784</citation>
+    <!-- R project -->
+    <citation type="bibtex"><![CDATA[
+    @Manual{,
+      title = {R: A Language and Environment for Statistical Computing},
+      author = {{R Core Team}},
+      organization = {R Foundation for Statistical Computing},
+      address = {Vienna, Austria},
+      year = {2018},
+      url = {https://www.R-project.org/},
+    }
+    ]]></citation>
     <!-- Fisher_1921: Fisher z-transformation of correlation coefficient -->
     <citation type="bibtex"><![CDATA[
     @article{Fisher_1921,
@@ -887,7 +931,7 @@
       address = {Roswell Park Cancer Institute},
     }
     ]]></citation>
-    <!-- Wiklund_2008 OPLS PLS-DA and S-PLOT -->
+    <!-- Wiklund_2008 OPLS-DA and S-PLOT -->
     <citation type="doi">10.1021/ac0713510</citation>
     <!-- Yekutieli_2001 The control of the false discovery rate in multiple testing under dependency -->
     <citation type="doi">10.1214/aos/1013699998</citation>