Multiple output tools in Workflow

classic Classic list List threaded Threaded
6 messages Options
Reply | Threaded
Open this post in threaded view
|

Multiple output tools in Workflow

Calogero Zarbo
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@...
phone: +39 0461 314 674

___________________________________________________________
Please keep all replies on the list by using "reply all"
in your mail client.  To manage your subscriptions to this
and other Galaxy lists, please use the interface at:
  http://lists.bx.psu.edu/

To search Galaxy mailing lists use the unified search at:
  http://galaxyproject.org/search/mailinglists/
Reply | Threaded
Open this post in threaded view
|

Re: Multiple output tools in Workflow

Peter Cock
On Wed, Jul 16, 2014 at 5:28 PM, Calogero Zarbo <[hidden email]> 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
___________________________________________________________
Please keep all replies on the list by using "reply all"
in your mail client.  To manage your subscriptions to this
and other Galaxy lists, please use the interface at:
  http://lists.bx.psu.edu/

To search Galaxy mailing lists use the unified search at:
  http://galaxyproject.org/search/mailinglists/
Reply | Threaded
Open this post in threaded view
|

Re: Multiple output tools in Workflow

Calogero Zarbo
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 <[hidden email]> wrote:
On Wed, Jul 16, 2014 at 5:28 PM, Calogero Zarbo <[hidden email]> 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@...
phone: +39 0461 314 674

___________________________________________________________
Please keep all replies on the list by using "reply all"
in your mail client.  To manage your subscriptions to this
and other Galaxy lists, please use the interface at:
  http://lists.bx.psu.edu/

To search Galaxy mailing lists use the unified search at:
  http://galaxyproject.org/search/mailinglists/
Reply | Threaded
Open this post in threaded view
|

Re: Multiple output tools in Workflow

Peter Cock
On Thu, Jul 17, 2014 at 1:58 PM, Calogero Zarbo <[hidden email]> 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
___________________________________________________________
Please keep all replies on the list by using "reply all"
in your mail client.  To manage your subscriptions to this
and other Galaxy lists, please use the interface at:
  http://lists.bx.psu.edu/

To search Galaxy mailing lists use the unified search at:
  http://galaxyproject.org/search/mailinglists/
Reply | Threaded
Open this post in threaded view
|

Re: Multiple output tools in Workflow

Calogero Zarbo
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 <[hidden email]> wrote:
On Thu, Jul 17, 2014 at 1:58 PM, Calogero Zarbo <[hidden email]> 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@...
phone: +39 0461 314 674

___________________________________________________________
Please keep all replies on the list by using "reply all"
in your mail client.  To manage your subscriptions to this
and other Galaxy lists, please use the interface at:
  http://lists.bx.psu.edu/

To search Galaxy mailing lists use the unified search at:
  http://galaxyproject.org/search/mailinglists/
Reply | Threaded
Open this post in threaded view
|

Re: Multiple output tools in Workflow

Peter Cock
On Thu, Jul 17, 2014 at 2:43 PM, Calogero Zarbo <[hidden email]> 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
___________________________________________________________
Please keep all replies on the list by using "reply all"
in your mail client.  To manage your subscriptions to this
and other Galaxy lists, please use the interface at:
  http://lists.bx.psu.edu/

To search Galaxy mailing lists use the unified search at:
  http://galaxyproject.org/search/mailinglists/