changeset 4:593839e1f2c3 draft

"planemo upload for repository https://github.com/galaxyproteomics/tools-galaxyp/tree/master/tools/msstats commit 4fe4a0b30469f52c937830d2f3c316f6b9667407"
author galaxyp
date Thu, 25 Feb 2021 08:41:37 +0000
parents 8212e342e482
children 28434abe6c5c
files msstats.xml test-data/Comparison_plot_skyline.pdf test-data/Heatmap_openms.pdf test-data/MSstats ProfilePlot.pdf test-data/Profile_plot_skyline.pdf test-data/QC_plot.pdf test-data/Volcano_plot_skyline.pdf test-data/condition_plot.pdf test-data/condition_plot_openms.pdf test-data/profile_wsum_plot.pdf test-data/qq_plot.pdf test-data/residual_plot.pdf test-data/residualplot.pdf test-data/volcanoplot.pdf
diffstat 14 files changed, 272 insertions(+), 214 deletions(-) [+]
line wrap: on
line diff
--- a/msstats.xml	Thu Jan 28 20:48:40 2021 +0000
+++ b/msstats.xml	Thu Feb 25 08:41:37 2021 +0000
@@ -1,4 +1,4 @@
-<tool id="msstats" name="MSstats" version="@VERSION@.0">
+<tool id="msstats" name="MSstats" version="@VERSION@.1">
     <description>statistical relative protein significance analysis in DDA, SRM and DIA Mass Spectrometry</description>
     <macros>
         <token name="@VERSION@">3.22.0</token>
@@ -174,66 +174,77 @@
                           censoredInt="$dp_options.censoredInt",
                           #end if
                           cutoffCensored="$dp_options.cutoffCensored",
+                          #if $dp_options.maxQuantileforCensored == ''
+                          maxQuantileforCensored = NULL)
+                          #else
                           maxQuantileforCensored = $dp_options.maxQuantileforCensored)
-  
-#if 'processed_data' in $selected_outputs
+                          #end if
+
+#if 'raw_data' in $dp_options.selected_outputs
+write.table(raw, "raw.tsv", sep = "\t", quote = F, row.names = F, dec = ".")
+#end if
+
+#if 'processed_data' in $dp_options.selected_outputs
 write.table(processed_data\$ProcessedData, "ProcessedData.tsv", sep = "\t", quote = F, row.names = F, dec = ".")
 #end if
-#if 'runlevel_data' in $selected_outputs
+
+#if 'runlevel_data' in $dp_options.selected_outputs
 write.table(processed_data\$RunlevelData, "RunlevelData.tsv", sep = "\t", quote = F, row.names = F, dec = ".")
 #end if
 
-#for $plot_type in $selected_outputs
+#for $plot_type in $dp_options.out_plots_opt.selected_vis_outputs
+
+
     #if $plot_type[-4:] == "Plot"
 
 	dataProcessPlots(data = processed_data,
 			     type = '$plot_type',
-			     featureName = "$out_plots_opt.featureName",
-			     #if $out_plots_opt.ylimUp:
-                            ylimUp = $out_plots_opt.ylimUp,
+			     featureName = "$dp_options.out_plots_opt.proc_plots_advanced.featureName",
+			     #if $dp_options.out_plots_opt.proc_plots_advanced.ylimUp:
+                            ylimUp = $dp_options.out_plots_opt.proc_plots_advanced.ylimUp,
                             #end if
-                            #if $out_plots_opt.ylimDown:
-                            ylimDown = $out_plots_opt.ylimDown,
+                            #if $dp_options.out_plots_opt.proc_plots_advanced.ylimDown:
+                            ylimDown = $dp_options.out_plots_opt.proc_plots_advanced.ylimDown,
                             #end if
-                            scale = $out_plots_opt.scale,
-                            interval = "$out_plots_opt.interval",
-                            x.axis.size = $out_plots_opt.x_axis_size,
-                            y.axis.size = $out_plots_opt.y_axis_size,
-                            text.size = $out_plots_opt.text_size,
-                            text.angle = $out_plots_opt.text_angle,
-                            legend.size = $out_plots_opt.legend_size,
-                            dot.size.profile = $out_plots_opt.dot_size_profile,
-                            dot.size.condition = $out_plots_opt.dot_size_condition,
-                            width = $out_plots_opt.width,
-                            height = $out_plots_opt.height,
-                            #if $out_plots_opt.which_Protein.select != 'list'
-                            which.Protein = "$out_plots_opt.which_Protein.select",
+                            scale = $dp_options.out_plots_opt.proc_plots_advanced.scale,
+                            interval = "$dp_options.out_plots_opt.proc_plots_advanced.interval",
+                            x.axis.size = $dp_options.out_plots_opt.proc_plots_advanced.x_axis_size,
+                            y.axis.size = $dp_options.out_plots_opt.proc_plots_advanced.y_axis_size,
+                            text.size = $dp_options.out_plots_opt.proc_plots_advanced.text_size,
+                            text.angle = $dp_options.out_plots_opt.proc_plots_advanced.text_angle,
+                            legend.size = $dp_options.out_plots_opt.proc_plots_advanced.legend_size,
+                            dot.size.profile = $dp_options.out_plots_opt.proc_plots_advanced.dot_size_profile,
+                            dot.size.condition = $dp_options.out_plots_opt.proc_plots_advanced.dot_size_condition,
+                            width = $dp_options.out_plots_opt.width,
+                            height = $dp_options.out_plots_opt.height,
+                            #if $dp_options.out_plots_opt.which_Protein.select != 'list'
+                            which.Protein = "$dp_options.out_plots_opt.which_Protein.select",
                             #else
-                            which.Protein = unlist(read.table("$out_plots_opt.which_Protein.protein_list", sep = "\n", header = FALSE), use.names = FALSE),
+                            which.Protein = unlist(read.table("$dp_options.out_plots_opt.which_Protein.protein_list", sep = "\n", header = FALSE), use.names = FALSE),
                             #end if
-                            remove_uninformative_feature_outlier = $out_plots_opt.remove_uninformative_feature_outlier,
+                            remove_uninformative_feature_outlier = $dp_options.out_plots_opt.proc_plots_advanced.remove_uninformative_feature_outlier,
                             address="MSStats_only_")
 
     #end if
 #end for
 
 ## Quantifiaction
-#if 'quant_sample_matrix' in $selected_outputs
+#if 'quant_sample_matrix' in $dp_options.selected_outputs
 sampleQuantMatrix <- quantification(processed_data,  type="Sample")
 write.table(sampleQuantMatrix, "SampleQuantificationMatrix.tsv", sep = "\t", quote = F, row.names = F, dec = ".")
 #end if
 
-#if 'quant_sample_long' in $selected_outputs
+#if 'quant_sample_long' in $dp_options.selected_outputs
 sampleQuantLong <- quantification(processed_data,  type="Sample", format="long")
 write.table(sampleQuantLong, "SampleQuantificationLong.tsv", sep = "\t", quote = F, row.names = F, dec = ".")
 #end if
 
-#if 'quant_group_matrix' in $selected_outputs
+#if 'quant_group_matrix' in $dp_options.selected_outputs
 groupQuantMatrix <- quantification(processed_data,  type="Group")
 write.table(groupQuantMatrix, "GroupQuantificationMatrix.tsv", sep = "\t", quote = F, row.names = F, dec = ".")
 #end if
 
