diff w4mcorcov.xml @ 1:e25fd8a13665 draft

planemo upload for repository https://github.com/HegemanLab/w4mcorcov_galaxy_wrapper/tree/master commit bd26542b811de06c1a877337a2840a9f899c2b94
author eschen42
date Mon, 16 Oct 2017 09:18:29 -0400
parents 50a07adddfbd
children a06344808ffc
line wrap: on
line diff
--- a/w4mcorcov.xml	Mon Oct 09 15:46:13 2017 -0400
+++ b/w4mcorcov.xml	Mon Oct 16 09:18:29 2017 -0400
@@ -1,4 +1,4 @@
-<tool id="w4mcorcov" name="OPLS-DA_Contrasts" version="0.98.1">
+<tool id="w4mcorcov" name="OPLS-DA_Contrasts" version="0.98.2">
 
   <description>OPLS-DA Contrasts of Univariate Results</description>
   
@@ -13,26 +13,27 @@
   </stdio>
 
   <command><![CDATA[
-  cd $__tool_directory__; Rscript w4mcorcov_wrapper.R
-  dataMatrix_in "$dataMatrix_in"
-  sampleMetadata_in "$sampleMetadata_in"
-  variableMetadata_in "$variableMetadata_in"
-  tesC "$tesC"
-  facC "$facC"
-  pairSigFeatOnly "$pairSigFeatOnly"
-  levCSV '$levCSV'
-  matchingC '$matchingC'
-  labelFeatures '$labelFeatures'
-  contrast_detail '$contrast_detail'
-  contrast_corcov '$contrast_corcov'
+    cd $__tool_directory__; Rscript w4mcorcov_wrapper.R
+    dataMatrix_in "$dataMatrix_in"
+    sampleMetadata_in "$sampleMetadata_in"
+    variableMetadata_in "$variableMetadata_in"
+    tesC "$tesC"
+    facC "$facC"
+    pairSigFeatOnly "$pairSigFeatOnly"
+    levCSV '$levCSV'
+    matchingC '$matchingC'
+    labelFeatures '$labelFeatures'
+    contrast_detail '$contrast_detail'
+    contrast_corcov '$contrast_corcov'
+    contrast_salience '$contrast_salience'
   ]]></command>
 
   <inputs>
-    <param name="dataMatrix_in" label="Data matrix file" type="data" format="tabular" help="variable x sample, decimal: '.', missing: NA, mode: numerical, sep: tabular" />
-    <param name="sampleMetadata_in" label="Sample metadata file" type="data" format="tabular" help="sample x metadata, decimal: '.', missing: NA, mode: character and numerical, sep: tabular" />
-    <param name="variableMetadata_in" label="Variable metadata file (from Univariate)" type="data" format="tabular" help="variable x metadata, decimal: '.', missing: NA, mode: character and numerical, sep: tabular" />
-    <param name="facC" label="Factor of interest" type="text" help="Name of the column of the sample metadata table corresponding to the qualitative variable used to define the contrasts - it is a portion of the column names in the variable metadata file"/>
-    <param name="tesC" label="Univariate Significance-Test" type="select" help="Name of the statistical test that was run in Univariate to produce the variable metadata file - it is a portion of the column names in that file">
+    <param name="dataMatrix_in" label="Data matrix file" type="data" format="tabular" help="Features x samples (tabular data - decimal: '.'; missing: NA; mode: numerical; separator: tab character)" />
+    <param name="sampleMetadata_in" label="Sample metadata file" type="data" format="tabular" help="Samples x metadata (tabular data - decimal: '.'; missing: NA; mode: character or numerical; separator: tab character)" />
+    <param name="variableMetadata_in" label="Variable metadata file (from Univariate)" type="data" format="tabular" help="Features x metadata (tabular data - decimal: '.'; missing: NA; mode: character or numerical; separator: tab character)" />
+    <param name="facC" label="Factor of interest" type="text" help="The name of the column of sampleMetadata corresponding to the qualitative variable used to define the contrasts.  This also must be a portion of the column names in the variableMetadata file except when the 'Univariate Significance-test' is set to 'none'."/>
+    <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">
       <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>
