changeset 7:31d5c8c3adde draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/gffcompare commit c62791a7ff6fef8cb19b84465662d13effaffe1d
author iuc
date Tue, 13 May 2025 19:03:48 +0000
parents 3c5e024a18cf
children
files gffcompare.xml macros.xml
diffstat 2 files changed, 330 insertions(+), 197 deletions(-) [+]
line wrap: on
line diff
--- a/gffcompare.xml	Fri Oct 04 08:47:42 2024 +0000
+++ b/gffcompare.xml	Tue May 13 19:03:48 2025 +0000
@@ -1,4 +1,4 @@
-<tool id="gffcompare" name="GffCompare" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="21.05">
+<tool id="gffcompare" name="GffCompare" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="23.2">
     <description>compare assembled transcripts to a reference annotation</description>
     <macros>
         <import>macros.xml</import>
@@ -6,7 +6,7 @@
     <xrefs>
         <xref type="bio.tools">gffcompare</xref>
     </xrefs>
-    <expand macro="requirements" />
+    <expand macro="requirements"/>
     <version_command>gffcompare -v | awk '{print $2}'</version_command>
     <command detect_errors="aggressive"><![CDATA[
         #import re
@@ -68,7 +68,7 @@
         #end if
     ]]></command>
     <inputs>
-        <param format="gtf,gff3" name="gffinputs" type="data" label="GTF inputs for comparison" help="" multiple="true" />
+        <param format="gtf,gff3" name="gffinputs" type="data" label="GTF inputs for comparison" multiple="true"/>
         <conditional name="conditional_annotation">
             <param  name="selector" type="select" label="Use reference annotation">
                 <option value="no">No</option>
@@ -83,9 +83,9 @@
                     <when value="cached">
                         <param argument="-r" label="Using reference annotation" name="index" type="select">
                             <options from_data_table="gene_sets">
-                                <filter column="dbkey" key="dbkey" ref="gffinputs" type="data_meta" />
+                                <filter column="dbkey" 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" />
+                            <validator message="No reference annotation is available for the build associated with the selected input dataset" type="no_options"/>
                         </param>
                     </when>
                     <when value="history">
@@ -107,7 +107,7 @@
                     </param>
                     <when value=""/>
                     <when value="--strict-match">
-                        <param argument="-e" label="Maximum range of variation for the free ends of terminal exons" type="integer" value="100" />
+                        <param argument="-e" label="Maximum range of variation for the free ends of terminal exons" type="integer" value="100"/>
                     </when>
                 </conditional>
                 <param name="discard_single_exon" argument="-M/-N" type="select" label="Discard single-exon transcripts" help="If -S and also --strict-match is given, 
@@ -127,11 +127,11 @@
                         <param argument="-S" type="boolean" truevalue="-S" falsevalue="" checked="false" label="Strict duplicate checking" help="When -D is enabled (or
                             multiple query files are provided), perform a more strict duplicate checking: only discard matching (same intron chain) query  transcripts from 
                             the same sample if their boundaries are fully contained within (or same with) matching transcripts if --strict-match is also given, exact match 
-                            of all exons is required" />
+                            of all exons is required"/>
                     </when>
                 </conditional>
                 <param  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" />
+                    help="Default: merge exons separated by 'introns' shorter than 5 bases"/>
             </when>
             <when value="no"/>
         </conditional>
@@ -150,9 +150,9 @@
                     <when value="cached">
                         <param argument="-s" label="Using reference genome" name="index" type="select">
                             <options from_data_table="fasta_indexes">
-                                <filter column="dbkey" key="dbkey" ref="gffinputs" type="data_meta" />
+                                <filter column="dbkey" key="dbkey" ref="gffinputs" type="data_meta"/>
                             </options>
-                            <validator message="No reference genome is available for the build associated with the selected input dataset" type="no_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">
@@ -162,24 +162,24 @@
                 </conditional>
             </when>
         </conditional>