-#if 'quant_group_long' in $selected_outputs
+#if 'quant_group_long' in $dp_options.selected_outputs
 groupQuantLong <- quantification(processed_data,  type="Group", format="long")
 write.table(groupQuantLong, "GroupQuantificationLong.tsv", sep = "\t", quote = F, row.names = F, dec = ".")
 #end if
@@ -272,22 +283,23 @@
 
 ## Visualizations:
 
-#for $plot_type in $group.select_outputs
+#for $plot_type in $group.comparison_plots_opt.select_comparison_plots
+          
 
     #if $plot_type == "QQPlots" or $plot_type == "ResidualPlots"
 
 	modelBasedQCPlots(data = comparisons,
 				type = "$plot_type",
-				axis.size = $comparison_plots_opt.axis_size,
-				dot.size = $comparison_plots_opt.dot_size,
-				text.size = $comparison_plots_opt.text_size,
-				legend.size = $comparison_plots_opt.legend_size,
-				width = $comparison_plots_opt.width,
-				height = $comparison_plots_opt.height,
-				#if $comparison_plots_opt.which_Protein.select != 'list'
-		                which.Protein = "$comparison_plots_opt.which_Protein.select",
+				axis.size = $group.comparison_plots_opt.comparison_vis_options.axis_size,
+				dot.size = $group.comparison_plots_opt.comparison_vis_options.dot_size,
+				text.size = $group.comparison_plots_opt.comparison_vis_options.text_size,
+				legend.size = $group.comparison_plots_opt.comparison_vis_options.legend_size,
+				width = $group.comparison_plots_opt.width,
+				height = $group.comparison_plots_opt.height,
+				#if $group.comparison_plots_opt.which_Protein.select != 'list'
+		                which.Protein = "$group.comparison_plots_opt.which_Protein.select",
 		                #else
-		                which.Protein = unlist(read.table("$comparison_plots_opt.which_Protein.protein_list", sep = "\n", header = FALSE), use.names = FALSE),
+		                which.Protein = unlist(read.table("$group.comparison_plots_opt.which_Protein.protein_list", sep = "\n", header = FALSE), use.names = FALSE),
 		                #end if
 				address="MSStats_group_")
 
@@ -296,38 +308,38 @@
 
 	groupComparisonPlots(data = comparisons\$ComparisonResult,
 				type = "$plot_type",
-				sig = $comparison_plots_opt.sig,
-				#if $comparison_plots_opt.FCcutoff:
-				FCcutoff = $comparison_plots_opt.FCcutoff,
+				sig = $group.comparison_plots_opt.comparison_vis_options.sig,
+				#if $group.comparison_plots_opt.comparison_vis_options.FCcutoff:
+				FCcutoff = $group.comparison_plots_opt.comparison_vis_options.FCcutoff,
 				#end if
-				logBase.pvalue = $comparison_plots_opt.logBase_pvalue,
-			        #if $comparison_plots_opt.ylimUp:
-				ylimUp = $comparison_plots_opt.ylimUp,
+				logBase.pvalue = $group.comparison_plots_opt.comparison_vis_options.logBase_pvalue,
+			        #if $group.comparison_plots_opt.comparison_vis_options.ylimUp:
+				ylimUp = $group.comparison_plots_opt.comparison_vis_options.ylimUp,
 				#end if
-				#if $comparison_plots_opt.ylimDown:
-				ylimDown = $comparison_plots_opt.ylimDown,
+				#if $group.comparison_plots_opt.comparison_vis_options.ylimDown:
+				ylimDown = $group.comparison_plots_opt.comparison_vis_options.ylimDown,
 				#end if
-				x.axis.size = $comparison_plots_opt.x_axis_size,
-				y.axis.size = $comparison_plots_opt.y_axis_size,
-				dot.size = $comparison_plots_opt.dot_size,
-				text.size = $comparison_plots_opt.text_size,
-				text.angle = $comparison_plots_opt.text_angle,
-				legend.size = $comparison_plots_opt.legend_size,
-				ProteinName = $comparison_plots_opt.ProteinName,
-				colorkey = $comparison_plots_opt.colorkey,
-				numProtein = $comparison_plots_opt.numProtein,
-				clustering = "$comparison_plots_opt.clustering",
-				width = $comparison_plots_opt.width,
-				height =  $comparison_plots_opt.height,
-				#if $comparison_plots_opt.which_Protein.select != 'list'
-		                which.Protein = "$comparison_plots_opt.which_Protein.select",
+				x.axis.size = $group.comparison_plots_opt.comparison_vis_options.x_axis_size,
+				y.axis.size = $group.comparison_plots_opt.comparison_vis_options.y_axis_size,
+				dot.size = $group.comparison_plots_opt.comparison_vis_options.dot_size,
+				text.size = $group.comparison_plots_opt.comparison_vis_options.text_size,
+				text.angle = $group.comparison_plots_opt.comparison_vis_options.text_angle,
+				legend.size = $group.comparison_plots_opt.comparison_vis_options.legend_size,
+				ProteinName = $group.comparison_plots_opt.comparison_vis_options.ProteinName,
+				colorkey = $group.comparison_plots_opt.comparison_vis_options.colorkey,
+				numProtein = $group.comparison_plots_opt.comparison_vis_options.numProtein,
+				clustering = "$group.comparison_plots_opt.comparison_vis_options.clustering",
+				width = $group.comparison_plots_opt.width,
+				height =  $group.comparison_plots_opt.height,
+				#if $group.comparison_plots_opt.which_Protein.select != 'list'
+		                which.Protein = "$group.comparison_plots_opt.which_Protein.select",
 		                #else
-		                which.Protein = unlist(read.table("$comparison_plots_opt.which_Protein.protein_list", sep = "\n", header = FALSE), use.names = FALSE),
+		                which.Protein = unlist(read.table("$group.comparison_plots_opt.which_Protein.protein_list", sep = "\n", header = FALSE), use.names = FALSE),
 		                #end if
-		                #if $comparison_plots_opt.which_Comparison.select != 'list'
-		                which.Comparison = "$comparison_plots_opt.which_Comparison.select",
+		                #if $group.comparison_plots_opt.comparison_vis_options.which_Comparison.select != 'list'
+		                which.Comparison = "$group.comparison_plots_opt.comparison_vis_options.which_Comparison.select",
 		                #else
-		                which.Comparison = unlist(read.table("$comparison_plots_opt.which_Comparison.comparison_list", sep = "\n", header = FALSE), use.names = FALSE),
+		                which.Comparison = unlist(read.table("$group.comparison_plots_opt.comparison_vis_options.which_Comparison.comparison_list", sep = "\n", header = FALSE), use.names = FALSE),
 		                #end if
 		                address="MSStats_group_")
 
@@ -353,7 +365,7 @@
             </when>
             <when value="MaxQuant">
                 <param name="evidence" type="data" format="tabular,csv" label="evidence.txt - feature-level data"/>
-                <param name="proteinGroups" type="data" format="tabular,csv" optional="True" label="proteinGroups.txt - protein-level data" help="It needs to match protein group ID. If not selected use Proteins in 'evidence.txt'"/>
+                <param name="proteinGroups" type="data" format="tabular,csv" label="proteinGroups.txt - protein-level data" help="It needs to match protein group ID. If not selected use Proteins in 'evidence.txt'"/>
                 <param name="annotation" type="data" format="tabular,csv" label="annotation file" help="Columns: Raw.file, Condition (the name of the condition is not allowed to start with a number or contain any special characters.), BioReplicate, Run, IsotopeLabelType information"/>
 
                 <param name="proteinID" type="select" label="Select Protein ID in evidence.txt">
