Hi all,
I am having trouble with what looked to me at first to be a "simple" syntactical issue with writing the XML wrapper for a new Galaxy tool. I had thought this would be easy, but perhaps I am missing something incredibly simple, as I am having no success at all. The relevant parts look something like this:
<command interpreter="sh">
mycommand.sh
-i $input
#if $param_file.use_params == "true"#
-p $params
#end if
</command>
<inputs>
<param format="fasta" name="input" type="data" label="Source File"/>
<conditional name="param_file">
<param name="use_params" type="select" label="Use custom parameter file?">
<option value="true">Yes</option>
<option value="false" selected="true">No</option>
</param>
<when value="true">
<param format="text" name="params" type="data" label="Parameter File" value=""/>
</when>
</conditional>
</inputs>
It's very simple, I just want the line "-p $params" to appear in the command line when the parameter "use_params" parameter is set to true.
However, when building the command line statement to run, I get this error:
----------------------
Traceback (most recent call last):
File "/Users/jrl909/Galaxy/galaxy-dist/lib/galaxy/jobs/runners/local.py", line 59, in run_job
job_wrapper.prepare()
File "/Users/jrl909/Galaxy/galaxy-dist/lib/galaxy/jobs/__init__.py", line 424, in prepare
self.command_line = self.tool.build_command_line( param_dict )
File "/Users/jrl909/Galaxy/galaxy-dist/lib/galaxy/tools/__init__.py", line 1827, in build_command_line
command_line = fill_template( self.command, context=param_dict )
File "/Users/jrl909/Galaxy/galaxy-dist/lib/galaxy/util/template.py", line 9, in fill_template
return str( Template( source=template_text, searchList=[context] ) )
File "/Users/jrl909/Galaxy/galaxy-dist/eggs/Cheetah-2.2.2-py2.7-macosx-10.6-intel-ucs2.egg/Cheetah/Template.py", line 1004, in __str__
return getattr(self, mainMethName)()
File "cheetah_DynamicallyCompiledCheetahTemplate_1328561167_73_97196.py", line 84, in respond
NotFound: cannot find 'use_params' while searching for 'param_file.use_params'
-------------------
As far as I can tell, the syntax I've used here is the same as that found in the example file suggested by the Galaxy documentation: interval2maf.xml (what I see as the "relevant" sections being reproduced below):
---------------
<command interpreter="python">
#if $maf_source_type.maf_source == "user" #interval2maf.py --dbkey=${input1.dbkey} --chromCol=${input1.metadata.chromCol} --startCol=${input1.metadata.startCol} --endCol=${input1.metadata.endCol} --strandCol=${input1.metadata.strandCol} --mafFile=$maf_source_type.mafFile --mafIndex=$maf_source_type.mafFile.metadata.maf_index --interval_file=$input1 --output_file=$out_file1 --mafIndexFile=${GALAXY_DATA_INDEX_DIR}/maf_index.loc --species=$maf_source_type.species
#else #interval2maf.py --dbkey=${input1.dbkey} --chromCol=${input1.metadata.chromCol} --startCol=${input1.metadata.startCol} --endCol=${input1.metadata.endCol} --strandCol=${input1.metadata.strandCol} --mafType=$maf_source_type.mafType --interval_file=$input1 --output_file=$out_file1 --mafIndexFile=${GALAXY_DATA_INDEX_DIR}/maf_index.loc --species=$maf_source_type.species
#end if# --split_blocks_by_species=$split_blocks_by_species_selector.split_blocks_by_species
#if $split_blocks_by_species_selector.split_blocks_by_species == "split_blocks_by_species"#
--remove_all_gap_columns=$split_blocks_by_species_selector.remove_all_gap_columns
#end if
</command>
<inputs>
...
blahblahblah
...
<conditional name="split_blocks_by_species_selector">
<param name="split_blocks_by_species" type="select" label="Split blocks by species" help="Not usually applicable. See help below for more information.">
<option value="split_blocks_by_species">Split by species</option>
<option value="dont_split_blocks_by_species" selected="true">Do not split</option>
</param>
<when value="dont_split_blocks_by_species">
<!-- do nothing here -->
</when>
<when value="split_blocks_by_species">
<param name="remove_all_gap_columns" type="select" label="Collapse empty alignment columns">
<option value="remove_all_gap_columns" selected="true">Collapse empty columns</option>
<option value="do_not_remove_all_gap_columns">Do not collapse</option>
</param>
</when>
</conditional>
</inputs>
-------------------
As you can see, the field 'split_blocks_by_species' is referenced in an #if-block in the command specification the same way my 'use_params' field is.
I would like very much to know the apparently crucial difference that I'm missing!
Thanks,
-Jeff