-        <param argument="-d" name="max_dist_group" type="integer" value="100" min="0" help="Maximum distance (range) for grouping transcript start sites. Default: 100" label="Max distance for transcript grouping" />
-        <param argument="--chr-stats" type="boolean" checked="false" truevalue="--chr-stats" falsevalue="" label="Stats per reference contig/chromosome" help="Show summary and accuracy data separately for each reference sequence in the transcript accuracy data set" />
+        <param argument="-d" name="max_dist_group" type="integer" value="100" min="0" help="Maximum distance (range) for grouping transcript start sites. Default: 100" label="Max distance for transcript grouping"/>
+        <param argument="--chr-stats" type="boolean" checked="false" truevalue="--chr-stats" falsevalue="" label="Stats per reference contig/chromosome" help="Show summary and accuracy data separately for each reference sequence in the transcript accuracy data set"/>
         <param argument="-T" name="refmap_tmap" type="boolean" truevalue="" falsevalue="-T" checked="true" label="Generate TMAP and RefMap files for each input" help="TMAP are tabular files that store the information regarding the best match for each prediction in the reference.
             RefMap files are tabular files which store the information regarding the best match for each reference transcript, among all possible prediction models. More information in the help section"/>
         <section name="adv_output" title="Combined GTF output parameters">
             <param argument="-p" type="text" value="TCONS" label="Name prefix for consensus transcripts">
                 <sanitizer invalid_char="">
                     <valid initial="string.letters,string.digits">
-                        <add value="_" />
-                        <add value="-" />
+                        <add value="_"/>
+                        <add value="-"/>
                     </valid>
                 </sanitizer>
                 <validator type="regex">[0-9a-zA-Z_-]+</validator>
             </param>
-            <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="-K" falsevalue=""  label="Do NOT discard any redundant transfrag matching a reference" help="For -C/-A/-X" />
+            <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="-K" falsevalue="" label="Do NOT discard any redundant transfrag matching a reference" help="For -C/-A/-X"/>
         </section>
     </inputs>
     <outputs>
@@ -190,8 +190,8 @@
         <data name="transcripts_combined" format="gtf" from_work_dir="gffcmp.combined.gtf" label="${tool.name} on ${on_string}: combined transcripts" >
             <filter>len(gffinputs) > 1</filter>
         </data>
-        <collection name="refmap_output_collection" type="list" label="${tool.name} on ${on_string}: RefMap">
-            <discover_datasets pattern="gffcmp\.(?P&lt;designation&gt;.+)\.refmap" ext="tabular" />
+        <collection name="refmap_output_collection" type="list" label="${tool.name} on ${on_string}: RefMap Collection">
+            <discover_datasets pattern="gffcmp\.(?P&lt;designation&gt;.+)\.refmap" ext="tabular"/>
             <filter>conditional_annotation['selector'] == 'yes'</filter>
             <filter>len(gffinputs) > 1</filter>
             <filter>refmap_tmap</filter>
@@ -201,8 +201,8 @@
             <filter>len(gffinputs) == 1</filter>
             <filter>refmap_tmap</filter>
         </data>
-        <collection name="tmap_output_collection" type="list" label="${tool.name} on ${on_string}: TMAP">
-            <discover_datasets pattern="gffcmp\.(?P&lt;designation&gt;.+)\.tmap" ext="tabular" />
+        <collection name="tmap_output_collection" type="list" label="${tool.name} on ${on_string}: TMAP Collection">
+            <discover_datasets pattern="gffcmp\.(?P&lt;designation&gt;.+)\.tmap" ext="tabular"/>
             <filter>refmap_tmap</filter>
             <filter>len(gffinputs) > 1</filter>
         </collection>
@@ -210,117 +210,171 @@
             <filter>refmap_tmap</filter>
             <filter>len(gffinputs) == 1</filter>
         </data>
-        <data name="transcripts_stats" format="txt" from_work_dir="gffcmp.stats" label="${tool.name} on ${on_string}: accuracy stats"  />
-        <data name="transcripts_loci" format="tabular" from_work_dir="gffcmp.loci" label="${tool.name} on ${on_string}: loci file" />
-        <data name="transcripts_tracking" format="tabular" from_work_dir="gffcmp.tracking" label="${tool.name} on ${on_string}: tracking file"  />
+        <data name="transcripts_stats" format="txt" from_work_dir="gffcmp.stats" label="${tool.name} on ${on_string}: accuracy stats"/>
+        <data name="transcripts_loci" format="tabular" from_work_dir="gffcmp.loci" label="${tool.name} on ${on_string}: loci file"/>
+        <data name="transcripts_tracking" format="tabular" from_work_dir="gffcmp.tracking" label="${tool.name} on ${on_string}: tracking file"/>
     </outputs>
     <tests>
         <!-- Test 01: 2 inputs, no reference, default options -->
         <test expect_num_outputs="5">