@@ -407,7 +419,18 @@
 	    </when>
             </conditional>
 
-        <section name="dp_options" title="dataProcess Options" expanded="false">
+        <section name="dp_options" title="dataProcess Options" expanded="true">
+            <param name="selected_outputs" type="select" display="checkboxes" multiple="true" label="Select outputs">
+		<option value="log" selected="true">MSstats log</option>
+		<option value="r_script" selected="false">MSstats Rscript</option>
+		<option value="raw_data" selected="true">MSstats RawData</option>
+		<option value="processed_data" selected="true">MSstats ProcessedData</option>
+		<option value="runlevel_data" selected="false">MSstats RunlevelData</option>
+		<option value="quant_sample_matrix" selected="false">Sample Quantification Matrix Table</option>
+		<option value="quant_sample_long" selected="false">Sample Quantification Long Table</option>
+		<option value="quant_group_matrix" selected="true">Group Quantification Matrix Table</option>
+		<option value="quant_group_long" selected="false">Group Quantification Long Table</option>
+	    </param>
             <param name="logTrans" type="select" label="logarithm transformation of intensities with base 2 or 10." help="Intensities for original intensity between 0 and 1 will be replaced with zero value after normalization.">
                 <option value="2" selected="true">2</option>
                 <option value="10">10</option>
@@ -456,11 +479,11 @@
                     <param name="remove50missing" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false" label="Remove runs which have more than 50% missing values"/>
                 </when>
                 <when value="linear">
-                    <param name="equalFeatureVar" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false" label="Account for heterogeneous variation among intensities from different features" help="Yes: assumes equal variance among intensities from features. No: means that we cannot assume equal variance among intensities from features, then we will account for heterogeneous variation from different features"/>
+                    <param name="equalFeatureVar" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="true" label="Account for heterogeneous variation among intensities from different features" help="Yes: assumes equal variance among intensities from features. No: means that we cannot assume equal variance among intensities from features, then we will account for heterogeneous variation from different features"/>
                 </when>
             </conditional>
             <param name="censoredInt" type="select" label="Censored intensity">
-                <help>The processing tools report missing values differently. This option is for distinguishwhich value should be considered as missing, and further whether it is censored or at random. Skyline and OpenSWATH input should use '0'. MaxQuant input should use 'NA'</help>
+                <help>The processing tools report missing values differently. This option is for distinguish which value should be considered as missing, and further whether it is censored or at random. Skyline and OpenSWATH input should use '0'. MaxQuant input should use 'NA'</help>
                 <option value="NA" selected="true">NA - Assume that all 'NA's in 'Intensity' column are censored</option>
                 <option value="0">0 - Use zero intensities '0' as censored intensity</option>
                 <option value="NULL">NULL - Assume all NA intensites are randomly missing</option>
@@ -470,45 +493,16 @@
                 <option value="minRun">minimum value for each run</option>
                 <option value="minFeatureNRun">smallest between minimum value of corresponding feature and minimum value of corresponding run</option>
             </param>
-            <param name="maxQuantileforCensored" type="float" value="0.999" min="0" max="1.0" label="Maximum quantile for deciding censored missing values."/>
-        </section>
-        <param name="selected_outputs" type="select" multiple="true" optional="false" label="Select outputs">
-            <option value="log" selected="true">MSstats log</option>
-            <option value="r_script" selected="false">MSstats Rscript</option>
-            <option value="processed_data" selected="true">MSstats ProcessedData</option>
-            <option value="runlevel_data" selected="false">MSstats RunlevelData</option>
-            <option value="QCPlot" selected="true">MSstats QCPlot</option>
-            <option value="ProfilePlot" selected="false">MSstats ProfilePlot</option>
-            <option value="profile_wsum_plot" selected="false">MSstats ProfilePlot_wSummarization</option>
-            <option value="ConditionPlot" selected="false">MSstats ConditionPlot</option>
-            <option value="quant_sample_matrix" selected="false">Sample Quantification Matrix Table</option>
-            <option value="quant_sample_long" selected="false">Sample Quantification Long Table</option>
-            <option value="quant_group_matrix" selected="true">Group Quantification Matrix Table</option>
-            <option value="quant_group_long" selected="false">Group Quantification Long Table</option>
-        </param>
-        <section name="out_plots_opt" title="DataProcess Plot Options" expanded="false">
-            <param name="featureName" type="select" display="radio" label="Feature name for Profile Plot" help="Transition means printing feature legend intransition-level; Peptide means printing feature legend in peptide-level; NA means no feature legend printing.">
-                <option value="Transition" selected="true">Transition</option>
-                <option value="Peptide">Peptide</option>
-                <option value="NA">NA</option>
-            </param>
-             <param name="ylimUp" type="float" optional="true" label="For all three plots, upper limit for y-axis." help="Empty (default) for Profile Plot and QC Plot uses the upper limit as rounded off maximum of log2(intensities) after normalization + 3; for Condition Plot maximum of log ratio + SD or CI. Alternatively, insert specific value of y-axis limit."/>
-            <param name="ylimDown" type="float" optional="true" label="For all tree plots, lower limit for y-axis in the log scale" help="Empty (default) for Profile Plot and QCPlot uses 0; for Condition Plot is minimum of log ratio - SD or CI. Alternatively, insert specific value of lower y-axis limit.  "/>
-
-            <param name="scale" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false" label="Scale for Condition Plot" help=" No (Default) means each conditional level is not scaled  at  x-axis according to its actual value (equal space at x-axis). Yes means each conditional level is scaled at x-axis according to its actual value (unequal space at x-axis)."/>
-            <param name="interval" type="select" display="radio" label="Interval for Condition Plot" help="CI (default) uses confidence interval with 0.95 significant level for the width of error bar. SD uses standard deviation for the width of error bar.">
-                <option value="CI" selected="true">CI - confidence interval</option>
-                <option value="SD">SD - standard deviation</option>
-            </param>
-            <param name="x_axis_size" type="integer" min="1" value="10" label="Size of x-axis labeling for 'Run' in Profile Plot and QC Plot, and 'Condition' in Condition Plot"/>
-            <param name="y_axis_size" type="integer" min="1" value="10" label="Size of y-axis labeling"/>
-            <param name="text_size" type="integer" min="1" value="4" label="Size of labeling for feature names in normal QQPlots separately for each feature and size of labels represented each condition at the top of graph in Profile Plot and QC plot."/>
-            <param name="text_angle" type="integer" min="0" max="360" value="90" label="Angle of labels represented each condition at the top of graph in Profile Plot and QC plot or x-axis labeling in Condition plot."/>
-            <param name="legend_size" type="integer" min="1" value="7" label="Size of  feature names in residual plots and feature legend (transition-level or peptide-level) above graph in Profile Plot. "/>
-            <param name="dot_size_profile" type="integer" min="1" value="2" label="Size of dots in Profile plot"/>
-            <param name="dot_size_condition" type="integer" min="1" value="3" label="Size of dots in Condition plot"/>
-            <param name="width" type="integer" min="1" value="8" label="Width of the saved pdf file"/>
-            <param name="height" type="integer" min="1" value="5" label="Height of the saved pdf file"/>
+            <param name="maxQuantileforCensored" type="float" optional="true" value="0.999" min="0" max="1.0" label="Maximum quantile for deciding censored missing values." help="If you don't want to apply the threshold of noise intensity in your data, remove the value (empty field)"/>
+            
+            
+            <section name="out_plots_opt" title="DataProcess Plot Options" expanded="false">
+            <param name="selected_vis_outputs" type="select" display="checkboxes" multiple="true" label="Select visualization outputs">
+                <option value="QCPlot" selected="false">MSstats QCPlot</option>
+                <option value="ProfilePlot" selected="false">MSstats ProfilePlot</option>
+                <option value="profile_wsum_plot" selected="false">MSstats ProfilePlot_wSummarization</option>
+                <option value="ConditionPlot" selected="false">MSstats ConditionPlot</option>
+            </param>            
             <conditional name="which_Protein">
                 <param name="select" type="select" label="Select protein IDs to draw plots">
                     <option value="all" selected="true">generate all plots for each protein</option>