@@ -47,7 +48,7 @@
       falsevalue="FALSE"
       label="Retain only pairwise-significant features"
       help="Ignored when 'none' is chosen.  Otherwise, when 'Yes', analyze only features that differ significantly for the pair of levels being contrasted; when 'No', include any feature that varies significantly across all levels."/>
-    <param name="levCSV" label="Levels of interest" type="text" value = "" help="comma-separated level-names (or comma-less regular expressions to match level-names) to consider in analysis; must match at least two levels; may include wild cards or regular expressions">
+    <param name="levCSV" label="Levels of interest" type="text" value = "" help="Comma-separated level-names (or comma-less regular expressions to match level-names) to consider in analysis; must match at least two levels; may include wild cards or regular expressions">
       <sanitizer>
         <valid initial="string.letters">
           <add preset="string.digits"/>
@@ -73,7 +74,7 @@
         </valid>
       </sanitizer>
     </param>
-    <param name="matchingC" label="Level-name matching" type="select" help="how to specify levels generically">
+    <param name="matchingC" label="Level-name matching" type="select" help="How to specify levels generically">
       <option value="none"  selected="true">do no generic matching (default)</option>
       <option value="wildcard">use wild-cards for matching level-names</option>
       <option value="regex">use regular expressions for matching level-names</option>
@@ -98,12 +99,17 @@
         * Wiklund_2008 covariance
         * Galindo_Prieto_2014 VIP for predictive components, VIP[4,p]
         * Galindo_Prieto_2014 VIP for orthogonal components, VIP[4,o]
+        * (When filtering on significance of univariate tests) Significance of test of null hypothesis that there is no difference between the two classes, i.e, the pair-wise test.
+    -->
+    <data name="contrast_corcov" label="${tool.name}_${variableMetadata_in.name}_corcov" format="tabular" />
+    <!--
+      tsv2: salience table with columns (experimental feature):
+        * feature-ID
         * Salient level, i.e., for the feature, the class-level having the greatest median intensity
         * 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
         * 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.
-        * (When filtering on significance of univariate tests) Significance of test of null hypothesis that there is no difference between the two classes, i.e, the pair-wise test.
     -->
-    <data name="contrast_corcov" label="${tool.name}_${variableMetadata_in.name}_corcov" format="tabular" />
+    <data name="contrast_salience" label="${tool.name}_${variableMetadata_in.name}_salience" format="tabular" />
   </outputs>
 
   <tests>
@@ -127,9 +133,6 @@
           <has_text text="covariance" />
           <has_text text="vip4p" />
           <has_text text="vip4o" />
-          <has_text text="salientLevel" />
-          <has_text text="salientRCV" />
-          <has_text text="salience" />
           <has_text text="level1Level2Sig" />
           <!-- first matched line -->
           <has_text text="M349.2383T700" />
@@ -137,22 +140,37 @@
           <has_text text="-5.8455" />
           <has_text text="0.0961269" />
           <has_text text="0.1848301" />
-          <has_text text="0.659554" />
-          <has_text text="8.81866595" />
           <!-- second matched line -->
           <has_text text="M207.9308T206" />
           <has_text text="-0.2967565" />
           <has_text text="-19.56942" />
           <has_text text="1.6023" />
           <has_text text="1.35368" />
-          <has_text text="0.0578578" />
-          <has_text text="2.27527985" />
           <!-- third matched line -->
           <has_text text="M211.0607T263" />
           <has_text text="0.47052" />
           <has_text text="15.910087" />
           <has_text text="0.89838" />
           <has_text text="0.125372" />
+        </assert_contents>
+      </output>
+      <output name="contrast_salience">
+        <assert_contents>
+          <!-- column-labels line -->
+          <has_text text="featureID" />
+          <has_text text="salientLevel" />
+          <has_text text="salientRCV" />
+          <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" />
         </assert_contents>
