diff gffcompare.xml @ 3:2bb86e2c417f draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/gffcompare commit c8a752199588db982182cbe7fffbcb8512313526
author iuc
date Mon, 27 May 2019 13:54:15 -0400
parents f99d7825a501
children 0f710191a66d
line wrap: on
line diff
--- a/gffcompare.xml	Tue Feb 05 15:51:44 2019 -0500
+++ b/gffcompare.xml	Mon May 27 13:54:15 2019 -0400
@@ -1,11 +1,15 @@
-<tool id="gffcompare" name="GffCompare" version="0.10.6">
+<tool id="gffcompare" name="GffCompare" version="@GFFCOMPARE_VERSION@">
     <description>compare assembled transcripts to a reference annotation</description>
-    <requirements>
-        <requirement type="package" version="0.10.6">gffcompare</requirement>
+    <macros>
+        <token name="@GFFCOMPARE_VERSION@">0.11.2</token>
+    </macros>
+	<requirements>
+        <requirement type="package" version="@GFFCOMPARE_VERSION@">gffcompare</requirement>
     </requirements>
     <version_command>gffcompare -v | awk '{print $2}'</version_command>
     <command detect_errors="aggressive"><![CDATA[
 #import re
+
 #set escaped_element_identifiers = [re.sub('[^\w\-]', '_', str(_.element_identifier)) for _ in $gffinputs]
 #for $input, $escaped_element_identifier in zip($gffinputs, $escaped_element_identifiers):
     ln -s '$input' '$escaped_element_identifier' &&
@@ -18,15 +22,24 @@
     #end if
 #end if
 
+#if $annotation.use_ref_annotation == "Yes":
+    #if $annotation.ref_source.ref_source_sel == "history":
+        ln -s '$annotation.ref_source.reference_annotation' ref_annotation &&
+    #else
+        ln -s '$annotation.ref_source.index.fields.path' ref_annotation &&
+    #end if
+#end if
+
 gffcompare
 ## Use annotation reference?
 #if $annotation.use_ref_annotation == "Yes":
-    -r '$annotation.reference_annotation'
+    -r ref_annotation
     $annotation.ignore_nonoverlapping_reference
     $annotation.ignore_nonoverlapping_transfrags
-    #if not $annotation.refmap_tmap:
-        -T
-    #end if
+    $annotation.strict_match
+#end if
+#if $annotation.refmap_tmap == "":
+    -T
 #end if
 
 ## Use sequence data?
@@ -35,8 +48,10 @@
 #end if
 
 $discard_single_exon
+$discard_duplicates
 -e $max_dist_exon
 -d $max_dist_group
+$chr_stats
 -p '$adv_output.p'
 $adv_output.A
 $adv_output.C
@@ -56,26 +71,46 @@
                 <option value="Yes">Yes</option>
             </param>
             <when value="Yes">
-                <param argument="-r" format="gff3,gtf" help="Requires an annotation file in GFF3 or GTF format." label="Reference Annotation" name="reference_annotation" type="data" />
+                <conditional name="ref_source">
+                    <param label="Choose the source for the reference annotation" name="ref_source_sel" type="select">
+                        <option value="cached">Locally cached</option>
+                        <option value="history">History</option>
+                    </param>
+                    <when value="cached">
+                        <param argument="-r" label="Using reference annotation" name="index" type="select">
+                            <options from_data_table="gene_sets">
+                                <filter column="1" key="dbkey" ref="gffinputs" type="data_meta" />
+                            </options>
+                            <validator message="No reference annotation is available for the build associated with the selected input dataset" type="no_options" />
+                        </param>
+                    </when>
+                    <when value="history">
+                        <param argument="-r" format="gff3,gtf" help="Requires an annotation file in GFF3 or GTF format." label="Reference Annotation" name="reference_annotation" type="data" />
+                    </when>
+                </conditional>
                 <param argument="-R" falsevalue="" help="consider only the reference transcripts that overlap any of the input transfrags (Sn correction)" label="Ignore reference transcripts that are not overlapped by any input transfrags" name="ignore_nonoverlapping_reference" truevalue="-R" type="boolean" />
                 <param argument="-Q" falsevalue="" help="consider only the input transcripts that overlap any of the reference transcripts (Sp correction). Warning: this will discard all 'novel' loci!" label="Ignore input transcripts that are not overlapped by any reference transcripts" name="ignore_nonoverlapping_transfrags" truevalue="-Q" type="boolean" />
-                <param argument="-T" name="refmap_tmap" label="Generate tmap and refmap files for each input file" type="select" multiple="True">
+                <param argument="--strict-match" name="strict_match" type="boolean" checked="false" truevalue="--strict-match" falsevalue=""  label="the match code '=' is only assigned when all exon boundaries match" help="code '~' is assigned for intron chain match or single-exon" />
+                <param argument="-T" name="refmap_tmap" label="Generate tmap or refmap file for each input file" type="select" multiple="True">
                     <option value="refmap" selected="True">refmap</option>
                     <option value="tmap" selected="True">tmap</option>
                 </param>
             </when>
             <when value="No">
+                <param argument="-T" name="refmap_tmap" label="Generate tmap file for each input file" type="select" multiple="True">
+                    <option value="tmap" selected="True">tmap</option>
+                </param>
             </when>
         </conditional>
         <conditional name="seq_data">
             <param help="Use sequence data for some optional classification functions, including the addition of the p_id attribute required by Cuffdiff." label="Use Sequence Data" name="use_seq_data" type="select">
+                <option value="No">No</option>
                 <option value="Yes">Yes</option>
-                <option value="No">No</option>
             </param>
             <when value="No"/>
             <when value="Yes">
                 <conditional name="seq_source">
-                    <param label="Choose the source for the reference list" name="index_source" type="select">
+                    <param label="Choose the source for the reference sequence" name="index_source" type="select">
                         <option value="cached">Locally cached</option>
                         <option value="history">History</option>
                     </param>
@@ -83,8 +118,8 @@
                         <param argument="-s" label="Using reference genome" name="index" type="select">
                             <options from_data_table="fasta_indexes">
                                 <filter column="1" key="dbkey" ref="gffinputs" type="data_meta" />
-                                <validator message="No reference genome is available for the build associated with the selected input dataset" type="no_options" />
                             </options>
+                            <validator message="No reference genome is available for the build associated with the selected input dataset" type="no_options" />
                         </param>
                     </when>
                     <when value="history">
@@ -93,19 +128,26 @@
                 </conditional>
             </when>
         </conditional>
-        <param argument="-M/-N" label="discard (ignore) single-exon transcripts" name="discard_single_exon" type="select">
+        <param name="discard_single_exon" argument="-M/-N" type="select" label="Discard single-exon transcripts" help="If -S and also --strict-match is given, exact matching of all exon boundaries is required">
             <option selected="True" value="">No</option>
             <option value="-M">Discard single-exon transfrags and reference transcripts</option>
             <option value="-N">Discard single-exon reference transcripts</option>
         </param>
+        <param label="Discard duplicates" name="discard_duplicates" type="select">
+            <option value="">None</option>
+            <option value="-D">discard 'duplicate' query transfrags within a single sample (-D)</option>
+            <option value="-S">Only discard 'duplicate' query or reference transcripts if their boundaries are fully contained within other, larger or identical transfrags (-S)</option>
+        </param>
+        <param name="no_merge" argument="--no-merge" type="boolean" checked="false" truevalue="--no-merge" falsevalue=""  label="Disable close-exon merging" help="Default: merge exons separated by 'introns' shorter than 5 bases" />
         <param argument="-e" help="max. distance (range) allowed from free ends of terminal exons of reference transcripts when assessing exon accuracy. Default: 100" label="Max. Distance for assessing exon accuracy" name="max_dist_exon" type="integer" value="100" />
         <param argument="-d" help="max. distance (range) for grouping transcript start sites. Default: 100" label="Max distance for transcript grouping" name="max_dist_group" type="integer" value="100" />
-        <section name="adv_output" title="Options for the annotated/combined GTF output file">
+        <param name="chr_stats" argument="--chr-stats" type="boolean" checked="false" truevalue="--chr-stats" falsevalue="" label="Show summary and accuracy data separately for each reference sequence in the transcript accuracy data set" />
+        <section name="adv_output" title="Options for the combined GTF output file">
             <param argument="-p"  type="text" value="TCONS" label="name prefix for consensus transcripts" help="for combined.gtf (default: 'TCONS')" />
-            <param argument="-C"  type="boolean" checked="false" truevalue="-C" falsevalue=""  label="discard the 'contained' transfrags" help="i.e. collapse intron-redundant transfrags across all query files" />
+            <param argument="-C"  type="boolean" checked="false" truevalue="-C" falsevalue=""  label="discard matching and 'contained' transfrags" help="i.e. collapse intron-redundant transfrags across all query files" />
             <param argument="-A"  type="boolean" checked="false" truevalue="-A" falsevalue=""  label="discard the 'contained' transfrags except intron-redundant transfrags starting with a different 5' exon" help="like -C but does not discard intron-redundant transfrags if they start with a different 5' exon" />
             <param argument="-X"  type="boolean" checked="false" truevalue="-X" falsevalue=""  label="discard the 'contained' transfrags also if ends stick out within the container's introns" help="like -C but also discard contained transfrags if transfrag ends stick out within the container's introns" />
-            <param argument="-K"  type="boolean" checked="false" truevalue="-A" falsevalue=""  label="do NOT discard any redundant transfrag matching a reference" help="for -C/-A/-X" />
+            <param argument="-K"  type="boolean" checked="false" truevalue="-K" falsevalue=""  label="do NOT discard any redundant transfrag matching a reference" help="for -C/-A/-X" />
         </section>
     </inputs>
     <outputs>
@@ -113,51 +155,292 @@
         <data format="tabular" from_work_dir="gffcmp.loci" label="${tool.name} on ${on_string}: loci" name="transcripts_loci" />
         <data format="tabular" from_work_dir="gffcmp.tracking" label="${tool.name} on ${on_string}: data ${gffinputs[0].hid} tracking file" name="transcripts_tracking" />
         <data format="gtf" from_work_dir="gffcmp.combined.gtf" label="${tool.name} on ${on_string}: combined transcripts" name="transcripts_combined">
-            <filter>isinstance(gffinputs, list)</filter>
+            <filter>(isinstance(gffinputs, list) and len(gffinputs) > 1) or annotation['use_ref_annotation'] == "No"</filter>
         </data>
         <data format="gtf" from_work_dir="gffcmp.annotated.gtf" label="${tool.name} on ${on_string}: annotated transcripts" name="transcripts_annotated">
-            <filter>not isinstance(gffinputs, list)</filter>
+            <filter>not (isinstance(gffinputs, list) and len(gffinputs) > 1) and annotation['use_ref_annotation'] == "Yes"</filter>
         </data>
         <collection name="refmap_output" type="list" label="${tool.name} on ${on_string}: refmap">
             <discover_datasets pattern="gffcmp\.(?P&lt;designation&gt;.+)\.refmap" ext="tabular" />
-            <filter>annotation['use_ref_annotation'] == 'Yes' and annotation['refmap_tmap'] != None and 'refmap' in annotation['refmap_tmap']</filter>
+            <filter>annotation['refmap_tmap'] != None and 'refmap' in annotation['refmap_tmap']</filter>
         </collection>
         <collection name="tmap_output" type="list" label="${tool.name} on ${on_string}: tmap">
             <discover_datasets pattern="gffcmp\.(?P&lt;designation&gt;.+)\.tmap" ext="tabular" />
-            <filter>annotation['use_ref_annotation'] == 'Yes' and annotation['refmap_tmap'] != None and 'tmap' in annotation['refmap_tmap']</filter>
+            <filter>annotation['refmap_tmap'] != None and 'tmap' in annotation['refmap_tmap']</filter>
         </collection>
     </outputs>
     <tests>
+        <!-- 2 inputs, no reference, default options -->
+        <test expect_num_outputs="5">
+            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf" />
+            <conditional name="annotation">
+                <param name="use_ref_annotation" value="No" />
+            </conditional>
+            <conditional name="seq_data">
+                <param name="use_seq_data" value="No" />
+            </conditional>
+            <assert_command>
+                <not_has_text text="-R " />
+                <not_has_text text="-Q " />
+                <not_has_text text="--strict-match " />
+                <not_has_text text="-T " />
+                <not_has_text text="-s " />
+                <not_has_text text="-M " />
+                <not_has_text text="-N " />
+                <has_text text="-e 100 " />
+                <has_text text="-d 100 " />
+                <not_has_text text="-D " />
+                <not_has_text text="--no-merge " />
+                <has_text text="-p TCONS " />
+                <not_has_text text="-C " />
+                <not_has_text text="-A " />
+                <not_has_text text="-X " />
+                <not_has_text text="-K " />
+            </assert_command>
+            <output file="gffcompare_out1.stats" name="transcripts_stats" />
+            <output file="gffcompare_out1.loci" name="transcripts_loci" />
+            <output file="gffcompare_out1.tracking" name="transcripts_tracking" />
+            <output file="gffcompare_out1.gtf" name="transcripts_combined" />
+            <output_collection name="tmap_output" type="list" count="2"/>
+        </test>
+        <!-- 2 inputs, no reference, with refsequence, default options (but disable tmap output) -->
+        <test expect_num_outputs="4">
+            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf" />
+            <conditional name="annotation">
+                <param name="use_ref_annotation" value="No" />
+                <param name="refmap_tmap" value=""/>
+            </conditional>
+            <conditional name="seq_data">
+                <param name="use_seq_data" value="Yes" />
+                <conditional name="seq_source">
+                    <param name="index_source" value="history"/>
+                    <param name="ref_file" ftype="fasta" value="sequence.fa"/>
+                </conditional>
+            </conditional>
+            <assert_command>
+                <not_has_text text="-R " />
+                <not_has_text text="-Q " />
+                <has_text text="-T " />
+                <has_text text="-s " />
+                <not_has_text text="-M " />
+                <not_has_text text="-N " />
+                <has_text text="-e 100 " />
+                <has_text text="-d 100 " />
+                <has_text text="-p TCONS " />
+                <not_has_text text="-C " />
+                <not_has_text text="-A " />
+                <not_has_text text="-X " />
+                <not_has_text text="-K " />
+            </assert_command>
+            <output file="gffcompare_out1.stats" name="transcripts_stats" compare="sim_size" />
+            <output file="gffcompare_out1.loci" name="transcripts_loci" compare="sim_size" />
+            <output file="gffcompare_out1.tracking" name="transcripts_tracking" compare="sim_size" />
+            <output file="gffcompare_out1.gtf" name="transcripts_combined" compare="sim_size" />
+        </test>
+        <!-- 2 inputs, no reference, with cached refsequence, default options (but disable tmap output) -->
+        <test expect_num_outputs="4">
+            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf" dbkey="hg17" />
+            <conditional name="annotation">
+                <param name="use_ref_annotation" value="No" />
+                <param name="refmap_tmap" value=""/>
+            </conditional>
+            <conditional name="seq_data">
+                <param name="use_seq_data" value="Yes" />
+                <conditional name="seq_source">
+                    <param name="index_source" value="cached"/>
+                    <param name="index" value="test_buildid"/>
+                </conditional>
+            </conditional>
+            <assert_command>
+                <not_has_text text="-R " />
+                <not_has_text text="-Q " />
+                <has_text text="-T " />
+                <has_text text="-s " />
+                <not_has_text text="-M " />
+                <not_has_text text="-N " />
+                <has_text text="-e 100 " />
+                <has_text text="-d 100 " />
+                <has_text text="-p TCONS " />
+                <not_has_text text="-C " />
+                <not_has_text text="-A " />
+                <not_has_text text="-X " />
+                <not_has_text text="-K " />
+            </assert_command>
+            <output file="gffcompare_out1.stats" name="transcripts_stats" compare="sim_size" />
+            <output file="gffcompare_out1.loci" name="transcripts_loci" compare="sim_size" />
+            <output file="gffcompare_out1.tracking" name="transcripts_tracking" compare="sim_size" />
+            <output file="gffcompare_out1.gtf" name="transcripts_combined" compare="sim_size" />
+        </test>
+        <!-- 2 inputs and reference, default options -->
         <test expect_num_outputs="6">
             <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf" />
-            <param name="use_ref_annotation" value="Yes" />
             <conditional name="annotation">
-                <param ftype="gtf" name="reference_annotation" value="gffcompare_in3.gtf" />
-                <param name="ignore_nonoverlapping_reference" value="Yes" />
-                <param name="ignore_nonoverlapping_transfrags" value="No" />
+                <param name="use_ref_annotation" value="Yes" />
+                <conditional name="ref_source">
+                    <param name="ref_source_sel" value="history"/>
+                    <param ftype="gtf" name="reference_annotation" value="gffcompare_in3.gtf" />
+                </conditional>
+            </conditional>
+            <conditional name="seq_data">
+                <param name="use_seq_data" value="No" />
             </conditional>
-            <param name="use_seq_data" value="No" />
-            <param name="discard_single_exon" value="" />
-            <param name="max_dist_exon" value="100" />
-            <param name="max_dist_group" value="100" />
-            <output file="gffcompare_out1.stats" name="transcripts_stats" lines_diff="6" />
-            <output file="gffcompare_out1.loci" name="transcripts_loci" lines_diff="2" />
-            <output file="gffcompare_out1.tracking" name="transcripts_tracking" />
-            <output file="gffcompare_out1.gtf" name="transcripts_combined" />
+            <assert_command>
+                <not_has_text text="-R " />
+                <not_has_text text="-Q " />
+                <not_has_text text="-T " />
+                <not_has_text text="-M " />
+                <not_has_text text="-N " />
+                <has_text text="-e 100 " />
+                <has_text text="-d 100 " />
+                <has_text text="-p TCONS " />
+                <not_has_text text="-C " />
+                <not_has_text text="-A " />
+                <not_has_text text="-X " />
+                <not_has_text text="-K " />
+            </assert_command>
+            <output file="gffcompare_out2.stats" name="transcripts_stats" lines_diff="6" />
+            <output file="gffcompare_out2.loci" name="transcripts_loci" lines_diff="2" />
+            <output file="gffcompare_out2.tracking" name="transcripts_tracking" />
+            <output file="gffcompare_out2.gtf" name="transcripts_combined" />
             <output_collection name="refmap_output" type="list" count="2">
-                <element name="gffcompare_in1_gtf" file="gffcompare_out1-1.refmap" ftype="tabular" />
-                <element name="gffcompare_in2_gtf" file="gffcompare_out1-2.refmap" ftype="tabular" />
+                <element name="gffcompare_in1_gtf" file="gffcompare_out2-1.refmap" ftype="tabular" />
+                <element name="gffcompare_in2_gtf" file="gffcompare_out2-2.refmap" ftype="tabular" />
             </output_collection>
             <output_collection name="tmap_output" type="list" count="2">
-                <element name="gffcompare_in1_gtf" file="gffcompare_out1-1.tmap" ftype="tabular" />
-                <element name="gffcompare_in2_gtf" file="gffcompare_out1-2.tmap" ftype="tabular" />
+                <element name="gffcompare_in1_gtf" file="gffcompare_out2-1.tmap" ftype="tabular" />
+                <element name="gffcompare_in2_gtf" file="gffcompare_out2-2.tmap" ftype="tabular" />
             </output_collection>
         </test>
+        <!-- 2 inputs and reference (cached), non default options, only refmap output -->
+        <test expect_num_outputs="5">
+            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf" dbkey="hg17" />
+            <conditional name="annotation">
+                <param name="use_ref_annotation" value="Yes" />
+                <conditional name="ref_source">
+                    <param name="ref_source_sel" value="cached"/>
+                    <param name="index" value="test_buildid"/>
+                </conditional>
+                <param name="ignore_nonoverlapping_reference" value="Yes" />
+                <param name="ignore_nonoverlapping_transfrags" value="Yes" />
+                <param name="strict_match" value="--strict-match" />
+                <param name="refmap_tmap" value="refmap" />
+            </conditional>
+            <conditional name="seq_data">
+                <param name="use_seq_data" value="No" />
+            </conditional>
+            <param name="discard_single_exon" value="-M"/>
+            <param name="discard_duplicates" value="-D"/>
+            <param name="no_merge" value="--no-merge" />
+            <param name="max_dist_exon" value="101" />
+            <param name="max_dist_group" value="99" />
+            <param name="chr_stats" value="--chr-stats" />
+            <assert_command>
+                <has_text text="-R " />
+                <has_text text="-Q " />
+                <has_text text="--strict-match " />
+                <not_has_text text="-T " />
+                <has_text text="-M " />
+                <not_has_text text="-N " />
+                <has_text text="-e 101 " />
+                <has_text text="-d 99 " />
+                <has_text text="-D " />
+                <has_text text="--no-merge " />
+                <has_text text="--chr-stats" />
+                <not_has_text text="-p TCONS " />
+                <not_has_text text="-C " />
+                <not_has_text text="-A " />
+                <not_has_text text="-X " />
+                <not_has_text text="-K " />
+            </assert_command>
+            <output file="gffcompare_out2.stats" name="transcripts_stats" compare="sim_size" />
+            <output file="gffcompare_out2.loci" name="transcripts_loci" compare="sim_size" />
+            <output file="gffcompare_out2.tracking" name="transcripts_tracking" compare="sim_size" />
+            <output file="gffcompare_out2.gtf" name="transcripts_combined" compare="sim_size" delta="50000"/>
+            <output_collection name="refmap_output" type="list" count="0"/> <!-- because of -M no refmaps are created -->
+        </test>
+        <!-- 2 inputs and reference, non default advanced options, only tmap output -->
+        <test expect_num_outputs="5">
+            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf" />
+            <conditional name="annotation">
+                <param name="use_ref_annotation" value="Yes" />
+                <conditional name="ref_source">
+                    <param name="ref_source_sel" value="history"/>
+                    <param ftype="gtf" name="reference_annotation" value="gffcompare_in3.gtf" />
+                </conditional>
+                <param name="refmap_tmap" value="tmap" />
+            </conditional>
+            <conditional name="seq_data">
+                <param name="use_seq_data" value="No" />
+            </conditional>
+            <section name="adv_output">
+                <param name="p" value="OTHER" />
+                <param name="C" value="-C" />
+                <param name="A" value="-A" />
+                <param name="X" value="-X" />
+                <param name="K" value="-K" />
+            </section>
+            <assert_command>
+                <not_has_text text="-R " />
+                <not_has_text text="-Q " />
+                <not_has_text text="-T " />
+                <not_has_text text="-M " />
+                <not_has_text text="-N " />
+                <has_text text="-e 100 " />
+                <has_text text="-d 100 " />
+                <has_text text="-p OTHER " />
+                <has_text text="-C " />
+                <has_text text="-A " />
+                <has_text text="-X " />
+                <has_text text="-K " />
+            </assert_command>
+            <output file="gffcompare_out2.stats" name="transcripts_stats" compare="sim_size" />
+            <output file="gffcompare_out2.loci" name="transcripts_loci" compare="sim_size" />
+            <output file="gffcompare_out2.tracking" name="transcripts_tracking" compare="sim_size" />
+            <output file="gffcompare_out2.gtf" name="transcripts_combined" compare="sim_size" delta="50000"/>
+            <output_collection name="tmap_output" type="list" count="2"/>
+        </test>
+        <!-- 2 inputs and reference, default options, no tmap or refmap output -->
+        <test expect_num_outputs="4">
+            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf" />
+            <conditional name="annotation">
+                <param name="use_ref_annotation" value="Yes" />
+                <conditional name="ref_source">
+                    <param name="ref_source_sel" value="history"/>
+                    <param ftype="gtf" name="reference_annotation" value="gffcompare_in3.gtf" />
+                </conditional>
+                <param name="refmap_tmap" value="" />
+            </conditional>
+            <conditional name="seq_data">
+                <param name="use_seq_data" value="No" />
+            </conditional>
+            <assert_command>
+                <not_has_text text="-R " />
+                <not_has_text text="-Q " />
+                <has_text text="-T " />
+                <not_has_text text="-M " />
+                <not_has_text text="-N " />
+                <has_text text="-e 100 " />
+                <has_text text="-d 100 " />
+                <has_text text="-p TCONS " />
+                <not_has_text text="-C " />
+                <not_has_text text="-A " />
+                <not_has_text text="-X " />
+                <not_has_text text="-K " />
+            </assert_command>
+            <output file="gffcompare_out2.stats" name="transcripts_stats" lines_diff="6" />
+            <output file="gffcompare_out2.loci" name="transcripts_loci" lines_diff="2" />
+            <output file="gffcompare_out2.tracking" name="transcripts_tracking" />
+            <output file="gffcompare_out2.gtf" name="transcripts_combined" />
+        </test>
+
         <test expect_num_outputs="4">
             <param ftype="gtf" name="gffinputs" value="gffcompare_in4.gtf" />
-            <param name="use_ref_annotation" value="Yes" />
             <conditional name="annotation">
-                <param ftype="gtf" name="reference_annotation" value="gffcompare_in5.gtf" />
+                <param name="use_ref_annotation" value="Yes" />
+                <conditional name="ref_source">
+                    <param name="ref_source_sel" value="history"/>
+                    <param ftype="gtf" name="reference_annotation" value="gffcompare_in5.gtf" />
+                </conditional>
                 <param name="ignore_nonoverlapping_reference" value="Yes" />
                 <param name="ignore_nonoverlapping_transfrags" value="No" />
                 <param name="refmap_tmap" value="" />
@@ -166,10 +449,10 @@
             <param name="discard_single_exon" value="" />
             <param name="max_dist_exon" value="100" />
             <param name="max_dist_group" value="100" />
-            <output file="gffcompare_out2.stats" name="transcripts_stats" lines_diff="6" />
-            <output file="gffcompare_out2.loci" name="transcripts_loci" />
-            <output file="gffcompare_out2.tracking" name="transcripts_tracking" />
-            <output file="gffcompare_out2.gtf" name="transcripts_annotated" />
+            <output file="gffcompare_out3.stats" name="transcripts_stats" lines_diff="6" />
+            <output file="gffcompare_out3.loci" name="transcripts_loci" />
+            <output file="gffcompare_out3.tracking" name="transcripts_tracking" />
+            <output file="gffcompare_out3.gtf" name="transcripts_annotated" />
         </test>
     </tests>
     <help>
@@ -182,6 +465,8 @@
 * classify transcripts from one or multiple GTF/GFF3 files as they relate to reference transcripts provided in a
 annotation file (also in GTF/GFF3 format)
 
+More information can be found here: https://ccb.jhu.edu/software/stringtie/gffcompare.shtml.
+
 The original form of this program is also distributed as part of the Cufflinks suite, under the name "CuffCompare"
 (see manual: http://cole-trapnell-lab.github.io/cufflinks/cuffcompare/). Most of the options and parameters of CuffCompare
 are supported by GffCompare, while new features will likely be added to GffCompare in the future.