@@ -521,8 +515,36 @@
                     <param name="protein_list" type="data" format="tabular" label="List of proteins"/>
                 </when>
             </conditional>
-            <param name="remove_uninformative_feature_outlier" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false" label="Remove uninformative feature outlier in profile plots" help="It only works after  when feature subset high Quality was used in dataProcess options. Yes allows to remove 1) the features are flagged in the column, feature_quality=Uninformative which are features with bad quality, 2) outliers that are flagged in the column, is_outlier=TRUE in profile plots. No (default) shows all features and intensities in profile plots."/>
-        </section>
+            <param name="width" type="integer" min="1" value="8" label="Width of the saved pdf file"/>
+            <param name="height" type="integer" min="1" value="5" label="Height of the saved pdf file"/>
+
+                <section name="proc_plots_advanced" title="Advanced visualization parameters" expanded="false">
+            	<param name="featureName" type="select" display="radio" label="Feature name for Profile Plot" help="Transition means printing feature legend intransition-level; Peptide means printing feature legend in peptide-level; NA means no feature legend printing.">
+                    <option value="Transition" selected="true">Transition</option>
+                    <option value="Peptide">Peptide</option>
+                    <option value="NA">NA</option>
+            	</param>
+             	<param name="ylimUp" type="float" optional="true" label="For all three plots, upper limit for y-axis." help="Empty (default) for Profile Plot and QC Plot uses the upper limit as rounded off maximum of log2(intensities) after normalization + 3; for Condition Plot maximum of log ratio + SD or CI. Alternatively, insert specific value of y-axis limit."/>
+            	<param name="ylimDown" type="float" optional="true" label="For all three plots, lower limit for y-axis in the log scale" help="Empty (default) for Profile Plot and QCPlot uses 0; for Condition Plot is minimum of log ratio - SD or CI. Alternatively, insert specific value of lower y-axis limit.  "/>
+
+            	<param name="scale" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false" label="Scale for Condition Plot" help=" No (Default) means each conditional level is not scaled  at  x-axis according to its actual value (equal space at x-axis). Yes means each conditional level is scaled at x-axis according to its actual value (unequal space at x-axis)."/>
+            	<param name="interval" type="select" display="radio" label="Interval for Condition Plot" help="CI (default) uses confidence interval with 0.95 significant level for the width of error bar. SD uses standard deviation for the width of error bar.">
+                    <option value="CI" selected="true">CI - confidence interval</option>
+                    <option value="SD">SD - standard deviation</option>
+            	</param>
+            	<param name="x_axis_size" type="integer" min="1" value="10" label="Size of x-axis labeling for 'Run' in Profile Plot and QC Plot, and 'Condition' in Condition Plot"/>
+            	<param name="y_axis_size" type="integer" min="1" value="10" label="Size of y-axis labeling"/>
+            	<param name="text_size" type="integer" min="1" value="4" label="Size of labeling for feature names in normal QQPlots separately for each feature and size of labels represented each condition at the top of graph in Profile Plot and QC plot."/>
+            	<param name="text_angle" type="integer" min="0" max="360" value="90" label="Angle of labels represented each condition at the top of graph in Profile Plot and QC plot or x-axis labeling in Condition plot."/>
+            	<param name="legend_size" type="integer" min="1" value="7" label="Size of  feature names in residual plots and feature legend (transition-level or peptide-level) above graph in Profile Plot. "/>
+            	<param name="dot_size_profile" type="integer" min="1" value="2" label="Size of dots in Profile plot"/>
+            	<param name="dot_size_condition" type="integer" min="1" value="3" label="Size of dots in Condition plot"/>
+
+            	<param name="remove_uninformative_feature_outlier" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="false" label="Remove uninformative feature outlier in profile plots" help="It only works after  when feature subset high Quality was used in dataProcess options. Yes allows to remove 1) the features are flagged in the column, feature_quality=Uninformative which are features with bad quality, 2) outliers that are flagged in the column, is_outlier=TRUE in profile plots. No (default) shows all features and intensities in profile plots."/>
+            	</section>
+            </section>
+        </section>        
+        
         <conditional name="group">
             <param name="group_comparison" type="select" label="Compare Groups">
                 <option value="no">No</option>
@@ -531,147 +553,156 @@
             <when value="no"/>
             <when value="yes">
                 <param name="comparison_matrix" type="data" format="tabular,csv" label="Comparison Matrix"/>
-                <param name="select_outputs" type="select" multiple="true" label="Select outputs">
-                    <help>Heatmap requires more than one comparison</help>
+                <param name="select_outputs" type="select" display="checkboxes" multiple="true" label="Select outputs">
+                    <option value="comparison_result" selected="true">MSstats ComparisonResult.tsv</option>
                     <option value="fittedmodel" selected="false">MSstats ComparisonFittedModel.txt</option>
-                    <option value="comparison_result" selected="true">MSstats ComparisonResult.tsv</option>
                     <option value="model_qc" selected="false">MSstats ModelQC.tsv</option>
+                </param>
+
+		<section name="comparison_plots_opt" title="Comparison Visualization Options" expanded="false">
+                <param name="select_comparison_plots" type="select" display="checkboxes" multiple="true" label="Select visualization outputs">   
+                    <option value="VolcanoPlot" selected="false">MSstats VolcanoPlot</option> 
+                    <option value="ComparisonPlot" selected="false">MSstats ComparisonPlot</option>                             
                     <option value="QQPlots" selected="false">MSstats QQPlot</option>
                     <option value="ResidualPlots" selected="false">MSstats ResidualPlot</option>
-                    <option value="VolcanoPlot" selected="true">MSstats VolcanoPlot</option>
-                    <option value="Heatmap" selected="false">MSstats Heatmap</option>
-                    <option value="ComparisonPlot" selected="true">MSstats ComparisonPlot</option>
+                    <option value="Heatmap" selected="false">MSstats Heatmap (only possible for at least 2 comparisons)</option>
                 </param>
