As recently discussed on this mailing list,
With long workflows it becomes somewhat difficult to make sense of the
The 'label' option in the <output> tag is good start, but there's still
room for improvement.
I propose a new 'tag' element which might help a little bit.
Here's an example:
I have five tools in a simple workflow:
Starting with a FASTQ file,
Each tool has an <output> option with a label. The label takes the
description of the tool, and the name of the input.
Example from the low-complexity-repeats-remove tool:
<data format="input" name="output"
label="$input.name (without low-complexity repeats)"
Similarly, most of the other tools have a 'label' option in the XML file.
The problem is that after running the workflow, the name of each dataset
becomes longer and longer, and more cumbersome.
Even if I start with a very short name for the initial FASTQ file (e.g.
'AG14'), The other datasets are named like:
AG14 (Fasta) clipped,
AG14 (Fasta) clipped collapsed,
Filter sequences by length on data 5
Filter sequences by length on data 5 (without low complexity repeats)
(The filter-sequences-by-length tool doesn't have a 'label' option with
makes the output even worse.)
I would like each data set to have a 'tag' - a short name which is
carried over from one dataset to the next, without taking the entire
dataset's name. This 'tag' is usually just the name of the initial dataset.
going back to the previous example, if I use the initial library name as
the tag (=AG14), the output of the workflow would look like:
AG14 (Filtered Sequences)
AG14 (without low complexity repeats)
I tried to add this functionality to the galaxy source code.
I'm aware that the Right Thing to do is probably to add a new column to
the relevant database table, and setup the tools to automatically take
the tag from one dataset to the next. However, as an intermediate
solution, my hack works nicely (I'm attaching pictures of 'before' and
'after :-) ).
With this hack, one can use the following 'label' in the XML <output> tag:
The "$input.tag" extract the tag from the input's name, and puts in the
square brackets, so that the next tool will also be able to extract the tag.
Here's the added code ( ./lib/galaxy/model/__init__.py ):
class HistoryDatasetAssociation( object ):
def tag ( self ):
#Hack by gordon:
#add a '.tag' attribute
tag_match = re.search( '\[([^+)\]', self.name);
tag = "[" + tag_match.group(1) + "]" ;
tag = "[" + self.name + "]" ;
Thanks for reading so far,
Any comments and welcomed,