-            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf" />
+            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf"/>
             <conditional name="conditional_annotation">
                 <param name="selector" value="no"/>
             </conditional>
             <conditional name="seq_data">
-                <param name="selector" value="no" />
+                <param name="selector" 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 " />
-                <has_text_matching expression="^.*gffcompare((?!-s).)*$" /> <!-- since ln also has -s a more complicated regexp is needed here to check if -s is not set -->
-                <not_has_text text="-M " />
-                <not_has_text text="-N " />
-                <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 " />
+                <not_has_text text="-R "/>
+                <not_has_text text="-Q "/>
+                <not_has_text text="--strict-match "/>
+                <not_has_text text="-T "/>
+                <has_text_matching expression="^.*gffcompare((?!-s).)*$"/> <!-- since ln also has -s a more complicated regexp is needed here to check if -s is not set -->
+                <not_has_text text="-M "/>
+                <not_has_text text="-N "/>
+                <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 name="transcripts_stats" ftype="txt">
+                <assert_contents>
+                    <has_line line="#gffcompare -V -d 100 -p TCONS gffcompare_in1_gtf gffcompare_in2_gtf"/>
+                    <has_line line=" Total union super-loci across all input datasets: 7 "/>
+                    <has_n_lines n="15"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_loci" ftype="tabular">
+                <assert_contents>
+                    <has_n_lines n="7"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_tracking">
+                <assert_contents>
+                    <has_n_lines n="9"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_combined">
+                <assert_contents>
+                    <has_n_lines n="18"/>
+                </assert_contents>
+            </output>
             <output_collection name="tmap_output_collection" type="list" count="2"/>
         </test>
         <!-- Test 02: 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" />
+            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf"/>
             <param name="refmap_tmap" value="false"/>
             <conditional name="conditional_annotation">
                 <param name="selector" value="no"/>
             </conditional>
             <conditional name="seq_data">
-                <param name="selector" value="Yes" />
+                <param name="selector" value="yes"/>
                 <conditional name="seq_source">
                     <param name="index_source" value="history"/>
-                    <param name="ref_file" ftype="fasta" value="sequence.fa"/>
+                    <param name="ref_genome" 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_matching expression="gffcompare.*-s " /> <!-- since ln also has -s a more complicated regexp is needed here to check if -s is set -->
-                <not_has_text text="-M " />
-                <not_has_text text="-N " />
-                <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 " />
+                <not_has_text text="-R "/>
+                <not_has_text text="-Q "/>
+                <has_text text="-T "/>
+                <has_text_matching expression="gffcompare.*-s "/> <!-- since ln also has -s a more complicated regexp is needed here to check if -s is set -->
+                <not_has_text text="-M "/>
+                <not_has_text text="-N "/>
+                <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" />
+            <output name="transcripts_stats" ftype="txt">
+                <assert_contents>
+                    <has_line line="#gffcompare -V -T -d 100 -p TCONS gffcompare_in1_gtf gffcompare_in2_gtf"/>
+                    <has_line line=" Total union super-loci across all input datasets: 7 "/>
+                    <has_n_lines n="15"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_loci" ftype="tabular">
+                <assert_contents>
+                    <has_n_lines n="7"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_tracking">
+                <assert_contents>
+                    <has_n_lines n="9"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_combined">
+                <assert_contents>
+                    <has_n_lines n="18"/>
+                </assert_contents>
+            </output>
         </test>
         <!-- Test 03: 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" />
+            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf" dbkey="hg17"/>
             <param name="refmap_tmap" value="false"/>
             <conditional name="conditional_annotation">
                 <param name="selector" value="no"/>
             </conditional>
             <conditional name="seq_data">