+                <param name="width" type="integer" min="1" value="8" label="Width of the saved pdf file"/>
+		<param name="height" type="integer" min="1" value="5" label="Height of the saved pdf file"/>
+		    <conditional name="which_Protein">
+			<param name="select" type="select" label="Select protein IDs to draw plots">
+			    <option value="all" selected="true">generate all plots for each protein</option>
+			    <option value="list">Protein IDs as tabular input</option>
+			</param>
+			<when value="all"/>
+			<when value="list">
+			    <param name="protein_list" type="data" format="tabular" label="List of proteins"/>
+			</when>
+		    </conditional>
+                
+		<section name="comparison_vis_options" title="Advanced visualization parameters">
+
+			<param name="sig" type="float" min="0" max="1" value="0.05" label="FDR cutoff for the adjusted p-values in heatmap and volcano plot" help="Level of significance for comparison plot. 100(1-sig)% confidence interval will be drawn."/>
+			<param name="FCcutoff" type="float" optional="true" label="Involve fold change cutoff or not for volcano plot or heatmap." help="Empty (default) means no fold change cutoff is applied for significance analysis. Specific value means specific fold change cutoff is applied"/>
+			<param name="logBase_pvalue" type="select" label="For volcano plot or heatmap, logarithm transformation of adjusted p-valuewith base 2 or 10">
+			    <option value="2">2</option>
+			    <option value="10" selected="true">10</option>
+			</param>
+			<param name="ylimUp" type="float" optional="true" label="For all three plots, upper limit for y-axis." help="Empty (default) for volcano plot/heatmap use maximum of -log2 (adjusted p-value) or -log10 (adjusted p-value), for comparison plot uses maximum of log-fold change + CI. Alternatively, insert specific value of y-axis limit. "/>
+			<param name="ylimDown" type="float" optional="true" label="For all tree plots, lower limit for y-axis in the log scale" help="Empty (default) for volcano plot/heatmap use minimum of -log2 (adjusted p-value) or -log10 (adjusted p-value), for comparison plot uses minimum of log-fold change - CI. Alternatively, insert specific value of y-axis limit.  "/>
+			<param name="xlimUp" type="float" optional="true" label="For Volcano plot, the limit for x-axis" help="Empty (default) for use maximum for absolute value of log-fold change or 3 as default if maximum for absolute value of log-fold change is less than 3. Alternatively, insert specific value of y-axis limit."/>
+			<param name="axis_size" type="integer" min="1" value="10" label="Size of axes labels for Residual and QQ Plots"/>
+			<param name="x_axis_size" type="integer" min="1" value="10" label="Size of x-axis labeling"/>
+			<param name="y_axis_size" type="integer" min="1" value="10" label="Size of y-axis labeling"/>
+			<param name="dot_size" type="integer" min="1" value="3" label="Size of dots in residual plots, QQPlots, volcano plot and comparison plot."/>
+			<param name="text_size" type="integer" min="1" value="4" label="Size  of Protein Name label in the graph for Volcano Plot."/>
+			<param name="text_angle" type="integer" min="0" max="360" value="90" label="Angle of x-axis labels represented each comparison at the bottom of graph incomparison plot."/>
+			<param name="legend_size" type="integer" min="1" value="7" label="Size of legend for color at the bottom of volcano plot. "/>
+			<param name="ProteinName" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="true" label="Display protein names in Volcano Plot." help="Yes (default) means protein names, which are significant, are displayed next to the points. No means no protein names are displayed."/>
+			<param name="colorkey" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="true" label="Show colour key"/>
+			<param name="numProtein" type="integer" min="1" value="100" max="180" label="Number of proteins which will be presented in each heatmap."/>
+			<param name="clustering" type="select" label="Determines how to order proteins and comparisons. Hierarchical cluster analysis with Ward method(minimum variance) is performed.">
+			   	<help>’protein’ means that protein dendrogram is computed and reordered based on protein means (the order of row is changed). ’comparison’ means comparison dendrogram is computed and reordered based on comparison means (the order of comparison is changed). ’both’ means to reorder both protein and comparison.</help>
+				<option value="protein" selected="true">protein</option>
+				<option value="comparison">comparison</option>
+				<option value="both">both</option>
+			</param>
+			    <conditional name="which_Comparison">
+				<param name="select" type="select" label="Select comparisons to draw plots">
+				    <option value="all" selected="true">Generate all plots for each comparison</option>
+				    <option value="list">Comparison names as tabular input</option>
+				</param>
+				<when value="all"/>
+				<when value="list">
+				    <param name="comparison_list" type="data" format="tabular" label="List of comparisons"/>
+				</when>
+			    </conditional>
+		    </section>	
+		</section>	
             </when>
         </conditional>
-            <section name="comparison_plots_opt" title="Comparison Plot Options" expanded="false">
-            <param name="sig" type="float" min="0" max="1" value="0.05" label="FDR cutoff for the adjusted p-values in heatmap and volcano plot" help="Level of significance for comparison plot. 100(1-sig)% confidence interval will be drawn."/>
-            <param name="FCcutoff" type="float" optional="true" label="Involve fold change cutoff or not for volcano plot or heatmap." help="Empty (default) means no fold change cutoff is applied for significance analysis. Specific value means specific fold change cutoff is applied"/>
-            <param name="logBase_pvalue" type="select" label="For volcano plot or heatmap, logarithm transformation of adjusted p-valuewith base 2 or 10">
-                <option value="2">2</option>
-                <option value="10" selected="true">10</option>
-            </param>
-            <param name="ylimUp" type="float" optional="true" label="For all three plots, upper limit for y-axis." help="Empty (default) for volcano plot/heatmap use maximum of -log2 (adjusted p-value) or -log10 (adjusted p-value), for comparison plot uses maximum of log-fold change + CI. Alternatively, insert specific value of y-axis limit. "/>
-            <param name="ylimDown" type="float" optional="true" label="For all tree plots, lower limit for y-axis in the log scale" help="Empty (default) for volcano plot/heatmap use minimum of -log2 (adjusted p-value) or -log10 (adjusted p-value), for comparison plot uses minimum of log-fold change - CI. Alternatively, insert specific value of y-axis limit.  "/>
-            <param name="xlimUp" type="float" optional="true" label="For Volcano plot, the limit for x-axis" help="Empty (default) for use maximum for absolute value of log-fold change or 3 as default if maximum for absolute value of log-fold change is less than 3. Alternatively, insert specific value of y-axis limit."/>
-            <param name="axis_size" type="integer" min="1" value="10" label="Size of axes labels for Residual and QQ Plots"/>
-            <param name="x_axis_size" type="integer" min="1" value="10" label="Size of x-axis labeling"/>
-            <param name="y_axis_size" type="integer" min="1" value="10" label="Size of y-axis labeling"/>
-            <param name="dot_size" type="integer" min="1" value="3" label="Size of dots in residual plots, QQPlots, volcano plot and comparison plot."/>
-            <param name="text_size" type="integer" min="1" value="4" label="Size  of Protein Name label in the graph for Volcano Plot."/>
-            <param name="text_angle" type="integer" min="0" max="360" value="90" label="Angle of x-axis labels represented each comparison at the bottom of graph incomparison plot."/>
-            <param name="legend_size" type="integer" min="1" value="7" label="Size of legend for color at the bottom of volcano plot. "/>
-            <param name="ProteinName" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="true" label="Display protein names in Volcano Plot." help="Yes (default) means protein names, which are significant, are displayed next to the points. No means no protein names are displayed."/>
-            <param name="colorkey" type="boolean" truevalue="TRUE" falsevalue="FALSE" checked="true" label="Show colour key"/>
-            <param name="numProtein" type="integer" min="1" value="100" max="180" label="Number of proteins which will be presented in each heatmap."/>
-            <param name="clustering" type="select" label="Determines how to order proteins and comparisons. Hierarchical cluster analysis with Ward method(minimum variance) is performed.">
-            	<help>’protein’ means that protein dendrogram is computed and reordered based on protein means (the order of row is changed). ’comparison’ means comparison dendrogram is computed and reordered based on comparison means (the order of comparison is changed). ’both’ means to reorder both protein and comparison.</help>
-                <option value="protein" selected="true">protein</option>
-                <option value="comparison">comparison</option>
-                <option value="both">both</option>
-            </param>
-            <param name="width" type="integer" min="1" value="8" label="Width of the saved pdf file"/>
-            <param name="height" type="integer" min="1" value="5" label="Height of the saved pdf file"/>
-            <conditional name="which_Protein">
-                <param name="select" type="select" label="Select protein IDs to draw plots">
-                    <option value="all" selected="true">generate all plots for each protein</option>
-                    <option value="list">Protein IDs as tabular input</option>
-                </param>
-                <when value="all"/>
-                <when value="list">
-                    <param name="protein_list" type="data" format="tabular" label="List of proteins"/>
-                </when>
-            </conditional>
-            <conditional name="which_Comparison">
-                <param name="select" type="select" label="Select comparisons to draw plots">
-                    <option value="all" selected="true">Generate all plots for each comparison</option>
-                    <option value="list">Comparison names as tabular input</option>
-                </param>
-                <when value="all"/>
-                <when value="list">
-                    <param name="comparison_list" type="data" format="tabular" label="List of comparisons"/>
-                </when>
-            </conditional>
-        </section>
     </inputs>
     <outputs>
         <data name="log" format="txt" label="${tool.name} on ${on_string}: MSstats log">