@@ -178,30 +196,42 @@
           <has_text text="covariance" />
           <has_text text="vip4p" />
           <has_text text="vip4o" />
-          <has_text text="salientLevel" />
-          <has_text text="salientRCV" />
-          <has_text text="salience" />
           <has_text text="level1Level2Sig" />
           <!-- first matched line -->
           <has_text text="M349.2383T700" />
           <has_text text="-0.99601577" />
           <has_text text="-947.55795176" />
-          <has_text text="0.659554" />
-          <has_text text="8.81866595" />
           <!-- second matched line -->
           <has_text text="M207.9308T206" />
           <has_text text="0.688549" />
           <has_text text="58.22352" />
           <has_text text="1.394687" />
           <has_text text="0.06049885" />
-          <has_text text="0.0578578" />
-          <has_text text="2.27527985" />
           <!-- third matched line -->
           <has_text text="M211.0607T263" />
           <has_text text="-0.572018" />
           <has_text text="-14.57769" />
           <has_text text="0.7780899" />
           <has_text text="0.3678166776" />
+        </assert_contents>
+      </output>
+      <output name="contrast_salience">
+        <assert_contents>
+          <!-- column-labels line -->
+          <has_text text="featureID" />
+          <has_text text="salientLevel" />
+          <has_text text="salientRCV" />
+          <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" />
         </assert_contents>
@@ -227,31 +257,43 @@
           <has_text text="covariance" />
           <has_text text="vip4p" />
           <has_text text="vip4o" />
-          <has_text text="salientLevel" />
-          <has_text text="salientRCV" />
-          <has_text text="salience" />
           <!-- first matched line -->
           <has_text text="M349.2383T700" />
           <has_text text="-0.64331257" />
           <has_text text="-161.82220" />
           <has_text text="1.862455" />
           <has_text text="0.2105143" />
-          <has_text text="0.659554" />
-          <has_text text="8.81866595" />
           <!-- second matched line -->
           <has_text text="M207.9308T206" />
           <has_text text="-0.313507" />
           <has_text text="-20.0476" />
           <has_text text="1.6956987" />
           <has_text text="1.19247" />
-          <has_text text="0.0578578" />
-          <has_text text="2.27527985" />
           <!-- third matched line -->
           <has_text text="M211.0607T263" />
           <has_text text="-0.38986114" />
           <has_text text="-23.747718" />
           <has_text text="1.064296856" />
           <has_text text="1.16507455" />
+        </assert_contents>
+      </output>
+      <output name="contrast_salience">
+        <assert_contents>
+          <!-- column-labels line -->
+          <has_text text="featureID" />
+          <has_text text="salientLevel" />
+          <has_text text="salientRCV" />
+          <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" />
         </assert_contents>
@@ -268,35 +310,11 @@
 
 **Author** - Arthur Eschenlauer (University of Minnesota, esch0041@umn.edu)
 