-                <param name="selector" value="yes" />
+                <param name="selector" 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_matching expression="gffcompare.*-s " />
-                <not_has_text text="-M " />
-                <not_has_text text="-N " />
-                <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 " />
+                <not_has_text text="-R "/>
+                <not_has_text text="-Q "/>
+                <has_text text="-T "/>
+                <has_text_matching expression="gffcompare.*-s "/>
+                <not_has_text text="-M "/>
+                <not_has_text text="-N "/>
+                <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" />
+            <output name="transcripts_stats" ftype="txt">
+                <assert_contents>
+                    <has_line line="#gffcompare -V -T -d 100 -p TCONS gffcompare_in1_gtf gffcompare_in2_gtf"/>
+                    <has_line line=" Total union super-loci across all input datasets: 7 "/>
+                    <has_n_lines n="15"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_loci" ftype="tabular">
+                <assert_contents>
+                    <has_n_lines n="7"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_tracking">
+                <assert_contents>
+                    <has_n_lines n="9"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_combined">
+                <assert_contents>
+                    <has_n_lines n="18"/>
+                </assert_contents>
+            </output>
         </test>
         <!-- Test 04: 2 inputs and reference, default options -->
         <test expect_num_outputs="6">
-            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf" />
+            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf"/>
             <conditional name="conditional_annotation">
                 <param name="selector" value="yes"/>
                 <conditional name="ref_source">
                     <param name="ref_source_sel" value="history"/>
-                    <param ftype="gtf" name="reference_annotation" value="gffcompare_in3.gtf" />
+                    <param ftype="gtf" name="reference_annotation" value="gffcompare_in3.gtf"/>
                 </conditional>
                 <conditional name="conditional_strict">
                     <param name="selector" value="--strict-match"/>
@@ -328,42 +382,53 @@
                 </conditional>
             </conditional>
             <conditional name="seq_data">
-                <param name="seletor" value="no" />
+                <param name="seletor" value="no"/>
             </conditional>
             <assert_command>
-                <not_has_text text="-R " />
-                <not_has_text text="-Q " />
-                <has_text text="--strict-match " />
-                <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 " />
-                <not_has_text text="-D " />
-                <not_has_text text="--no-merge " />
-                <not_has_text text="--chr-stats" />
-                <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 " />
+                <not_has_text text="-R "/>
+                <not_has_text text="-Q "/>
+                <has_text text="--strict-match "/>
+                <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 "/>
+                <not_has_text text="-D "/>
+                <not_has_text text="--no-merge "/>
+                <not_has_text text="--chr-stats"/>
+                <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" />
-            <output file="gffcompare_out2.gtf" name="transcripts_combined" />
-            <output_collection name="refmap_output_collection" type="list" count="2">
-                <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_collection" type="list" count="2">
-                <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>
+            <output name="transcripts_stats" ftype="txt">
+                <assert_contents>
+                    <has_line line=" Total union super-loci across all input datasets: 7 "/>
+                    <has_line line="#gffcompare -V -r reference_annotation --strict-match -e 100 -d 100 -p TCONS gffcompare_in1_gtf gffcompare_in2_gtf"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_loci" ftype="tabular">
+                <assert_contents>
+                    <has_n_lines n="7"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_tracking" ftype="tabular">
+                <assert_contents>
+                    <has_n_lines n="9"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_combined" ftype="gtf">
+                <assert_contents>
+                    <has_n_lines n="18"/>
+                </assert_contents>
+            </output>
+            <output_collection name="refmap_output_collection" type="list" count="2"/>
+            <output_collection name="tmap_output_collection" type="list" count="2"/>
         </test>
         <!-- Test 05: 2 inputs and reference (cached), non default options -->
         <test expect_num_outputs="6">
-            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf" dbkey="hg17" />
+            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf" dbkey="hg17"/>
             <conditional name="conditional_annotation">
                 <param name="selector" value="yes"/>
                 <conditional name="ref_source">
@@ -383,123 +448,174 @@
                     <param name="S" value="false"/>
                 </conditional>
             </conditional>
-            <param name="max_dist_group" value="99" />
-            <param name="chr_stats" value="true" />
+            <param name="max_dist_group" value="99"/>
+            <param name="chr_stats" value="true"/>
             <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" />
