Hi Galaxy Devs,

I think I found a bug in the handling of data_column parameters in combination 
with the data parameter they depend on. Unfortunately in some cases the popup 
menu to select a column number won't get populated. (I did a hg pull yesterday, 
but that didn't solve the problem.)

Here's what I have to reproduce the problem:

1. Make a new histroy
2. Upload a tabular file
3. Upload a FASTA file
4. Select Text Manipulation -> Merge Columns tool
5. Tada, you cannot select a column from the popup menu...

I've traced the problem to detection of a suitable initial value (history item) 
for the data parameter on which the data_column parameter depends. With the 
FASTA file uploaded last it will be selected as the initial value. It's not a 
tabular file, but it can be automagically converted to tabular (is_convertable( 
data ) == true). It won't show up though in the popup menu to select a history 
item for the data parameter. Apparently when the HTML form is generated the 
FASTA file is skipped and the tabular file is the only one in the popup menu.

In galaxy/lib/galaxy/tools/parameters/basic.py:

class DataToolParameter( ToolParameter ):
    ...
    def get_initial_value( self, trans, context ):
        """
        NOTE: This is wasteful since dynamic options and dataset collection
              happens twice (here and when generating HTML). 
        """
        ...
        # The line below is number 1366 (in my version of this file.)
        # This may have bad effects for data_column parameters that depend on 
this data parameter; removing the 'or is_convertable( data )' will 'fix' it,
        # but is no good solution as it kills the ability to select data that 
can be converted automagically to a compatible data type.
        # The note above may explain why the convertable history item does not 
show up in the popup menu...
        #if data.visible and not data.deleted and data.state not in 
[data.states.ERROR, data.states.DISCARDED] and ( isinstance( data.datatype, 
self.formats) or is_convertable( data ) ):
        if data.visible and not data.deleted and data.state not in 
[data.states.ERROR, data.states.DISCARDED] and isinstance( data.datatype, 
self.formats ):

When the data_column parameter is initialized however class 
ColumnListParameter( SelectToolParameter ) -> def get_column_list( self, trans, 
other_values ) sees the FASTA file and hence there will be no 
dataset.metadata.columns and the popup menu remains empty...

If you have another tabular file in your history selecting that one and then 
switching back will update and populate the popup menu for the data_column 
parameter. If the order of the history items in the above example is reversed 
you also won't see the issue as a data set of the correct format is the 
"initial value".

Cheers,

Pi


------------------------------------------------------------------
Biomolecular Mass Spectrometry & Proteomics group
Utrecht University

phone: +31 6 143 66 783
email: pieter.neeri...@gmail.com
skype: pieter.online

visiting address:
H.R. Kruyt building // room O607
Padualaan 8 // 3584 CH Utrecht // The Netherlands

mail address:
P.O. box 80.082 // 3508 TB Utrecht // The Netherlands
------------------------------------------------------------------


___________________________________________________________
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/

Reply via email to