-**Tool updates**
-----------------
-
-See the **NEWS** section at the bottom of this page
-
-
-Description
------------
-
-The purpose of the 'PLS-DA Contrasts' tool is to identify and visualize GC-MS or LC-MS features that are likely biomarkers, i.e., that can be used to discriminate between members of a pair of classes of samples.  It is intended to complement Workflow4Metabolomics (W4M, Giacomoni *et al.*, 2014, Guitton *et al.*, 2017), which provides a suite of tools for preprocessing and statistical analysis of LC-MS, GC-MS, and NMR metabolomics data.
-
-The W4M 'Univariate' tool (Thé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.
-
-- A column of variableMetadata would be labeled 'cluster_kruskal_sig' and would have values '1' and '0', where '1' means that if the samples are grouped by cluster, there is little strong evidence against the hypothesis that there is no difference among the mean intensity for the feature for each group.
-- A column of variableMetadata would be labeled '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 mean intensity for a given feature.
-
-The 'PLS-DA Contrasts' tool accepts the output of the W4M 'Univariate' tool and produces graphics and data for OPLS-DA\ :superscript:`®` contrasts of feature-intensities between significantly different pairs of factor-levels.  It omits features that are not significantly different either for each pair-wise contrast or across all samples.
-
-W4M Workflow Position
----------------------
-
-- Upstream tool: **Univariate** (category: Statistical Analysis)
-- Downstream tool categories: **Statistical Analysis**
 
 Motivation
 ----------
 
-OPLS-DA\ :superscript:`®`, generally, and the SIMCA\ :superscript:`®` S-PLOT\ :superscript:`®` (Wiklund *et al.*, 2008), in particular, are employed (e.g. in Sun *et al.*, 2016) to identify features that are potiential biomarkers, i.e. features that are potentially useful to discriminate to which of two classes a sample should be assigned.  W4M does not (as of release 3.0) include a tool for making the equivalent of an S-PLOT.
+OPLS-DA\ :superscript:`®` and the SIMCA\ :superscript:`®` S-PLOT\ :superscript:`®` (Wiklund *et al.*, 2008) may be employed (e.g. Sun *et al.*, 2016) to identify features that are potential biomarkers, i.e. features that are potentially useful to discriminate to which class a sample should be assigned.  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.
 
 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 explained by the contrasting factor.
 
@@ -306,6 +324,31 @@
 - To visualize multiple contrasts compactly yet informatively.
 - To write the results to data files for use in further multivariate analysis or visualization.
 
+
+Description
+-----------
+
+The purpose of the 'PLS-DA Contrasts' tool is to identify and visualize GC-MS or LC-MS features that are possible biomarkers.
+
+The W4M 'Univariate' tool (Thé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.
+
+- A column of variableMetadata would be labeled 'cluster_kruskal_sig' and would have values '1' and '0', where '1' means that, when the samples are grouped by 'cluster', 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 labeled '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.
+
+This tool can be used in a purely exploratory manner by supplying the variableMetadata file without the columns added by the W4M 'Univariate' tool.  However, the preferred workflow (Thévenot *et al.*, 2015) is to use univariate testing to exclude features that are not significantly different and use OPLS-DA to visualize the differences identified in univariate testing; an appropriate exception would be to visualize contrasts of a specific list of metabolites.
+
+It must be stressed that there may be no definitive computational approach to select features that are guaranteed to be reliable biomarkers.  Possible methods are examining extreme values on S-PLOTs, examining "variable importance in projection VIP for OPLS-DA" (Galindo-Prieto *et al.* 2014), or examining a feature's "selectivity ratio" (Rajalahti *et al.*, 2009).  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.  Regardless of how any potential biomarker is identified, it should be subjected to further validation analysis before it is 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.
+- Downstream tool categories: **Statistical Analysis**
+
 Input files
 -----------
 
@@ -325,8 +368,6 @@
 +------------------------------+-----------+
 | File                         |  Format   |
 +==============================+===========+
-| Contrast grid                |    pdf    |
-+------------------------------+-----------+
 | Contrast detail              |    pdf    |
 +------------------------------+-----------+
 | Contrast cor and cov         |  tabular  |
@@ -371,29 +412,34 @@
 	| How to **specify levels generically** - wild cards, regular expressions, or none (no generic matching)
 	|
 
-[OUT] Contrast-grid output PDF
-	| An output file **displaying on a single figure**, for each pair of selected level-names, **the OPLS-DA scores plot and the correlation-vs.-covariance plot** (a work-alike for the SIMCA S-PLOT) 
-	|
+[OUT] Contrast-detail output PDF
+	| Several plots for each two-projection OPLS-DA analysis:
 
-[OUT] Contrast-detail output PDF
-	| An output file having **several plots for each pair of selected level-names**: the PCA score-plot for the first two scores, the OPLS-DA score-plot for the first two scores, and the OPLS-DA correlation-vs.-covariance plot (a work-alike for the S-PLOT)
-	|
+- (top-left) **correlation-versus-covariance plot** of OPLS-DA results (a work-alike for the S-PLOT, computed using formula in Supplement to 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) ranges from 0.83 and 1.21 (Mehmood *et al.* 2012)
+- (bottom-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évenot, 2017)
+- (top-right) OPLS-DA **scores-plot** for the two projections (Thévenot *et al.*, 2015)
+- (bottom-right) OPLS-DA **loadings-plot** for the two projections (*ibid.*)
 
 [OUT] Contrast Correlation-Covarinace data TABULAR
 	| A tab-separated values file having the following columns:
 
-- **featureID** - feature identifier
+- **featureID** - feature-identifier
 - **factorLevel1** - factor-level 1
-- **factorLevel2** - factor-level 2
-- **correlation** - correlation of the features projection explaining the difference between the features, > 0 when intensity for level 1 is greater than intensity for level 2 (from formula in Supplement to Wiklund, *op. cit.*)
-- **covariance** - covariance of the features projection explaining the difference between the features, > 0 when intensity for level 1 is greater than intensity for level 2 (from formula in *ibid.*)
-- **vip4p** - variable importance in projection to the predictive components (VIP\ :subscript:`4,p` from Galindo-Prieto *et al.* 2014)
-- **vip4o** - variable importance in projection to the orthogonal components (VIP\ :subscript:`4,o` from Galindo-Prieto *op cit.*)
-- **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
-- **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
+- **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 formula in Supplement to Wiklund, *op. cit.*)
+- **covariance** - covariance of the features projection explaining the difference between the features, < 0 when intensity for level 1 is greater (from formula in *ibid.*)
+- **vip4p** - "variable importance in projection" to the predictive components (VIP\ :subscript:`4,p` from Galindo-Prieto *op. cit.*)
+- **vip4o** - "variable importance in projection" to the orthogonal components (VIP\ :subscript:`4,o` from Galindo-Prieto *op. cit.*)
 - **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 (and unproven) way to identify features that may suggest potential biomarkers without dimensional reduction of 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
+- **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
+
 Wild card patterns to match level-names
 ---------------------------------------
 
@@ -492,6 +538,12 @@
 OPLS-DA\ :superscript:`®`, SIMCA\ :superscript:`®`, and S-PLOT\ :superscript:`®` are registered trademarks of the Umetrics company.  http://umetrics.com/about-us/trademarks
 
 
+Release notes
+-------------
+
+v0.98.2 - first release
+
+
   ]]></help>
   <citations>
     <!-- Galindo_Prieto_2014 Variable influence on projection (VIP) for OPLS -->