-                <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 " />
+                <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"/>
+                <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 name="transcripts_stats" ftype="txt">
+                <assert_contents>
+                    <has_line line=" Total union super-loci across all input datasets: 0 "/>
+                    <has_line line="#gffcompare -V -r reference_annotation -R -Q --strict-match -e 101 -M -D --no-merge -d 99 --chr-stats -p TCONS gffcompare_in1_gtf gffcompare_in2_gtf"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_loci" ftype="tabular">
+                <assert_contents>
+                    <has_n_lines n="0"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_tracking" ftype="tabular">
+                <assert_contents>
+                    <has_n_lines n="0"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_combined" ftype="gtf">
+                <assert_contents>
+                    <has_n_lines n="0"/>
+                </assert_contents>
+            </output>
             <output_collection name="refmap_output_collection" type="list" count="0"/> <!-- because of -M no refmaps are created -->
             <output_collection name="tmap_output_collection" type="list" count="2"/>
         </test>
         <!-- Test 06: 2 inputs and reference, non default advanced options -->
         <test expect_num_outputs="6">
-            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf" />
+            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf"/>
             <conditional name="conditional_annotation">
                 <param name="selector" value="yes"/>
                 <conditional name="ref_source">
                     <param name="ref_source_sel" value="history"/>
-                    <param ftype="gtf" name="reference_annotation" value="gffcompare_in3.gtf" />
+                    <param ftype="gtf" name="reference_annotation" value="gffcompare_in3.gtf"/>
                 </conditional>
             </conditional>
             <conditional name="seq_data">
-                <param name="selector" value="no" />
+                <param name="selector" value="no"/>
             </conditional>
             <section name="adv_output">
-                <param name="p" value="OTHER" />
-                <param name="C" value="true" />
-                <param name="A" value="true" />
-                <param name="X" value="true" />
-                <param name="K" value="true" />
+                <param name="p" value="OTHER"/>
+                <param name="C" value="true"/>
+                <param name="A" value="true"/>
+                <param name="X" value="true"/>
+                <param name="K" value="true"/>
             </section>
             <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="-M " />
-                <not_has_text text="-N " />
-                <not_has_text text="-e 100 " />
-                <has_text text="-d 100 " />
-                <not_has_text text="-D " />
-                <not_has_text text="--no-merge " />
-                <not_has_text text="--chr-stats" />
-                <has_text text="-p 'OTHER' " />
-                <has_text text="-C " />
-                <has_text text="-A " />
-                <has_text text="-X " />
-                <has_text text="-K " />
+                <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="-M "/>
+                <not_has_text text="-N "/>
+                <not_has_text text="-e 100 "/>
+                <has_text text="-d 100 "/>
+                <not_has_text text="-D "/>
+                <not_has_text text="--no-merge "/>
+                <not_has_text text="--chr-stats"/>
+                <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 name="transcripts_stats" ftype="txt">
+                <assert_contents>
+                    <has_line line=" Total union super-loci across all input datasets: 7 "/>
+                    <has_line line="#gffcompare -V -r reference_annotation -d 100 -p OTHER -A -C -X -K gffcompare_in1_gtf gffcompare_in2_gtf"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_loci" ftype="tabular">
+                <assert_contents>
+                    <has_n_lines n="7"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_tracking" ftype="tabular">
+                <assert_contents>
+                    <has_n_lines n="9"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_combined" ftype="gtf">
+                <assert_contents>
+                    <has_n_lines n="14"/>
+                </assert_contents>
+            </output>
             <output_collection name="tmap_output_collection" type="list" count="2"/>
             <output_collection name="tmap_output_collection" type="list" count="2"/>
         </test>
         <!-- Test 07: 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" />
+            <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf"/>
             <param name="refmap_tmap" value="false"/>
             <conditional name="conditional_annotation">
                 <param name="selector" value="yes"/>
                 <conditional name="ref_source">
                     <param name="ref_source_sel" value="history"/>
-                    <param ftype="gtf" name="reference_annotation" value="gffcompare_in3.gtf" />
+                    <param ftype="gtf" name="reference_annotation" value="gffcompare_in3.gtf"/>
                 </conditional>
             </conditional>
             <conditional name="seq_data">
-                <param name="selector" value="No" />
+                <param name="selector" value="no"/>
             </conditional>
             <assert_command>