-            <filter>'log' in selected_outputs</filter>
+            <filter>'log' in in dp_options['selected_outputs']</filter>
         </data>
         <data name="r_script" format="txt" label="${tool.name} on ${on_string}: Rscript">
-            <filter>'r_script' in selected_outputs</filter>
+            <filter>'r_script' in dp_options['selected_outputs']</filter>
+        </data>
+        <data name="raw_data" format="tabular" label="${tool.name} on ${on_string}: RawData" from_work_dir="raw.tsv">
+            <filter>'raw_data' in dp_options['selected_outputs']</filter>
         </data>
         <data name="processed_data" format="tabular" label="${tool.name} on ${on_string}: ProcessedData" from_work_dir="ProcessedData.tsv">
-            <filter>'processed_data' in selected_outputs</filter>
-            <actions>
+            <filter>'processed_data' in dp_options['selected_outputs']</filter>
+            <!--actions>
                 <action name="column_names" type="metadata" default="PROTEIN,PEPTIDE,TRANSITION,FEATURE,LABEL,GROUP_ORIGINAL,SUBJECT_ORIGINAL,RUN,GROUP,SUBJECT,INTENSITY,SUBJECT_NESTED,ABUNDANCE,FRACTION,originalRUN,censored" />
-            </actions>
+            </actions-->
         </data>
         <data name="runlevel_data" format="tabular" label="${tool.name} on ${on_string}: RunlevelData" from_work_dir="RunlevelData.tsv">
-            <filter>'runlevel_data' in selected_outputs</filter>
-            <actions>
+            <filter>'runlevel_data' in dp_options['selected_outputs']</filter>
+            <!--actions>
                <action name="column_names" type="metadata" default="RUN,Protein,LogIntensities,NumMeasuredFeature,MissingPercentage,more50missing,NumImputedFeature,originalRUN,GROUP,GROUP_ORIGINAL,SUBJECT_ORIGINAL,SUBJECT_NESTED,SUBJECT" />
-            </actions>
+            </actions-->
         </data>
         <data name="QCPlot" format="pdf" label="${tool.name} on ${on_string}: QCPlot" from_work_dir="MSStats_only_QCPlot.pdf">
-            <filter>'QCPlot' in selected_outputs</filter>
+            <filter>dp_options['out_plots_opt']['selected_vis_outputs'] and 'QCPlot' in dp_options['out_plots_opt']['selected_vis_outputs']</filter>
         </data>
         <data name="ProfilePlot" format="pdf" label="${tool.name} on ${on_string}: Profile Plot" from_work_dir="MSStats_only_ProfilePlot.pdf">
-            <filter>'ProfilePlot' in selected_outputs</filter>
+            <filter>dp_options['out_plots_opt']['selected_vis_outputs'] and 'ProfilePlot' in dp_options['out_plots_opt']['selected_vis_outputs']</filter>
         </data>
         <data name="profile_wsum_plot" format="pdf" label="${tool.name} on ${on_string}: Profile Plot with Summarization" from_work_dir="MSStats_only_ProfilePlot_wSummarization.pdf">
-            <filter>'profile_wsum_plot' in selected_outputs</filter>
+            <filter>dp_options['out_plots_opt']['selected_vis_outputs'] and 'profile_wsum_plot' in dp_options['out_plots_opt']['selected_vis_outputs']</filter>
         </data>
         <data name="ConditionPlot" format="pdf" label="${tool.name} on ${on_string}: Condition Plot" from_work_dir="MSStats_only_ConditionPlot.pdf">
-            <filter>'ConditionPlot' in selected_outputs</filter>
+            <filter>dp_options['out_plots_opt']['selected_vis_outputs'] and 'ConditionPlot' in dp_options['out_plots_opt']['selected_vis_outputs']</filter>
         </data>
         <data name="quant_sample_matrix" format="tabular" label="${tool.name} on ${on_string}: Sample Quantification Matrix" from_work_dir="SampleQuantificationMatrix.tsv">
-            <filter>'quant_sample_matrix' in selected_outputs</filter>
+            <filter>'quant_sample_matrix' in dp_options['selected_outputs']</filter>
         </data>
         <data name="quant_sample_long" format="tabular" label=" ${tool.name} on ${on_string}:Sample Quantification Long" from_work_dir="SampleQuantificationLong.tsv">
-            <filter>'quant_sample_long' in selected_outputs</filter>
-            <actions>
+            <filter>'quant_sample_long' in dp_options['selected_outputs']</filter>
+            <!--actions>
                 <action name="column_names" type="metadata" default="Protein,Group_Subject,LogIntensity" />
-            </actions>
+            </actions-->
         </data>
         <data name="quant_group_matrix" format="tabular" label="${tool.name} on ${on_string}: Group Quantification Matrix" from_work_dir="GroupQuantificationMatrix.tsv">
-            <filter>'quant_group_matrix' in selected_outputs</filter>
+            <filter>'quant_group_matrix' in dp_options['selected_outputs']</filter>
         </data>
         <data name="quant_group_long" format="tabular" label="${tool.name} on ${on_string}: Group Quantification Long" from_work_dir="GroupQuantificationLong.tsv">
-            <filter>'quant_group_long' in selected_outputs</filter>
-            <actions>
+            <filter>'quant_group_long' in dp_options['selected_outputs']</filter>
+            <!--actions>
                 <action name="column_names" type="metadata" default="Protein,Group,LogIntensity" />
-            </actions>
+            </actions-->
         </data>
         <data name="comparison_result" format="tabular" label="${tool.name} on ${on_string}: Comparison Result" from_work_dir="ComparisonResult.tsv">
             <filter> group['group_comparison'] == 'yes' and 'comparison_result' in group['select_outputs']</filter>
-            <actions>
+            <!--actions>
                 <action name="column_names" type="metadata" default="Protein,Label,log2FC,SE,Tvalue,DF,pvalue,adj.pvalue,issue,MissingPercentage,ImputationPercentage" />
