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