annotate COBRAxy/flux_simulation.xml @ 510:c17c6c9d112c draft

Uploaded
author francesco_lapi
date Tue, 07 Oct 2025 09:48:18 +0000
parents 97eea560a10f
children 0cb727788cae
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
1 <tool id="fluxSimulation" name="Flux Simulation" version="2.0.0">
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
2
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
3 <macros>
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
4 <import>marea_macros.xml</import>
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
5 </macros>
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
6
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
7 <requirements>
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
8 <requirement type="package" version="1.24.4">numpy</requirement>
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
9 <requirement type="package" version="2.0.3">pandas</requirement>
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
10 <requirement type="package" version="0.29.0">cobra</requirement>
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
11 <requirement type="package" version="5.2.2">lxml</requirement>
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
12 <requirement type="package" version="1.4.2">joblib</requirement>
307
d905439271fa Uploaded
francesco_lapi
parents: 229
diff changeset
13 <requirement type="package" version="1.11">scipy</requirement>
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
14 </requirements>
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
15
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
16 <command detect_errors="exit_code">
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
17 <![CDATA[
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
18 python $__tool_directory__/flux_simulation.py
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
19 --tool_dir $__tool_directory__
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
20 --model_and_bounds $model_and_bounds.model_and_bounds
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
21
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
22 #if $model_and_bounds.model_and_bounds == 'True':
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
23 --model_upload $model_and_bounds.model_upload
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
24 --input "${",".join(map(str, $model_and_bounds.inputs))}"
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
25 #set $names = ""
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
26 #for $input_temp in $model_and_bounds.inputs:
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
27 #set $names = $names + $input_temp.element_identifier + ","
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
28 #end for
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
29 --name $names
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
30 #else:
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
31 --input "${",".join(map(str, $model_and_bounds.model_files))}"
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
32 #set $names = ""
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
33 #for $input_temp in $model_and_bounds.model_files:
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
34 #set $names = $names + $input_temp.element_identifier + ","
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
35 #end for
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
36 --name $names
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
37 #end if
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
38
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
39 --sampling_enabled $sampling_params.sampling_enabled
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
40
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
41 #if $sampling_params.sampling_enabled == 'true':
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
42 --thinning 0
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
43 #if $sampling_params.algorithm_param.algorithm == 'OPTGP':
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
44 --thinning $sampling_params.algorithm_param.thinning
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
45 #end if
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
46 --algorithm $sampling_params.algorithm_param.algorithm
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
47 --n_batches $sampling_params.n_batches
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
48 --n_samples $sampling_params.n_samples
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
49 --seed $sampling_params.seed
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
50 --output_type "${",".join(map(str, $sampling_params.output_types))}"
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
51 #else:
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
52 --thinning 0
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
53 --algorithm 'CBS'
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
54 --n_batches 1
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
55 --n_samples 1
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
56 --seed 0
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
57 --output_type 'mean'
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
58 #end if
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
59
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
60 --output_type_analysis "${",".join(map(str, $output_types_analysis))}"
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
61
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
62 #if 'FVA' in str($output_types_analysis):
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
63 --perc_opt $fva_params.optimality_fraction
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
64 #end if
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
65
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
66 --out_log $log
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
67 ]]>
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
68 </command>
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
69
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
70 <inputs>
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
71 <conditional name="model_and_bounds">
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
72 <param name="model_and_bounds" argument="--model_and_bounds" type="select" label="Upload mode:" help="Choose whether to upload the model and bounds in separate files or to upload multiple complete model files.">
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
73 <option value="True" selected="true">Model + bounds (separate files)</option>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
74 <option value="False">Multiple complete models</option>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
75 </param>
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
76
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
77 <when value="True">
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
78 <param name="model_upload" argument="--model_upload" type="data" format="csv,tsv,tabular"
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
79 label="Model (rules) file:"
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
80 help="Upload a CSV/TSV file that contains the model reaction rules. Recommended columns: ReactionID, Reaction (formula), Rule (GPR). Optional columns: name, lower_bound, upper_bound, InMedium. If bounds are present here they may be overridden by separate bound files." />
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
81
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
82 <param name="inputs" argument="--inputs" multiple="true" type="data" format="tabular,csv,tsv"
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
83 label="Bound file(s):"
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
84 help="Upload one or more CSV/TSV files containing reaction bounds. Each file must include at least: ReactionID, lower_bound, upper_bound. Files are applied in the order provided; later files override earlier ones for the same ReactionID." />
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
85 </when>
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
86
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
87 <when value="False">
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
88 <param name="model_files" argument="--model_files" multiple="true" type="data" format="csv,tsv,tabular"
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
89 label="Complete model files:"
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
90 help="Upload one or more CSV/TSV files, each containing both model rules and reaction bounds for different contexts/cells. Required columns: ReactionID, Reaction, Rule, lower_bound, upper_bound." />
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
91 </when>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
92 </conditional>
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
93
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
94 <conditional name="sampling_params">
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
95 <param name="sampling_enabled" argument="--sampling_enabled" type="boolean" display="checkboxes" checked="false" label="Enable sampling" help="Enable flux sampling"/>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
96
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
97 <when value="true">
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
98 <conditional name="algorithm_param">
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
99 <param name="algorithm" argument="--algorithm" type="select" label="Choose sampling algorithm:">
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
100 <option value="CBS" selected="true">CBS</option>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
101 <option value="OPTGP">OPTGP</option>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
102 </param>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
103 <when value="OPTGP">
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
104 <param name="thinning" argument="--thinning" type="integer" label="Thinning:" value="100" help="Number of iterations to wait before taking a sample."/>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
105 </when>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
106 </conditional>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
107
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
108 <param name="n_samples" argument="--n_samples" type="integer" label="Samples:" value="1000" min="1" max="1000"/>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
109 <param name="n_batches" argument="--n_batches" type="integer" label="Batches:" value="1" help="This is useful for computational performances."/>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
110 <param name="seed" argument="--seed" type="integer" label="Seed:" value="0" help="Random seed."/>
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
111
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
112 <param type="select" argument="--output_types" multiple="true" name="output_types" label="Choose outputs from sampling">
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
113 <option value="mean" selected="true">Mean</option>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
114 <option value="median" selected="true">Median</option>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
115 <option value="quantiles" selected="true">Quantiles</option>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
116 <option value="fluxes" selected="false">All fluxes</option>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
117 </param>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
118 </when>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
119
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
120 <when value="false">
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
121 <!-- Hidden parameters when sampling is disabled -->
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
122 <param name="algorithm" type="hidden" value="CBS"/>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
123 <param name="n_samples" type="hidden" value="1000"/>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
124 <param name="n_batches" type="hidden" value="1"/>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
125 <param name="seed" type="hidden" value="0"/>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
126 <param name="output_types" type="hidden" value="mean"/>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
127 </when>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
128 </conditional>
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
129
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
130 <param type="select" argument="--output_types_analysis" multiple="true" name="output_types_analysis" label="Choose outputs from optimization">
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
131 <option value="FVA" selected="true">FVA</option>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
132 <option value="pFBA" selected="false">pFBA</option>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
133 <option value="sensitivity" selected="false">Sensitivity reaction knock-out (Biomass)</option>
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
134 </param>
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
135
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
136 <conditional name="fva_params">
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
137 <param name="show_fva_options" type="boolean" display="checkboxes" checked="false" label="Configure FVA parameters" help="Show additional FVA configuration options"/>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
138 <when value="true">
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
139 <param name="optimality_fraction" argument="--fva_optimality" type="float" label="FVA Optimality (fraction):" value="0.90" min="0.0" max="1.0"
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
140 help="Fraction of optimality for FVA analysis. 1.0 means the flux must be optimal, lower values allow suboptimal solutions."/>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
141 </when>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
142 <when value="false">
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
143 <param name="optimality_fraction" argument="--fva_optimality" type="hidden" value="1.0"/>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
144 </when>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
145 </conditional>
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
146
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
147 </inputs>
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
148
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
149 <outputs>
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
150 <data format="txt" name="log" label="Flux Simulation - Log" />
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
151 <data name="output" format="tabular" label="Flux Simulation - Output">
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
152 <discover_datasets pattern="__name_and_ext__" directory="flux_simulation" visible="true" />
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
153 </data>
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
154 </outputs>
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
155
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
156 <help>
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
157 <![CDATA[
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
158 What it does
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
159 -------------
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
160
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
161 This tool generates flux samples starting from metabolic models using CBS (Corner-based sampling) or OPTGP (Improved Artificial Centering Hit-and-Run sampler) algorithms.
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
162
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
163 Two upload modes are supported:
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
164 1. **Model + bounds**: Upload one base model and multiple bound files (one per context/cell type)
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
165 2. **Multiple complete models**: Upload multiple complete model files, each with integrated bounds
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
166
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
167 It can return sampled fluxes by applying summary statistics:
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
168 - mean
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
169 - median
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
170 - quantiles (0.25, 0.50, 0.75)
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
171
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
172 Flux analysis can be performed over the metabolic model by using the objective function already set in the model. The following analyses are supported:
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
173 - parsimonious-FBA (optimized by Biomass)
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
174 - FVA (with configurable optimality percentage)
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
175 - Biomass sensitivity analysis (single reaction knock-out)
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
176
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
177 Output:
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
178 -------------
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
179
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
180 The tool generates:
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
181 - Samples: reporting the sampled fluxes for each reaction (reaction names on the rows and sample names on the columns). Format: tab-separated.
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
182 - a log file (.txt).
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
183
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
184 **TIP**: Bounds generated by RAStoBound are grouped in a collection. You can select collections by clicking on "Dataset Collection" option in the "Bound file(s):" input parameter.
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
185
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
186 **TIP**: The Batches parameter helps maintain memory efficiency. For 10,000 samples, use n_samples=1,000 and n_batches=10.
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
187
489
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
188 **TIP**: The Thinning parameter for OPTGP helps converge to stationary distribution.
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
189
97eea560a10f Uploaded
francesco_lapi
parents: 381
diff changeset
190 **TIP**: FVA optimality percentage allows you to explore suboptimal flux ranges. 100% restricts to optimal solutions, while lower values (e.g., 90%) allow broader flux ranges.
93
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
191 ]]>
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
192 </help>
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
193 <expand macro="citations_fluxes" />
7e703e546998 Uploaded
luca_milaz
parents:
diff changeset
194 </tool>