-                <not_has_text text="-R " />
-                <not_has_text text="-Q " />
-                <not_has_text text="--strict-match " />
-                <has_text text="-T " />
-                <not_has_text text="-M " />
-                <not_has_text text="-N " />
-                <has_text text="-d 100 " />
-                <not_has_text text="-D " />
-                <not_has_text text="--no-merge " />
-                <not_has_text text="--chr-stats" />
-                <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 " />
+                <not_has_text text="-R "/>
+                <not_has_text text="-Q "/>
+                <not_has_text text="--strict-match "/>
+                <has_text text="-T "/>
+                <not_has_text text="-M "/>
+                <not_has_text text="-N "/>
+                <has_text text="-d 100 "/>
+                <not_has_text text="-D "/>
+                <not_has_text text="--no-merge "/>
+                <not_has_text text="--chr-stats"/>
+                <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="2" />
-            <output file="gffcompare_out2.loci" name="transcripts_loci" compare="sim_size" />
-            <output file="gffcompare_out2.tracking" name="transcripts_tracking" />
-            <output file="gffcompare_out2.gtf" name="transcripts_combined" />
+            <output name="transcripts_stats" ftype="txt">
+                <assert_contents>
+                    <has_line line=" Total union super-loci across all input datasets: 7 "/>
+                    <has_line line="#gffcompare -V -r reference_annotation -T -d 100 -p TCONS gffcompare_in1_gtf gffcompare_in2_gtf"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_loci" ftype="tabular">
+                <assert_contents>
+                    <has_n_lines n="7"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_tracking" ftype="tabular">
+                <assert_contents>
+                    <has_n_lines n="9"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_combined" ftype="gtf">
+                <assert_contents>
+                    <has_n_lines n="18"/>
+                </assert_contents>
+            </output>
         </test>
         <!-- Test 08: 1 inputs and reference, default options, no tmap or refmap output -->
         <test expect_num_outputs="4">
-            <param ftype="gtf" name="gffinputs" value="gffcompare_in4.gtf" />
+            <param ftype="gtf" name="gffinputs" value="gffcompare_in4.gtf"/>
             <param name="refmap_tmap" value="false"/>
             <conditional name="conditional_annotation">
                 <param name="selector" value="yes"/>
                 <conditional name="ref_source">
                     <param name="ref_source_sel" value="history"/>
-                    <param ftype="gtf" name="reference_annotation" value="gffcompare_in5.gtf" />
+                    <param ftype="gtf" name="reference_annotation" value="gffcompare_in5.gtf"/>
                 </conditional>
                 <param name="R" value="true"/>
                 <param name="Q" value="false"/>
@@ -509,11 +625,28 @@
                 </conditional>
                 <param name="discard_single_exon" value=""/>
             </conditional>
-            <param name="max_dist_group" value="100" />
-            <output file="gffcompare_out3.stats" name="transcripts_stats"/>
-            <output file="gffcompare_out3.loci" name="transcripts_loci" compare="sim_size" />
-            <output file="gffcompare_out3.tracking" name="transcripts_tracking" />
-            <output file="gffcompare_out3.gtf" name="transcripts_annotated" />
+            <param name="max_dist_group" value="100"/>
+            <output name="transcripts_stats" ftype="txt">
+                <assert_contents>
+                    <has_line line=" Total union super-loci across all input datasets: 29 "/>
+                    <has_line line="#gffcompare -V -r reference_annotation -R --strict-match -e 100 -T -d 100 -p TCONS gffcompare_in4_gtf"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_loci" ftype="tabular">
+                <assert_contents>
+                    <has_n_lines n="29"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_tracking" ftype="tabular">
+                <assert_contents>
+                    <has_n_lines n="35"/>
+                </assert_contents>
+            </output>
+            <output name="transcripts_combined" ftype="tabular">
+                <assert_contents>
+                    <has_n_lines n="35"/>
+                </assert_contents>
+            </output>
         </test>
     </tests>
     <help>
@@ -613,5 +746,5 @@
 
     ]]>
     </help>
-    <expand macro="citations" />
+    <expand macro="citations"/>
 </tool>
--- a/macros.xml	Fri Oct 04 08:47:42 2024 +0000
+++ b/macros.xml	Tue May 13 19:03:48 2025 +0000
@@ -1,10 +1,10 @@
 <macros>
-    <token name="@TOOL_VERSION@">0.12.6</token>
+    <token name="@TOOL_VERSION@">0.12.9</token>
     <token name="@VERSION_SUFFIX@">0</token>
     <xml name="requirements">
         <requirements>
             <requirement type="package" version="@TOOL_VERSION@">gffcompare</requirement>
-            <requirement type="package" version="1.16.1">samtools</requirement>
+            <requirement type="package" version="1.21">samtools</requirement>
         </requirements>
     </xml>
     <xml name="citations">