@@ -500,10 +552,26 @@
     <citation type="doi">10.1093/bioinformatics/btu813</citation>
     <!-- Guitton_2017 W4M 3.0 -->
     <citation type="doi">10.1016/j.biocel.2017.07.002</citation>
+    <!-- Mehmood_2012 PLS-based variable-selection -->
+    <citation type="doi">10.1186/1748-7188-6-27</citation>
+    <!-- Rajalahti_2009 Biomarker discovery using selectivity ratio -->
+    <citation type="doi">10.1016/j.chemolab.2008.08.004</citation>
     <!-- Sun_2016 Urinary Biomarkers for adolescent idiopathic scoliosis -->
     <citation type="doi">10.1038/srep22274</citation>
     <!-- Th_venot_2015 Urinary metabolome statistics -->
     <citation type="doi">10.1021/acs.jproteome.5b00354</citation>
+    <!-- ropls package -->
+    <citation type="bibtex"><![CDATA[
+@incollection{Thevenot_ropls_2017,
+    author = {Th{\'{e}}venot, Etienne A.},
+    title = {ropls: PCA, PLS(-DA) and OPLS(-DA) for multivariate analysis and feature selection of omics data},
+    publisher = {bioconductor.org},
+    year = {2017},
+    doi = {10.18129/B9.bioc.ropls},
+    booktitle = {Bioconductor: Open source software for bioinformatics},
+    address = {Roswell Park Cancer Institute},
+}
+    ]]></citation>
     <!-- Wiklund_2008 OPLS PLS-DA and S-PLOT -->
     <citation type="doi">10.1021/ac0713510</citation>
   </citations>