comparison flexynesis_plot.xml @ 3:52b6f2ac38c7 draft default tip

planemo upload for repository https://github.com/bgruening/galaxytools/tree/master/tools/flexynesis commit 6b520305ec30e6dc37eba92c67a5368cea0fc5ad
author bgruening
date Wed, 23 Jul 2025 07:49:52 +0000
parents 3c5d82bf6e8a
children
comparison
equal deleted inserted replaced
2:3c5d82bf6e8a 3:52b6f2ac38c7
8 <include path="flexynesis_plot.py" /> 8 <include path="flexynesis_plot.py" />
9 </required_files> 9 </required_files>
10 <command detect_errors="exit_code"><![CDATA[ 10 <command detect_errors="exit_code"><![CDATA[
11 @CHECK_NON_COMMERCIAL_USE@ 11 @CHECK_NON_COMMERCIAL_USE@
12 mkdir -p inputs/ plots/ && 12 mkdir -p inputs/ plots/ &&
13 ln -s '$plot_conditional.labels' 'inputs/$plot_conditional.labels.element_identifier.$plot_conditional.labels.ext' && 13 #if str($plot_conditional.plot_type) != 'cox_plot':
14 ln -s '$plot_conditional.labels' inputs/labels.tabular &&
15 #end if
14 #if $plot_conditional.plot_type == "dimred": 16 #if $plot_conditional.plot_type == "dimred":
15 ln -s '$plot_conditional.embeddings' 'inputs/$plot_conditional.embeddings.element_identifier.$plot_conditional.embeddings.ext' && 17 ln -s '$plot_conditional.embeddings' inputs/embeddings.tabular &&
16 #end if 18 #end if
17 cat '$flexynesis_plot_config' && 19 #if $plot_conditional.plot_type == "km_plot":
18 python '$flexynesis_plot_config' 20 ln -s '$plot_conditional.survival_data' inputs/survival_data.tabular &&
21 survival_event=`'$__tool_directory__/index_to_name.py' inputs/survival_data.tabular $plot_conditional.surv_event_var` &&
22 ## check if survival variable is numerical
23 echo "Survival event variable: \$survival_event" &&
24 python '$__tool_directory__/flexynesis_utils.py' --util validate_survival --clin inputs/survival_data.tabular --clin_variable \$survival_event &&
25 survival_time=`'$__tool_directory__/index_to_name.py' inputs/survival_data.tabular $plot_conditional.surv_time_var` &&
26 echo "Survival time variable: \$survival_time" &&
27 #end if
28 #if $plot_conditional.plot_type == "cox_plot":
29 ln -s '$plot_conditional.important_features' inputs/important_features.tabular &&
30 ln -s '$plot_conditional.clinical_train' inputs/clinical_train.tabular &&
31 ln -s '$plot_conditional.clinical_test' inputs/clinical_test.tabular &&
32 ln -s '$plot_conditional.omics_train' inputs/omics_train.tabular &&
33 ln -s '$plot_conditional.omics_test' inputs/omics_test.tabular &&
34 survival_event=`'$__tool_directory__/index_to_name.py' inputs/clinical_train.tabular $plot_conditional.surv_event_var` &&
35 ## check if survival variable is numerical
36 echo "Survival event variable: \$survival_event" &&
37 python '$__tool_directory__/flexynesis_utils.py' --util validate_survival --clin inputs/clinical_train.tabular --clin_variable \$survival_event &&
38 survival_time=`'$__tool_directory__/index_to_name.py' inputs/clinical_train.tabular $plot_conditional.surv_time_var` &&
39 echo "Survival time variable: \$survival_time" &&
40 #if str($plot_conditional.clinical_variables) != 'None':
41 covars=`'$__tool_directory__/index_to_name.py' inputs/clinical_train.tabular $plot_conditional.clinical_variables` &&
42 ## check if survival variable is numerical
43 echo "Clinical variables: \$covars" &&
44 python '$__tool_directory__/flexynesis_utils.py' --util validate_covariate --clin inputs/clinical_train.tabular --clin_variable \$covars &&
45 #end if
46 #end if
47 #if $plot_conditional.plot_type == "dimred":
48 ## set target variables
49 color_col=`'$__tool_directory__/index_to_name.py' inputs/labels.tabular $plot_conditional.color` &&
50 echo "Color: \$color_col" &&
51 python '$__tool_directory__/flexynesis_plot.py'
52 --plot_type dimred
53 --embeddings inputs/embeddings.tabular
54 --labels inputs/labels.tabular
55 --method $plot_conditional.method
56 --color \$color_col
57 --output_dir plots
58 --format $plot_conditional.format
59 --dpi $plot_conditional.dpi
60
61 #else if $plot_conditional.plot_type == "scatter":
62 #if $plot_conditional.true_label and $plot_conditional.predicted_label:
63 true_label_col=`'$__tool_directory__/index_to_name.py' inputs/labels.tabular $plot_conditional.true_label` &&
64 echo "True label: \$true_label_col" &&
65 python '$__tool_directory__/flexynesis_utils.py' --util validate_covariate --clin inputs/labels.tabular --clin_variable \$true_label_col &&
66
67 predicted_label_col=`'$__tool_directory__/index_to_name.py' inputs/labels.tabular $plot_conditional.predicted_label` &&
68 echo "Predicted label: \$predicted_label_col" &&
69 python '$__tool_directory__/flexynesis_utils.py' --util validate_covariate --clin inputs/labels.tabular --clin_variable \$predicted_label_col &&
70 #end if
71 python '$__tool_directory__/flexynesis_plot.py'
72 --plot_type scatter
73 --labels inputs/labels.tabular
74 #if $plot_conditional.true_label and $plot_conditional.predicted_label:
75 --true_label \$true_label_col
76 --predicted_label \$predicted_label_col
77 #end if
78 --output_dir plots
79 --format $plot_conditional.format
80 --dpi $plot_conditional.dpi
81 #else if $plot_conditional.plot_type == "concordance_heatmap":
82 #if $plot_conditional.true_label and $plot_conditional.predicted_label:
83 true_label_col=`'$__tool_directory__/index_to_name.py' inputs/labels.tabular $plot_conditional.true_label` &&
84 predicted_label_col=`'$__tool_directory__/index_to_name.py' inputs/labels.tabular $plot_conditional.predicted_label` &&
85 echo "True label: \$true_label_col" &&
86 echo "Predicted label: \$predicted_label_col" &&
87 #end if
88 python '$__tool_directory__/flexynesis_plot.py'
89 --plot_type concordance_heatmap
90 --labels inputs/labels.tabular
91 #if $plot_conditional.true_label and $plot_conditional.predicted_label:
92 --true_label \$true_label_col
93 --predicted_label \$predicted_label_col
94 #end if
95 --output_dir plots
96 --format $plot_conditional.format
97 --dpi $plot_conditional.dpi
98 #else if $plot_conditional.plot_type == "pr_curve":
99 python '$__tool_directory__/flexynesis_plot.py'
100 --plot_type pr_curve
101 --labels inputs/labels.tabular
102 --output_dir plots
103 --format $plot_conditional.format
104 --dpi $plot_conditional.dpi
105 #else if $plot_conditional.plot_type == "roc_curve":
106 python '$__tool_directory__/flexynesis_plot.py'
107 --plot_type roc_curve
108 --labels inputs/labels.tabular
109 --output_dir plots
110 --format $plot_conditional.format
111 --dpi $plot_conditional.dpi
112 #else if $plot_conditional.plot_type == "box_plot":
113 python '$__tool_directory__/flexynesis_plot.py'
114 --plot_type box_plot
115 --labels inputs/labels.tabular
116 --output_dir plots
117 --format $plot_conditional.format
118 --dpi $plot_conditional.dpi
119 #else if $plot_conditional.plot_type == "km_plot":
120 python '$__tool_directory__/flexynesis_plot.py'
121 --plot_type kaplan_meier
122 --labels inputs/labels.tabular
123 --survival_data inputs/survival_data.tabular
124 --surv_event_var \$survival_event
125 --surv_time_var \$survival_time
126 --output_dir plots
127 --format $plot_conditional.format
128 --dpi $plot_conditional.dpi
129 #else if $plot_conditional.plot_type == "cox_plot":
130 python '$__tool_directory__/flexynesis_plot.py'
131 --plot_type cox
132 --important_features inputs/important_features.tabular
133 --clinical_train inputs/clinical_train.tabular
134 --clinical_test inputs/clinical_test.tabular
135 --omics_train inputs/omics_train.tabular
136 --omics_test inputs/omics_test.tabular
137 --layer '$plot_conditional.layer'
138 --surv_time_var \$survival_time
139 --surv_event_var \$survival_event
140 #if str($plot_conditional.clinical_variables) != 'None':
141 --clinical_variables \$covars
142 #end if
143 --top_features $plot_conditional.top_features
144 #if str($plot_conditional.crossval_conditional.crossval) == 'yes':
145 --crossval
146 #end if
147 #if str($plot_conditional.crossval_conditional.crossval) == 'yes':
148 --n_splits $plot_conditional.crossval_conditional.n_splits
149 #end if
150 --random_state 42
151 --output_dir plots
152 --format $plot_conditional.format
153 --dpi $plot_conditional.dpi
154 #end if
19 ]]></command> 155 ]]></command>
20 <configfiles>
21 <configfile name="flexynesis_plot_config"><![CDATA[
22 import sys
23 sys.path.append('$__tool_directory__/')
24
25 import matplotlib.pyplot as plt
26 import numpy as np
27 import pandas as pd
28 import seaborn as sns
29 import torch
30 from flexynesis import (
31 get_important_features,
32 plot_dim_reduced,
33 plot_hazard_ratios,
34 plot_kaplan_meier_curves,
35 plot_pr_curves,
36 plot_roc_curves,
37 plot_scatter
38 )
39 from scipy.stats import kruskal, mannwhitneyu
40 from flexynesis_plot import (
41 plot_label_concordance_heatmap,
42 plot_boxplot,
43 detect_color_type,
44 load_labels,
45 load_embeddings,
46 match_samples_to_embeddings
47 )
48 #if $plot_conditional.plot_type == "dimred":
49 @PLOT_COMMON_CONFIG@
50 embeddings, sample_names = load_embeddings('inputs/$plot_conditional.embeddings.element_identifier.$plot_conditional.embeddings.ext')
51 matched_labels = match_samples_to_embeddings(sample_names, label_data)
52
53 label = matched_labels.columns[$plot_conditional.label-1]
54 color_type = detect_color_type(matched_labels[label])
55
56 fig = plot_dim_reduced(
57 matrix=embeddings,
58 labels=matched_labels[label],
59 method='$plot_conditional.method',
60 color_type=color_type
61 )
62 output_path = "plots/{label}_${plot_conditional.method}.${plot_conditional.format}"
63 fig.save(output_path, dpi=$plot_conditional.dpi, bbox_inches='tight')
64 #else if $plot_conditional.plot_type == "scatter":
65 @PLOT_COMMON_CONFIG@
66
67 true_label = label_data.columns[$plot_conditional.true_label-1]
68 predicted_label = label_data.columns[$plot_conditional.predicted_label-1]
69 true_values = pd.to_numeric(label_data[true_label], errors='coerce')
70 predicted_values = pd.to_numeric(label_data[predicted_label], errors='coerce')
71
72 if true_values.isna().all() or predicted_values.isna().all():
73 raise ValueError("No valid numeric values found for known or predicted labels")
74
75 fig = plot_scatter(true_values, predicted_values)
76
77 output_path = "plots/${plot_conditional.true_label}_${plot_conditional.predicted_label}_scatter.${plot_conditional.format}"
78 fig.save(output_path, dpi=$plot_conditional.dpi, bbox_inches='tight')
79
80 #else if $plot_conditional.plot_type == "concordance_heatmap":
81 @PLOT_COMMON_CONFIG@
82
83 true_label = label_data.columns[$plot_conditional.true_label-1]
84 predicted_label = label_data.columns[$plot_conditional.predicted_label-1]
85
86 true_values = label_data[true_label].tolist()
87 predicted_values = label_data[predicted_label].tolist()
88 fig = plot_label_concordance_heatmap(true_values, predicted_values)
89 plt.close(fig)
90 output_path = "plots/{true_label}_{predicted_label}_concordance_heatmap.${plot_conditional.format}"
91 fig.savefig(output_path, dpi=$plot_conditional.dpi, bbox_inches='tight')
92
93 #else if $plot_conditional.plot_type == "pr_curve":
94 @PR_ROC_CONFIG@
95
96 fig = plot_pr_curves(y_true_np, y_probs_np)
97
98 output_path = "plots/pr_curves.${plot_conditional.format}"
99 fig.save(output_path, dpi=$plot_conditional.dpi, bbox_inches='tight')
100
101 #else if $plot_conditional.plot_type == "roc_curve":
102 @PR_ROC_CONFIG@
103 fig = plot_roc_curves(y_true_np, y_probs_np)
104 output_path = "plots/roc_curves.${plot_conditional.format}"
105 fig.save(output_path, dpi=$plot_conditional.dpi, bbox_inches='tight')
106
107 #else if $plot_conditional.plot_type == "box_plot":
108 @PR_ROC_BOX_CONFIG@
109 # Remove rows with missing data
110 clean_data = label_data.dropna(subset=['known_label', 'probability'])
111
112 if clean_data.empty:
113 raise ValueError(" No valid data after cleaning")
114
115 # Get unique classes
116 classes = clean_data['class_label'].unique()
117
118 for class_label in classes:
119 print(f" Generating box plot for class: {class_label}")
120
121 # Filter for current class
122 class_data = clean_data[clean_data['class_label'] == class_label]
123
124 # Create the box plot
125 fig = plot_boxplot(
126 categorical_x=class_data['known_label'],
127 numerical_y=class_data['probability'],
128 title_x='True Label',
129 title_y=f'Predicted Probability ({class_label})',
130 )
131
132 # Save the plot
133 safe_class_name = str(class_label).replace('/', '_').replace('\\', '_').replace(' ', '_').replace(':', '_')
134 plt.close(fig)
135
136 output_path = f"plots/box_plot_{safe_class_name}.${plot_conditional.format}"
137 fig.savefig(output_path, dpi=$plot_conditional.dpi, bbox_inches='tight')
138 #end if
139 ]]></configfile>
140 </configfiles>
141 <inputs> 156 <inputs>
142 <expand macro="commercial_use_param"/> 157 <expand macro="commercial_use_param"/>
143 <conditional name="plot_conditional"> 158 <conditional name="plot_conditional">
144 <param name="plot_type" type="select" label="Flexynesis plot"> 159 <param name="plot_type" type="select" label="Flexynesis plot">
145 <option value="dimred">Dimensionality reduction</option> 160 <option value="dimred">Dimensionality reduction</option>
146 <option value="scatter">Scatter plot of known vs predicted labels</option> 161 <option value="scatter">Scatter plot of known vs predicted labels</option>
147 <option value="concordance_heatmap">Label concordance heatmap</option> 162 <option value="concordance_heatmap">Label concordance heatmap</option>
148 <option value="pr_curve">Precision-recall curves</option> 163 <option value="pr_curve">Precision-recall curves</option>
149 <option value="roc_curve">ROC curves</option> 164 <option value="roc_curve">ROC curves</option>
150 <option value="box_plot">Box plot</option> 165 <option value="box_plot">Box plot</option>
166 <option value="km_plot">Kaplan-Meier plot</option>
167 <option value="cox_plot">Cox proportional hazards plot</option>
151 </param> 168 </param>
152 <when value="dimred"> 169 <when value="dimred">
153 <expand macro="plots_common_param"> 170 <expand macro="plots_common_param_svg">
154 <expand macro="plots_common_input"/> 171 <expand macro="plots_common_input"/>
155 <param argument="--embeddings" type="data" format="tabular" label="Embeddings" help="Generated by flexynesis"/> 172 <param argument="--embeddings" type="data" format="tabular" label="Embeddings" help="Generated by flexynesis"/>
156 <param argument="--label" type="data_column" data_ref="labels" label="Column in the labels file to use for coloring the points in the plot"/> 173 <param argument="--color" type="data_column" data_ref="labels" label="Column in the labels file to use for coloring the points in the plot"/>
157 <param name="method" type="select" label="Transformation method"> 174 <param name="method" type="select" label="Transformation method">
158 <option value="pca" selected="true">PCA</option> 175 <option value="pca" selected="true">PCA</option>
159 <option value="umap">UMAP</option> 176 <option value="umap">UMAP</option>
160 </param> 177 </param>
161 </expand> 178 </expand>
162 </when> 179 </when>
163 <when value="scatter"> 180 <when value="scatter">
164 <expand macro="plots_common_param"> 181 <expand macro="plots_common_param_svg">
165 <expand macro="plots_common_input"/> 182 <expand macro="plots_common_input"/>
166 <param name="true_label" type="data_column" data_ref="labels" label="Column name in the labels file to use for the true labels"/> 183 <param argument="--true_label" type="data_column" data_ref="labels" optional="true" label="Column in the labels file to use for true labels"/>
167 <param name="predicted_label" type="data_column" data_ref="labels" label="Column name in the labels file to use for the predicted labels"/> 184 <param argument="--predicted_label" type="data_column" data_ref="labels" optional="true" label="Column in the labels file to use for predicted labels"/>
168 </expand> 185 </expand>
169 </when> 186 </when>
170 <when value="concordance_heatmap"> 187 <when value="concordance_heatmap">
171 <expand macro="plots_common_param"> 188 <expand macro="plots_common_param_svg">
172 <expand macro="plots_common_input"/> 189 <expand macro="plots_common_input"/>
173 <param name="true_label" type="data_column" data_ref="labels" label="Column name in the labels file to use for the true labels"/> 190 <param argument="--true_label" type="data_column" data_ref="labels" optional="true" label="Column in the labels file to use for true labels"/>
174 <param name="predicted_label" type="data_column" data_ref="labels" label="Column name in the labels file to use for the predicted labels"/> 191 <param argument="--predicted_label" type="data_column" data_ref="labels" optional="true" label="Column in the labels file to use for predicted labels"/>
175 </expand> 192 </expand>
176 </when> 193 </when>
177 <when value="pr_curve"> 194 <when value="pr_curve">
178 <expand macro="plots_common_param"> 195 <expand macro="plots_common_param_svg">
179 <expand macro="plots_common_input"/> 196 <expand macro="plots_common_input"/>
180 </expand> 197 </expand>
181 </when> 198 </when>
182 <when value="roc_curve"> 199 <when value="roc_curve">
183 <expand macro="plots_common_param"> 200 <expand macro="plots_common_param_svg">
184 <expand macro="plots_common_input"/> 201 <expand macro="plots_common_input"/>
185 </expand> 202 </expand>
186 </when> 203 </when>
187 <when value="box_plot"> 204 <when value="box_plot">
188 <expand macro="plots_common_param"> 205 <expand macro="plots_common_param_svg">
189 <expand macro="plots_common_input"/> 206 <expand macro="plots_common_input"/>
207 </expand>
208 </when>
209 <when value="km_plot">
210 <expand macro="plots_common_param_svg">
211 <expand macro="plots_common_input"/>
212 <param argument="--survival_data" type="data" format="tabular" label="Survival data"/>
213 <param argument="--surv_event_var" type="data_column" data_ref="survival_data" label="Column in the survival data to use as survival event"/>
214 <param argument="--surv_time_var" type="data_column" data_ref="survival_data" label="Column in the survival data to use as survival time"/>
215 </expand>
216 </when>
217 <when value="cox_plot">
218 <expand macro="plots_common_param_svg">
219 <param argument="--important_features" type="data" format="tabular" label="Important features file"/>
220 <param argument="--clinical_train" type="data" format="tabular" label="Clinical training data"/>
221 <param argument="--clinical_test" type="data" format="tabular" label="Clinical test data"/>
222 <param argument="--omics_train" type="data" format="tabular" label="Omics training data"/>
223 <param argument="--omics_test" type="data" format="tabular" label="Omics test data"/>
224 <param name="layer" type="text" optional="false" label="The class label to use from important features file" help="This corresponds to assay name in flexynesis tool.">
225 <expand macro="sanitizer_letters"/>
226 </param>
227 <param argument="--surv_event_var" type="data_column" data_ref="clinical_train" label="Column in the clinical training data to use as survival event"/>
228 <param argument="--surv_time_var" type="data_column" data_ref="clinical_train" label="Column in the clinical training data to use as survival time"/>
229 <param argument="--clinical_variables" type="data_column" data_ref="clinical_train" optional="true" multiple="true" label="Columns in the train clinical data to use as clinical covariates and include in the Cox model (e.g SEX, AGE, ...), multiple covariates are allowed"/>
230 <param argument="--top_features" type="integer" min="1" value="20" label="Number of top important features to include in Cox model"/>
231 <conditional name="crossval_conditional">
232 <param name="crossval" type="select" label="Performs K-fold cross-validation?">
233 <option value="yes">Yes</option>
234 <option value="no" selected="true">No</option>
235 </param>
236 <when value="yes">
237 <param name="n_splits" type="integer" min="2" value="5" label="Number of folds for cross-validation"/>
238 </when>
239 <when value="no"/>
240 </conditional>
190 </expand> 241 </expand>
191 </when> 242 </when>
192 </conditional> 243 </conditional>
193 </inputs> 244 </inputs>
194 <outputs> 245 <outputs>
195 <data name="plot_out" auto_format="true" from_work_dir="plots/*" label="${tool.name} on ${on_string}: ${plot_conditional.plot_type}"> 246 <collection name="plot_out" type="list" label="${tool.name} on ${on_string}: ${plot_conditional.plot_type} - ${plot_conditional.format}">
196 <filter>plot_conditional['plot_type'] != "box_plot"</filter>
197 </data>
198 <collection name="boxplot_out" type="list" label="${tool.name} on ${on_string}: box_plot">
199 <discover_datasets pattern="__name_and_ext__" directory="plots/"/> 247 <discover_datasets pattern="__name_and_ext__" directory="plots/"/>
200 <filter>plot_conditional['plot_type'] == "box_plot"</filter> 248 <filter>plot_conditional['format'] != 'svg'</filter>
249 </collection>
250 <!-- other types can be sniffed correctly by galaxy -->
251 <collection name="plot_out_svg" format="svg" type="list" label="${tool.name} on ${on_string}: ${plot_conditional.plot_type} - svg">
252 <discover_datasets pattern="__name_and_ext__" directory="plots/"/>
253 <filter>plot_conditional['format'] == 'svg'</filter>
201 </collection> 254 </collection>
202 </outputs> 255 </outputs>
203 <tests> 256 <tests>
204 <!-- test 1: dimred --> 257 <!-- test 1: dimred -->
205 <test expect_num_outputs="1"> 258 <test expect_num_outputs="1">
206 <param name="non_commercial_use" value="True"/> 259 <param name="non_commercial_use" value="True"/>
207 <conditional name="plot_conditional"> 260 <conditional name="plot_conditional">
208 <param name="plot_type" value="dimred"/> 261 <param name="plot_type" value="dimred"/>
209 <param name="embeddings" value="embeddings.tabular"/> 262 <param name="embeddings" value="embeddings.tabular"/>
210 <param name="label" value="6"/> 263 <param name="color" value="6"/>
211 <param name="method" value="pca"/> 264 <param name="method" value="pca"/>
212 <param name="labels" value="labels.tabular"/> 265 <param name="labels" value="labels.tabular"/>
213 <param name="format" value="jpg"/> 266 <param name="format" value="jpg"/>
214 <param name="dpi" value="300"/> 267 <param name="dpi" value="300"/>
215 </conditional> 268 </conditional>
216 <output name="plot_out"> 269 <output_collection name="plot_out" type="list" count="1">
217 <assert_contents> 270 <element name="embeddings_pca_predicted_label">
218 <has_image_center_of_mass center_of_mass="970,733" eps="50"/> 271 <assert_contents>
219 <has_image_channels channels="3"/> 272 <has_image_center_of_mass center_of_mass="970,731" eps="20"/>
220 <has_image_height height="1461" delta="50"/> 273 <has_image_channels channels="3"/>
221 <has_image_width width="1941" delta="50"/> 274 <has_image_height height="1460" delta="20"/>
222 </assert_contents> 275 <has_image_width width="1940" delta="20"/>
223 </output> 276 </assert_contents>
277 </element>
278 </output_collection>
224 </test> 279 </test>
225 <!-- test 2: scatter --> 280 <!-- test 2: scatter -->
226 <test expect_num_outputs="1"> 281 <test expect_num_outputs="1">
227 <param name="non_commercial_use" value="True"/> 282 <param name="non_commercial_use" value="True"/>
228 <conditional name="plot_conditional"> 283 <conditional name="plot_conditional">
229 <param name="plot_type" value="scatter"/> 284 <param name="plot_type" value="scatter"/>
230 <param name="labels" value="labels_scatter.tabular"/> 285 <param name="labels" value="labels_scatter.tabular"/>
231 <param name="true_label" value="5"/> 286 <param name="format" value="jpg"/>
232 <param name="predicted_label" value="6"/> 287 <param name="dpi" value="300"/>
233 <param name="format" value="jpg"/> 288 </conditional>
234 <param name="dpi" value="300"/> 289 <output_collection name="plot_out" type="list" count="1">
235 </conditional> 290 <element name="labels_scatter_CLAUDIN_SUBTYPE">
236 <output name="plot_out"> 291 <assert_contents>
237 <assert_contents> 292 <has_image_center_of_mass center_of_mass="969,732" eps="20"/>
238 <has_image_center_of_mass center_of_mass="970,733" eps="50"/> 293 <has_image_channels channels="3"/>
239 <has_image_channels channels="3"/> 294 <has_image_height height="1460" delta="20"/>
240 <has_image_height height="1461" delta="50"/> 295 <has_image_width width="1941" delta="20"/>
241 <has_image_width width="1941" delta="50"/> 296 </assert_contents>
242 </assert_contents> 297 </element>
243 </output> 298 </output_collection>
244 </test> 299 </test>
245 <!-- test 3: concordance_heatmap --> 300 <!-- test 3: concordance_heatmap -->
246 <test expect_num_outputs="1"> 301 <test expect_num_outputs="1">
247 <param name="non_commercial_use" value="True"/> 302 <param name="non_commercial_use" value="True"/>
248 <conditional name="plot_conditional"> 303 <conditional name="plot_conditional">
249 <param name="plot_type" value="concordance_heatmap"/> 304 <param name="plot_type" value="concordance_heatmap"/>
250 <param name="labels" value="labels.tabular"/> 305 <param name="labels" value="labels.tabular"/>
251 <param name="true_label" value="5"/> 306 <param name="format" value="jpg"/>
252 <param name="predicted_label" value="6"/> 307 <param name="dpi" value="300"/>
253 <param name="format" value="jpg"/> 308 </conditional>
254 <param name="dpi" value="300"/> 309 <output_collection name="plot_out" type="list" count="1">
255 </conditional> 310 <element name="labels_concordance_CLAUDIN_SUBTYPE">
256 <output name="plot_out"> 311 <assert_contents>
257 <assert_contents> 312 <has_image_center_of_mass center_of_mass="1450,1306" eps="20"/>
258 <has_image_center_of_mass center_of_mass="1450,1310" eps="50"/> 313 <has_image_channels channels="3"/>
259 <has_image_channels channels="3"/> 314 <has_image_height height="2558" delta="20"/>
260 <has_image_height height="2558" delta="50"/> 315 <has_image_width width="2768" delta="20"/>
261 <has_image_width width="2770" delta="50"/> 316 </assert_contents>
262 </assert_contents> 317 </element>
263 </output> 318 </output_collection>
264 </test> 319 </test>
265 <!-- test 4: pr_curve --> 320 <!-- test 4: pr_curve -->
266 <test expect_num_outputs="1"> 321 <test expect_num_outputs="1">
267 <param name="non_commercial_use" value="True"/> 322 <param name="non_commercial_use" value="True"/>
268 <conditional name="plot_conditional"> 323 <conditional name="plot_conditional">
269 <param name="plot_type" value="pr_curve"/> 324 <param name="plot_type" value="pr_curve"/>
270 <param name="labels" value="labels_pr.tabular"/> 325 <param name="labels" value="labels_pr.tabular"/>
271 <param name="format" value="jpg"/> 326 <param name="format" value="jpg"/>
272 <param name="dpi" value="300"/> 327 <param name="dpi" value="300"/>
273 </conditional> 328 </conditional>
274 <output name="plot_out"> 329 <output_collection name="plot_out" type="list" count="1">
275 <assert_contents> 330 <element name="labels_pr_curves_CLAUDIN_SUBTYPE">
276 <has_image_center_of_mass center_of_mass="970,733" eps="50"/> 331 <assert_contents>
277 <has_image_channels channels="3"/> 332 <has_image_center_of_mass center_of_mass="965,733" eps="20"/>
278 <has_image_height height="1461" delta="50"/> 333 <has_image_channels channels="3"/>
279 <has_image_width width="1941" delta="50"/> 334 <has_image_height height="1461" delta="20"/>
280 </assert_contents> 335 <has_image_width width="1941" delta="20"/>
281 </output> 336 </assert_contents>
337 </element>
338 </output_collection>
282 </test> 339 </test>
283 <!-- test 5: roc_curve --> 340 <!-- test 5: roc_curve -->
284 <test expect_num_outputs="1"> 341 <test expect_num_outputs="1">
285 <param name="non_commercial_use" value="True"/> 342 <param name="non_commercial_use" value="True"/>
286 <conditional name="plot_conditional"> 343 <conditional name="plot_conditional">
287 <param name="plot_type" value="roc_curve"/> 344 <param name="plot_type" value="roc_curve"/>
288 <param name="labels" value="labels_pr.tabular"/> 345 <param name="labels" value="labels_pr.tabular"/>
289 <param name="format" value="jpg"/> 346 <param name="format" value="jpg"/>
290 <param name="dpi" value="300"/> 347 <param name="dpi" value="300"/>
291 </conditional> 348 </conditional>
292 <output name="plot_out"> 349 <output_collection name="plot_out" type="list" count="1">
293 <assert_contents> 350 <element name="labels_roc_curves_CLAUDIN_SUBTYPE">
294 <has_image_center_of_mass center_of_mass="970,733" eps="50"/> 351 <assert_contents>
295 <has_image_channels channels="3"/> 352 <has_image_center_of_mass center_of_mass="971,732" eps="20"/>
296 <has_image_height height="1461" delta="50"/> 353 <has_image_channels channels="3"/>
297 <has_image_width width="1941" delta="50"/> 354 <has_image_height height="1461" delta="20"/>
298 </assert_contents> 355 <has_image_width width="1941" delta="20"/>
299 </output> 356 </assert_contents>
357 </element>
358 </output_collection>
300 </test> 359 </test>
301 <!-- test 6: box_plot --> 360 <!-- test 6: box_plot -->
302 <test expect_num_outputs="1"> 361 <test expect_num_outputs="1">
303 <param name="non_commercial_use" value="True"/> 362 <param name="non_commercial_use" value="True"/>
304 <conditional name="plot_conditional"> 363 <conditional name="plot_conditional">
305 <param name="plot_type" value="box_plot"/> 364 <param name="plot_type" value="box_plot"/>
306 <param name="labels" value="labels_pr.tabular"/> 365 <param name="labels" value="labels_pr.tabular"/>
307 <param name="format" value="jpg"/> 366 <param name="format" value="jpg"/>
308 <param name="dpi" value="300"/> 367 <param name="dpi" value="300"/>
309 </conditional> 368 </conditional>
310 <output_collection name="boxplot_out" type="list" count="7"> 369 <output_collection name="plot_out" type="list" count="7">
311 <element name="box_plot_Basal"> 370 <element name="labels_box_plot_CLAUDIN_SUBTYPE_Basal">
312 <assert_contents> 371 <assert_contents>
313 <has_image_center_of_mass center_of_mass="1485,882" eps="20"/> 372 <has_image_center_of_mass center_of_mass="1485,882" eps="20"/>
314 <has_image_channels channels="3"/> 373 <has_image_channels channels="3"/>
315 <has_image_height height="1783" delta="20"/> 374 <has_image_height height="1766" delta="20"/>
316 <has_image_width width="2967" delta="20"/> 375 <has_image_width width="2967" delta="20"/>
317 </assert_contents> 376 </assert_contents>
318 </element> 377 </element>
319 <element name="box_plot_Her2"> 378 <element name="labels_box_plot_CLAUDIN_SUBTYPE_Her2">
379 <assert_contents>
380 <has_image_center_of_mass center_of_mass="1485,882" eps="20"/>
381 <has_image_channels channels="3"/>
382 <has_image_height height="1766" delta="20"/>
383 <has_image_width width="2967" delta="20"/>
384 </assert_contents>
385 </element>
386 <element name="labels_box_plot_CLAUDIN_SUBTYPE_LumA">
387 <assert_contents>
388 <has_image_center_of_mass center_of_mass="1485,882" eps="20"/>
389 <has_image_channels channels="3"/>
390 <has_image_height height="1766" delta="20"/>
391 <has_image_width width="2967" delta="20"/>
392 </assert_contents>
393 </element>
394 <element name="labels_box_plot_CLAUDIN_SUBTYPE_LumB">
395 <assert_contents>
396 <has_image_center_of_mass center_of_mass="1485,882" eps="20"/>
397 <has_image_channels channels="3"/>
398 <has_image_height height="1766" delta="20"/>
399 <has_image_width width="2967" delta="20"/>
400 </assert_contents>
401 </element>
402 <element name="labels_box_plot_CLAUDIN_SUBTYPE_NC">
403 <assert_contents>
404 <has_image_center_of_mass center_of_mass="1485,875" eps="20"/>
405 <has_image_channels channels="3"/>
406 <has_image_height height="1766" delta="20"/>
407 <has_image_width width="2967" delta="20"/>
408 </assert_contents>
409 </element>
410 <element name="labels_box_plot_CLAUDIN_SUBTYPE_Normal">
411 <assert_contents>
412 <has_image_center_of_mass center_of_mass="1485,878" eps="20"/>
413 <has_image_channels channels="3"/>
414 <has_image_height height="1766" delta="20"/>
415 <has_image_width width="2967" delta="20"/>
416 </assert_contents>
417 </element>
418 <element name="labels_box_plot_CLAUDIN_SUBTYPE_claudin-low">
320 <assert_contents> 419 <assert_contents>
321 <has_image_center_of_mass center_of_mass="1485,882" eps="20"/> 420 <has_image_center_of_mass center_of_mass="1485,882" eps="20"/>
322 <has_image_channels channels="3"/> 421 <has_image_channels channels="3"/>
323 <has_image_height height="1765" delta="20"/> 422 <has_image_height height="1765" delta="20"/>
324 <has_image_width width="2967" delta="20"/> 423 <has_image_width width="2967" delta="20"/>
325 </assert_contents> 424 </assert_contents>
326 </element> 425 </element>
327 <element name="box_plot_LumA"> 426 </output_collection>
328 <assert_contents> 427 </test>
329 <has_image_center_of_mass center_of_mass="1485,882" eps="20"/> 428 <!-- test 7: dimred png-->
330 <has_image_channels channels="3"/> 429 <test expect_num_outputs="1">
331 <has_image_height height="1783" delta="20"/> 430 <param name="non_commercial_use" value="True"/>
332 <has_image_width width="2967" delta="20"/> 431 <conditional name="plot_conditional">
333 </assert_contents> 432 <param name="plot_type" value="dimred"/>
334 </element> 433 <param name="embeddings" value="embeddings.tabular"/>
335 <element name="box_plot_LumB"> 434 <param name="color" value="6"/>
336 <assert_contents> 435 <param name="method" value="pca"/>
337 <has_image_center_of_mass center_of_mass="1485,882" eps="20"/> 436 <param name="labels" value="labels.tabular"/>
338 <has_image_channels channels="3"/> 437 <param name="format" value="png"/>
339 <has_image_height height="1783" delta="20"/> 438 <param name="dpi" value="300"/>
340 <has_image_width width="2967" delta="20"/> 439 </conditional>
341 </assert_contents> 440 <output_collection name="plot_out" type="list" count="1">
342 </element> 441 <element name="embeddings_pca_predicted_label">
343 <element name="box_plot_NC"> 442 <assert_contents>
344 <assert_contents> 443 <has_image_center_of_mass center_of_mass="970,730" eps="20"/>
345 <has_image_center_of_mass center_of_mass="1485,882" eps="20"/> 444 <has_image_channels channels="4"/>
346 <has_image_channels channels="3"/> 445 <has_image_height height="1461" delta="20"/>
347 <has_image_height height="1783" delta="20"/> 446 <has_image_width width="1941" delta="20"/>
348 <has_image_width width="2967" delta="20"/> 447 </assert_contents>
349 </assert_contents> 448 </element>
350 </element> 449 </output_collection>
351 <element name="box_plot_Normal"> 450 </test>
352 <assert_contents> 451 <!-- test 8: roc_curve svg-->
353 <has_image_center_of_mass center_of_mass="1485,882" eps="20"/> 452 <test expect_num_outputs="1">
354 <has_image_channels channels="3"/> 453 <param name="non_commercial_use" value="True"/>
355 <has_image_height height="1783" delta="20"/> 454 <conditional name="plot_conditional">
356 <has_image_width width="2967" delta="20"/> 455 <param name="plot_type" value="roc_curve"/>
357 </assert_contents> 456 <param name="labels" value="labels_pr.tabular"/>
358 </element> 457 <param name="format" value="svg"/>
359 <element name="box_plot_claudin-low"> 458 <param name="dpi" value="300"/>
360 <assert_contents> 459 </conditional>
361 <has_image_center_of_mass center_of_mass="1485,882" eps="20"/> 460 <output_collection name="plot_out_svg" type="list" count="1">
362 <has_image_channels channels="3"/> 461 <element name="labels_roc_curves_CLAUDIN_SUBTYPE">
363 <has_image_height height="1783" delta="20"/> 462 <assert_contents>
364 <has_image_width width="2967" delta="20"/> 463 <has_text_matching expression="ROC Curve"/>
464 <has_text_matching expression="True Positive Rate"/>
465 </assert_contents>
466 </element>
467 </output_collection>
468 </test>
469 <!-- test 9: km_plot -->
470 <test expect_num_outputs="1">
471 <param name="non_commercial_use" value="True"/>
472 <conditional name="plot_conditional">
473 <param name="plot_type" value="km_plot"/>
474 <param name="labels" value="labels_survival.tabular"/>
475 <param name="survival_data" value="test/clin"/>
476 <param name="surv_event_var" value="15"/>
477 <param name="surv_time_var" value="14"/>
478 <param name="format" value="jpg"/>
479 <param name="dpi" value="300"/>
480 </conditional>
481 <output_collection name="plot_out" type="list" count="1">
482 <element name="survival_data_km_km_risk_subtypes">
483 <assert_contents>
484 <has_image_center_of_mass center_of_mass="970,730" eps="20"/>
485 <has_image_channels channels="3"/>
486 <has_image_height height="1460" delta="20"/>
487 <has_image_width width="1940" delta="20"/>
488 </assert_contents>
489 </element>
490 </output_collection>
491 </test>
492 <!-- test 10: cox_plot -->
493 <test expect_num_outputs="1">
494 <param name="non_commercial_use" value="True"/>
495 <conditional name="plot_conditional">
496 <param name="plot_type" value="cox_plot"/>
497 <param name="important_features" value="feature_importance.tabular"/>
498 <param name="clinical_train" value="train/clin"/>
499 <param name="clinical_test" value="test/clin"/>
500 <param name="omics_train" value="train/gex"/>
501 <param name="omics_test" value="test/gex"/>
502 <param name="layer" value="gex"/>
503 <param name="surv_event_var" value="15"/>
504 <param name="surv_time_var" value="14"/>
505 <param name="clinical_variables" value="3,4"/>
506 <param name="top_features" value="10"/>
507 <param name="format" value="jpg"/>
508 <param name="dpi" value="300"/>
509 </conditional>
510 <output_collection name="plot_out" type="list" count="1">
511 <element name="important_features_cox_hazard_ratios">
512 <assert_contents>
513 <has_image_center_of_mass center_of_mass="970,730" eps="20"/>
514 <has_image_channels channels="3"/>
515 <has_image_height height="1460" delta="20"/>
516 <has_image_width width="1940" delta="20"/>
517 </assert_contents>
518 </element>
519 </output_collection>
520 </test>
521 <!-- test 11: km_plot should fail because of non numeric target -->
522 <test expect_failure="true">
523 <param name="non_commercial_use" value="True"/>
524 <conditional name="plot_conditional">
525 <param name="plot_type" value="km_plot"/>
526 <param name="labels" value="labels_survival.tabular"/>
527 <param name="survival_data" value="test/clin"/>
528 <param name="surv_event_var" value="16"/>
529 <param name="surv_time_var" value="14"/>
530 <param name="format" value="jpg"/>
531 <param name="dpi" value="300"/>
532 </conditional>
533 <assert_stderr>
534 <has_text_matching expression="Error: Non-numeric values found in column 'class': Unable to parse string &quot;buz&quot; at position 0"/>
535 </assert_stderr>
536 </test>
537 <!-- test 12: cox_plot should fail because of non numeric target -->
538 <test expect_failure="true">
539 <param name="non_commercial_use" value="True"/>
540 <conditional name="plot_conditional">
541 <param name="plot_type" value="cox_plot"/>
542 <param name="important_features" value="feature_importance.tabular"/>
543 <param name="clinical_train" value="train/clin"/>
544 <param name="clinical_test" value="test/clin"/>
545 <param name="omics_train" value="train/gex"/>
546 <param name="omics_test" value="test/gex"/>
547 <param name="layer" value="gex"/>
548 <param name="surv_event_var" value="15"/>
549 <param name="surv_time_var" value="14"/>
550 <param name="clinical_variables" value="3,4,16"/>
551 <param name="top_features" value="10"/>
552 <param name="format" value="jpg"/>
553 <param name="dpi" value="300"/>
554 </conditional>
555 <assert_stderr>
556 <has_text_matching expression="Error: Non-numeric values found in column 'class': Unable to parse string &quot;buz&quot; at position 0"/>
557 </assert_stderr>
558 </test>
559 <!-- test 13: scatter unsupervised -->
560 <test expect_num_outputs="1">
561 <param name="non_commercial_use" value="True"/>
562 <conditional name="plot_conditional">
563 <param name="plot_type" value="scatter"/>
564 <param name="labels" value="non_flexy_label.tabular"/>
565 <param name="true_label" value="11"/>
566 <param name="predicted_label" value="12"/>
567 <param name="format" value="jpg"/>
568 <param name="dpi" value="300"/>
569 </conditional>
570 <output_collection name="plot_out" type="list" count="1">
571 <element name="labels_scatter">
572 <assert_contents>
573 <has_image_center_of_mass center_of_mass="970,730" eps="20"/>
574 <has_image_channels channels="3"/>
575 <has_image_height height="1460" delta="20"/>
576 <has_image_width width="1941" delta="20"/>
577 </assert_contents>
578 </element>
579 </output_collection>
580 </test>
581 <!-- test 14: concordance_heatmap unsupervised -->
582 <test expect_num_outputs="1">
583 <param name="non_commercial_use" value="True"/>
584 <conditional name="plot_conditional">
585 <param name="plot_type" value="concordance_heatmap"/>
586 <param name="labels" value="non_flexy_label.tabular"/>
587 <param name="true_label" value="10"/>
588 <param name="predicted_label" value="12"/>
589 <param name="format" value="jpg"/>
590 <param name="dpi" value="300"/>
591 </conditional>
592 <output_collection name="plot_out" type="list" count="1">
593 <element name="labels_concordance">
594 <assert_contents>
595 <has_image_center_of_mass center_of_mass="1445,1306" eps="20"/>
596 <has_image_channels channels="3"/>
597 <has_image_height height="2558" delta="20"/>
598 <has_image_width width="3051" delta="20"/>
365 </assert_contents> 599 </assert_contents>
366 </element> 600 </element>
367 </output_collection> 601 </output_collection>
368 </test> 602 </test>
369 </tests> 603 </tests>