comparison flexynesis.xml @ 6:33816f44fc7d 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:41 +0000
parents 466b593fd87e
children
comparison
equal deleted inserted replaced
5:466b593fd87e 6:33816f44fc7d
5 </macros> 5 </macros>
6 <expand macro="edam"/> 6 <expand macro="edam"/>
7 <expand macro="requirements"/> 7 <expand macro="requirements"/>
8 <required_files> 8 <required_files>
9 <include path="flexynesis_plot.py" /> 9 <include path="flexynesis_plot.py" />
10 <include path="flexynesis_utils.py" />
11 <include path="convert.py" />
12 <include path="index_to_name.py" />
10 </required_files> 13 </required_files>
11 <command detect_errors="exit_code"><![CDATA[ 14 <command detect_errors="exit_code"><![CDATA[
12 @CHECK_NON_COMMERCIAL_USE@ 15 @CHECK_NON_COMMERCIAL_USE@
13 mkdir -p input/test input/train output && 16 mkdir -p input/test input/train output &&
14 ln -s '$train_clin' input/train/clin.tabular && 17 ln -s '$train_clin' input/train/clin.tabular &&
15 python $__tool_directory__/convert.py input/train/clin.tabular input/train/clin.csv && 18 python '$__tool_directory__/convert.py' input/train/clin.tabular input/train/clin.csv &&
16 19
17 ln -s '$test_clin' input/test/clin.tabular && 20 ln -s '$test_clin' input/test/clin.tabular &&
18 python $__tool_directory__/convert.py input/test/clin.tabular input/test/clin.csv && 21 python '$__tool_directory__/convert.py' input/test/clin.tabular input/test/clin.csv &&
19 22
20 #if str($assay_main) != '': 23 #if str($assay_main) != '':
21 #set $name = str($assay_main.replace(" ", "_")) 24 #set $name = str($assay_main.replace(" ", "_"))
22 ln -s '$train_omics_main' input/train/${name}.tabular && 25 ln -s '$train_omics_main' input/train/${name}.tabular &&
23 python '$__tool_directory__/convert.py' input/train/${name}.tabular input/train/${name}.csv && 26 python '$__tool_directory__/convert.py' input/train/${name}.tabular input/train/${name}.csv &&
44 #end if 47 #end if
45 #for $i, $element in enumerate($omics) 48 #for $i, $element in enumerate($omics)
46 #if str($element.train_omics) != 'None' and str($element.test_omics) != 'None': 49 #if str($element.train_omics) != 'None' and str($element.test_omics) != 'None':
47 #if str($element.assay) != '': 50 #if str($element.assay) != '':
48 #set $i = str($element.assay.replace(" ", "_")) 51 #set $i = str($element.assay.replace(" ", "_"))
49 #end if 52 ln -s '${element.train_omics}' input/train/${i}.tabular &&
50 ln -s '${element.train_omics}' input/train/omics_${i}.tabular && 53 python '$__tool_directory__/convert.py' input/train/${i}.tabular input/train/${i}.csv &&
51 python '$__tool_directory__/convert.py' input/train/omics_${i}.tabular input/train/omics_${i}.csv && 54
52 55 ln -s '${element.test_omics}' input/test/${i}.tabular &&
53 ln -s '${element.test_omics}' input/test/omics_${i}.tabular && 56 python '$__tool_directory__/convert.py' input/test/${i}.tabular input/test/${i}.csv &&
54 python '$__tool_directory__/convert.py' input/test/omics_${i}.tabular input/test/omics_${i}.csv && 57
55 58 $data_names.append(str($i))
56 $data_names.append("omics_" + str($i)) 59 #if str($training_type.model) == 'cm_train':
57 #if str($training_type.model) == 'cm_train': 60 #if str($element.layer) == 'input':
58 #if str($element.layer) == 'input': 61 $input_layers.append(str($i))
59 $input_layers.append("omics_" + str($i)) 62 #else
60 #else 63 $output_layers.append(str($i))
61 $output_layers.append("omics_" + str($i)) 64 #end if
65 #end if
66 #else
67 ln -s '${element.train_omics}' input/train/omics_${i}.tabular &&
68 python '$__tool_directory__/convert.py' input/train/omics_${i}.tabular input/train/omics_${i}.csv &&
69
70 ln -s '${element.test_omics}' input/test/omics_${i}.tabular &&
71 python '$__tool_directory__/convert.py' input/test/omics_${i}.tabular input/test/omics_${i}.csv &&
72
73 $data_names.append("omics_" + str($i))
74 #if str($training_type.model) == 'cm_train':
75 #if str($element.layer) == 'input':
76 $input_layers.append("omics_" + str($i))
77 #else
78 $output_layers.append("omics_" + str($i))
79 #end if
62 #end if 80 #end if
63 #end if 81 #end if
64 #end if 82 #end if
65 #end for 83 #end for
66 ## set target variables
67 #if str($training_type.model) == 's_train': 84 #if str($training_type.model) == 's_train':
68 #if len($targets) > 0: 85 ## set target variables
69 target_variables="" && 86 #if str($target_variables) != 'None':
70 #for $i, $element in enumerate($targets) 87 targets=`'$__tool_directory__/index_to_name.py' input/train/clin.csv $target_variables` &&
71 target_name=`$__tool_directory__/index_to_name.py input/train/clin.csv $element.target_variables` && 88 echo "Target variables: \$targets" &&
72 #if $i == 0:
73 target_variables="\$target_name" &&
74 #else:
75 target_variables="\$target_variables,\$target_name" &&
76 #end if
77 #end for
78 echo "Target variables: \$target_variables" &&
79 #end if 89 #end if
80 ## set survival variables 90 ## set survival variables
81 #if str($surv_event_var) != 'None' and str($surv_time_var) != 'None': 91 #if str($surv_event_var) != 'None' and str($surv_time_var) != 'None':
82 surv_event_var=`$__tool_directory__/index_to_name.py input/train/clin.csv $surv_event_var` && 92 survival_event=`'$__tool_directory__/index_to_name.py' input/train/clin.csv $surv_event_var` &&
83 echo "Survival event variable: \$surv_event_var" && 93 ## check if survival variable is numerical
84 surv_time_var=`$__tool_directory__/index_to_name.py input/train/clin.csv $surv_time_var` && 94 echo "Survival event variable: \$survival_event" &&
85 echo "Survival time variable: \$surv_time_var" && 95 python '$__tool_directory__/flexynesis_utils.py' --util validate_survival --clin input/train/clin.csv --clin_variable \$survival_event &&
96 survival_time=`$__tool_directory__/index_to_name.py input/train/clin.csv $surv_time_var` &&
97 echo "Survival time variable: \$survival_time" &&
86 #end if 98 #end if
87 ## set target value for plots 99 ## set clinical variables for Cox model
88 #if str($surv_event_var) != 'None' and str($surv_time_var) != 'None' and len($targets) > 0: 100 #if str($plot.plot_cox_conditional.plot_cox) == 'yes':
89 target_value="\$target_variables,\$surv_event_var" && 101 #if str($plot.plot_cox_conditional.clinical_variables) != 'None':
90 echo "Target value for plots: \$target_value" && 102 covars=`'$__tool_directory__/index_to_name.py' input/train/clin.csv $plot.plot_cox_conditional.clinical_variables` &&
91 #else if str($surv_event_var) == 'None' and str($surv_time_var) == 'None' and len($targets) > 0: 103 ## check if covariates is numerical
92 target_value="\$target_variables" && 104 echo "Clinical variables for Cox model: \$covars" &&
93 echo "Target value for plots: \$target_value" && 105 python '$__tool_directory__/flexynesis_utils.py' --util validate_covariate --clin input/train/clin.csv --clin_variable \$covars &&
94 #else if str($surv_event_var) != 'None' and str($surv_time_var) != 'None' and len($targets) == 0: 106 #end if
95 target_value="\$surv_event_var" &&
96 echo "Target value for plots: \$target_value" &&
97 #end if 107 #end if
98 #end if 108 #end if
99 109
100 flexynesis 110 flexynesis
101 --data_path input 111 --data_path input
105 --gnn_conv_type $gnn_conv_type 115 --gnn_conv_type $gnn_conv_type
106 --string_organism $string_organism 116 --string_organism $string_organism
107 --string_node_name $string_node_name 117 --string_node_name $string_node_name
108 #end if 118 #end if
109 #if str($training_type.model) == 's_train': 119 #if str($training_type.model) == 's_train':
110 #if len($targets) > 0: 120 #if str($target_variables) != 'None':
111 --target_variables \$target_variables 121 --target_variables \$targets
112 #end if 122 #end if
113 #if str($surv_event_var) != 'None' and str($surv_time_var) != 'None': 123 #if str($surv_event_var) != 'None' and str($surv_time_var) != 'None':
114 --surv_event_var \$surv_event_var 124 --surv_event_var \$survival_event
115 --surv_time_var \$surv_time_var 125 --surv_time_var \$survival_time
116 #end if 126 #end if
117 #end if 127 #end if
118 #if str($training_type.model) == 'cm_train': 128 #if str($training_type.model) == 'cm_train':
119 --input_layers $str(",".join($input_layers)) 129 --input_layers $str(",".join($input_layers))
120 --output_layers $str(",".join($output_layers)) 130 --output_layers $str(",".join($output_layers))
140 150
141 ## convert flexynesis output files to tabular format 151 ## convert flexynesis output files to tabular format
142 && for file in output/*.csv; do 152 && for file in output/*.csv; do
143 if [ -f "\$file" ]; then 153 if [ -f "\$file" ]; then
144 basename="\${file%.csv}"; 154 basename="\${file%.csv}";
145 python $__tool_directory__/convert.py "\$file" "\${basename}.tabular"; 155 python '$__tool_directory__/convert.py' "\$file" "\${basename}.tabular";
146 echo "Converted \$file to \${basename}.tabular"; 156 echo "Converted \$file to \${basename}.tabular";
147 fi 157 fi
148 done 158 done
149 #if str($plot.plot_embeddings_conditional.plot_embeddings) == 'yes': 159 #if str($training_type.model) == 's_train':
150 && python $__tool_directory__/flexynesis_plot.py 160 #if str($plot.plot_embeddings_conditional.plot_embeddings) == 'yes':
151 --plot_type dimred 161 && python '$__tool_directory__/flexynesis_plot.py'
152 --embeddings output/job.embeddings_test.tabular 162 --plot_type dimred
163 --embeddings output/job.embeddings_test.tabular
164 --labels output/job.predicted_labels.tabular
165 --method $plot.plot_embeddings_conditional.method
166 #if str($training_type.model) == 's_train':
167 #if str($target_variables) != 'None':
168 --target_value \$targets
169 #end if
170 #end if
171 --output_dir plots
172 --format $plot.plot_embeddings_conditional.format
173 --dpi $plot.plot_embeddings_conditional.dpi
174 #end if
175 #if str($plot.plot_km_conditional.plot_km) == 'yes':
176 #if str($surv_event_var) == '' or str($surv_time_var) == '':
177 && echo "Survival event and time variables must be specified for Kaplan-Meier plots."
178 && exit 1
179 #else
180 && python '$__tool_directory__/flexynesis_plot.py'
181 --plot_type kaplan_meier
182 --labels output/job.predicted_labels.tabular
183 --survival_data input/test/clin.csv
184 --surv_event_var \$survival_event
185 --surv_time_var \$survival_time
186 --output_dir plots
187 --format $plot.plot_km_conditional.format
188 --dpi $plot.plot_km_conditional.dpi
189 #end if
190 #end if
191 #if str($plot.plot_cox_conditional.plot_cox) == 'yes':
192 #if str($surv_event_var) == '' or str($surv_time_var) == '':
193 && echo "Survival event and time variables must be specified for cox plots."
194 && exit 1
195 #else
196 && python '$__tool_directory__/flexynesis_plot.py'
197 --plot_type cox
198 #if str($feature_importance_method) == 'GradientShap':
199 --important_features output/job.feature_importance.GradientShap.tabular
200 #else if str($feature_importance_method) == 'IntegratedGradients':
201 --important_features output/job.feature_importance.IntegratedGradients.tabular
202 #else
203 --important_features output/job.feature_importance.IntegratedGradients.tabular
204 #end if
205 --clinical_train input/train/clin.csv
206 --clinical_test input/test/clin.csv
207 #if str($plot.plot_cox_conditional.omics_name) != '':
208 #set $omics_name = str($plot.plot_cox_conditional.omics_name.replace(" ", "_"))
209 --omics_train input/train/${omics_name}.csv
210 --omics_test input/test/${omics_name}.csv
211 --layer ${omics_name}
212 #else
213 --omics_train input/train/${data_names}.csv
214 --omics_test input/test/${data_names}.csv
215 --layer ${data_names}
216 #end if
217 --surv_time_var \$survival_time
218 --surv_event_var \$survival_event
219 #if str($plot.plot_cox_conditional.clinical_variables) != 'None':
220 --clinical_variables \$covars
221 #end if
222 --top_features $plot.plot_cox_conditional.top_features
223 #if str($plot.plot_cox_conditional.crossval_conditional.crossval) == 'yes':
224 --crossval
225 #end if
226 #if str($plot.plot_cox_conditional.crossval_conditional.crossval) == 'yes':
227 --n_splits $plot.plot_cox_conditional.crossval_conditional.n_splits
228 #end if
229 --random_state 42
230 --output_dir plots
231 --format $plot.plot_cox_conditional.format
232 --dpi $plot.plot_cox_conditional.dpi
233 #end if
234 #end if
235 #if str($plot.plot_scatter_conditional.plot_scatter) == 'yes':
236 && python '$__tool_directory__/flexynesis_plot.py'
237 --plot_type scatter
153 --labels output/job.predicted_labels.tabular 238 --labels output/job.predicted_labels.tabular
154 --method $plot.plot_embeddings_conditional.method
155 #if str($training_type.model) == 's_train': 239 #if str($training_type.model) == 's_train':
156 #if len($targets) > 0 or (str($surv_event_var) != 'None' and str($surv_time_var) != 'None'): 240 #if str($target_variables) != 'None':
157 --target_value \$target_value 241 --target_value \$targets
158 #end if 242 #end if
159 #end if 243 #end if
160 --output_dir plots 244 --output_dir plots
161 --format $plot.plot_embeddings_conditional.format 245 --format $plot.plot_scatter_conditional.format
162 --dpi $plot.plot_embeddings_conditional.dpi 246 --dpi $plot.plot_scatter_conditional.dpi
163 #end if 247 #end if
164 #if str($plot.plot_km_conditional.plot_km) == 'yes': 248 #if str($plot.plot_concordance_conditional.plot_concordance) == 'yes':
165 #if str($surv_event_var) == '' or str($surv_time_var) == '': 249 && python '$__tool_directory__/flexynesis_plot.py'
166 && echo "Survival event and time variables must be specified for Kaplan-Meier plots." 250 --plot_type concordance_heatmap
167 && exit 1
168 #else
169 && python $__tool_directory__/flexynesis_plot.py
170 --plot_type kaplan_meier
171 --labels output/job.predicted_labels.tabular 251 --labels output/job.predicted_labels.tabular
172 --survival_data input/test/clin.csv 252 #if str($training_type.model) == 's_train':
173 --surv_event_var \$surv_event_var 253 #if str($target_variables) != 'None':
174 --surv_time_var \$surv_time_var 254 --target_value \$targets
175 --event_value $plot.plot_km_conditional.event_value 255 #end if
256 #end if
176 --output_dir plots 257 --output_dir plots
177 --format $plot.plot_km_conditional.format 258 --format $plot.plot_concordance_conditional.format
178 --dpi $plot.plot_km_conditional.dpi 259 --dpi $plot.plot_concordance_conditional.dpi
179 #end if 260 #end if
180 #end if 261 #if str($plot.plot_pr_curves_conditional.plot_pr_curves) == 'yes':
181 #if str($plot.plot_cox_conditional.plot_cox) == 'yes': 262 && python '$__tool_directory__/flexynesis_plot.py'
182 #if str($surv_event_var) == '' or str($surv_time_var) == '': 263 --plot_type pr_curve
183 && echo "Survival event and time variables must be specified for cox plots." 264 --labels output/job.predicted_labels.tabular
184 && exit 1 265 #if str($training_type.model) == 's_train':
185 #else 266 #if str($target_variables) != 'None':
186 && python $__tool_directory__/flexynesis_plot.py 267 --target_value \$targets
187 --plot_type cox 268 #end if
188 --model output/job.final_model.pth
189 --clinical_train input/train/clin.csv
190 --clinical_test input/test/clin.csv
191 #if str($plot.plot_cox_conditional.omics_name) != '':
192 #set $name = str($plot.plot_cox_conditional.omics_name.replace(" ", "_"))
193 --omics_train input/train/${name}.csv
194 --omics_test input/test/${name}.csv
195 #else
196 --omics_train input/train/main.csv
197 --omics_test input/test/main.csv
198 #end if 269 #end if
199 --surv_time_var \$surv_time_var 270 --output_dir plots
200 --surv_event_var \$surv_event_var 271 --format $plot.plot_pr_curves_conditional.format
201 #if str($plot.plot_cox_conditional.clinical_variables) != '': 272 --dpi $plot.plot_pr_curves_conditional.dpi
202 --clinical_variables $str($plot.plot_cox_conditional.clinical_variables) 273 #end if
274 #if str($plot.plot_roc_curves_conditional.plot_roc_curves) == 'yes':
275 && python '$__tool_directory__/flexynesis_plot.py'
276 --plot_type roc_curve
277 --labels output/job.predicted_labels.tabular
278 #if str($training_type.model) == 's_train':
279 #if str($target_variables) != 'None':
280 --target_value \$targets
281 #end if
203 #end if 282 #end if
204 --top_features $plot.plot_cox_conditional.top_features 283 --output_dir plots
205 --event_value $plot.plot_cox_conditional.event_value 284 --format $plot.plot_roc_curves_conditional.format
206 #if str($plot.plot_cox_conditional.crossval_conditional.crossval) == 'yes': 285 --dpi $plot.plot_roc_curves_conditional.dpi
207 --crossval 286 #end if
287 #if str($plot.plot_boxplot_conditional.plot_boxplot) == 'yes':
288 && python '$__tool_directory__/flexynesis_plot.py'
289 --plot_type box_plot
290 --labels output/job.predicted_labels.tabular
291 #if str($training_type.model) == 's_train':
292 #if str($target_variables) != 'None':
293 --target_value \$targets
294 #end if
208 #end if 295 #end if
209 #if str($plot.plot_cox_conditional.crossval_conditional.crossval) == 'yes':
210 --n_splits $plot.plot_cox_conditional.crossval_conditional.n_splits
211 #end if
212 --random_state 42
213 --output_dir plots 296 --output_dir plots
214 --format $plot.plot_cox_conditional.format 297 --format $plot.plot_boxplot_conditional.format
215 --dpi $plot.plot_cox_conditional.dpi 298 --dpi $plot.plot_boxplot_conditional.dpi
216 #end if 299 #end if
217 #end if
218 #if str($plot.plot_scatter_conditional.plot_scatter) == 'yes':
219 && python $__tool_directory__/flexynesis_plot.py
220 --plot_type scatter
221 --labels output/job.predicted_labels.tabular
222 #if str($training_type.model) == 's_train':
223 #if len($targets) > 0 or (str($surv_event_var) != 'None' and str($surv_time_var) != 'None'):
224 --target_value \$target_value
225 #end if
226 #end if
227 --output_dir plots
228 --format $plot.plot_scatter_conditional.format
229 --dpi $plot.plot_scatter_conditional.dpi
230 #end if
231 #if str($plot.plot_concordance_conditional.plot_concordance) == 'yes':
232 && python $__tool_directory__/flexynesis_plot.py
233 --plot_type concordance_heatmap
234 --labels output/job.predicted_labels.tabular
235 #if str($training_type.model) == 's_train':
236 #if len($targets) > 0 or (str($surv_event_var) != 'None' and str($surv_time_var) != 'None'):
237 --target_value \$target_value
238 #end if
239 #end if
240 --output_dir plots
241 --format $plot.plot_concordance_conditional.format
242 --dpi $plot.plot_concordance_conditional.dpi
243 #end if
244 #if str($plot.plot_pr_curves_conditional.plot_pr_curves) == 'yes':
245 && python $__tool_directory__/flexynesis_plot.py
246 --plot_type pr_curve
247 --labels output/job.predicted_labels.tabular
248 #if str($training_type.model) == 's_train':
249 #if len($targets) > 0 or (str($surv_event_var) != 'None' and str($surv_time_var) != 'None'):
250 --target_value \$target_value
251 #end if
252 #end if
253 --output_dir plots
254 --format $plot.plot_pr_curves_conditional.format
255 --dpi $plot.plot_pr_curves_conditional.dpi
256 #end if
257 #if str($plot.plot_roc_curves_conditional.plot_roc_curves) == 'yes':
258 && python $__tool_directory__/flexynesis_plot.py
259 --plot_type roc_curve
260 --labels output/job.predicted_labels.tabular
261 #if str($training_type.model) == 's_train':
262 #if len($targets) > 0 or (str($surv_event_var) != 'None' and str($surv_time_var) != 'None'):
263 --target_value \$target_value
264 #end if
265 #end if
266 --output_dir plots
267 --format $plot.plot_roc_curves_conditional.format
268 --dpi $plot.plot_roc_curves_conditional.dpi
269 #end if
270 #if str($plot.plot_boxplot_conditional.plot_boxplot) == 'yes':
271 && python $__tool_directory__/flexynesis_plot.py
272 --plot_type box_plot
273 --labels output/job.predicted_labels.tabular
274 #if str($training_type.model) == 's_train':
275 #if len($targets) > 0 or (str($surv_event_var) != 'None' and str($surv_time_var) != 'None'):
276 --target_value \$target_value
277 #end if
278 #end if
279 --output_dir plots
280 --format $plot.plot_boxplot_conditional.format
281 --dpi $plot.plot_boxplot_conditional.dpi
282 #end if 300 #end if
283 ]]></command> 301 ]]></command>
284 <inputs> 302 <inputs>
285 <expand macro="commercial_use_param"/> 303 <expand macro="commercial_use_param"/>
286 <conditional name="training_type"> 304 <conditional name="training_type">
326 <when value="RandomForest"/> 344 <when value="RandomForest"/>
327 <when value="SVM"/> 345 <when value="SVM"/>
328 <when value="RandomSurvivalForest"/> 346 <when value="RandomSurvivalForest"/>
329 <when value="XGBoost"/> 347 <when value="XGBoost"/>
330 </conditional> 348 </conditional>
331 <repeat name="targets" min="0" title="Target variables"> 349 <param argument="--target_variables" type="data_column" data_ref="train_clin" optional="true" multiple="true" label="Column name in the train clinical data to use for predictions, multiple targets are allowed"/>
332 <param argument="--target_variables" type="data_column" data_ref="train_clin" optional="false" label="Column name in the train clinical data to use for predictions, multiple targets are allowed"/>
333 </repeat>
334 <param argument="--surv_event_var" type="data_column" data_ref="train_clin" optional="true" label="Column name in the train clinical data to use as survival event"/> 350 <param argument="--surv_event_var" type="data_column" data_ref="train_clin" optional="true" label="Column name in the train clinical data to use as survival event"/>
335 <param argument="--surv_time_var" type="data_column" data_ref="train_clin" optional="true" label="Column name in the train clinical data to use as survival time"/> 351 <param argument="--surv_time_var" type="data_column" data_ref="train_clin" optional="true" label="Column name in the train clinical data to use as survival time"/>
336 <expand macro="advanced"/> 352 <expand macro="advanced"/>
353 <section name="plot" title="Visualization">
354 <conditional name="plot_embeddings_conditional">
355 <param name="plot_embeddings" type="select" label="Generate embeddings plot?" help="Generate PCA or UMAP plot of the test dataset">
356 <option value="yes">Yes</option>
357 <option value="no" selected="true">No</option>
358 </param>
359 <when value="no">
360 </when>
361 <when value="yes">
362 <param name="method" type="select" label="Transformation method">
363 <option value="pca" selected="true">PCA</option>
364 <option value="umap">UMAP</option>
365 </param>
366 <expand macro="plots_common_param"/>
367 </when>
368 </conditional>
369 <conditional name="plot_km_conditional">
370 <param name="plot_km" type="select" label="Generate kaplan meier curves plot?" help="Generate KM curves plot of risk subtype based on predicted events probabilities">
371 <option value="yes">Yes</option>
372 <option value="no" selected="true">No</option>
373 </param>
374 <when value="no">
375 </when>
376 <when value="yes">
377 <expand macro="plots_common_param"/>
378 </when>
379 </conditional>
380 <conditional name="plot_cox_conditional">
381 <param name="plot_cox" type="select" label="Generate hazard ratio plot?" help="Performs Cox regression on data based on top features and selected clinical covariates.">
382 <option value="yes">Yes</option>
383 <option value="no" selected="true">No</option>
384 </param>
385 <when value="no">
386 </when>
387 <when value="yes">
388 <param name="omics_name" type="text" label="Omics layer to use for cox input" optional="true" help="If not specified, the first omics layer will be used.">
389 <expand macro="sanitizer_printable"/>
390 </param>
391 <param argument="--clinical_variables" type="data_column" data_ref="train_clin" 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"/>
392 <param argument="--top_features" type="integer" min="1" value="20" label="Number of top important features to include in Cox model"/>
393 <conditional name="crossval_conditional">
394 <param name="crossval" type="select" label="Performs K-fold cross-validation?">
395 <option value="yes">Yes</option>
396 <option value="no" selected="true">No</option>
397 </param>
398 <when value="yes">
399 <param name="n_splits" type="integer" min="2" value="5" label="Number of folds for cross-validation"/>
400 </when>
401 <when value="no"/>
402 </conditional>
403 <expand macro="plots_common_param"/>
404 </when>
405 </conditional>
406 <conditional name="plot_scatter_conditional">
407 <param name="plot_scatter" type="select" label="Generate scatter plot?" help="Generates a scatter plot of numeric true and predicted labels for all available targets.">
408 <option value="yes">Yes</option>
409 <option value="no" selected="true">No</option>
410 </param>
411 <when value="no">
412 </when>
413 <when value="yes">
414 <expand macro="plots_common_param"/>
415 </when>
416 </conditional>
417 <conditional name="plot_concordance_conditional">
418 <param name="plot_concordance" type="select" label="Generate concordance heatmap plot?" help="Generates a plot showing the concordance between true and predicted labels for all targets.">
419 <option value="yes">Yes</option>
420 <option value="no" selected="true">No</option>
421 </param>
422 <when value="no">
423 </when>
424 <when value="yes">
425 <expand macro="plots_common_param"/>
426 </when>
427 </conditional>
428 <conditional name="plot_pr_curves_conditional">
429 <param name="plot_pr_curves" type="select" label="Generate precision-recall curves plot?" help="Generates precision-recall curves for all available targets.">
430 <option value="yes">Yes</option>
431 <option value="no" selected="true">No</option>
432 </param>
433 <when value="no">
434 </when>
435 <when value="yes">
436 <expand macro="plots_common_param"/>
437 </when>
438 </conditional>
439 <conditional name="plot_roc_curves_conditional">
440 <param name="plot_roc_curves" type="select" label="Generate ROC curves plot?" help="Generates ROC curves for all available targets.">
441 <option value="yes">Yes</option>
442 <option value="no" selected="true">No</option>
443 </param>
444 <when value="no">
445 </when>
446 <when value="yes">
447 <expand macro="plots_common_param"/>
448 </when>
449 </conditional>
450 <conditional name="plot_boxplot_conditional">
451 <param name="plot_boxplot" type="select" label="Generate boxplot?" help="Generates a boxplot for all available targets.">
452 <option value="yes">Yes</option>
453 <option value="no" selected="true">No</option>
454 </param>
455 <when value="no">
456 </when>
457 <when value="yes">
458 <expand macro="plots_common_param"/>
459 </when>
460 </conditional>
461 </section>
337 </when> 462 </when>
338 <when value="us_train"> 463 <when value="us_train">
339 <expand macro="main_inputs"/> 464 <expand macro="main_inputs"/>
340 <repeat name="omics" min="0" title="Multiple omics layers?"> 465 <repeat name="omics" min="0" title="Multiple omics layers?">
341 <expand macro="extra_inputs"/> 466 <expand macro="extra_inputs"/>
362 <option value="CrossModalPred">CrossModalPred</option> 487 <option value="CrossModalPred">CrossModalPred</option>
363 </param> 488 </param>
364 <expand macro="advanced"/> 489 <expand macro="advanced"/>
365 </when> 490 </when>
366 </conditional> 491 </conditional>
367 <section name="plot" title="Visualization">
368 <conditional name="plot_embeddings_conditional">
369 <param name="plot_embeddings" type="select" label="Generate embeddings plot?" help="Generate PCA or UMAP plot of the test dataset">
370 <option value="yes">Yes</option>
371 <option value="no" selected="true">No</option>
372 </param>
373 <when value="no">
374 </when>
375 <when value="yes">
376 <param name="method" type="select" label="Transformation method">
377 <option value="pca" selected="true">PCA</option>
378 <option value="umap">UMAP</option>
379 </param>
380 <expand macro="plots_common_param"/>
381 </when>
382 </conditional>
383 <conditional name="plot_km_conditional">
384 <param name="plot_km" type="select" label="Generate kaplan meier curves plot?" help="Generate KM curves plot of risk subtype based on predicted events probabilities">
385 <option value="yes">Yes</option>
386 <option value="no" selected="true">No</option>
387 </param>
388 <when value="no">
389 </when>
390 <when value="yes">
391 <param name="event_value" type="text" label="Event value" optional="false" help="The value in the event column that indicates an event (e.g. death) has occurred.">
392 <expand macro="sanitizer_printable"/>
393 </param>
394 <expand macro="plots_common_param"/>
395 </when>
396 </conditional>
397 <conditional name="plot_cox_conditional">
398 <param name="plot_cox" type="select" label="Generate hazard ratio plot?" help="Performs Cox regression on data based on top features and selected clinical covariates.">
399 <option value="yes">Yes</option>
400 <option value="no" selected="true">No</option>
401 </param>
402 <when value="no">
403 </when>
404 <when value="yes">
405 <param name="omics_name" type="text" label="Omics layer to use for cox input" optional="false" help="If not specified, the first omics layer will be used.">
406 <expand macro="sanitizer_printable"/>
407 </param>
408 <param name="clinical_variables" type="text" label="Clinical covariates" optional="true" help="Comma-separated list of clinical covariates to include in the Cox model (e.g SEX, AGE, ...).">
409 <expand macro="sanitizer_printable"/>
410 </param>
411 <param argument="--top_features" type="integer" min="1" value="20" label="Number of top important features to include in Cox model"/>
412 <param name="event_value" type="text" label="Event value" optional="false" help="The value in the event column that indicates an event (e.g. death) has occurred.">
413 <expand macro="sanitizer_printable"/>
414 </param>
415 <conditional name="crossval_conditional">
416 <param name="crossval" type="select" label="Performs K-fold cross-validation?">
417 <option value="yes">Yes</option>
418 <option value="no" selected="true">No</option>
419 </param>
420 <when value="yes">
421 <param name="n_splits" type="integer" min="2" value="5" label="Number of folds for cross-validation"/>
422 </when>
423 <when value="no"/>
424 </conditional>
425 <expand macro="plots_common_param"/>
426 </when>
427 </conditional>
428 <conditional name="plot_scatter_conditional">
429 <param name="plot_scatter" type="select" label="Generate scatter plot?" help="Generates a scatter plot of numeric true and predicted labels for all available targets.">
430 <option value="yes">Yes</option>
431 <option value="no" selected="true">No</option>
432 </param>
433 <when value="no">
434 </when>
435 <when value="yes">
436 <expand macro="plots_common_param"/>
437 </when>
438 </conditional>
439 <conditional name="plot_concordance_conditional">
440 <param name="plot_concordance" type="select" label="Generate concordance heatmap plot?" help="Generates a plot showing the concordance between true and predicted labels for all targets.">
441 <option value="yes">Yes</option>
442 <option value="no" selected="true">No</option>
443 </param>
444 <when value="no">
445 </when>
446 <when value="yes">
447 <expand macro="plots_common_param"/>
448 </when>
449 </conditional>
450 <conditional name="plot_pr_curves_conditional">
451 <param name="plot_pr_curves" type="select" label="Generate precision-recall curves plot?" help="Generates precision-recall curves for all available targets.">
452 <option value="yes">Yes</option>
453 <option value="no" selected="true">No</option>
454 </param>
455 <when value="no">
456 </when>
457 <when value="yes">
458 <expand macro="plots_common_param"/>
459 </when>
460 </conditional>
461 <conditional name="plot_roc_curves_conditional">
462 <param name="plot_roc_curves" type="select" label="Generate ROC curves plot?" help="Generates ROC curves for all available targets.">
463 <option value="yes">Yes</option>
464 <option value="no" selected="true">No</option>
465 </param>
466 <when value="no">
467 </when>
468 <when value="yes">
469 <expand macro="plots_common_param"/>
470 </when>
471 </conditional>
472 <conditional name="plot_boxplot_conditional">
473 <param name="plot_boxplot" type="select" label="Generate boxplot?" help="Generates a boxplot for all available targets.">
474 <option value="yes">Yes</option>
475 <option value="no" selected="true">No</option>
476 </param>
477 <when value="no">
478 </when>
479 <when value="yes">
480 <expand macro="plots_common_param"/>
481 </when>
482 </conditional>
483 </section>
484 </inputs> 492 </inputs>
485 <outputs> 493 <outputs>
486 <collection name="results" type="list" label="${tool.name} on ${on_string}: results"> 494 <collection name="results" type="list" label="${tool.name} on ${on_string}: results">
487 <discover_datasets pattern="(?P&lt;name&gt;.+)\.tabular$" format="tabular" directory="output"/> 495 <discover_datasets pattern="(?P&lt;name&gt;.+)\.tabular$" format="tabular" directory="output"/>
488 </collection> 496 </collection>
489 <collection name="plots" type="list" label="${tool.name} on ${on_string}: embeddings plots"> 497 <collection name="plots" type="list" label="${tool.name} on ${on_string}: plots">
490 <discover_datasets pattern="__name_and_ext__" directory="plots"/> 498 <discover_datasets pattern="__name_and_ext__" directory="plots"/>
491 <filter>plot['plot_embeddings_conditional']['plot_embeddings'] == 'yes' or plot['plot_km_conditional']['plot_km'] == 'yes' or plot['plot_cox_conditional']['plot_cox'] == 'yes' or plot['plot_scatter_conditional']['plot_scatter'] == 'yes' or plot['plot_concordance_conditional']['plot_concordance'] == 'yes' or plot['plot_pr_curves_conditional']['plot_pr_curves'] == 'yes' or plot['plot_roc_curves_conditional']['plot_roc_curves'] == 'yes' or plot['plot_boxplot_conditional']['plot_boxplot'] == 'yes'</filter> 499 <filter>training_type['model'] == 's_train' and (training_type['plot']['plot_embeddings_conditional']['plot_embeddings'] == 'yes' or training_type['plot']['plot_km_conditional']['plot_km'] == 'yes' or training_type['plot']['plot_cox_conditional']['plot_cox'] == 'yes' or training_type['plot']['plot_scatter_conditional']['plot_scatter'] == 'yes' or training_type['plot']['plot_concordance_conditional']['plot_concordance'] == 'yes' or training_type['plot']['plot_pr_curves_conditional']['plot_pr_curves'] == 'yes' or training_type['plot']['plot_roc_curves_conditional']['plot_roc_curves'] == 'yes' or training_type['plot']['plot_boxplot_conditional']['plot_boxplot'] == 'yes')</filter>
492 </collection> 500 </collection>
493 </outputs> 501 </outputs>
494 <tests> 502 <tests>
495 <!-- test 1: Supervised training with GEX and CNV data, DirectPred model, Erlotinib target --> 503 <!-- test 1: Supervised training with GEX and CNV data, DirectPred model, Erlotinib target -->
496 <test expect_num_outputs="1"> 504 <test expect_num_outputs="1">
508 <param name="assay" value="foo"/> 516 <param name="assay" value="foo"/>
509 </repeat> 517 </repeat>
510 <conditional name="model_class"> 518 <conditional name="model_class">
511 <param name="model_class" value="DirectPred"/> 519 <param name="model_class" value="DirectPred"/>
512 </conditional> 520 </conditional>
513 <repeat name="targets"> 521 <param name="target_variables" value="3"/>
514 <param name="target_variables" value="3"/>
515 </repeat>
516 <section name="advanced"> 522 <section name="advanced">
517 <param name="hpo_iter" value="1"/> 523 <param name="hpo_iter" value="1"/>
518 </section> 524 </section>
519 </conditional> 525 </conditional>
520 <output_collection name="results" type="list"> 526 <output_collection name="results" type="list">
545 <element name="job.feature_logs.bar"> 551 <element name="job.feature_logs.bar">
546 <assert_contents> 552 <assert_contents>
547 <has_n_lines n="25"/> 553 <has_n_lines n="25"/>
548 </assert_contents> 554 </assert_contents>
549 </element> 555 </element>
550 <element name="job.feature_logs.omics_foo"> 556 <element name="job.feature_logs.foo">
551 <assert_contents> 557 <assert_contents>
552 <has_n_lines n="25"/> 558 <has_n_lines n="25"/>
553 </assert_contents> 559 </assert_contents>
554 </element> 560 </element>
555 <element name="job.predicted_labels"> 561 <element name="job.predicted_labels">
578 <param name="test_omics_main" value="test/gex" ftype="tabular"/> 584 <param name="test_omics_main" value="test/gex" ftype="tabular"/>
579 <param name="assay_main" value="bar"/> 585 <param name="assay_main" value="bar"/>
580 <conditional name="model_class"> 586 <conditional name="model_class">
581 <param name="model_class" value="DirectPred"/> 587 <param name="model_class" value="DirectPred"/>
582 </conditional> 588 </conditional>
583 <repeat name="targets"> 589 <param name="target_variables" value="3"/>
584 <param name="target_variables" value="3"/>
585 </repeat>
586 <section name="advanced"> 590 <section name="advanced">
587 <param name="hpo_iter" value="1"/> 591 <param name="hpo_iter" value="1"/>
588 </section> 592 </section>
589 </conditional> 593 </conditional>
590 <output_collection name="results" type="list"> 594 <output_collection name="results" type="list">
648 <param name="assay" value="foo"/> 652 <param name="assay" value="foo"/>
649 </repeat> 653 </repeat>
650 <conditional name="model_class"> 654 <conditional name="model_class">
651 <param name="model_class" value="DirectPred"/> 655 <param name="model_class" value="DirectPred"/>
652 </conditional> 656 </conditional>
653 <repeat name="targets"> 657 <param name="target_variables" value="4"/>
654 <param name="target_variables" value="4"/>
655 </repeat>
656 <section name="advanced"> 658 <section name="advanced">
657 <param name="hpo_iter" value="1"/> 659 <param name="hpo_iter" value="1"/>
658 </section> 660 </section>
659 </conditional> 661 </conditional>
660 <output_collection name="results" type="list"> 662 <output_collection name="results" type="list">
685 <element name="job.feature_logs.bar"> 687 <element name="job.feature_logs.bar">
686 <assert_contents> 688 <assert_contents>
687 <has_n_lines n="25"/> 689 <has_n_lines n="25"/>
688 </assert_contents> 690 </assert_contents>
689 </element> 691 </element>
690 <element name="job.feature_logs.omics_foo"> 692 <element name="job.feature_logs.foo">
691 <assert_contents> 693 <assert_contents>
692 <has_n_lines n="25"/> 694 <has_n_lines n="25"/>
693 </assert_contents> 695 </assert_contents>
694 </element> 696 </element>
695 <element name="job.predicted_labels"> 697 <element name="job.predicted_labels">
741 <element name="job.feature_logs.bar"> 743 <element name="job.feature_logs.bar">
742 <assert_contents> 744 <assert_contents>
743 <has_n_lines n="25"/> 745 <has_n_lines n="25"/>
744 </assert_contents> 746 </assert_contents>
745 </element> 747 </element>
746 <element name="job.feature_logs.omics_foo"> 748 <element name="job.feature_logs.foo">
747 <assert_contents> 749 <assert_contents>
748 <has_n_lines n="25"/> 750 <has_n_lines n="25"/>
749 </assert_contents> 751 </assert_contents>
750 </element> 752 </element>
751 </output_collection> 753 </output_collection>
786 <element name="job.feature_logs.bar"> 788 <element name="job.feature_logs.bar">
787 <assert_contents> 789 <assert_contents>
788 <has_n_lines n="25"/> 790 <has_n_lines n="25"/>
789 </assert_contents> 791 </assert_contents>
790 </element> 792 </element>
791 <element name="job.feature_logs.omics_foo"> 793 <element name="job.feature_logs.foo">
792 <assert_contents> 794 <assert_contents>
793 <has_n_lines n="25"/> 795 <has_n_lines n="25"/>
794 </assert_contents> 796 </assert_contents>
795 </element> 797 </element>
796 <element name="job.test_decoded.omics_foo"> 798 <element name="job.test_decoded.foo">
797 <assert_contents> 799 <assert_contents>
798 <has_n_lines n="23"/> 800 <has_n_lines n="23"/>
799 </assert_contents> 801 </assert_contents>
800 </element> 802 </element>
801 <element name="job.train_decoded.omics_foo"> 803 <element name="job.train_decoded.foo">
802 <assert_contents> 804 <assert_contents>
803 <has_n_lines n="23"/> 805 <has_n_lines n="23"/>
804 </assert_contents> 806 </assert_contents>
805 </element> 807 </element>
806 </output_collection> 808 </output_collection>
824 <param name="model_class" value="GNN"/> 826 <param name="model_class" value="GNN"/>
825 <param name="gnn_conv_type" value="GC"/> 827 <param name="gnn_conv_type" value="GC"/>
826 <param name="string_organism" value="9606"/> 828 <param name="string_organism" value="9606"/>
827 <param name="string_node_name" value="gene_name"/> 829 <param name="string_node_name" value="gene_name"/>
828 </conditional> 830 </conditional>
829 <repeat name="targets"> 831 <param name="target_variables" value="3"/>
830 <param name="target_variables" value="3"/>
831 </repeat>
832 <section name="advanced"> 832 <section name="advanced">
833 <param name="hpo_iter" value="1"/> 833 <param name="hpo_iter" value="1"/>
834 </section> 834 </section>
835 </conditional> 835 </conditional>
836 <output_collection name="results" type="list"> 836 <output_collection name="results" type="list">
861 <element name="job.feature_logs.bar"> 861 <element name="job.feature_logs.bar">
862 <assert_contents> 862 <assert_contents>
863 <has_n_lines n="25"/> 863 <has_n_lines n="25"/>
864 </assert_contents> 864 </assert_contents>
865 </element> 865 </element>
866 <element name="job.feature_logs.omics_foo"> 866 <element name="job.feature_logs.foo">
867 <assert_contents> 867 <assert_contents>
868 <has_n_lines n="25"/> 868 <has_n_lines n="25"/>
869 </assert_contents> 869 </assert_contents>
870 </element> 870 </element>
871 <element name="job.predicted_labels"> 871 <element name="job.predicted_labels">
917 <element name="job.feature_logs.b_ar"> 917 <element name="job.feature_logs.b_ar">
918 <assert_contents> 918 <assert_contents>
919 <has_n_lines n="25"/> 919 <has_n_lines n="25"/>
920 </assert_contents> 920 </assert_contents>
921 </element> 921 </element>
922 <element name="job.feature_logs.omics_f_oo"> 922 <element name="job.feature_logs.f_oo">
923 <assert_contents> 923 <assert_contents>
924 <has_n_lines n="25"/> 924 <has_n_lines n="25"/>
925 </assert_contents> 925 </assert_contents>
926 </element> 926 </element>
927 </output_collection> 927 </output_collection>
942 <param name="assay" value="foo"/> 942 <param name="assay" value="foo"/>
943 </repeat> 943 </repeat>
944 <conditional name="model_class"> 944 <conditional name="model_class">
945 <param name="model_class" value="XGBoost"/> 945 <param name="model_class" value="XGBoost"/>
946 </conditional> 946 </conditional>
947 <repeat name="targets"> 947 <param name="target_variables" value="3"/>
948 <param name="target_variables" value="3"/>
949 </repeat>
950 <section name="advanced"> 948 <section name="advanced">
951 <param name="hpo_iter" value="1"/> 949 <param name="hpo_iter" value="1"/>
952 </section> 950 </section>
953 </conditional> 951 </conditional>
954 <output_collection name="results" type="list"> 952 <output_collection name="results" type="list">
977 <param name="assay" value="foo"/> 975 <param name="assay" value="foo"/>
978 </repeat> 976 </repeat>
979 <conditional name="model_class"> 977 <conditional name="model_class">
980 <param name="model_class" value="DirectPred"/> 978 <param name="model_class" value="DirectPred"/>
981 </conditional> 979 </conditional>
982 <repeat name="targets"> 980 <param name="target_variables" value="3"/>
983 <param name="target_variables" value="3"/>
984 </repeat>
985 <section name="advanced"> 981 <section name="advanced">
986 <param name="hpo_iter" value="1"/> 982 <param name="hpo_iter" value="1"/>
987 <param name="feature_importance_method" value="IntegratedGradients"/> 983 <param name="feature_importance_method" value="IntegratedGradients"/>
988 <param name="val_size" value="0.2"/> 984 <param name="val_size" value="0.2"/>
989 </section> 985 </section>
1008 <element name="job.feature_logs.bar"> 1004 <element name="job.feature_logs.bar">
1009 <assert_contents> 1005 <assert_contents>
1010 <has_n_lines n="25"/> 1006 <has_n_lines n="25"/>
1011 </assert_contents> 1007 </assert_contents>
1012 </element> 1008 </element>
1013 <element name="job.feature_logs.omics_foo"> 1009 <element name="job.feature_logs.foo">
1014 <assert_contents> 1010 <assert_contents>
1015 <has_n_lines n="25"/> 1011 <has_n_lines n="25"/>
1016 </assert_contents> 1012 </assert_contents>
1017 </element> 1013 </element>
1018 <element name="job.predicted_labels"> 1014 <element name="job.predicted_labels">
1046 <param name="assay" value="foo"/> 1042 <param name="assay" value="foo"/>
1047 </repeat> 1043 </repeat>
1048 <conditional name="model_class"> 1044 <conditional name="model_class">
1049 <param name="model_class" value="DirectPred"/> 1045 <param name="model_class" value="DirectPred"/>
1050 </conditional> 1046 </conditional>
1051 <repeat name="targets"> 1047 <param name="target_variables" value="3"/>
1052 <param name="target_variables" value="3"/>
1053 </repeat>
1054 <section name="advanced"> 1048 <section name="advanced">
1055 <param name="hpo_iter" value="1"/> 1049 <param name="hpo_iter" value="1"/>
1056 </section> 1050 </section>
1051 <section name="plot">
1052 <conditional name="plot_embeddings_conditional">
1053 <param name="plot_embeddings" value="yes"/>
1054 <param name="method" value="pca"/>
1055 <param name="format" value="jpg"/>
1056 <param name="dpi" value="300"/>
1057 </conditional>
1058 </section>
1057 </conditional> 1059 </conditional>
1058 <section name="plot">
1059 <conditional name="plot_embeddings_conditional">
1060 <param name="plot_embeddings" value="yes"/>
1061 <param name="method" value="pca"/>
1062 <param name="format" value="jpg"/>
1063 <param name="dpi" value="300"/>
1064 </conditional>
1065 </section>
1066 <output_collection name="results" type="list"> 1060 <output_collection name="results" type="list">
1067 <element name="job.embeddings_test"> 1061 <element name="job.embeddings_test">
1068 <assert_contents> 1062 <assert_contents>
1069 <has_n_lines n="50"/> 1063 <has_n_lines n="50"/>
1070 </assert_contents> 1064 </assert_contents>
1091 <element name="job.feature_logs.bar"> 1085 <element name="job.feature_logs.bar">
1092 <assert_contents> 1086 <assert_contents>
1093 <has_n_lines n="25"/> 1087 <has_n_lines n="25"/>
1094 </assert_contents> 1088 </assert_contents>
1095 </element> 1089 </element>
1096 <element name="job.feature_logs.omics_foo"> 1090 <element name="job.feature_logs.foo">
1097 <assert_contents> 1091 <assert_contents>
1098 <has_n_lines n="25"/> 1092 <has_n_lines n="25"/>
1099 </assert_contents> 1093 </assert_contents>
1100 </element> 1094 </element>
1101 <element name="job.predicted_labels"> 1095 <element name="job.predicted_labels">
1135 <test expect_num_outputs="2"> 1129 <test expect_num_outputs="2">
1136 <expand macro="common_test"> 1130 <expand macro="common_test">
1137 <section name="plot"> 1131 <section name="plot">
1138 <conditional name="plot_km_conditional"> 1132 <conditional name="plot_km_conditional">
1139 <param name="plot_km" value="yes"/> 1133 <param name="plot_km" value="yes"/>
1140 <param name="event_value" value="1:DECEASED"/>
1141 <param name="format" value="jpg"/> 1134 <param name="format" value="jpg"/>
1142 <param name="dpi" value="300"/> 1135 <param name="dpi" value="300"/>
1143 </conditional> 1136 </conditional>
1144 </section> 1137 </section>
1145 </expand> 1138 </expand>
1159 <expand macro="common_test"> 1152 <expand macro="common_test">
1160 <section name="plot"> 1153 <section name="plot">
1161 <conditional name="plot_cox_conditional"> 1154 <conditional name="plot_cox_conditional">
1162 <param name="plot_cox" value="yes"/> 1155 <param name="plot_cox" value="yes"/>
1163 <param name="omics_name" value="bar"/> 1156 <param name="omics_name" value="bar"/>
1164 <param name="clinical_variables" value="Crizotinib, Erlotinib"/> 1157 <param name="clinical_variables" value="2,3"/>
1165 <param name="top_features" value="10"/> 1158 <param name="top_features" value="10"/>
1166 <param name="event_value" value="1:DECEASED"/>
1167 <param name="format" value="jpg"/> 1159 <param name="format" value="jpg"/>
1168 <param name="dpi" value="300"/> 1160 <param name="dpi" value="300"/>
1169 </conditional> 1161 </conditional>
1170 </section> 1162 </section>
1171 </expand> 1163 </expand>
1172 <output_collection name="plots" type="list"> 1164 <output_collection name="plots" type="list">
1173 <element name="job.final_model_cox_hazard_ratios"> 1165 <element name="job.feature_importance.IntegratedGradients_cox_hazard_ratios">
1174 <assert_contents> 1166 <assert_contents>
1175 <has_image_center_of_mass center_of_mass="972,737" eps="20"/> 1167 <has_image_center_of_mass center_of_mass="972,737" eps="20"/>
1176 <has_image_channels channels="3"/> 1168 <has_image_channels channels="3"/>
1177 <has_image_height height="1461" delta="10"/> 1169 <has_image_height height="1461" delta="10"/>
1178 <has_image_width width="1941" delta="10"/> 1170 <has_image_width width="1941" delta="10"/>
1214 </section> 1206 </section>
1215 </expand> 1207 </expand>
1216 <output_collection name="plots" type="list"> 1208 <output_collection name="plots" type="list">
1217 <element name="job.predicted_labels_concordance_Erlotinib"> 1209 <element name="job.predicted_labels_concordance_Erlotinib">
1218 <assert_contents> 1210 <assert_contents>
1219 <has_image_center_of_mass center_of_mass="1547,1620" eps="30"/> 1211 <has_image_center_of_mass center_of_mass="1547,1590" eps="30"/>
1220 <has_image_channels channels="3"/> 1212 <has_image_channels channels="3"/>
1221 <has_image_height height="3060" delta="50"/> 1213 <has_image_height height="3000" delta="50"/>
1222 <has_image_width width="3192" delta="50"/> 1214 <has_image_width width="3192" delta="50"/>
1223 </assert_contents>
1224 </element>
1225 <element name="job.predicted_labels_concordance_OS_STATUS">
1226 <assert_contents>
1227 <has_image_channels channels="3"/>
1228 <has_image_height height="2558" delta="50"/>
1229 <has_image_width width="2794" delta="50"/>
1230 </assert_contents> 1215 </assert_contents>
1231 </element> 1216 </element>
1232 </output_collection> 1217 </output_collection>
1233 </test> 1218 </test>
1234 <!-- test 15: pr curve plot --> 1219 <!-- test 15: pr curve plot -->
1235 <test expect_num_outputs="2"> 1220 <test expect_num_outputs="2">
1236 <expand macro="common_test"> 1221 <expand macro="common_test_class">
1237 <section name="plot"> 1222 <section name="plot">
1238 <conditional name="plot_pr_curves_conditional"> 1223 <conditional name="plot_pr_curves_conditional">
1239 <param name="plot_pr_curves" value="yes"/> 1224 <param name="plot_pr_curves" value="yes"/>
1240 <param name="format" value="jpg"/> 1225 <param name="format" value="jpg"/>
1241 <param name="dpi" value="300"/> 1226 <param name="dpi" value="300"/>
1242 </conditional> 1227 </conditional>
1243 </section> 1228 </section>
1244 </expand> 1229 </expand>
1245 <output_collection name="plots" type="list"> 1230 <output_collection name="plots" type="list">
1246 <element name="job.predicted_labels_pr_curves_OS_STATUS"> 1231 <element name="job.predicted_labels_pr_curves_class">
1247 <assert_contents> 1232 <assert_contents>
1248 <has_image_center_of_mass center_of_mass="975,732" eps="20"/> 1233 <has_image_center_of_mass center_of_mass="975,732" eps="20"/>
1249 <has_image_channels channels="3"/> 1234 <has_image_channels channels="3"/>
1250 <has_image_height height="1461" delta="20"/> 1235 <has_image_height height="1461" delta="20"/>
1251 <has_image_width width="1941" delta="20"/> 1236 <has_image_width width="1941" delta="20"/>
1253 </element> 1238 </element>
1254 </output_collection> 1239 </output_collection>
1255 </test> 1240 </test>
1256 <!-- test 16: roc curve plot --> 1241 <!-- test 16: roc curve plot -->
1257 <test expect_num_outputs="2"> 1242 <test expect_num_outputs="2">
1258 <expand macro="common_test"> 1243 <expand macro="common_test_class">
1259 <section name="plot"> 1244 <section name="plot">
1260 <conditional name="plot_roc_curves_conditional"> 1245 <conditional name="plot_roc_curves_conditional">
1261 <param name="plot_roc_curves" value="yes"/> 1246 <param name="plot_roc_curves" value="yes"/>
1262 <param name="format" value="jpg"/> 1247 <param name="format" value="jpg"/>
1263 <param name="dpi" value="300"/> 1248 <param name="dpi" value="300"/>
1264 </conditional> 1249 </conditional>
1265 </section> 1250 </section>
1266 </expand> 1251 </expand>
1267 <output_collection name="plots" type="list"> 1252 <output_collection name="plots" type="list">
1268 <element name="job.predicted_labels_roc_curves_OS_STATUS"> 1253 <element name="job.predicted_labels_roc_curves_class">
1269 <assert_contents> 1254 <assert_contents>
1270 <has_image_center_of_mass center_of_mass="970,730" eps="20"/> 1255 <has_image_center_of_mass center_of_mass="970,730" eps="20"/>
1271 <has_image_channels channels="3"/> 1256 <has_image_channels channels="3"/>
1272 <has_image_height height="1461" delta="20"/> 1257 <has_image_height height="1461" delta="20"/>
1273 <has_image_width width="1941" delta="20"/> 1258 <has_image_width width="1941" delta="20"/>
1275 </element> 1260 </element>
1276 </output_collection> 1261 </output_collection>
1277 </test> 1262 </test>
1278 <!-- test 17: boxplot plot --> 1263 <!-- test 17: boxplot plot -->
1279 <test expect_num_outputs="2"> 1264 <test expect_num_outputs="2">
1280 <expand macro="common_test"> 1265 <expand macro="common_test_class">
1281 <section name="plot"> 1266 <section name="plot">
1282 <conditional name="plot_boxplot_conditional"> 1267 <conditional name="plot_boxplot_conditional">
1283 <param name="plot_boxplot" value="yes"/> 1268 <param name="plot_boxplot" value="yes"/>
1284 <param name="format" value="jpg"/> 1269 <param name="format" value="jpg"/>
1285 <param name="dpi" value="300"/> 1270 <param name="dpi" value="300"/>
1286 </conditional> 1271 </conditional>
1287 </section> 1272 </section>
1288 </expand> 1273 </expand>
1289 <output_collection name="plots" type="list"> 1274 <output_collection name="plots" type="list">
1290 <element name="job.predicted_labels_box_plot_OS_STATUS_0_LIVING"> 1275 <element name="job.predicted_labels_box_plot_class_buz">
1291 <assert_contents> 1276 <assert_contents>
1292 <has_image_center_of_mass center_of_mass="1485,882" eps="20"/> 1277 <has_image_center_of_mass center_of_mass="1485,882" eps="20"/>
1293 <has_image_channels channels="3"/> 1278 <has_image_channels channels="3"/>
1294 <has_image_height height="1783" delta="20"/> 1279 <has_image_height height="1783" delta="20"/>
1295 <has_image_width width="2967" delta="20"/> 1280 <has_image_width width="2967" delta="20"/>
1296 </assert_contents> 1281 </assert_contents>
1297 </element> 1282 </element>
1298 <element name="job.predicted_labels_box_plot_OS_STATUS_1_DECEASED"> 1283 <element name="job.predicted_labels_box_plot_class_qux">
1299 <assert_contents> 1284 <assert_contents>
1300 <has_image_center_of_mass center_of_mass="1485,882" eps="20"/> 1285 <has_image_center_of_mass center_of_mass="1485,882" eps="20"/>
1301 <has_image_channels channels="3"/> 1286 <has_image_channels channels="3"/>
1302 <has_image_height height="1765" delta="20"/> 1287 <has_image_height height="1765" delta="20"/>
1303 <has_image_width width="2967" delta="20"/> 1288 <has_image_width width="2967" delta="20"/>
1310 <expand macro="common_test"> 1295 <expand macro="common_test">
1311 <section name="plot"> 1296 <section name="plot">
1312 <conditional name="plot_cox_conditional"> 1297 <conditional name="plot_cox_conditional">
1313 <param name="plot_cox" value="yes"/> 1298 <param name="plot_cox" value="yes"/>
1314 <param name="omics_name" value="bar"/> 1299 <param name="omics_name" value="bar"/>
1315 <param name="clinical_variables" value="Crizotinib, Erlotinib"/> 1300 <param name="clinical_variables" value="2,3"/>
1316 <param name="top_features" value="10"/> 1301 <param name="top_features" value="10"/>
1317 <param name="event_value" value="1:DECEASED"/>
1318 <conditional name="crossval_conditional"> 1302 <conditional name="crossval_conditional">
1319 <param name="crossval" value="yes"/> 1303 <param name="crossval" value="yes"/>
1320 <param name="n_splits" value="5"/> 1304 <param name="n_splits" value="5"/>
1321 </conditional> 1305 </conditional>
1322 <param name="format" value="jpg"/> 1306 <param name="format" value="jpg"/>
1323 <param name="dpi" value="300"/> 1307 <param name="dpi" value="300"/>
1324 </conditional> 1308 </conditional>
1325 </section> 1309 </section>
1326 </expand> 1310 </expand>
1327 <output_collection name="plots" type="list"> 1311 <output_collection name="plots" type="list">
1328 <element name="job.final_model_cox_hazard_ratios"> 1312 <element name="job.feature_importance.IntegratedGradients_cox_hazard_ratios">
1329 <assert_contents> 1313 <assert_contents>
1330 <has_image_center_of_mass center_of_mass="972,737" eps="20"/> 1314 <has_image_center_of_mass center_of_mass="972,737" eps="20"/>
1331 <has_image_channels channels="3"/> 1315 <has_image_channels channels="3"/>
1332 <has_image_height height="1461" delta="10"/> 1316 <has_image_height height="1461" delta="10"/>
1333 <has_image_width width="1941" delta="10"/> 1317 <has_image_width width="1941" delta="10"/>
1351 <param name="assay" value="foo"/> 1335 <param name="assay" value="foo"/>
1352 </repeat> 1336 </repeat>
1353 <conditional name="model_class"> 1337 <conditional name="model_class">
1354 <param name="model_class" value="DirectPred"/> 1338 <param name="model_class" value="DirectPred"/>
1355 </conditional> 1339 </conditional>
1356 <repeat name="targets"> 1340 <param name="target_variables" value="3,2"/>
1357 <param name="target_variables" value="3"/>
1358 </repeat>
1359 <repeat name="targets">
1360 <param name="target_variables" value="2"/>
1361 </repeat>
1362 <section name="advanced"> 1341 <section name="advanced">
1363 <param name="hpo_iter" value="1"/> 1342 <param name="hpo_iter" value="1"/>
1364 </section> 1343 </section>
1365 </conditional> 1344 </conditional>
1366 <assert_stdout> 1345 <assert_stdout>
1398 <element name="job.feature_logs.bar"> 1377 <element name="job.feature_logs.bar">
1399 <assert_contents> 1378 <assert_contents>
1400 <has_n_lines n="25"/> 1379 <has_n_lines n="25"/>
1401 </assert_contents> 1380 </assert_contents>
1402 </element> 1381 </element>
1403 <element name="job.feature_logs.omics_foo"> 1382 <element name="job.feature_logs.foo">
1404 <assert_contents> 1383 <assert_contents>
1405 <has_n_lines n="25"/> 1384 <has_n_lines n="25"/>
1406 </assert_contents> 1385 </assert_contents>
1407 </element> 1386 </element>
1408 <element name="job.predicted_labels"> 1387 <element name="job.predicted_labels">