-            </actions>
+            </actions-->
         </data>
         <data name="fittedmodel" format="txt" label="${tool.name} on ${on_string}: Comparison Fitted Model" from_work_dir="ComparisonFittedModel.txt">
             <filter> group['group_comparison'] == 'yes' and 'fittedmodel' in group['select_outputs']</filter>
         </data>
         <data name="model_qc" format="tabular" label="${tool.name} on ${on_string}: Model QC" from_work_dir="ModelQC.tsv">
             <filter> group['group_comparison'] == 'yes' and 'model_qc' in group['select_outputs']</filter>
-            <actions>
+            <!--actions>
                 <action name="column_names" type="metadata" default="RUN,PROTEIN,ABUNDANCE,NumMeasuredFeature,MissingPercentage,more50missing,NumImputedFeature,originalRUN,GROUP,GROUP_ORIGINAL,SUBJECT_ORIGINAL,SUBJECT_NESTED,SUBJECT,residuals,fitted" />
-            </actions>
+            </actions-->
         </data>
         <data name="QQPlots" format="pdf" label="${tool.name} on ${on_string}: Model QQ" from_work_dir="MSStats_group_QQPlot.pdf">
-            <filter> group['group_comparison'] == 'yes' and 'QQPlots' in group['select_outputs']</filter>
+            <filter> group['group_comparison'] == 'yes' and group['comparison_plots_opt']['select_comparison_plots'] and 'QQPlots' in group['comparison_plots_opt']['select_comparison_plots']</filter>
         </data>
         <data name="ResidualPlots" format="pdf" label="${tool.name} on ${on_string}: Residual Plot" from_work_dir="MSStats_group_ResidualPlot.pdf">
-            <filter> group['group_comparison'] == 'yes' and 'ResidualPlots' in group['select_outputs']</filter>
+            <filter> group['group_comparison'] == 'yes' and group['comparison_plots_opt']['select_comparison_plots'] and 'ResidualPlots' in group['comparison_plots_opt']['select_comparison_plots']</filter>
         </data>
         <data name="VolcanoPlot" format="pdf" label="${tool.name} on ${on_string}:Volcano Plot" from_work_dir="MSStats_group_VolcanoPlot.pdf">
-            <filter> group['group_comparison'] == 'yes' and 'VolcanoPlot' in group['select_outputs']</filter>
+            <filter> group['group_comparison'] == 'yes' and group['comparison_plots_opt']['select_comparison_plots'] and 'VolcanoPlot' in group['comparison_plots_opt']['select_comparison_plots']</filter>
         </data>
         <data name="Heatmap" format="pdf" label="${tool.name} on ${on_string}: Heatmap" from_work_dir="MSStats_group_Heatmap.pdf">
-            <filter> group['group_comparison'] == 'yes' and 'Heatmap' in group['select_outputs']</filter>
+            <filter> group['group_comparison'] == 'yes' and group['comparison_plots_opt']['select_comparison_plots'] and 'Heatmap' in group['comparison_plots_opt']['select_comparison_plots']</filter>
         </data>
         <data name="ComparisonPlot" format="pdf" label="${tool.name} on ${on_string}: Comparison Plot" from_work_dir="MSStats_group_ComparisonPlot.pdf">
-            <filter> group['group_comparison'] == 'yes' and 'ComparisonPlot' in group['select_outputs']</filter>
+            <filter> group['group_comparison'] == 'yes' and group['comparison_plots_opt']['select_comparison_plots'] and 'ComparisonPlot' in group['comparison_plots_opt']['select_comparison_plots']</filter>
         </data>
     </outputs>
     <tests>
@@ -680,7 +711,8 @@
                 <param name="input_src" value="MSstats"/>
                 <param name="msstats_input" ftype="csv" value="msstats_testfile.txt"/>
             </conditional>
-            <param name="selected_outputs" value="processed_data,ProfilePlot,profile_wsum_plot,quant_sample_matrix,quant_group_long"/>
+            <param name="selected_outputs" value="raw_data,processed_data,quant_sample_matrix,quant_group_long"/>
+            <param name="selected_vis_outputs" value="ProfilePlot,profile_wsum_plot"/>
             <output name="processed_data">
                 <assert_contents>
                     <has_text text="D.GPLTGTYR" />
@@ -715,7 +747,8 @@
             <param name="group_comparison" value="yes"/>
             <param name="comparison_matrix" ftype="csv" value="comparison_matrix.csv"/>
             </conditional>
-            <param name="select_outputs" value="ResidualPlots,model_qc"/>
+            <param name="select_outputs" value="model_qc"/>
+            <param name="select_comparison_plots" value="ResidualPlots"/>
             <output name="processed_data">
                 <assert_contents>
                     <has_text text="D.GPLTGTYR" />
@@ -740,12 +773,14 @@
                 <param name="annotation" ftype="tabular" value="test_MQ_annotation.txt"/>
                 <param name="proteinGroups" ftype="tabular" value="test_MQ_proteingroups.tabular"/>
             </conditional>
-            <param name="selected_outputs" value="ConditionPlot,processed_data,runlevel_data"/>
+            <param name="selected_outputs" value="processed_data,runlevel_data"/>
+            <param name="selected_vis_outputs" value="ConditionPlot"/>
             <conditional name="group">
                 <param name="group_comparison" value="yes"/>
                 <param name="comparison_matrix" ftype="csv" value="test_MQ_group12_comparison_matrix.csv"/>
             </conditional>
-            <param name="select_outputs" value="QQPlots,comparison_result"/>
+            <param name="select_outputs" value="comparison_result"/>
+            <param name="select_comparison_plots" value="QQPlots"/>
             <output name="processed_data">
                 <assert_contents>
                     <has_text text="SPILVATAVAAR" />
@@ -776,12 +811,13 @@
                 <param name="input_src" value="OpenMS"/>
                 <param name="openms_input" ftype="tabular" value="openms_input.tabular"/>
             </conditional>
-            <param name="selected_outputs" value="ConditionPlot,processed_data,runlevel_data"/>
+            <param name="selected_outputs" value="processed_data,runlevel_data"/>
+            <param name="selected_vis_outputs" value="ConditionPlot"/>
             <conditional name="group">
                 <param name="group_comparison" value="yes"/>
                 <param name="comparison_matrix" ftype="tabular" value="openms_comparisonmatrix.tabular"/>
-            	<param name="select_outputs" value="Heatmap"/>
             </conditional>
+            <param name="select_comparison_plots" value="Heatmap"/>
             <output name="processed_data">
                 <assert_contents>
                     <has_text text="AAAPGIQLVAGEGFQSPLEDR_2_NA_0" />
@@ -811,20 +847,26 @@
                  <param name="MBimpute" value="FALSE"/>
                  <param name="censoredInt" value="NULL"/>
             </conditional>
-            <param name="selected_outputs" value="log,ProfilePlot,processed_data,quant_sample_long"/>
+            <param name="selected_outputs" value="log,processed_data,quant_sample_long"/>
+            <param name="selected_vis_outputs" value="ProfilePlot"/>
             <param name="featureName" value="Peptide"/>
             <param name="width" value="10"/>
             <param name="height" value="7"/>
             <conditional name="group">
                 <param name="group_comparison" value="yes"/>
                 <param name="comparison_matrix" ftype="tabular" value="comparison_matrix_skyline.tabular"/>
