Question: Error invoking workflow with bioblend: TypeError: expected string or buffer
1
felix • 10 wrote:
Hi,
I try to invoke a workflow in my local Galaxy instance using bioblend. I have a history containing the three input files. If I start the workflow in the browser the workflow runs fine.
If I use bioblend to start the workflow the first steps of the workflow are ok, but an error occurs alway at the same step:
galaxy.jobs.runners ERROR 2017-07-19 15:19:29,114 (122) Failure preparing job
Traceback (most recent call last):
File "/galaxy/lib/galaxy/jobs/runners/__init__.py", line 170, in prepare_job
job_wrapper.prepare()
File "/galaxy/lib/galaxy/jobs/__init__.py", line 967, in prepare
tool_evaluator.set_compute_environment( compute_environment, get_special=get_special )
File "/galaxy/lib/galaxy/tools/evaluation.py", line 72, in set_compute_environment
visit_input_values( self.tool.inputs, incoming, validate_inputs )
File "/galaxy/lib/galaxy/tools/parameters/__init__.py", line 109, in visit_input_values
visit_input_values( input.inputs, values, callback, new_name_prefix, label_prefix, parent_prefix=name_prefix, **payload )
File "/galaxy/lib/galaxy/tools/parameters/__init__.py", line 111, in visit_input_values
callback_helper( input, input_values, name_prefix, label_prefix, parent_prefix=parent_prefix, context=context )
File "/galaxy/lib/galaxy/tools/parameters/__init__.py", line 76, in callback_helper
new_value = callback( **args )
File "/galaxy/lib/galaxy/tools/evaluation.py", line 71, in validate_inputs
input.validate( value, request_context )
File "/galaxy/lib/galaxy/tools/parameters/basic.py", line 266, in validate
return super( TextToolParameter, self ).validate( value, trans )
File "/galaxy/lib/galaxy/tools/parameters/basic.py", line 200, in validate
validator.validate( value, trans )
File "/galaxy/lib/galaxy/tools/parameters/validation.py", line 63, in validate
if re.match( self.expression, value or '' ) is None:
File "/galaxy/.venv/lib64/python2.7/re.py", line 137, in match
return _compile(pattern, flags).match(string)
TypeError: expected string or buffer
I invoke the workflow in bioblend like this:
wf_id = 'f2db41e1fa331b3e'
wf_input = {'a26d7898-9075-4a38-89be-e744b9927f9c':{'id':'a7db2fac67043c7e', 'src':'hda'}, '5d1b3519-4aff-4d87-a150-b05f1a438fe0':{'id':'4ff6f47412c3e65e', 'src':'hda'}, '5ecc66f0-bdcb-48d5-a325-785f6ea70760':{'id':'e89067bb68bee7a0', 'src':'hda'}}
wf_invocation = wfc.invoke_workflow(wf_id,
inputs=wf_input,
params=None,
history_id=new_history_id,
history_name=None,
import_inputs_to_history=False,
replacement_params=None,
allow_tool_state_corrections=None)
Edit:
I'm running Galaxy 17.01. The tool that fails is bcftools_call v.1.4.0. The input datasets are not in a collection, they are just three single items in a history. I uploaded them with the 'Upload File' tool.
Any ideas why the workflow runs in the browser, but not with bioblend?
Thanks!
What step/tool is this failing at?
Including the Galaxy version in use and the tool version would be helpful. Also, are you using a Dataset collection for the input to this tool?
A related prior issue that involved this error coming from certain tools. And there is still an open issue for this use case in general (again, only impacts certain tools). It may be that the tool in use needs a modification. If so, we will want to capture that and resolve the problem.
Thanks for reporting the error and we can follow up from the additional info.
Jen, Galaxy team
Hi Jen, I added some information about the Galaxy version and the tool that fails to the question.
For me the difference between invoking the workflow from the browser and from bioblend with the same input (and no options changed) is not clear. Can you explain the difference during the workflow execution?
Thanks for the additional info. I will test the tool and see if it has any settings that are not configured at workflow runtime. Feedback after testing.
The difference between the two methods has to do with the data available a runtime. There are a small number of tools that have form entries that are not tuned for workflow use (yet).
I will be testing in a 17_05 Galaxy as there are many changes, fixes, and upgrades between the two releases. It is strongly recommended that you upgrade to 17_05 as well.
I tried the identical workflow with 17_05 Galaxy and the same error occurs. Thanks for your investigation!
What is the status if this problem? I would be very happy to run my workflow with the API/bioblend. Should I open an issue on the Galaxy GitHub page?