Multiple output tools in Workflow
Hello to everybody I'm developing my own tool that need to switch the numbers of output files according to a parameter selected by the user from a list in the <inputs> tag. How can I do such thing? Here is the XML code: <inputs> <param name="input_dataset" label="Input dataset" type="data" format="showelab-dataset,fbk-svm-dataset"/> <conditional name="format_condition"> <param name="format_options" label="Choose the type of dataset you want to split" type="select"> <option value="fbk">".fbk-svm-dataset" Format</option> <option value="showelab" selected="True">".showelab-dataset" Format</option> </param> <when value="fbk"> <param name="input_fbk_dataset_labels" label="Input dataset labels" type="data" format="fbk-labels"/> </when> </conditional> </inputs> <outputs> <data format="showelab-dataset" name="trainingDataset" label="Training Dataset extracted from ${input_dataset.name}"> <filter>format_options == "showelab"</filter> </data> <data format="showelab-dataset" name="validationDataset" label="Validation Dataset extracted from ${input_dataset.name}"> <filter>format_options == "showelab"</filter> </data> <data format="fbk-svm-dataset" name="trainingDataset" label="Training Dataset extracted from ${input_dataset.name}"> <filter>format_options == "fbk"</filter> </data> <data format="fbk-labels" name="trainingLabels" label="Training Dataset Labels extracted from ${input_fbk_dataset_labels.name}"> <filter>format_options == "fbk"</filter> </data> <data format="fbk-svm-dataset" name="validationDataset" label="Validation Dataset extracted from ${input_dataset.name}"> <filter>format_options == "fbk"</filter> </data> <data format="fbk-labels" name="validationLabels" label="Validation Dataset Labels extracted from ${input_fbk_dataset_labels.name}"> <filter>format_options == "fbk"</filter> </data> </outputs> Basically I would like to have in the Workflow Canvas that the outputs displayed in the interface will change according to the format_options select parameter. Thanks in advance. -- Calogero Zarbo FBK - Fondazione Bruno Kessler Center for Information Technology Mpba - Predictive Models for Biomedicine & Environment Via Sommarive, 18- 38123 Povo (Trento) IT e-mail: zarbo@fbk.eu <https://webmail.fbk.eu/owa/redir.aspx?C=648442797b254191ab144726f9a535e7&URL=mailto%3Adefilippi%40fbk.eu> phone: +39 0461 314 674
On Wed, Jul 16, 2014 at 5:28 PM, Calogero Zarbo <zarbo@fbk.eu> wrote:
Hello to everybody
I'm developing my own tool that need to switch the numbers of output files according to a parameter selected by the user from a list in the <inputs> tag. How can I do such thing?
Here is the XML code: <inputs> <param name="input_dataset" label="Input dataset" type="data" format="showelab-dataset,fbk-svm-dataset"/> <conditional name="format_condition">
<param name="format_options" label="Choose the type of dataset you want to split" type="select"> <option value="fbk">".fbk-svm-dataset" Format</option> <option value="showelab" selected="True">".showelab-dataset" Format</option> </param> <when value="fbk"> <param name="input_fbk_dataset_labels" label="Input dataset labels" type="data" format="fbk-labels"/> </when> </conditional>
</inputs> <outputs> <data format="showelab-dataset" name="trainingDataset" label="Training Dataset extracted from ${input_dataset.name}"> <filter>format_options == "showelab"</filter> </data> <data format="showelab-dataset" name="validationDataset" label="Validation Dataset extracted from ${input_dataset.name}"> <filter>format_options == "showelab"</filter> </data> <data format="fbk-svm-dataset" name="trainingDataset" label="Training Dataset extracted from ${input_dataset.name}"> <filter>format_options == "fbk"</filter> </data> <data format="fbk-labels" name="trainingLabels" label="Training Dataset Labels extracted from ${input_fbk_dataset_labels.name}"> <filter>format_options == "fbk"</filter> </data> <data format="fbk-svm-dataset" name="validationDataset" label="Validation Dataset extracted from ${input_dataset.name}"> <filter>format_options == "fbk"</filter> </data> <data format="fbk-labels" name="validationLabels" label="Validation Dataset Labels extracted from ${input_fbk_dataset_labels.name}"> <filter>format_options == "fbk"</filter> </data>
</outputs>
Basically I would like to have in the Workflow Canvas that the outputs displayed in the interface will change according to the format_options select parameter.
Thanks in advance.
Hi Calogero, I think this tool of mine would serve as a working example: https://github.com/peterjc/pico_galaxy/tree/master/tools/seq_filter_by_id Peter
Hello Peter, Thanks for your answer. I tried your come but I am still not able to make it work the way I want. I mean that in the workflow design page, when I switch the parameter, it doesn't change the graphical list of outputs of the tool. How can I fix it? I want something like the Input, where it shows different outputs according to the selected parameter from the select. Here is the XML code: <inputs> <param name="input_dataset" label="Input dataset (ShoweLab or FBK Format) to split" type="data" format="showelab-dataset,fbk-svm-dataset"/> <conditional name="format_condition"> <param name="format_options" label="Choose the type of dataset you want to split" type="select"> <option value="fbk">FBK Format</option> <option value="showelab" selected="True">ShoweLab Format</option> </param> <when value="fbk"> <param name="input_fbk_dataset_labels" label="Input dataset labels (FBK Format) to split" type="data" format="fbk-labels"/> </when> <when value="showelab" /> </conditional> <param name="split_perc" label="Percentage of Training Set among complete dataset" type="float" min="0.05" max="0.95" value="0.75"/> </inputs> <outputs> <data format="showelab-dataset" name="trainingDataset" label="Training Dataset extracted from ${input_dataset.name}"> <filter>format_condition["format_options"] == "showelab"</filter> </data> <data format="showelab-dataset" name="validationDataset" label="Validation Dataset extracted from ${input_dataset.name}"> <filter>format_condition["format_options"] == "showelab"</filter> </data> <data format="fbk-svm-dataset" name="trainingDataset" label="Training Dataset extracted from ${input_dataset.name}"> <filter>format_condition["format_options"] == "fbk"</filter> </data> <data format="fbk-labels" name="trainingLabels" label="Training Dataset Labels extracted from ${input_fbk_dataset_labels.name}"> <filter>format_condition["format_options"] == "fbk"</filter> </data> <data format="fbk-svm-dataset" name="validationDataset" label="Validation Dataset extracted from ${input_dataset.name}"> <filter>format_condition["format_options"] == "fbk"</filter> </data> <data format="fbk-labels" name="validationLabels" label="Validation Dataset Labels extracted from ${input_fbk_dataset_labels.name}"> <filter>format_condition["format_options"] == "fbk"</filter> </data> </outputs> On Wed, Jul 16, 2014 at 6:54 PM, Peter Cock <p.j.a.cock@googlemail.com> wrote:
On Wed, Jul 16, 2014 at 5:28 PM, Calogero Zarbo <zarbo@fbk.eu> wrote:
Hello to everybody
I'm developing my own tool that need to switch the numbers of output files according to a parameter selected by the user from a list in the <inputs> tag. How can I do such thing?
Here is the XML code: <inputs> <param name="input_dataset" label="Input dataset" type="data" format="showelab-dataset,fbk-svm-dataset"/> <conditional name="format_condition">
<param name="format_options" label="Choose the type of dataset you want to split" type="select"> <option value="fbk">".fbk-svm-dataset" Format</option> <option value="showelab" selected="True">".showelab-dataset" Format</option> </param> <when value="fbk"> <param name="input_fbk_dataset_labels" label="Input dataset labels" type="data" format="fbk-labels"/> </when> </conditional>
</inputs> <outputs> <data format="showelab-dataset" name="trainingDataset" label="Training Dataset extracted from ${input_dataset.name}"> <filter>format_options == "showelab"</filter> </data> <data format="showelab-dataset" name="validationDataset" label="Validation Dataset extracted from ${input_dataset.name}"> <filter>format_options == "showelab"</filter> </data> <data format="fbk-svm-dataset" name="trainingDataset" label="Training Dataset extracted from ${input_dataset.name}"> <filter>format_options == "fbk"</filter> </data> <data format="fbk-labels" name="trainingLabels" label="Training Dataset Labels extracted from ${input_fbk_dataset_labels.name}"> <filter>format_options == "fbk"</filter> </data> <data format="fbk-svm-dataset" name="validationDataset" label="Validation Dataset extracted from ${input_dataset.name}"> <filter>format_options == "fbk"</filter> </data> <data format="fbk-labels" name="validationLabels" label="Validation Dataset Labels extracted from ${input_fbk_dataset_labels.name}"> <filter>format_options == "fbk"</filter> </data>
</outputs>
Basically I would like to have in the Workflow Canvas that the outputs displayed in the interface will change according to the format_options select parameter.
Thanks in advance.
Hi Calogero,
I think this tool of mine would serve as a working example: https://github.com/peterjc/pico_galaxy/tree/master/tools/seq_filter_by_id
Peter
-- Calogero Zarbo FBK - Fondazione Bruno Kessler Center for Information Technology Mpba - Predictive Models for Biomedicine & Environment Via Sommarive, 18- 38123 Povo (Trento) IT e-mail: zarbo@fbk.eu <https://webmail.fbk.eu/owa/redir.aspx?C=648442797b254191ab144726f9a535e7&URL=mailto%3Adefilippi%40fbk.eu> phone: +39 0461 314 674
On Thu, Jul 17, 2014 at 1:58 PM, Calogero Zarbo <zarbo@fbk.eu> wrote:
Hello Peter,
Thanks for your answer.
I tried your come but I am still not able to make it work the way I want. I mean that in the workflow design page, when I switch the parameter, it doesn't change the graphical list of outputs of the tool. How can I fix it? I want something like the Input, where it shows different outputs according to the selected parameter from the select.
Here is the XML code:
<inputs> <param name="input_dataset" label="Input dataset (ShoweLab or FBK Format) to split" type="data" format="showelab-dataset,fbk-svm-dataset"/>
<conditional name="format_condition">
<param name="format_options" label="Choose the type of dataset you want to split" type="select"> <option value="fbk">FBK Format</option> <option value="showelab" selected="True">ShoweLab Format</option> </param> <when value="fbk"> <param name="input_fbk_dataset_labels" label="Input dataset labels (FBK Format) to split" type="data" format="fbk-labels"/> </when> <when value="showelab" /> </conditional> <param name="split_perc" label="Percentage of Training Set among complete dataset" type="float" min="0.05" max="0.95" value="0.75"/>
</inputs> <outputs> <data format="showelab-dataset" name="trainingDataset" label="Training Dataset extracted from ${input_dataset.name}"> <filter>format_condition["format_options"] == "showelab"</filter>
</data> <data format="showelab-dataset" name="validationDataset" label="Validation Dataset extracted from ${input_dataset.name}"> <filter>format_condition["format_options"] == "showelab"</filter>
</data> <data format="fbk-svm-dataset" name="trainingDataset" label="Training Dataset extracted from ${input_dataset.name}"> <filter>format_condition["format_options"] == "fbk"</filter>
</data> <data format="fbk-labels" name="trainingLabels" label="Training Dataset Labels extracted from ${input_fbk_dataset_labels.name}"> <filter>format_condition["format_options"] == "fbk"</filter>
</data> <data format="fbk-svm-dataset" name="validationDataset" label="Validation Dataset extracted from ${input_dataset.name}"> <filter>format_condition["format_options"] == "fbk"</filter>
</data> <data format="fbk-labels" name="validationLabels" label="Validation Dataset Labels extracted from ${input_fbk_dataset_labels.name}"> <filter>format_condition["format_options"] == "fbk"</filter> </data> </outputs>
You appear to have multiple defined datasets (three versions of trainingDataset) which may be the problem, as the name is meant to be unique. I think you should have ONE <data> tag for trainingDataset but set this up to switch output formats accordingly. Peter
Ok, thanks for the the tip. I changed the XML to this one: <outputs> <data format="showelab-dataset" name="trainingDataset" label="Training Dataset extracted from ${input_dataset.name}"> <change_format> <when input="format_options" value="fbk" format="fbk-svm-dataset"/> </change_format> </data> <data format="showelab-dataset" name="validationDataset" label="Validation Dataset extracted from ${input_dataset.name}"> <change_format> <when input="format_options" value="fbk" format="fbk-svm-dataset"/> </change_format> </data> <data format="fbk-labels" name="trainingLabels" label="Training Dataset Labels extracted from ${input_fbk_dataset_labels.name}"> <filter>format_condition['format_options'] == "fbk"</filter> </data> <data format="fbk-labels" name="validationLabels" label="Validation Dataset Labels extracted from ${input_fbk_dataset_labels.name}"> <filter>format_condition['format_options'] == "fbk"</filter> </data> </outputs> Still is not working, maybe the "<when input="format_options" value="fbk" format="fbk-svm-dataset"/>" . Maybe it has some problem since the "format_options" parameter is inside a "conditional" tag? Thanks a lot for your time. On Thu, Jul 17, 2014 at 3:08 PM, Peter Cock <p.j.a.cock@googlemail.com> wrote:
On Thu, Jul 17, 2014 at 1:58 PM, Calogero Zarbo <zarbo@fbk.eu> wrote:
Hello Peter,
Thanks for your answer.
I tried your come but I am still not able to make it work the way I want. I mean that in the workflow design page, when I switch the parameter, it doesn't change the graphical list of outputs of the tool. How can I fix it? I want something like the Input, where it shows different outputs according to the selected parameter from the select.
Here is the XML code:
<inputs> <param name="input_dataset" label="Input dataset (ShoweLab or FBK Format) to split" type="data" format="showelab-dataset,fbk-svm-dataset"/>
<conditional name="format_condition">
<param name="format_options" label="Choose the type of dataset you want to split" type="select"> <option value="fbk">FBK Format</option> <option value="showelab" selected="True">ShoweLab Format</option> </param> <when value="fbk"> <param name="input_fbk_dataset_labels" label="Input dataset labels (FBK Format) to split" type="data" format="fbk-labels"/> </when> <when value="showelab" /> </conditional> <param name="split_perc" label="Percentage of Training Set among complete dataset" type="float" min="0.05" max="0.95" value="0.75"/>
</inputs> <outputs> <data format="showelab-dataset" name="trainingDataset" label="Training Dataset extracted from ${input_dataset.name}"> <filter>format_condition["format_options"] == "showelab"</filter>
</data> <data format="showelab-dataset" name="validationDataset" label="Validation Dataset extracted from ${input_dataset.name}"> <filter>format_condition["format_options"] == "showelab"</filter>
</data> <data format="fbk-svm-dataset" name="trainingDataset" label="Training Dataset extracted from ${input_dataset.name}"> <filter>format_condition["format_options"] == "fbk"</filter>
</data> <data format="fbk-labels" name="trainingLabels" label="Training Dataset Labels extracted from ${input_fbk_dataset_labels.name}"> <filter>format_condition["format_options"] == "fbk"</filter>
</data> <data format="fbk-svm-dataset" name="validationDataset" label="Validation Dataset extracted from ${input_dataset.name}"> <filter>format_condition["format_options"] == "fbk"</filter>
</data> <data format="fbk-labels" name="validationLabels" label="Validation Dataset Labels extracted from ${input_fbk_dataset_labels.name}"> <filter>format_condition["format_options"] == "fbk"</filter> </data> </outputs>
You appear to have multiple defined datasets (three versions of trainingDataset) which may be the problem, as the name is meant to be unique.
I think you should have ONE <data> tag for trainingDataset but set this up to switch output formats accordingly.
Peter
-- Calogero Zarbo FBK - Fondazione Bruno Kessler Center for Information Technology Mpba - Predictive Models for Biomedicine & Environment Via Sommarive, 18- 38123 Povo (Trento) IT e-mail: zarbo@fbk.eu <https://webmail.fbk.eu/owa/redir.aspx?C=648442797b254191ab144726f9a535e7&URL=mailto%3Adefilippi%40fbk.eu> phone: +39 0461 314 674
On Thu, Jul 17, 2014 at 2:43 PM, Calogero Zarbo <zarbo@fbk.eu> wrote:
Ok, thanks for the the tip.
I changed the XML to this one:
<outputs> <data format="showelab-dataset" name="trainingDataset" label="Training Dataset extracted from ${input_dataset.name}"> <change_format> <when input="format_options" value="fbk" format="fbk-svm-dataset"/> </change_format>
</data> <data format="showelab-dataset" name="validationDataset" label="Validation Dataset extracted from ${input_dataset.name}"> <change_format> <when input="format_options" value="fbk" format="fbk-svm-dataset"/> </change_format>
</data>
<data format="fbk-labels" name="trainingLabels" label="Training Dataset Labels extracted from ${input_fbk_dataset_labels.name}"> <filter>format_condition['format_options'] == "fbk"</filter> </data>
<data format="fbk-labels" name="validationLabels" label="Validation Dataset Labels extracted from ${input_fbk_dataset_labels.name}"> <filter>format_condition['format_options'] == "fbk"</filter> </data>
</outputs>
Still is not working, maybe the "<when input="format_options" value="fbk" format="fbk-svm-dataset"/>" . Maybe it has some problem since the "format_options" parameter is inside a "conditional" tag?
Thanks a lot for your time.
I'm not sure off hand - is your complete wrapper in a public repository somewhere we can look at? However, my general advice would be: First of all, get it working in the normal tool usage mode (tested by hand). Then I would get it working with functional tests. Finally I would test it by hand in the workflow editor, at which point any problem is probably Galaxy's fault ;) Peter
participants (2)
-
Calogero Zarbo
-
Peter Cock