-                <param name="select_outputs" value="VolcanoPlot,ComparisonPlot,comparison_result"/>
             </conditional>
-            <param name="FCcutoff" value="2" />
-	    <conditional name="which_Comparison">
-                <param name="select" value="list"/>
-                <param name="comparison_list" ftype="tabular" value="comparison_list_skyline.tabular"/>
-            </conditional>
+            <section name="comparison_plots_opt">
+		        <param name="select_outputs" value="comparison_result"/>
+	        <param name="select_comparison_plots" value="VolcanoPlot,ComparisonPlot"/>
+	    	<section name="comparison_vis_options">
+	    		<param name="FCcutoff" value="2" />
+	    		<conditional name="which_Comparison">
+	       	 	<param name="select" value="list"/>
+	        		<param name="comparison_list" ftype="tabular" value="comparison_list_skyline.tabular"/>
+	    		</conditional>
+	    	</section>
+            </section>            
             <output name="quant_sample_long">
                 <assert_contents>
                     <has_text text="P32125" />
@@ -866,6 +908,7 @@
                 <param name="openswath_input" ftype="tabular" value="test_swath_input_data.tabular"/>
                 <param name="annotation" ftype="tabular" value="test_swath_annotations.tabular"/>
             </conditional>
+            <param name="selected_vis_outputs" value="QCPlot"/>
             <output name="processed_data">
                 <assert_contents>
                     <has_text text="GETLGLIGFGR" />
@@ -887,7 +930,8 @@
                 <param name="group_comparison" value="yes"/>
                 <param name="comparison_matrix" ftype="csv" value="test_swath_group12_comparison_matrix.csv"/>
             </conditional>
-            <param name="select_outputs" value="comparison_result,VolcanoPlot,ResidualPlots"/>
+            <param name="select_outputs" value="comparison_result"/>
+            <param name="select_comparison_plots" value="VolcanoPlot,ResidualPlots"/>
             <output name="processed_data">
                 <assert_contents>
                     <has_text text="GETLGLIGFGR" />
@@ -960,11 +1004,22 @@
 - Annotations as tabular file are needed for all input options except MSstats format
 
     - 4 columns with exactly these headers: Raw.file, Condition, BioReplicate, Run; additional 5th column only for MaxQuant: IsotopeLabelType
+    - Example file header: 
     
-        - Raw.file:
+          ::
+            
+           Raw.file         Condition      BioReplicate    Run   IsotopeLabelType
+             **              disease           ReplA         1         L      
+             **              disease           ReplA         2         L      
+             **              disease           ReplB         3         L      
+             **              disease           ReplB         4         L      
+             ...               ...              ...         ...      ...     
 
+
+        - Raw.file:
+        
             - OpenSWATH: File name needs to fit exactly how it is written in OpenSwatch output (e.g. "in/AA12_mzML.mzML")
-            - MaxQuant: File name needs to fit to how it is written in MaxQuant output, but the ".raw" has to be removed (e.g. "file1.raw.thermo.raw" --> "file1.raw.thermo")
+            - MaxQuant: File name needs to fit exactly how it is writtein in the evidence.txt "Raw file" column. (e.g. "file1.raw.thermo")
         - Condition: The name of the condition is not allowed to start with a number or contain any special characters
         - All other columns: see description above for MSstats format columns
 
@@ -972,7 +1027,7 @@
 
     - 1st column: name of comparison
     - Additionally one column for each condition that is present in the tabular file. Use 1 and -1 to indicate the conditions to compare and 0 for conditions that are not compared. Multiple groups can be combined by using 0.5.
-    - First row contains the names of the groups, they must exactly match the condition name used in the annotation file
+    - First row contains the names of the groups, they must exactly match the condition name used in the annotation file and every condition must be present, even though it will not be used for any comparison such as G4 in the example below. Order of the condition columns is irrelevant. 
     - Each additional row represents one comparison
     - Example for a two group comparison
     
@@ -988,7 +1043,7 @@
        
           names    G1   G2   G3   G4   G5
           G2-G1    -1    1    0    0    0
-          G4-G5     0    0    0    1   -1
+          G3-G5     0    0    1    0   -1
           G3-G5     0    0   -1    0    1
         G1+G2-G5    0.5  0.5  0    0   -1
 
@@ -1018,14 +1073,15 @@
     - Summarizing intensities per MS run
 
         - TMP: Tukey’s median polish.  Robust parameter estimation method with median across rows and columns. Prerequisite for missing value imputation.
-        - linear: Linear model (lmfunction). Average-based summarization.        
+        - linear: Linear model (lmfunction). Average-based summarization. 
+        
+        	- Account for heterogeneous variation among intensities from different features: Yes: assumes equal variance among intensities from features. No: means that we cannot assume equal variance among intensities from features, then we will account for heterogeneous variation from different features     
         
     - Missing value imputation: 
     
         - Impute Missing Values: Only possible for Summarization Method TMP. Censored missing values will be determined (by censored intensity; cutoff value for censoring and Maximum quantile for deciding censored missing values") and imputed by Accelerated Failure Time model.
 
         - Remove runs which have more than 50% missing values: Yes or no.
-        - Account for heterogeneous variation among intensities from different features: Yes: assumes equal variance among intensities from features. No: means that we cannot assume equal variance among intensities from features, then we will account for heterogeneous variation from different features
         - Censored Intensity: The processing tools report missing values differently. This option is for distinguishwhich value should be considered as missing, and further whether it is censored or at random
 
             - NA - It assumes that all NAs in Intensity column are censored.
@@ -1043,6 +1099,7 @@
         - Summarization method: TMP + censored intensity: 'NULL': It assumes that all intensities are missing at random, therefore no action with missing value imputation: No; or error with missing value imputation: Yes.
         - Missing value imputation: Yes + censored intensity:'NA' or '0': AFT model-based imputation using cutoff value for censoring in the AFT model
         - Missing value imputation: No + censored intensity:'NA' or '0': censored intensities will be replaced with the value specified  in cutoff value for censoring
+        - Missing value imputation: No + censored intensity: NULL: no imputation
 
 - Group comparison: automatic detection of differentially abundant proteins between two conditions, conditions have to be specified with the 'comparison matrix'
 - Quantification per sample or group: choose the corresponding output option
@@ -1057,6 +1114,7 @@
 
     - MSstats log - check log file for warnings and information on the analysis steps (txt)
     - MSstats Rscript - can be used to re-run analysis outside Galaxy or to inspect the executed code (txt)
+    - MSstats RawData - raw files combined into MSstats format (tabular)
     - MSstats ProcessedData - transformed, normalized, imputed intensities (tabular)
 
         - Intensity column:  includes original intensities values
Binary file test-data/Comparison_plot_skyline.pdf has changed
Binary file test-data/Heatmap_openms.pdf has changed
Binary file test-data/MSstats ProfilePlot.pdf has changed
Binary file test-data/Profile_plot_skyline.pdf has changed
Binary file test-data/QC_plot.pdf has changed
Binary file test-data/Volcano_plot_skyline.pdf has changed
Binary file test-data/condition_plot.pdf has changed
Binary file test-data/condition_plot_openms.pdf has changed
Binary file test-data/profile_wsum_plot.pdf has changed
Binary file test-data/qq_plot.pdf has changed
Binary file test-data/residual_plot.pdf has changed
Binary file test-data/residualplot.pdf has changed
Binary file test-data/volcanoplot.pdf has changed