Hi all,

I’m trying to develop a tool that lets you select a file on the server. I’m using the dynamic_options setting to let Galaxy render a dropdown list of available file.


However, when I try to test the tool in its current form, I get the following error:

<pre>
galaxy.web.framework.decorators ERROR 2016-01-26 13:08:35,649 Uncaught exception in exposed API method:
Traceback (most recent call last):
  File "lib/galaxy/web/framework/decorators.py", line 260, in decorator
    rval = func( self, trans, *args, **kwargs)
  File "lib/galaxy/webapps/galaxy/api/tools.py", line 98, in build
    return tool.to_json(trans, kwd.get('inputs', kwd))
  File "lib/galaxy/tools/__init__.py", line 2602, in to_json
    populate_state(trans, self.inputs, state_inputs, state_errors, params.__dict__)
  File "lib/galaxy/tools/__init__.py", line 2471, in populate_state
    state[input.name] = input.get_initial_value(trans, context, history=history)
  File "lib/galaxy/tools/parameters/basic.py", line 984, in get_initial_value
    value = [ optval for _, optval, selected in options if selected ]
ValueError: too many values to unpack
</pre>

My tool xml looks like this:

<pre>

<tool id="archivetolibrary" name="Copy files" version="0.1.0">
  <description>from the archive to a data library</description>
  <code file="list_files.py"/>
  <command interpreter="bash">
    test.sh > $log
  </command>
  <inputs>
    <param name="archive_source" type="select" display="radio" label="Choose source archive">
      <options from_file="archives.loc">
        <column name="name" index="0"/>
        <column name="value" index="1"/>
      </options>
    </param>
    <param name="query" type="text" label="Search for files"/>
    <param name="selected_file" type="select" label="Choose your file" dynamic_options="list_files(archive_source,query)"/>
</inputs>
  <outputs>
    <data name="log" format="txt" label="${tool.name} on ${on_string}"></data>
 </outputs>
  <tests>
    <test>
    </test>
  </tests>
  <help>
This tool copies data from and archive folder to your history. Keep in mind this folder MUST be readable by Galaxy in order for this tool to work.
  </help>
</tool>

</pre>

and the script called in the “code” tag looks like this

<pre>
def list_files(dir,query): listing=[]
for fname in listdir(dir): 
 fullpath = path.join(dir, fname) #only select datafiles, not md5 checksums 
 if path.isfile(fullpath) and not fullpath.endswith(".md5"): 
 listing.append( fname )
return listing 
</pre>

This script should return a list with filenames that should be displayed in the dropdown list.

I’m tracking Galaxy release 15.10, running on a Ubuntu 14.04.3 server

Thanks for your help!

Matthias