changeset 5:f99dd58de04f draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/gffcompare commit c8028c2640d2d213da5097df2341a8281fe0b7c8
author iuc
date Fri, 03 Feb 2023 10:57:30 +0000
parents 0f710191a66d
children
files gffcompare.xml macros.xml test-data/gffcompare_out1.gtf test-data/gffcompare_out1.stats test-data/gffcompare_out2-1.refmap test-data/gffcompare_out2-1.tmap test-data/gffcompare_out2-2.refmap test-data/gffcompare_out2-2.tmap test-data/gffcompare_out2.gtf test-data/gffcompare_out2.loci test-data/gffcompare_out2.stats test-data/gffcompare_out2.tracking test-data/gffcompare_out3.gtf test-data/gffcompare_out3.loci test-data/gffcompare_out3.stats test-data/gffcompare_out3.tracking
diffstat 16 files changed, 541 insertions(+), 400 deletions(-) [+]
line wrap: on
line diff
--- a/gffcompare.xml	Thu Oct 17 03:01:26 2019 -0400
+++ b/gffcompare.xml	Fri Feb 03 10:57:30 2023 +0000
@@ -1,81 +1,84 @@
-<tool id="gffcompare" name="GffCompare" version="@GFFCOMPARE_VERSION@">
+<tool id="gffcompare" name="GffCompare" version="@TOOL_VERSION@+galaxy@VERSION_SUFFIX@" profile="21.05">
     <description>compare assembled transcripts to a reference annotation</description>
     <macros>
-        <token name="@GFFCOMPARE_VERSION@">0.11.2</token>
+        <import>macros.xml</import>
     </macros>
-    <requirements>
-        <requirement type="package" version="@GFFCOMPARE_VERSION@">gffcompare</requirement>
-    </requirements>
+    <xrefs>
+        <xref type="bio.tools">gffcompare</xref>
+    </xrefs>
+    <expand macro="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' &&
-#end for
-#if $seq_data.use_seq_data == "Yes":
-    #if $seq_data.seq_source.index_source == "history":
-        ln -s '$seq_data.seq_source.ref_file' ref_seq.fa &&
-    #else:
-        ln -s '${seq_data.seq_source.index.fields.path}' ref_seq.fa &&
-    #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
+        #import re
 
-gffcompare
-## Use annotation reference?
-#if $annotation.use_ref_annotation == "Yes":
-    -r ref_annotation
-    $annotation.ignore_nonoverlapping_reference
-    $annotation.ignore_nonoverlapping_transfrags
-    $annotation.strict_match
-#end if
-#if $annotation.refmap_tmap == "":
-    -T
-#end if
-
-## Use sequence data?
-#if $seq_data.use_seq_data == "Yes":
-    -s ref_seq.fa
-#end if
-
-$discard_single_exon
-$discard_duplicates
-$no_merge
--e $max_dist_exon
--d $max_dist_group
-$chr_stats
--p '$adv_output.p'
-$adv_output.A
-$adv_output.C
-$adv_output.X
-$adv_output.K
-
-#for $escaped_element_identifier in $escaped_element_identifiers:
-    '$escaped_element_identifier'
-#end for
-
+        #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' &&
+        #end for
+        #if $conditional_annotation.selector == "yes":
+            #if $conditional_annotation.ref_source.selector == "history":
+                ln -s '$conditional_annotation.ref_source.reference_annotation' reference_annotation &&
+            #else:
+                ln -s '${conditional_annotation.ref_source.index.fields.path}' reference_annotation &&
+            #end if
+        #end if
+        #if $seq_data.selector == "Yes":
+            #if $seq_data.seq_source.index_source == "history":
+                ln -s '$seq_data.seq_source.ref_genome' ref_seq.fa &&
+                samtools faidx ref_seq.fa &&
+            #else:
+                ln -s '${seq_data.seq_source.index.fields.path}' ref_seq.fa &&
+            #end if
+        #end if
+        gffcompare -V
+        #if $conditional_annotation.selector == "yes":
+            -r reference_annotation
+            $conditional_annotation.R
+            $conditional_annotation.Q
+            $conditional_annotation.conditional_strict.selector
+            #if $conditional_annotation.conditional_strict.selector == '--strict-match'
+                -e $conditional_annotation.conditional_strict.e
+            #end if    
+            $conditional_annotation.discard_single_exon
+            $conditional_annotation.conditional_duplication.selector
+            #if $conditional_annotation.conditional_duplication.selector == "-D"
+                $conditional_annotation.conditional_duplication.S
+            #end if
+            $conditional_annotation.no_merge    
+        #end if
+        $refmap_tmap
+        #if $seq_data.selector == "Yes":
+            -s ref_seq.fa
+        #end if
+        -d $max_dist_group
+        $chr_stats
+        -p '$adv_output.p'
+        $adv_output.A
+        $adv_output.C
+        $adv_output.X
+        $adv_output.K
+        #for $escaped_element_identifier in $escaped_element_identifiers:
+            '$escaped_element_identifier'
+        #end for
+        #if len($gffinputs) == 1 and $refmap_tmap == 'true'
+            && mv *tmap output.tmap
+            #if $seq_data.selector == "Yes"
+                && mv *refmap output.refmap
+            #end if
+        #end if
     ]]></command>
     <inputs>
-        <param format="gtf" name="gffinputs" type="data" label="GTF inputs for comparison" help="" multiple="true" />
-        <conditional name="annotation">
-            <param label="Use Reference Annotation" name="use_ref_annotation" type="select">
-                <option value="No">No</option>
-                <option value="Yes">Yes</option>
+        <param format="gtf,gff3" name="gffinputs" type="data" label="GTF inputs for comparison" help="" multiple="true" />
+        <conditional name="conditional_annotation">
+            <param  name="selector" type="select" label="Use reference annotation">
+                <option value="no">No</option>
+                <option value="yes">Yes</option>
             </param>
-            <when value="Yes">
-                <conditional name="ref_source">
-                    <param label="Choose the source for the reference annotation" name="ref_source_sel" type="select">
+            <when value="yes">
+                 <conditional name="ref_source">
+                    <param label="Choose the source for the reference annotation" name="selector" type="select">
                         <option value="cached">Locally cached</option>
-                        <option value="history">History</option>
+                        <option value="history" selected="true">History</option>
                     </param>
                     <when value="cached">
                         <param argument="-r" label="Using reference annotation" name="index" type="select">
@@ -86,34 +89,63 @@
                         </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" />
+                        <param argument="-r" name="reference_annotation" type="data" format="gff3,gtf" label="Reference annotation" 
+                            help="Requires an annotation file in GFF3 or GTF format"/>                    
+                    </when>
+                </conditional>
+                <param argument="-R" falsevalue="" truevalue="-R" type="boolean" label="Sn correction" help="Consider only the reference transcripts that
+                    overlap any of the input transfrags"/>
+                <param argument="-Q" falsevalue="" truevalue="-Q" type="boolean" label="Sp correction"  help="Consider only the input transcripts that overlap 
+                    any of the reference transcripts. Warning: this will discard all 'novel' loci!"/>
+                <conditional name="conditional_strict">
+                    <param name="selector" argument="--strict-match" type="select" label="Strict match" help="Make the accuracy estimation 
+                        at transcript level much more stringtent by only allowing a limited variation of the outer coordinates of the terminal exons. Transcript 
+                        matching takes into account the -e range for terminal exons; code '=' is only assigned if transcript ends are within that range, otherwiscode 
+                        '~' is assigned for intron chain match or single-exon">
+                        <option value="">No</option>
+                        <option value="--strict-match">Yes</option>
+                    </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" />
                     </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="--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 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 value="" selected="true">No</option>
+                    <option value="-M">Discard single-exon transfrags and reference transcripts</option>
+                    <option value="-N">Discard single-exon reference transcripts</option>
                 </param>
+                <conditional name="conditional_duplication">
+                    <param name="selector" argument="-D" type="select" label="Discart duplicate query transfrags" help="Discard duplicate query transfrags (i.e. same 
+                        intron chain) within a single sample (disable annotation mode for a single file); this option is automatically enabled when multiple query files are provided">
+                        <option value="">No</option>
+                        <option value="-D">Yes</option>
+                    </param>
+                    <when value=""/>
+                    <when value="-D">
+                        <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" />
+                    </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" />
             </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>
+            <when value="no"/>
         </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>
+            <param name="selector" type="select" label="Use sequence data" help="Use sequence data for some optional classification functions, including the addition of the p_id attribute required by Cuffdiff." >
+                <option value="no">No</option>
+                <option value="yes">Yes</option>
             </param>
-            <when value="No"/>
-            <when value="Yes">
+            <when value="no"/>
+            <when value="yes">
                 <conditional name="seq_source">
                     <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>
+                        <option value="history" selected="true">History</option>
                     </param>
                     <when value="cached">
                         <param argument="-s" label="Using reference genome" name="index" type="select">
@@ -124,61 +156,73 @@
                         </param>
                     </when>
                     <when value="history">
-                        <param argument="-s" format="fasta" label="Using reference file" name="ref_file" type="data" />
+                        <param argument="-s" name="ref_genome" type="data" format="fasta" label="Reference genome" help="Optional. Repeats must be soft-masked (lower case) in order to be able to classify
+                            transfrags as repeats"/>
                     </when>
                 </conditional>
             </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, 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" />
-        <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" />
-            <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="-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="-" />
+                    </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" />
         </section>
     </inputs>
     <outputs>
-        <data format="txt" from_work_dir="gffcmp.stats" label="${tool.name} on ${on_string}: transcript accuracy" name="transcripts_stats" />
-        <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) and len(gffinputs) > 1) or annotation['use_ref_annotation'] == "No"</filter>
+        <data name="transcripts_annotated" format="gtf" from_work_dir="gffcmp.annotated.gtf" label="${tool.name} on ${on_string}: annotated transcripts">
+            <filter>conditional_annotation['selector'] == "yes"</filter>
+            <filter>len(gffinputs) == 1</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) and len(gffinputs) > 1) and annotation['use_ref_annotation'] == "Yes"</filter>
+        <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" type="list" label="${tool.name} on ${on_string}: refmap">
+        <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" />
-            <filter>annotation['refmap_tmap'] != None and 'refmap' in annotation['refmap_tmap']</filter>
+            <filter>conditional_annotation['selector'] == 'yes'</filter>
+            <filter>len(gffinputs) > 1</filter>
+            <filter>refmap_tmap</filter>
         </collection>
-        <collection name="tmap_output" type="list" label="${tool.name} on ${on_string}: tmap">
+        <data name="refmap_output" format="tabular" from_work_dir="output.refmap"  label="${tool.name} on ${on_string}: RefMap">
+            <filter>conditional_annotation['selector'] == 'yes'</filter>
+            <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" />
-            <filter>annotation['refmap_tmap'] != None and 'tmap' in annotation['refmap_tmap']</filter>
+            <filter>refmap_tmap</filter>
+            <filter>len(gffinputs) > 1</filter>
         </collection>
+        <data name="tmap_output" format="tabular" from_work_dir="output.tmap" label="${tool.name} on ${on_string}: TMAP">
+            <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"  />
     </outputs>
     <tests>
-        <!-- 2 inputs, no reference, default options -->
+        <!-- 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" />
-            <conditional name="annotation">
-                <param name="use_ref_annotation" value="No" />
+            <conditional name="conditional_annotation">
+                <param name="selector" value="no"/>
             </conditional>
             <conditional name="seq_data">
-                <param name="use_seq_data" value="No" />
+                <param name="selector" value="no" />
             </conditional>
             <assert_command>
                 <not_has_text text="-R " />
@@ -188,7 +232,6 @@
                 <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="-e 100 " />
                 <has_text text="-d 100 " />
                 <not_has_text text="-D " />
                 <not_has_text text="--no-merge " />
@@ -202,17 +245,17 @@
             <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"/>
+            <output_collection name="tmap_output_collection" type="list" count="2"/>
         </test>
-        <!-- 2 inputs, no reference, with refsequence, default options (but disable tmap output) -->
+        <!-- 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" />
-            <conditional name="annotation">
-                <param name="use_ref_annotation" value="No" />
-                <param name="refmap_tmap" value=""/>
+            <param name="refmap_tmap" value="false"/>
+            <conditional name="conditional_annotation">
+                <param name="selector" value="no"/>
             </conditional>
             <conditional name="seq_data">
-                <param name="use_seq_data" 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"/>
@@ -225,7 +268,6 @@
                 <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="-e 100 " />
                 <has_text text="-d 100 " />
                 <has_text text="-p 'TCONS' " />
                 <not_has_text text="-C " />
@@ -238,15 +280,15 @@
             <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 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" />
-            <conditional name="annotation">
-                <param name="use_ref_annotation" value="No" />
-                <param name="refmap_tmap" value=""/>
+            <param name="refmap_tmap" value="false"/>
+            <conditional name="conditional_annotation">
+                <param name="selector" value="no"/>
             </conditional>
             <conditional name="seq_data">
-                <param name="use_seq_data" value="Yes" />
+                <param name="selector" value="yes" />
                 <conditional name="seq_source">
                     <param name="index_source" value="cached"/>
                     <param name="index" value="test_buildid"/>
@@ -259,7 +301,6 @@
                 <has_text_matching expression="gffcompare.*-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 " />
@@ -267,28 +308,32 @@
                 <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.stats" name="transcripts_stats" compare="sim_size" lines_diff="2"/>
             <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 04: 2 inputs and reference, default options -->
         <test expect_num_outputs="6">
             <param ftype="gtf" name="gffinputs" value="gffcompare_in1.gtf,gffcompare_in2.gtf" />
-            <conditional name="annotation">
-                <param name="use_ref_annotation" value="Yes" />
+            <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" />
                 </conditional>
+                <conditional name="conditional_strict">
+                    <param name="selector" value="--strict-match"/>
+                    <param name="e" value="100"/>
+                </conditional>
             </conditional>
             <conditional name="seq_data">
-                <param name="use_seq_data" value="No" />
+                <param name="seletor" value="no" />
             </conditional>
             <assert_command>
                 <not_has_text text="-R " />
                 <not_has_text text="-Q " />
-                <not_has_text text="--strict-match " />
+                <has_text text="--strict-match " />
                 <not_has_text text="-T " />
                 <not_has_text text="-M " />
                 <not_has_text text="-N " />
@@ -303,42 +348,43 @@
                 <not_has_text text="-X " />
                 <not_has_text text="-K " />
             </assert_command>
-            <output file="gffcompare_out2.stats" name="transcripts_stats" />
+            <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" type="list" count="2">
+            <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" type="list" count="2">
+            <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>
         </test>
-        <!-- 2 inputs and reference (cached), non default options, only refmap output -->
-        <test expect_num_outputs="5">
+        <!-- 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" />
-            <conditional name="annotation">
-                <param name="use_ref_annotation" value="Yes" />
+            <conditional name="conditional_annotation">
+                <param name="selector" 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" />
+                <param name="R" value="true"/>
+                <param name="Q" value="true"/>
+                <param name="discard_single_exon" value="-M"/>
+                <param name="no_merge" value="true"/>
+                <conditional name="conditional_strict">
+                    <param name="selector" value="--strict-match"/>
+                    <param name="e" value="101"/>
+                </conditional>
+                <conditional name="conditional_duplication">
+                    <param name="selector" value="-D"/>
+                    <param name="S" value="false"/>
+                </conditional>
             </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" />
+            <param name="chr_stats" value="true" />
             <assert_command>
                 <has_text text="-R " />
                 <has_text text="-Q " />
@@ -361,28 +407,28 @@
             <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 -->
+            <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>
-        <!-- 2 inputs and reference, non default advanced options, only tmap output -->
-        <test expect_num_outputs="5">
+        <!-- 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" />
-            <conditional name="annotation">
-                <param name="use_ref_annotation" value="Yes" />
+            <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" />
                 </conditional>
-                <param name="refmap_tmap" value="tmap" />
             </conditional>
             <conditional name="seq_data">
-                <param name="use_seq_data" value="No" />
+                <param name="selector" 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" />
+                <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 " />
@@ -391,7 +437,7 @@
                 <not_has_text text="-T " />
                 <not_has_text text="-M " />
                 <not_has_text text="-N " />
-                <has_text text="-e 100 " />
+                <not_has_text text="-e 100 " />
                 <has_text text="-d 100 " />
                 <not_has_text text="-D " />
                 <not_has_text text="--no-merge " />
@@ -406,21 +452,22 @@
             <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"/>
+            <output_collection name="tmap_output_collection" type="list" count="2"/>
+            <output_collection name="tmap_output_collection" type="list" count="2"/>
         </test>
-        <!-- 2 inputs and reference, default options, no tmap or refmap output -->
+        <!-- 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" />
-            <conditional name="annotation">
-                <param name="use_ref_annotation" value="Yes" />
+            <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" />
                 </conditional>
-                <param name="refmap_tmap" value="" />
             </conditional>
             <conditional name="seq_data">
-                <param name="use_seq_data" value="No" />
+                <param name="selector" value="No" />
             </conditional>
             <assert_command>
                 <not_has_text text="-R " />
@@ -429,7 +476,6 @@
                 <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 " />
@@ -445,22 +491,24 @@
             <output file="gffcompare_out2.tracking" name="transcripts_tracking" />
             <output file="gffcompare_out2.gtf" name="transcripts_combined" />
         </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" />
-            <conditional name="annotation">
-                <param name="use_ref_annotation" value="Yes" />
+            <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" />
                 </conditional>
-                <param name="ignore_nonoverlapping_reference" value="Yes" />
-                <param name="ignore_nonoverlapping_transfrags" value="No" />
-                <param name="refmap_tmap" value="" />
+                <param name="R" value="true"/>
+                <param name="Q" value="false"/>
+                <conditional name="conditional_strict">
+                    <param name="selector" value="--strict-match"/>
+                    <param name="e" value="100"/>
+                </conditional>
+                <param name="discard_single_exon" value=""/>
             </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_out3.stats" name="transcripts_stats"/>
             <output file="gffcompare_out3.loci" name="transcripts_loci" compare="sim_size" />
@@ -470,33 +518,100 @@
     </tests>
     <help>
 <![CDATA[
+
+.. class:: infomark
+
 **GffCompare Overview**
 
-## GffCompare
-* compare and evaluate the accuracy of RNA-Seq transcript assemblers (Cufflinks, Stringtie).
-* collapse (merge) duplicate transcripts from multiple GTF/GFF3 files (e.g. resulted from assembly of different samples)
-* 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)
+GffCompare is designed to systematically compare one or more sets of transcript predictions to a reference annotation at different levels of granularity (base level, exon level, 
+transcript level etc.), and in the process to provide a way to "annotate" such transcript predictions based on their overlaps or proximity to reference annotation transcripts. 
+When multiple transcript files (samples) are provided, GffCompare generates a non-redundant combined set of transcripts, tracking structurally equivalent transcripts across multiple 
+samples and classifying them according to their relationship to reference transcripts. GffCompare has the following main functions:
+
+- Merge structurally equivalent transcripts and transcript fragments (transfrags) across multiple samples
+- Assess the accuracy of the assembled transcripts from an RNA-Seq sample by comparing it to known annotation
+- Track, annotate, and report all structurally distinct transfrags across multiple samples
+
+The last two purposes require the user to provide a known reference annotation file that GffCompare then uses to classify all the transcripts in the input samples according to the 
+reference transcript that they most closely overlap.
+
+To assess the accuracy of transcriptome assemblies, GffCompare reports several accuracy metrics previously employed for gene prediction evaluation. These metrics include sensitivity 
+and precision as well as the number of novel or missed features, and the metrics are computed at various levels (base, exon, intron chain, transcript, or locus). 
+
+----
+
+.. class:: infomark
+
+**Annotation mode**
 
-More information can be found here: https://ccb.jhu.edu/software/stringtie/gffcompare.shtml.
+When a single query GTF/GFF file is given as input for analysis, along with a reference annotation (-r option), GffCompare switches into annotation mode and it generates a *annotated 
+transcripts* file, allowing annotate transcripts by using a reference annotation. It should be noted that this file is not generated when options to remove "duplicated"/redundant transfrags are given (-D, -S, -C, -A, -X).
+
+----
+
+.. class:: infomark
+
+**Merging structually equivalent transcripts**
+
+When multiple input GTF/GFF files are provided, GffCompare reports a GTF file named *combined transcripts* that containing the union of all transfrags in each sample. If a transfrag with the same 
+exact intron chain is present in both samples, it is thus reported only once in the output file.
+
+**The "super-locus" concept**
+
+A super-locus is a region of the genome where predicted transcripts and reference transcripts get clustered together by exon overlaps. When multiple GFF files are provided as input to GffCompare, 
+this clustering is performed across all the input files. Due to the transitive nature of this clustering, these super-loci can occasionally get very large, sometimes merging a few distinct reference 
+gene regions together, especially if there is a lot of transcription or alignment noise around the individual gene regions. For each super-locus, GffCompare assigns a unique identifier with the XLOC prefix.
+
+----
+
+.. class:: infomark
 
-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.
+**Transcript accuracy estimation**
+
+GffCompare can be used to assess the accuracy of transcriptome assemblies produced by programs like StringTie 19 with respect to a known reference annotation. To this end, GffCompare 
+reports various statistics related to the accuracy of the input transcripts compared to the reference annotation in the *accuracy stats* file.
+
+Among these statistics are sensitivity and precision values computed at various levels (base, exon, intron chain, transcript, locus), which are calculated as:
+
+* Sensitivity = TP/(TP+FN)
+* Precision = TP/(TP+FP)
+
+where TP stands for "true positives", or query features (bases, exons, introns, transcripts, etc.) that agree with the corresponding reference annotation features; FN means "false negatives", 
+i.e. features that are found in the reference annotation but are not present in the input data; FP (“false positives”) are features present in the input data but not confirmed by any reference 
+annotation data. Notice that FP+ TP amounts to the whole input set of query features in the input file. If multiple query GTF/GFF files are given as input, these metrics are computed separately 
+for each sample.
+
+Sensitivity and Precision values are estimated at various levels, which are largely an increasingly stringent way of evaluating the accuracy/correctness of a set of predicted transcripts (transfrags), 
+when compared to the reference annotation. The six different levels that GffCompare uses are described below:
 
-A notable difference of GffCompare is that when a single query GTF/GFF file is given as input, along with a reference annotation (-r option),
-gffcompare switches into "annotation mode" and it generates a .annotated.gtf file instead of the .merged.gtf produced by CuffCompare with the
-same parameters. This file has the same general format as CuffCompare's .merged.gtf file (with "class codes" assigned to transcripts as per
-their relationship with the matching/overlapping reference transcript),  but the original transcript IDs are preserved, so gffcompare can thus
-be used as a simple way of annotating a set of transcripts.
+* **Base level**: At the base level, TP represents the number of exon bases that are reported at the same coordinate on both the query transcripts and any reference transcript, FN is the number of bases in reference data exons that are not covered at all by any of the query exons, and FP is the number of bases which are covered by predicted transcripts' exons but not covered by any reference transcript exons.
+* **Exon level**: We define the TP, FN, and FP values at the exon level similar to the base level, but now the unit of comparison is the exon interval on the genome, i.e. if an exon of the predicted transcript overlaps and matches the boundaries of a reference transcript exon, then it is counted as a TP.
+* **Intron Level**: Intron intervals are the units that are matched at the intron level, therefore each intron of the predicted transcript is checked against any introns of the reference transcripts in the same region and if there is one with the same exact start-end coordinates, it is counted as a TP.
+* **Intron chain level**: At this level we count as a TP any query transcript for which all of its introns can be found, with the same exact intron coordinates as in a reference transcript that has the same number of introns. Matching all the introns at this level implies that all the internal exons also match, but this might not be true for the external boundaries of the terminal exons.
+* **Transcript level**: Note that intron chain level values are calculated only by looking at multi-exon transcripts, so it completely ignores the single-exon transcripts, which can be quite numerous in a RNA-Seq experiment (possibly due to a lot of transcriptional and alignment noise). The transcript level considers single-exons as well. A TP at this level is defined as a full exon chain match between the predicted transcript and a reference transcript, where all internal exons match and the outer boundaries of the terminal query exons can only slightly differ from the reference exons (with at most 100 bases by default). Also GffCompare considers single-exon transcripts as matching an overlapping single-exon reference transcript if there is a significant overlap between the two (more than 80% of the longer transcript by default).
+* **Locus level**: At this level GffCompare considers that an observed locus, defined as a cluster of exon-overlapping transcripts, matches a similarly built reference locus if at least one predicted transcript has a transcript level match with a reference transcript in the corresponding reference locus.
+
+----
+
+.. class:: infomark
+
+**Tracking transcripts**
 
-Another important difference is that the input transcripts are no longer discarded when they are found to be "intron redundant", i.e.
-contained within other, longer isoforms. CuffCompare had the -G option to prevent collapsing of such intron redundant isoforms into
-their longer "containers", but GffCompare has made this the default mode of operation (hence the -G option is no longer needed
-and is simply ignored when given).
+GffCompare can also be used to track all transcripts that are structurally equivalent among the different input files. GffCompare considers transcripts matching (or structurally equivalent) if all 
+their introns are identical. Note that matching transcripts are allowed to differ on the length of the first and last exons, since these lengths can usually vary across samples for the same biological transcript.
+
+A list of all matching transcripts is reported in a file called *tracking file* in which each row represents a transcript. The first column in this file represents a unique id assigned to that transcripts. 
+The second file represents the super-locus that contains that transcript. If a reference annotation is provided, the 3 rd and 4 th columns contain the reference annotation transcript that was found to be 
+closest to the transcript and the classification code that specifies the relationship between these two transcripts, respectively. The rest of the columns show the corresponding 
+transcript from each input file in order.
+
+**RefMap and TMAP files**
+
+In order to quickly see which reference transcripts match which transcripts from a sample file, two other files, called *RefMap* and *TMAP* are also created for each query. The RefMap file is a tab-delimited file 
+that has a row for each reference transcript that either fully or partially matches a transcript from the given input file. Conversely, the TMAP file has a row for each input transcript, while the columns in this 
+file describe the most closely matching reference transcript for that transcript.
+
     ]]>
     </help>
-    <citations>
-        <citation type="doi">10.1038/nbt.1621</citation>
-    </citations>
+    <expand macro="citations" />
 </tool>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/macros.xml	Fri Feb 03 10:57:30 2023 +0000
@@ -0,0 +1,15 @@
+<macros>
+    <token name="@TOOL_VERSION@">0.12.6</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>
+        </requirements>
+    </xml>
+    <xml name="citations">
+        <citations>
+            <citation type="doi">10.1038/nbt.1621</citation>
+        </citations>
+    </xml>
+</macros>
\ No newline at end of file
--- a/test-data/gffcompare_out1.gtf	Thu Oct 17 03:01:26 2019 -0400
+++ b/test-data/gffcompare_out1.gtf	Fri Feb 03 10:57:30 2023 +0000
@@ -1,16 +1,16 @@
-chr1	Cufflinks	transcript	12	20	.	+	.	transcript_id "TCONS_00000006"; gene_id "XLOC_000001"; oId "CUFF.3.1"; tss_id "TSS1";
+chr1	Cufflinks	transcript	12	20	.	+	.	transcript_id "TCONS_00000006"; gene_id "XLOC_000001"; oId "CUFF.3.1"; tss_id "TSS1"; num_samples "1";
 chr1	Cufflinks	exon	12	20	.	+	.	transcript_id "TCONS_00000006"; gene_id "XLOC_000001"; exon_number "1";
-chr1	Cufflinks	transcript	32	40	.	+	.	transcript_id "TCONS_00000001"; gene_id "XLOC_000002"; oId "CUFF.7.1"; tss_id "TSS2";
+chr1	Cufflinks	transcript	32	40	.	+	.	transcript_id "TCONS_00000001"; gene_id "XLOC_000002"; oId "CUFF.7.1"; tss_id "TSS2"; num_samples "1";
 chr1	Cufflinks	exon	32	40	.	+	.	transcript_id "TCONS_00000001"; gene_id "XLOC_000002"; exon_number "1";
-chr1	Cufflinks	transcript	42	47	.	+	.	transcript_id "TCONS_00000007"; gene_id "XLOC_000003"; oId "CUFF.7.1"; contained_in "TCONS_00000002"; tss_id "TSS3";
+chr1	Cufflinks	transcript	42	47	.	+	.	transcript_id "TCONS_00000007"; gene_id "XLOC_000003"; oId "CUFF.7.1"; contained_in "TCONS_00000002"; tss_id "TSS3"; num_samples "1";
 chr1	Cufflinks	exon	42	47	.	+	.	transcript_id "TCONS_00000007"; gene_id "XLOC_000003"; exon_number "1";
-chr1	Cufflinks	transcript	42	50	.	+	.	transcript_id "TCONS_00000002"; gene_id "XLOC_000003"; oId "CUFF.9.1"; tss_id "TSS3";
+chr1	Cufflinks	transcript	42	50	.	+	.	transcript_id "TCONS_00000002"; gene_id "XLOC_000003"; oId "CUFF.9.1"; tss_id "TSS3"; num_samples "1";
 chr1	Cufflinks	exon	42	50	.	+	.	transcript_id "TCONS_00000002"; gene_id "XLOC_000003"; exon_number "1";
-chr1	Cufflinks	transcript	52	60	.	+	.	transcript_id "TCONS_00000003"; gene_id "XLOC_000004"; oId "CUFF.10.1"; tss_id "TSS4";
+chr1	Cufflinks	transcript	52	60	.	+	.	transcript_id "TCONS_00000003"; gene_id "XLOC_000004"; oId "CUFF.10.1"; tss_id "TSS4"; num_samples "1";
 chr1	Cufflinks	exon	52	60	.	+	.	transcript_id "TCONS_00000003"; gene_id "XLOC_000004"; exon_number "1";
-chr1	Cufflinks	transcript	2	10	.	-	.	transcript_id "TCONS_00000004"; gene_id "XLOC_000005"; oId "CUFF.1.1"; tss_id "TSS5";
+chr1	Cufflinks	transcript	2	10	.	-	.	transcript_id "TCONS_00000004"; gene_id "XLOC_000005"; oId "CUFF.1.1"; tss_id "TSS5"; num_samples "2";
 chr1	Cufflinks	exon	2	10	.	-	.	transcript_id "TCONS_00000004"; gene_id "XLOC_000005"; exon_number "1";
-chr1	Cufflinks	transcript	15	20	.	-	.	transcript_id "TCONS_00000005"; gene_id "XLOC_000006"; oId "CUFF.3.1"; tss_id "TSS6";
+chr1	Cufflinks	transcript	15	20	.	-	.	transcript_id "TCONS_00000005"; gene_id "XLOC_000006"; oId "CUFF.3.1"; tss_id "TSS6"; num_samples "1";
 chr1	Cufflinks	exon	15	20	.	-	.	transcript_id "TCONS_00000005"; gene_id "XLOC_000006"; exon_number "1";
-chr1	Cufflinks	transcript	22	30	.	-	.	transcript_id "TCONS_00000008"; gene_id "XLOC_000007"; oId "CUFF.5.1"; tss_id "TSS7";
+chr1	Cufflinks	transcript	22	30	.	-	.	transcript_id "TCONS_00000008"; gene_id "XLOC_000007"; oId "CUFF.5.1"; tss_id "TSS7"; num_samples "1";
 chr1	Cufflinks	exon	22	30	.	-	.	transcript_id "TCONS_00000008"; gene_id "XLOC_000007"; exon_number "1";
--- a/test-data/gffcompare_out1.stats	Thu Oct 17 03:01:26 2019 -0400
+++ b/test-data/gffcompare_out1.stats	Fri Feb 03 10:57:30 2023 +0000
@@ -1,5 +1,5 @@
-# gffcompare v0.11.2 | Command line was:
-#gffcompare -e 100 -d 100 -p TCONS gffcompare_in1_gtf gffcompare_in2_gtf
+# gffcompare v0.12.6 | Command line was:
+#gffcompare -V -d 100 -p TCONS gffcompare_in1_gtf gffcompare_in2_gtf
 #
 
 #= Summary for dataset: gffcompare_in1_gtf 
--- a/test-data/gffcompare_out2-1.refmap	Thu Oct 17 03:01:26 2019 -0400
+++ b/test-data/gffcompare_out2-1.refmap	Fri Feb 03 10:57:30 2023 +0000
@@ -1,2 +1,2 @@
-ref_gene_id	ref_id	class_code	qry_id_list
-Lypla1	Lypla1	c	CUFF.7|CUFF.7.1
+ref_gene	ref_id	class_code	qry_id_list
+CUFF.1	CUFF.1.1	=	CUFF.1|CUFF.1.1
--- a/test-data/gffcompare_out2-1.tmap	Thu Oct 17 03:01:26 2019 -0400
+++ b/test-data/gffcompare_out2-1.tmap	Fri Feb 03 10:57:30 2023 +0000
@@ -1,6 +1,6 @@
-ref_gene_id	ref_id	class_code	qry_gene_id	qry_id	num_exons	FPKM	TPM		cov	len	major_iso_id	ref_match_len
--	-	u	CUFF.1	CUFF.1.1	1	20.607936	0.000000	1.317073	9	CUFF.1.1	-
--	-	u	CUFF.3	CUFF.3.1	1	27.255658	0.000000	1.741935	6	CUFF.3.1	-
-Lypla1	Lypla1	c	CUFF.7	CUFF.7.1	1	9.999117	0.000000	0.639053	9	CUFF.7.1	19
-Lypla1	Lypla1	c	CUFF.9	CUFF.9.1	1	17.776896	0.000000	1.136139	9	CUFF.9.1	19
-Lypla1	Lypla1	p	CUFF.10	CUFF.10.1	1	17.776896	0.000000	1.136139	9	CUFF.10.1	19
+ref_gene_id	ref_id	class_code	qry_gene_id	qry_id	num_exons	FPKM	TPM	cov	len	major_iso_id	ref_match_len
+CUFF.1	CUFF.1.1	=	CUFF.1	CUFF.1.1	1	20.607936	0.000000	1.317073	9	CUFF.1.1	9
+CUFF.3	CUFF.3.1	x	CUFF.3	CUFF.3.1	1	27.255658	0.000000	1.741935	6	CUFF.3.1	9
+CUFF.3	CUFF.3.1	p	CUFF.7	CUFF.7.1	1	9.999117	0.000000	0.639053	9	CUFF.7.1	9
+CUFF.7	CUFF.7.1	k	CUFF.9	CUFF.9.1	1	17.776896	0.000000	1.136139	9	CUFF.9.1	6
+CUFF.7	CUFF.7.1	p	CUFF.10	CUFF.10.1	1	17.776896	0.000000	1.136139	9	CUFF.10.1	6
--- a/test-data/gffcompare_out2-2.refmap	Thu Oct 17 03:01:26 2019 -0400
+++ b/test-data/gffcompare_out2-2.refmap	Fri Feb 03 10:57:30 2023 +0000
@@ -1,2 +1,4 @@
-ref_gene_id	ref_id	class_code	qry_id_list
-Lypla1	Lypla1	c	CUFF.7|CUFF.7.1
+ref_gene	ref_id	class_code	qry_id_list
+CUFF.3	CUFF.3.1	=	CUFF.3|CUFF.3.1
+CUFF.7	CUFF.7.1	=	CUFF.7|CUFF.7.1
+CUFF.5	CUFF.5.1	=	CUFF.5|CUFF.5.1
--- a/test-data/gffcompare_out2-2.tmap	Thu Oct 17 03:01:26 2019 -0400
+++ b/test-data/gffcompare_out2-2.tmap	Fri Feb 03 10:57:30 2023 +0000
@@ -1,5 +1,5 @@
-ref_gene_id	ref_id	class_code	qry_gene_id	qry_id	num_exons	FPKM	TPM		cov	len	major_iso_id	ref_match_len
--	-	u	CUFF.1	CUFF.1.1	1	35.211287	0.000000	2.000000	9	CUFF.1.1	-
--	-	u	CUFF.3	CUFF.3.1	1	35.211287	0.000000	2.000000	9	CUFF.3.1	-
--	-	u	CUFF.5	CUFF.5.1	1	21.226627	0.000000	1.205672	9	CUFF.5.1	-
-Lypla1	Lypla1	c	CUFF.7	CUFF.7.1	1	29.709524	0.000000	1.687500	6	CUFF.7.1	19
+ref_gene_id	ref_id	class_code	qry_gene_id	qry_id	num_exons	FPKM	TPM	cov	len	major_iso_id	ref_match_len
+CUFF.1	CUFF.1.1	=	CUFF.1	CUFF.1.1	1	35.211287	0.000000	2.000000	9	CUFF.1.1	9
+CUFF.3	CUFF.3.1	=	CUFF.3	CUFF.3.1	1	35.211287	0.000000	2.000000	9	CUFF.3.1	9
+CUFF.5	CUFF.5.1	=	CUFF.5	CUFF.5.1	1	21.226627	0.000000	1.205672	9	CUFF.5.1	9
+CUFF.7	CUFF.7.1	=	CUFF.7	CUFF.7.1	1	29.709524	0.000000	1.687500	6	CUFF.7.1	6
--- a/test-data/gffcompare_out2.gtf	Thu Oct 17 03:01:26 2019 -0400
+++ b/test-data/gffcompare_out2.gtf	Fri Feb 03 10:57:30 2023 +0000
@@ -1,16 +1,16 @@
-chr1	Cufflinks	transcript	12	20	.	+	.	transcript_id "TCONS_00000006"; gene_id "XLOC_000001"; oId "CUFF.3.1"; class_code "u"; tss_id "TSS1";
+chr1	Cufflinks	transcript	12	20	.	+	.	transcript_id "TCONS_00000006"; gene_id "XLOC_000001"; gene_name "CUFF.3"; oId "CUFF.3.1"; cmp_ref "CUFF.3.1"; class_code "="; tss_id "TSS1"; num_samples "1";
 chr1	Cufflinks	exon	12	20	.	+	.	transcript_id "TCONS_00000006"; gene_id "XLOC_000001"; exon_number "1";
-chr1	Cufflinks	transcript	32	40	.	+	.	transcript_id "TCONS_00000001"; gene_id "XLOC_000002"; gene_name "Lypla1"; oId "CUFF.7.1"; cmp_ref "Lypla1"; class_code "c"; tss_id "TSS2";
+chr1	Cufflinks	transcript	32	40	.	+	.	transcript_id "TCONS_00000001"; gene_id "XLOC_000002"; oId "CUFF.7.1"; cmp_ref "CUFF.3.1"; class_code "p"; cmp_ref_gene "CUFF.3"; tss_id "TSS2"; num_samples "1";
 chr1	Cufflinks	exon	32	40	.	+	.	transcript_id "TCONS_00000001"; gene_id "XLOC_000002"; exon_number "1";
-chr1	Cufflinks	transcript	42	47	.	+	.	transcript_id "TCONS_00000007"; gene_id "XLOC_000002"; gene_name "Lypla1"; oId "CUFF.7.1"; contained_in "TCONS_00000002"; cmp_ref "Lypla1"; class_code "c"; tss_id "TSS3";
-chr1	Cufflinks	exon	42	47	.	+	.	transcript_id "TCONS_00000007"; gene_id "XLOC_000002"; exon_number "1";
-chr1	Cufflinks	transcript	42	50	.	+	.	transcript_id "TCONS_00000002"; gene_id "XLOC_000002"; gene_name "Lypla1"; oId "CUFF.9.1"; cmp_ref "Lypla1"; class_code "c"; tss_id "TSS3";
-chr1	Cufflinks	exon	42	50	.	+	.	transcript_id "TCONS_00000002"; gene_id "XLOC_000002"; exon_number "1";
-chr1	Cufflinks	transcript	52	60	.	+	.	transcript_id "TCONS_00000003"; gene_id "XLOC_000003"; gene_name "Lypla1"; oId "CUFF.10.1"; cmp_ref "Lypla1"; class_code "p"; tss_id "TSS4";
-chr1	Cufflinks	exon	52	60	.	+	.	transcript_id "TCONS_00000003"; gene_id "XLOC_000003"; exon_number "1";
-chr1	Cufflinks	transcript	2	10	.	-	.	transcript_id "TCONS_00000004"; gene_id "XLOC_000004"; oId "CUFF.1.1"; class_code "u"; tss_id "TSS5";
-chr1	Cufflinks	exon	2	10	.	-	.	transcript_id "TCONS_00000004"; gene_id "XLOC_000004"; exon_number "1";
-chr1	Cufflinks	transcript	15	20	.	-	.	transcript_id "TCONS_00000005"; gene_id "XLOC_000005"; oId "CUFF.3.1"; class_code "u"; tss_id "TSS6";
-chr1	Cufflinks	exon	15	20	.	-	.	transcript_id "TCONS_00000005"; gene_id "XLOC_000005"; exon_number "1";
-chr1	Cufflinks	transcript	22	30	.	-	.	transcript_id "TCONS_00000008"; gene_id "XLOC_000006"; oId "CUFF.5.1"; class_code "u"; tss_id "TSS7";
-chr1	Cufflinks	exon	22	30	.	-	.	transcript_id "TCONS_00000008"; gene_id "XLOC_000006"; exon_number "1";
+chr1	Cufflinks	transcript	42	47	.	+	.	transcript_id "TCONS_00000007"; gene_id "XLOC_000003"; gene_name "CUFF.7"; oId "CUFF.7.1"; contained_in "TCONS_00000002"; cmp_ref "CUFF.7.1"; class_code "="; tss_id "TSS3"; num_samples "1";
+chr1	Cufflinks	exon	42	47	.	+	.	transcript_id "TCONS_00000007"; gene_id "XLOC_000003"; exon_number "1";
+chr1	Cufflinks	transcript	42	50	.	+	.	transcript_id "TCONS_00000002"; gene_id "XLOC_000003"; gene_name "CUFF.7"; oId "CUFF.9.1"; cmp_ref "CUFF.7.1"; class_code "k"; tss_id "TSS3"; num_samples "1";
+chr1	Cufflinks	exon	42	50	.	+	.	transcript_id "TCONS_00000002"; gene_id "XLOC_000003"; exon_number "1";
+chr1	Cufflinks	transcript	52	60	.	+	.	transcript_id "TCONS_00000003"; gene_id "XLOC_000004"; oId "CUFF.10.1"; cmp_ref "CUFF.7.1"; class_code "p"; cmp_ref_gene "CUFF.7"; tss_id "TSS4"; num_samples "1";
+chr1	Cufflinks	exon	52	60	.	+	.	transcript_id "TCONS_00000003"; gene_id "XLOC_000004"; exon_number "1";
+chr1	Cufflinks	transcript	2	10	.	-	.	transcript_id "TCONS_00000004"; gene_id "XLOC_000005"; gene_name "CUFF.1"; oId "CUFF.1.1"; cmp_ref "CUFF.1.1"; class_code "="; tss_id "TSS5"; num_samples "2";
+chr1	Cufflinks	exon	2	10	.	-	.	transcript_id "TCONS_00000004"; gene_id "XLOC_000005"; exon_number "1";
+chr1	Cufflinks	transcript	15	20	.	-	.	transcript_id "TCONS_00000005"; gene_id "XLOC_000006"; oId "CUFF.3.1"; cmp_ref "CUFF.3.1"; class_code "x"; cmp_ref_gene "CUFF.3"; tss_id "TSS6"; num_samples "1";
+chr1	Cufflinks	exon	15	20	.	-	.	transcript_id "TCONS_00000005"; gene_id "XLOC_000006"; exon_number "1";
+chr1	Cufflinks	transcript	22	30	.	-	.	transcript_id "TCONS_00000008"; gene_id "XLOC_000007"; gene_name "CUFF.5"; oId "CUFF.5.1"; cmp_ref "CUFF.5.1"; class_code "="; tss_id "TSS7"; num_samples "1";
+chr1	Cufflinks	exon	22	30	.	-	.	transcript_id "TCONS_00000008"; gene_id "XLOC_000007"; exon_number "1";
--- a/test-data/gffcompare_out2.loci	Thu Oct 17 03:01:26 2019 -0400
+++ b/test-data/gffcompare_out2.loci	Fri Feb 03 10:57:30 2023 +0000
@@ -1,6 +1,7 @@
-XLOC_000001	chr1[+]12-20	-	-	CUFF.3.1
-XLOC_000002	chr1[+]32-50	Lypla1|Lypla1	CUFF.7.1,CUFF.9.1	CUFF.7.1
-XLOC_000003	chr1[+]52-60	-	CUFF.10.1	-
-XLOC_000004	chr1[-]2-10	-	CUFF.1.1	CUFF.1.1
-XLOC_000005	chr1[-]15-20	-	CUFF.3.1	-
-XLOC_000006	chr1[-]22-30	-	-	CUFF.5.1
+XLOC_000001	chr1[+]12-20	CUFF.3|CUFF.3.1	-	CUFF.3.1
+XLOC_000002	chr1[+]32-40	-	CUFF.7.1	-
+XLOC_000003	chr1[+]42-50	CUFF.7|CUFF.7.1	CUFF.9.1	CUFF.7.1
+XLOC_000004	chr1[+]52-60	-	CUFF.10.1	-
+XLOC_000005	chr1[-]2-10	CUFF.1|CUFF.1.1	CUFF.1.1	CUFF.1.1
+XLOC_000006	chr1[-]15-20	-	CUFF.3.1	-
+XLOC_000007	chr1[-]22-30	CUFF.5|CUFF.5.1	-	CUFF.5.1
--- a/test-data/gffcompare_out2.stats	Thu Oct 17 03:01:26 2019 -0400
+++ b/test-data/gffcompare_out2.stats	Fri Feb 03 10:57:30 2023 +0000
@@ -1,47 +1,47 @@
-# gffcompare v0.11.2 | Command line was:
-#gffcompare -r ref_annotation -e 100 -d 100 -p TCONS gffcompare_in1_gtf gffcompare_in2_gtf
+# gffcompare v0.12.6 | Command line was:
+#gffcompare -V -r reference_annotation -T -d 100 -p TCONS gffcompare_in1_gtf gffcompare_in2_gtf
 #
 
 #= Summary for dataset: gffcompare_in1_gtf 
 #     Query mRNAs :       5 in       5 loci  (0 multi-exon transcripts)
 #            (0 multi-transcript loci, ~1.0 transcripts per locus)
-# Reference mRNAs :       1 in       1 loci  (0 multi-exon)
-# Super-loci w/ reference transcripts:        1
+# Reference mRNAs :       4 in       4 loci  (0 multi-exon)
+# Super-loci w/ reference transcripts:        2
 #-----------------| Sensitivity | Precision  |
-        Base level:    94.7     |    42.9    |
-        Exon level:   100.0     |    40.0    |
-  Transcript level:     0.0     |     0.0    |
-       Locus level:     0.0     |     0.0    |
+        Base level:    45.5     |    35.7    |
+        Exon level:    50.0     |    40.0    |
+  Transcript level:    25.0     |    20.0    |
+       Locus level:    25.0     |    20.0    |
 
      Matching intron chains:       0
-       Matching transcripts:       0
-              Matching loci:       0
+       Matching transcripts:       1
+              Matching loci:       1
 
-          Missed exons:       0/1	(  0.0%)
+          Missed exons:       2/4	( 50.0%)
            Novel exons:       3/5	( 60.0%)
-           Missed loci:       0/1	(  0.0%)
+           Missed loci:       2/4	( 50.0%)
             Novel loci:       3/5	( 60.0%)
 
 #= Summary for dataset: gffcompare_in2_gtf 
 #     Query mRNAs :       4 in       4 loci  (0 multi-exon transcripts)
 #            (0 multi-transcript loci, ~1.0 transcripts per locus)
-# Reference mRNAs :       1 in       1 loci  (0 multi-exon)
-# Super-loci w/ reference transcripts:        1
+# Reference mRNAs :       4 in       4 loci  (0 multi-exon)
+# Super-loci w/ reference transcripts:        4
 #-----------------| Sensitivity | Precision  |
-        Base level:    31.6     |    18.2    |
-        Exon level:   100.0     |    25.0    |
-  Transcript level:     0.0     |     0.0    |
-       Locus level:     0.0     |     0.0    |
+        Base level:   100.0     |   100.0    |
+        Exon level:   100.0     |   100.0    |
+  Transcript level:   100.0     |   100.0    |
+       Locus level:   100.0     |   100.0    |
 
      Matching intron chains:       0
-       Matching transcripts:       0
-              Matching loci:       0
+       Matching transcripts:       4
+              Matching loci:       4
 
-          Missed exons:       0/1	(  0.0%)
-           Novel exons:       3/4	( 75.0%)
-           Missed loci:       0/1	(  0.0%)
-            Novel loci:       3/4	( 75.0%)
+          Missed exons:       0/4	(  0.0%)
+           Novel exons:       0/4	(  0.0%)
+           Missed loci:       0/4	(  0.0%)
+            Novel loci:       0/4	(  0.0%)
 
- Total union super-loci across all input datasets: 6 
-  (0 multi-transcript, ~1.3 transcripts per locus)
+ Total union super-loci across all input datasets: 7 
+  (0 multi-transcript, ~1.1 transcripts per locus)
 8 out of 8 consensus transcripts written in gffcmp.combined.gtf (0 discarded as redundant)
--- a/test-data/gffcompare_out2.tracking	Thu Oct 17 03:01:26 2019 -0400
+++ b/test-data/gffcompare_out2.tracking	Fri Feb 03 10:57:30 2023 +0000
@@ -1,8 +1,8 @@
-TCONS_00000001	XLOC_000002	Lypla1|Lypla1	c	q1:CUFF.7|CUFF.7.1|1|9.999117|0.000000|0.639053|9	-
-TCONS_00000002	XLOC_000002	Lypla1|Lypla1	c	q1:CUFF.9|CUFF.9.1|1|17.776896|0.000000|1.136139|9	-
-TCONS_00000003	XLOC_000003	Lypla1|Lypla1	p	q1:CUFF.10|CUFF.10.1|1|17.776896|0.000000|1.136139|9	-
-TCONS_00000004	XLOC_000004	-	u	q1:CUFF.1|CUFF.1.1|1|20.607936|0.000000|1.317073|9	q2:CUFF.1|CUFF.1.1|1|35.211287|0.000000|2.000000|9
-TCONS_00000005	XLOC_000005	-	u	q1:CUFF.3|CUFF.3.1|1|27.255658|0.000000|1.741935|6	-
-TCONS_00000006	XLOC_000001	-	u	-	q2:CUFF.3|CUFF.3.1|1|35.211287|0.000000|2.000000|9
-TCONS_00000007	XLOC_000002	Lypla1|Lypla1	c	-	q2:CUFF.7|CUFF.7.1|1|29.709524|0.000000|1.687500|6
-TCONS_00000008	XLOC_000006	-	u	-	q2:CUFF.5|CUFF.5.1|1|21.226627|0.000000|1.205672|9
+TCONS_00000001	XLOC_000002	CUFF.3|CUFF.3.1	p	q1:CUFF.7|CUFF.7.1|1|9.999117|0.000000|0.639053|9	-
+TCONS_00000002	XLOC_000003	CUFF.7|CUFF.7.1	k	q1:CUFF.9|CUFF.9.1|1|17.776896|0.000000|1.136139|9	-
+TCONS_00000003	XLOC_000004	CUFF.7|CUFF.7.1	p	q1:CUFF.10|CUFF.10.1|1|17.776896|0.000000|1.136139|9	-
+TCONS_00000004	XLOC_000005	CUFF.1|CUFF.1.1	=	q1:CUFF.1|CUFF.1.1|1|20.607936|0.000000|1.317073|9	q2:CUFF.1|CUFF.1.1|1|35.211287|0.000000|2.000000|9
+TCONS_00000005	XLOC_000006	CUFF.3|CUFF.3.1	x	q1:CUFF.3|CUFF.3.1|1|27.255658|0.000000|1.741935|6	-
+TCONS_00000006	XLOC_000001	CUFF.3|CUFF.3.1	=	-	q2:CUFF.3|CUFF.3.1|1|35.211287|0.000000|2.000000|9
+TCONS_00000007	XLOC_000003	CUFF.7|CUFF.7.1	=	-	q2:CUFF.7|CUFF.7.1|1|29.709524|0.000000|1.687500|6
+TCONS_00000008	XLOC_000007	CUFF.5|CUFF.5.1	=	-	q2:CUFF.5|CUFF.5.1|1|21.226627|0.000000|1.205672|9
--- a/test-data/gffcompare_out3.gtf	Thu Oct 17 03:01:26 2019 -0400
+++ b/test-data/gffcompare_out3.gtf	Fri Feb 03 10:57:30 2023 +0000
@@ -1,8 +1,8 @@
-chr1	StringTie	transcript	160930303	160940234	.	+	.	transcript_id "MSTRG.3.1"; gene_id "MSTRG.3"; gene_name "uc007del.2"; xloc "XLOC_000001"; cmp_ref "uc007del.2"; class_code "c"; tss_id "TSS1";
+chr1	StringTie	transcript	160930303	160940234	.	+	.	transcript_id "MSTRG.3.1"; gene_id "MSTRG.3"; gene_name "MSTRG.3"; xloc "XLOC_000001"; cmp_ref "MSTRG.3.1"; class_code "="; tss_id "TSS1";
 chr1	StringTie	exon	160930303	160930344	.	+	.	transcript_id "MSTRG.3.1"; gene_id "MSTRG.3"; exon_number "1";
 chr1	StringTie	exon	160938112	160938232	.	+	.	transcript_id "MSTRG.3.1"; gene_id "MSTRG.3"; exon_number "2";
 chr1	StringTie	exon	160939995	160940234	.	+	.	transcript_id "MSTRG.3.1"; gene_id "MSTRG.3"; exon_number "3";
-chr1	StringTie	transcript	160940817	160967997	.	+	.	transcript_id "MSTRG.4.1"; gene_id "MSTRG.4"; gene_name "uc007del.2"; xloc "XLOC_000001"; cmp_ref "uc007del.2"; class_code "c"; tss_id "TSS2";
+chr1	StringTie	transcript	160940817	160967997	.	+	.	transcript_id "MSTRG.4.1"; gene_id "MSTRG.4"; gene_name "MSTRG.4"; xloc "XLOC_000002"; cmp_ref "MSTRG.4.1"; class_code "="; tss_id "TSS2";
 chr1	StringTie	exon	160940817	160940994	.	+	.	transcript_id "MSTRG.4.1"; gene_id "MSTRG.4"; exon_number "1";
 chr1	StringTie	exon	160942528	160942728	.	+	.	transcript_id "MSTRG.4.1"; gene_id "MSTRG.4"; exon_number "2";
 chr1	StringTie	exon	160946534	160946666	.	+	.	transcript_id "MSTRG.4.1"; gene_id "MSTRG.4"; exon_number "3";
@@ -19,21 +19,21 @@
 chr1	StringTie	exon	160964950	160965120	.	+	.	transcript_id "MSTRG.4.1"; gene_id "MSTRG.4"; exon_number "14";
 chr1	StringTie	exon	160965673	160965788	.	+	.	transcript_id "MSTRG.4.1"; gene_id "MSTRG.4"; exon_number "15";
 chr1	StringTie	exon	160967647	160967997	.	+	.	transcript_id "MSTRG.4.1"; gene_id "MSTRG.4"; exon_number "16";
-chr1	StringTie	transcript	160968644	160972020	.	+	.	transcript_id "MSTRG.5.1"; gene_id "MSTRG.5"; gene_name "uc007del.2"; xloc "XLOC_000001"; cmp_ref "uc007del.2"; class_code "c"; tss_id "TSS3";
+chr1	StringTie	transcript	160968644	160972020	.	+	.	transcript_id "MSTRG.5.1"; gene_id "MSTRG.5"; gene_name "MSTRG.5"; xloc "XLOC_000003"; cmp_ref "MSTRG.5.1"; class_code "="; tss_id "TSS3";
 chr1	StringTie	exon	160968644	160972020	.	+	.	transcript_id "MSTRG.5.1"; gene_id "MSTRG.5"; exon_number "1";
-chr1	StringTie	transcript	160972938	160974977	.	+	.	transcript_id "MSTRG.6.1"; gene_id "MSTRG.6"; gene_name "uc007del.2"; xloc "XLOC_000001"; cmp_ref "uc007del.2"; class_code "c"; tss_id "TSS4";
+chr1	StringTie	transcript	160972938	160974977	.	+	.	transcript_id "MSTRG.6.1"; gene_id "MSTRG.6"; gene_name "MSTRG.6"; xloc "XLOC_000004"; cmp_ref "MSTRG.6.1"; class_code "="; tss_id "TSS4";
 chr1	StringTie	exon	160972938	160974977	.	+	.	transcript_id "MSTRG.6.1"; gene_id "MSTRG.6"; exon_number "1";
-chr1	StringTie	transcript	161003085	161003516	.	+	.	transcript_id "MSTRG.7.1"; gene_id "MSTRG.7"; xloc "XLOC_000002"; class_code "u"; tss_id "TSS5";
+chr1	StringTie	transcript	161003085	161003516	.	+	.	transcript_id "MSTRG.7.1"; gene_id "MSTRG.7"; gene_name "MSTRG.7"; xloc "XLOC_000005"; cmp_ref "MSTRG.7.1"; class_code "="; tss_id "TSS5";
 chr1	StringTie	exon	161003085	161003516	.	+	.	transcript_id "MSTRG.7.1"; gene_id "MSTRG.7"; exon_number "1";
-chr1	StringTie	transcript	161006151	161006466	.	+	.	transcript_id "MSTRG.10.1"; gene_id "MSTRG.10"; xloc "XLOC_000003"; class_code "u"; tss_id "TSS6";
+chr1	StringTie	transcript	161006151	161006466	.	+	.	transcript_id "MSTRG.10.1"; gene_id "MSTRG.10"; gene_name "MSTRG.10"; xloc "XLOC_000006"; cmp_ref "MSTRG.10.1"; class_code "="; tss_id "TSS6";
 chr1	StringTie	exon	161006151	161006466	.	+	.	transcript_id "MSTRG.10.1"; gene_id "MSTRG.10"; exon_number "1";
-chr1	StringTie	transcript	161008375	161008625	.	+	.	transcript_id "MSTRG.12.1"; gene_id "MSTRG.12"; xloc "XLOC_000004"; class_code "u"; tss_id "TSS7";
+chr1	StringTie	transcript	161008375	161008625	.	+	.	transcript_id "MSTRG.12.1"; gene_id "MSTRG.12"; gene_name "MSTRG.12"; xloc "XLOC_000007"; cmp_ref "MSTRG.12.1"; class_code "="; tss_id "TSS7";
 chr1	StringTie	exon	161008375	161008625	.	+	.	transcript_id "MSTRG.12.1"; gene_id "MSTRG.12"; exon_number "1";
-chr1	StringTie	transcript	161009768	161010195	.	+	.	transcript_id "MSTRG.13.1"; gene_id "MSTRG.13"; xloc "XLOC_000005"; class_code "u"; tss_id "TSS8";
+chr1	StringTie	transcript	161009768	161010195	.	+	.	transcript_id "MSTRG.13.1"; gene_id "MSTRG.13"; gene_name "MSTRG.13"; xloc "XLOC_000008"; cmp_ref "MSTRG.13.1"; class_code "="; tss_id "TSS8";
 chr1	StringTie	exon	161009768	161010195	.	+	.	transcript_id "MSTRG.13.1"; gene_id "MSTRG.13"; exon_number "1";
-chr1	StringTie	transcript	161019713	161019962	.	+	.	transcript_id "MSTRG.14.1"; gene_id "MSTRG.14"; gene_name "uc007der.1"; xloc "XLOC_000006"; cmp_ref "uc007der.1"; class_code "x"; tss_id "TSS9";
+chr1	StringTie	transcript	161019713	161019962	.	+	.	transcript_id "MSTRG.14.1"; gene_id "MSTRG.14"; gene_name "MSTRG.14"; xloc "XLOC_000009"; cmp_ref "MSTRG.14.1"; class_code "="; tss_id "TSS9";
 chr1	StringTie	exon	161019713	161019962	.	+	.	transcript_id "MSTRG.14.1"; gene_id "MSTRG.14"; exon_number "1";
-chr1	StringTie	transcript	161034351	161038539	.	+	.	transcript_id "MSTRG.16.1"; gene_id "MSTRG.16"; gene_name "uc007dev.1"; xloc "XLOC_000007"; cmp_ref "uc007dev.1"; class_code "j"; tss_id "TSS10";
+chr1	StringTie	transcript	161034351	161038539	.	+	.	transcript_id "MSTRG.16.1"; gene_id "MSTRG.16"; gene_name "MSTRG.16"; xloc "XLOC_000010"; cmp_ref "MSTRG.16.1"; class_code "="; tss_id "TSS10";
 chr1	StringTie	exon	161034351	161034719	.	+	.	transcript_id "MSTRG.16.1"; gene_id "MSTRG.16"; exon_number "1";
 chr1	StringTie	exon	161035752	161035804	.	+	.	transcript_id "MSTRG.16.1"; gene_id "MSTRG.16"; exon_number "2";
 chr1	StringTie	exon	161035983	161036014	.	+	.	transcript_id "MSTRG.16.1"; gene_id "MSTRG.16"; exon_number "3";
@@ -45,7 +45,7 @@
 chr1	StringTie	exon	161037995	161038037	.	+	.	transcript_id "MSTRG.16.1"; gene_id "MSTRG.16"; exon_number "9";
 chr1	StringTie	exon	161038225	161038272	.	+	.	transcript_id "MSTRG.16.1"; gene_id "MSTRG.16"; exon_number "10";
 chr1	StringTie	exon	161038457	161038539	.	+	.	transcript_id "MSTRG.16.1"; gene_id "MSTRG.16"; exon_number "11";
-chr1	StringTie	transcript	161034584	161038539	.	+	.	transcript_id "MSTRG.16.2"; gene_id "MSTRG.16"; gene_name "uc007dev.1"; xloc "XLOC_000007"; cmp_ref "uc007dev.1"; class_code "j"; tss_id "TSS11";
+chr1	StringTie	transcript	161034584	161038539	.	+	.	transcript_id "MSTRG.16.2"; gene_id "MSTRG.16"; gene_name "MSTRG.16"; xloc "XLOC_000010"; cmp_ref "MSTRG.16.2"; class_code "="; tss_id "TSS11";
 chr1	StringTie	exon	161034584	161034719	.	+	.	transcript_id "MSTRG.16.2"; gene_id "MSTRG.16"; exon_number "1";
 chr1	StringTie	exon	161035752	161035804	.	+	.	transcript_id "MSTRG.16.2"; gene_id "MSTRG.16"; exon_number "2";
 chr1	StringTie	exon	161035983	161036014	.	+	.	transcript_id "MSTRG.16.2"; gene_id "MSTRG.16"; exon_number "3";
@@ -58,7 +58,7 @@
 chr1	StringTie	exon	161037995	161038037	.	+	.	transcript_id "MSTRG.16.2"; gene_id "MSTRG.16"; exon_number "10";
 chr1	StringTie	exon	161038225	161038272	.	+	.	transcript_id "MSTRG.16.2"; gene_id "MSTRG.16"; exon_number "11";
 chr1	StringTie	exon	161038457	161038539	.	+	.	transcript_id "MSTRG.16.2"; gene_id "MSTRG.16"; exon_number "12";
-chr1	StringTie	transcript	161034642	161038338	.	+	.	transcript_id "MSTRG.16.3"; gene_id "MSTRG.16"; gene_name "uc007dev.1"; xloc "XLOC_000007"; cmp_ref "uc007dev.1"; class_code "j"; tss_id "TSS11";
+chr1	StringTie	transcript	161034642	161038338	.	+	.	transcript_id "MSTRG.16.3"; gene_id "MSTRG.16"; gene_name "MSTRG.16"; xloc "XLOC_000010"; cmp_ref "MSTRG.16.3"; class_code "="; tss_id "TSS11";
 chr1	StringTie	exon	161034642	161035194	.	+	.	transcript_id "MSTRG.16.3"; gene_id "MSTRG.16"; exon_number "1";
 chr1	StringTie	exon	161035752	161035804	.	+	.	transcript_id "MSTRG.16.3"; gene_id "MSTRG.16"; exon_number "2";
 chr1	StringTie	exon	161035983	161036014	.	+	.	transcript_id "MSTRG.16.3"; gene_id "MSTRG.16"; exon_number "3";
@@ -70,7 +70,7 @@
 chr1	StringTie	exon	161037505	161037547	.	+	.	transcript_id "MSTRG.16.3"; gene_id "MSTRG.16"; exon_number "9";
 chr1	StringTie	exon	161037995	161038037	.	+	.	transcript_id "MSTRG.16.3"; gene_id "MSTRG.16"; exon_number "10";
 chr1	StringTie	exon	161038225	161038338	.	+	.	transcript_id "MSTRG.16.3"; gene_id "MSTRG.16"; exon_number "11";
-chr1	StringTie	transcript	161035095	161038539	.	+	.	transcript_id "MSTRG.16.4"; gene_id "MSTRG.16"; gene_name "uc007dev.1"; xloc "XLOC_000007"; cmp_ref "uc007dev.1"; class_code "j"; tss_id "TSS12";
+chr1	StringTie	transcript	161035095	161038539	.	+	.	transcript_id "MSTRG.16.4"; gene_id "MSTRG.16"; gene_name "MSTRG.16"; xloc "XLOC_000010"; cmp_ref "MSTRG.16.4"; class_code "="; tss_id "TSS12";
 chr1	StringTie	exon	161035095	161035194	.	+	.	transcript_id "MSTRG.16.4"; gene_id "MSTRG.16"; exon_number "1";
 chr1	StringTie	exon	161035752	161035804	.	+	.	transcript_id "MSTRG.16.4"; gene_id "MSTRG.16"; exon_number "2";
 chr1	StringTie	exon	161035983	161036014	.	+	.	transcript_id "MSTRG.16.4"; gene_id "MSTRG.16"; exon_number "3";
@@ -82,7 +82,7 @@
 chr1	StringTie	exon	161037995	161038037	.	+	.	transcript_id "MSTRG.16.4"; gene_id "MSTRG.16"; exon_number "9";
 chr1	StringTie	exon	161038225	161038272	.	+	.	transcript_id "MSTRG.16.4"; gene_id "MSTRG.16"; exon_number "10";
 chr1	StringTie	exon	161038457	161038539	.	+	.	transcript_id "MSTRG.16.4"; gene_id "MSTRG.16"; exon_number "11";
-chr1	StringTie	transcript	161035164	161038539	.	+	.	transcript_id "MSTRG.16.5"; gene_id "MSTRG.16"; gene_name "uc007dev.1"; xloc "XLOC_000007"; cmp_ref "uc007dev.1"; class_code "="; tss_id "TSS12";
+chr1	StringTie	transcript	161035164	161038539	.	+	.	transcript_id "MSTRG.16.5"; gene_id "MSTRG.16"; gene_name "MSTRG.16"; xloc "XLOC_000010"; cmp_ref "MSTRG.16.5"; class_code "="; tss_id "TSS12";
 chr1	StringTie	exon	161035164	161035194	.	+	.	transcript_id "MSTRG.16.5"; gene_id "MSTRG.16"; exon_number "1";
 chr1	StringTie	exon	161035752	161035804	.	+	.	transcript_id "MSTRG.16.5"; gene_id "MSTRG.16"; exon_number "2";
 chr1	StringTie	exon	161035983	161036014	.	+	.	transcript_id "MSTRG.16.5"; gene_id "MSTRG.16"; exon_number "3";
@@ -94,7 +94,7 @@
 chr1	StringTie	exon	161037995	161038037	.	+	.	transcript_id "MSTRG.16.5"; gene_id "MSTRG.16"; exon_number "9";
 chr1	StringTie	exon	161038225	161038272	.	+	.	transcript_id "MSTRG.16.5"; gene_id "MSTRG.16"; exon_number "10";
 chr1	StringTie	exon	161038457	161038539	.	+	.	transcript_id "MSTRG.16.5"; gene_id "MSTRG.16"; exon_number "11";
-chr1	StringTie	transcript	161041562	161070639	.	+	.	transcript_id "MSTRG.18.1"; gene_id "MSTRG.18"; gene_name "uc007dey.2"; xloc "XLOC_000008"; cmp_ref "uc007dey.2"; class_code "s"; tss_id "TSS13";
+chr1	StringTie	transcript	161041562	161070639	.	+	.	transcript_id "MSTRG.18.1"; gene_id "MSTRG.18"; gene_name "MSTRG.18"; xloc "XLOC_000011"; cmp_ref "MSTRG.18.1"; class_code "="; tss_id "TSS13";
 chr1	StringTie	exon	161041562	161041930	.	+	.	transcript_id "MSTRG.18.1"; gene_id "MSTRG.18"; exon_number "1";
 chr1	StringTie	exon	161043613	161043688	.	+	.	transcript_id "MSTRG.18.1"; gene_id "MSTRG.18"; exon_number "2";
 chr1	StringTie	exon	161044959	161045069	.	+	.	transcript_id "MSTRG.18.1"; gene_id "MSTRG.18"; exon_number "3";
@@ -111,26 +111,26 @@
 chr1	StringTie	exon	161065225	161065291	.	+	.	transcript_id "MSTRG.18.1"; gene_id "MSTRG.18"; exon_number "14";
 chr1	StringTie	exon	161069080	161069179	.	+	.	transcript_id "MSTRG.18.1"; gene_id "MSTRG.18"; exon_number "15";
 chr1	StringTie	exon	161069993	161070639	.	+	.	transcript_id "MSTRG.18.1"; gene_id "MSTRG.18"; exon_number "16";
-chr1	StringTie	transcript	161045151	161056533	.	+	.	transcript_id "MSTRG.18.2"; gene_id "MSTRG.18"; gene_name "uc007dey.2"; xloc "XLOC_000008"; cmp_ref "uc007dey.2"; class_code "s"; tss_id "TSS14";
+chr1	StringTie	transcript	161045151	161056533	.	+	.	transcript_id "MSTRG.18.2"; gene_id "MSTRG.18"; gene_name "MSTRG.18"; xloc "XLOC_000011"; cmp_ref "MSTRG.18.2"; class_code "="; tss_id "TSS14";
 chr1	StringTie	exon	161045151	161045476	.	+	.	transcript_id "MSTRG.18.2"; gene_id "MSTRG.18"; exon_number "1";
 chr1	StringTie	exon	161046777	161046929	.	+	.	transcript_id "MSTRG.18.2"; gene_id "MSTRG.18"; exon_number "2";
 chr1	StringTie	exon	161049938	161050000	.	+	.	transcript_id "MSTRG.18.2"; gene_id "MSTRG.18"; exon_number "3";
 chr1	StringTie	exon	161051331	161051438	.	+	.	transcript_id "MSTRG.18.2"; gene_id "MSTRG.18"; exon_number "4";
 chr1	StringTie	exon	161053941	161054120	.	+	.	transcript_id "MSTRG.18.2"; gene_id "MSTRG.18"; exon_number "5";
 chr1	StringTie	exon	161056461	161056533	.	+	.	transcript_id "MSTRG.18.2"; gene_id "MSTRG.18"; exon_number "6";
-chr1	StringTie	transcript	161070945	161078458	.	+	.	transcript_id "MSTRG.20.1"; gene_id "MSTRG.20"; gene_name "uc007dfd.3"; xloc "XLOC_000009"; cmp_ref "uc007dfd.3"; class_code "c"; tss_id "TSS15";
+chr1	StringTie	transcript	161070945	161078458	.	+	.	transcript_id "MSTRG.20.1"; gene_id "MSTRG.20"; gene_name "MSTRG.20"; xloc "XLOC_000012"; cmp_ref "MSTRG.20.1"; class_code "="; tss_id "TSS15";
 chr1	StringTie	exon	161070945	161071356	.	+	.	transcript_id "MSTRG.20.1"; gene_id "MSTRG.20"; exon_number "1";
 chr1	StringTie	exon	161074757	161074930	.	+	.	transcript_id "MSTRG.20.1"; gene_id "MSTRG.20"; exon_number "2";
 chr1	StringTie	exon	161078329	161078458	.	+	.	transcript_id "MSTRG.20.1"; gene_id "MSTRG.20"; exon_number "3";
-chr1	StringTie	transcript	161082956	161083421	.	+	.	transcript_id "MSTRG.21.1"; gene_id "MSTRG.21"; gene_name "uc007dfe.4"; xloc "XLOC_000009"; cmp_ref "uc007dfe.4"; class_code "c"; tss_id "TSS16";
+chr1	StringTie	transcript	161082956	161083421	.	+	.	transcript_id "MSTRG.21.1"; gene_id "MSTRG.21"; gene_name "MSTRG.21"; xloc "XLOC_000013"; cmp_ref "MSTRG.21.1"; class_code "="; tss_id "TSS16";
 chr1	StringTie	exon	161082956	161083421	.	+	.	transcript_id "MSTRG.21.1"; gene_id "MSTRG.21"; exon_number "1";
-chr1	StringTie	transcript	161084121	161084344	.	+	.	transcript_id "MSTRG.22.1"; gene_id "MSTRG.22"; gene_name "uc007dfe.4"; xloc "XLOC_000009"; cmp_ref "uc007dfe.4"; class_code "c"; tss_id "TSS17";
+chr1	StringTie	transcript	161084121	161084344	.	+	.	transcript_id "MSTRG.22.1"; gene_id "MSTRG.22"; gene_name "MSTRG.22"; xloc "XLOC_000014"; cmp_ref "MSTRG.22.1"; class_code "="; tss_id "TSS17";
 chr1	StringTie	exon	161084121	161084344	.	+	.	transcript_id "MSTRG.22.1"; gene_id "MSTRG.22"; exon_number "1";
-chr1	StringTie	transcript	161085014	161086329	.	+	.	transcript_id "MSTRG.23.1"; gene_id "MSTRG.23"; gene_name "uc056yep.1"; xloc "XLOC_000009"; cmp_ref "uc056yep.1"; class_code "c"; tss_id "TSS18";
+chr1	StringTie	transcript	161085014	161086329	.	+	.	transcript_id "MSTRG.23.1"; gene_id "MSTRG.23"; gene_name "MSTRG.23"; xloc "XLOC_000015"; cmp_ref "MSTRG.23.1"; class_code "="; tss_id "TSS18";
 chr1	StringTie	exon	161085014	161086329	.	+	.	transcript_id "MSTRG.23.1"; gene_id "MSTRG.23"; exon_number "1";
-chr1	StringTie	transcript	161088497	161088913	.	+	.	transcript_id "MSTRG.24.1"; gene_id "MSTRG.24"; gene_name "uc007dff.1"; xloc "XLOC_000010"; cmp_ref "uc007dff.1"; class_code "x"; tss_id "TSS19";
+chr1	StringTie	transcript	161088497	161088913	.	+	.	transcript_id "MSTRG.24.1"; gene_id "MSTRG.24"; gene_name "MSTRG.24"; xloc "XLOC_000016"; cmp_ref "MSTRG.24.1"; class_code "="; tss_id "TSS19";
 chr1	StringTie	exon	161088497	161088913	.	+	.	transcript_id "MSTRG.24.1"; gene_id "MSTRG.24"; exon_number "1";
-chr1	StringTie	transcript	161089415	161131512	.	+	.	transcript_id "MSTRG.26.1"; gene_id "MSTRG.26"; gene_name "uc007dff.1"; xloc "XLOC_000011"; cmp_ref "uc007dff.1"; class_code "s"; tss_id "TSS20";
+chr1	StringTie	transcript	161089415	161131512	.	+	.	transcript_id "MSTRG.26.1"; gene_id "MSTRG.26"; gene_name "MSTRG.26"; xloc "XLOC_000017"; cmp_ref "MSTRG.26.1"; class_code "="; tss_id "TSS20";
 chr1	StringTie	exon	161089415	161090511	.	+	.	transcript_id "MSTRG.26.1"; gene_id "MSTRG.26"; exon_number "1";
 chr1	StringTie	exon	161093681	161093787	.	+	.	transcript_id "MSTRG.26.1"; gene_id "MSTRG.26"; exon_number "2";
 chr1	StringTie	exon	161095529	161095737	.	+	.	transcript_id "MSTRG.26.1"; gene_id "MSTRG.26"; exon_number "3";
@@ -143,28 +143,28 @@
 chr1	StringTie	exon	161109222	161109795	.	+	.	transcript_id "MSTRG.26.1"; gene_id "MSTRG.26"; exon_number "10";
 chr1	StringTie	exon	161130389	161130452	.	+	.	transcript_id "MSTRG.26.1"; gene_id "MSTRG.26"; exon_number "11";
 chr1	StringTie	exon	161131363	161131512	.	+	.	transcript_id "MSTRG.26.1"; gene_id "MSTRG.26"; exon_number "12";
-chr1	StringTie	transcript	161123665	161123877	.	+	.	transcript_id "MSTRG.28.1"; gene_id "MSTRG.28"; gene_name "uc007dff.1"; xloc "XLOC_000012"; cmp_ref "uc007dff.1"; class_code "i"; tss_id "TSS21";
+chr1	StringTie	transcript	161123665	161123877	.	+	.	transcript_id "MSTRG.28.1"; gene_id "MSTRG.28"; gene_name "MSTRG.28"; xloc "XLOC_000018"; cmp_ref "MSTRG.28.1"; class_code "="; tss_id "TSS21";
 chr1	StringTie	exon	161123665	161123877	.	+	.	transcript_id "MSTRG.28.1"; gene_id "MSTRG.28"; exon_number "1";
-chr1	StringTie	transcript	29485012	29485458	.	-	.	transcript_id "MSTRG.1.1"; gene_id "MSTRG.1"; xloc "XLOC_000013"; class_code "u"; tss_id "TSS22";
+chr1	StringTie	transcript	29485012	29485458	.	-	.	transcript_id "MSTRG.1.1"; gene_id "MSTRG.1"; gene_name "MSTRG.1"; xloc "XLOC_000019"; cmp_ref "MSTRG.1.1"; class_code "="; tss_id "TSS22";
 chr1	StringTie	exon	29485012	29485458	.	-	.	transcript_id "MSTRG.1.1"; gene_id "MSTRG.1"; exon_number "1";
-chr1	StringTie	transcript	86909344	86909692	.	-	.	transcript_id "MSTRG.2.1"; gene_id "MSTRG.2"; xloc "XLOC_000014"; class_code "u"; tss_id "TSS23";
+chr1	StringTie	transcript	86909344	86909692	.	-	.	transcript_id "MSTRG.2.1"; gene_id "MSTRG.2"; gene_name "MSTRG.2"; xloc "XLOC_000020"; cmp_ref "MSTRG.2.1"; class_code "="; tss_id "TSS23";
 chr1	StringTie	exon	86909344	86909692	.	-	.	transcript_id "MSTRG.2.1"; gene_id "MSTRG.2"; exon_number "1";
-chr1	StringTie	transcript	161003658	161004769	.	-	.	transcript_id "MSTRG.8.1"; gene_id "MSTRG.8"; xloc "XLOC_000015"; class_code "u"; tss_id "TSS24";
+chr1	StringTie	transcript	161003658	161004769	.	-	.	transcript_id "MSTRG.8.1"; gene_id "MSTRG.8"; gene_name "MSTRG.8"; xloc "XLOC_000021"; cmp_ref "MSTRG.8.1"; class_code "="; tss_id "TSS24";
 chr1	StringTie	exon	161003658	161004769	.	-	.	transcript_id "MSTRG.8.1"; gene_id "MSTRG.8"; exon_number "1";
-chr1	StringTie	transcript	161005030	161005802	.	-	.	transcript_id "MSTRG.9.1"; gene_id "MSTRG.9"; xloc "XLOC_000016"; class_code "u"; tss_id "TSS25";
+chr1	StringTie	transcript	161005030	161005802	.	-	.	transcript_id "MSTRG.9.1"; gene_id "MSTRG.9"; gene_name "MSTRG.9"; xloc "XLOC_000022"; cmp_ref "MSTRG.9.1"; class_code "="; tss_id "TSS25";
 chr1	StringTie	exon	161005030	161005802	.	-	.	transcript_id "MSTRG.9.1"; gene_id "MSTRG.9"; exon_number "1";
-chr1	StringTie	transcript	161007444	161007700	.	-	.	transcript_id "MSTRG.11.1"; gene_id "MSTRG.11"; xloc "XLOC_000017"; class_code "u"; tss_id "TSS26";
+chr1	StringTie	transcript	161007444	161007700	.	-	.	transcript_id "MSTRG.11.1"; gene_id "MSTRG.11"; gene_name "MSTRG.11"; xloc "XLOC_000023"; cmp_ref "MSTRG.11.1"; class_code "="; tss_id "TSS26";
 chr1	StringTie	exon	161007444	161007700	.	-	.	transcript_id "MSTRG.11.1"; gene_id "MSTRG.11"; exon_number "1";
-chr1	StringTie	transcript	161032044	161032396	.	-	.	transcript_id "MSTRG.15.1"; gene_id "MSTRG.15"; gene_name "uc007des.1"; xloc "XLOC_000018"; cmp_ref "uc007des.1"; class_code "c"; tss_id "TSS27";
+chr1	StringTie	transcript	161032044	161032396	.	-	.	transcript_id "MSTRG.15.1"; gene_id "MSTRG.15"; gene_name "MSTRG.15"; xloc "XLOC_000024"; cmp_ref "MSTRG.15.1"; class_code "="; tss_id "TSS27";
 chr1	StringTie	exon	161032044	161032396	.	-	.	transcript_id "MSTRG.15.1"; gene_id "MSTRG.15"; exon_number "1";
-chr1	StringTie	transcript	161041525	161050001	.	-	.	transcript_id "MSTRG.17.1"; gene_id "MSTRG.17"; gene_name "uc007dey.2"; xloc "XLOC_000019"; cmp_ref "uc007dey.2"; class_code "c"; tss_id "TSS28";
+chr1	StringTie	transcript	161041525	161050001	.	-	.	transcript_id "MSTRG.17.1"; gene_id "MSTRG.17"; gene_name "MSTRG.17"; xloc "XLOC_000025"; cmp_ref "MSTRG.17.1"; class_code "="; tss_id "TSS28";
 chr1	StringTie	exon	161041525	161041930	.	-	.	transcript_id "MSTRG.17.1"; gene_id "MSTRG.17"; exon_number "1";
 chr1	StringTie	exon	161043613	161043688	.	-	.	transcript_id "MSTRG.17.1"; gene_id "MSTRG.17"; exon_number "2";
 chr1	StringTie	exon	161044959	161045069	.	-	.	transcript_id "MSTRG.17.1"; gene_id "MSTRG.17"; exon_number "3";
 chr1	StringTie	exon	161045258	161045476	.	-	.	transcript_id "MSTRG.17.1"; gene_id "MSTRG.17"; exon_number "4";
 chr1	StringTie	exon	161046777	161046929	.	-	.	transcript_id "MSTRG.17.1"; gene_id "MSTRG.17"; exon_number "5";
 chr1	StringTie	exon	161049938	161050001	.	-	.	transcript_id "MSTRG.17.1"; gene_id "MSTRG.17"; exon_number "6";
-chr1	StringTie	transcript	161051330	161070504	.	-	.	transcript_id "MSTRG.19.1"; gene_id "MSTRG.19"; gene_name "uc007dey.2"; xloc "XLOC_000019"; cmp_ref "uc007dey.2"; class_code "c"; tss_id "TSS29";
+chr1	StringTie	transcript	161051330	161070504	.	-	.	transcript_id "MSTRG.19.1"; gene_id "MSTRG.19"; gene_name "MSTRG.19"; xloc "XLOC_000026"; cmp_ref "MSTRG.19.1"; class_code "="; tss_id "TSS29";
 chr1	StringTie	exon	161051330	161051438	.	-	.	transcript_id "MSTRG.19.1"; gene_id "MSTRG.19"; exon_number "1";
 chr1	StringTie	exon	161053941	161054120	.	-	.	transcript_id "MSTRG.19.1"; gene_id "MSTRG.19"; exon_number "2";
 chr1	StringTie	exon	161056461	161056530	.	-	.	transcript_id "MSTRG.19.1"; gene_id "MSTRG.19"; exon_number "3";
@@ -176,7 +176,7 @@
 chr1	StringTie	exon	161065225	161065291	.	-	.	transcript_id "MSTRG.19.1"; gene_id "MSTRG.19"; exon_number "9";
 chr1	StringTie	exon	161069080	161069179	.	-	.	transcript_id "MSTRG.19.1"; gene_id "MSTRG.19"; exon_number "10";
 chr1	StringTie	exon	161069993	161070504	.	-	.	transcript_id "MSTRG.19.1"; gene_id "MSTRG.19"; exon_number "11";
-chr1	StringTie	transcript	161051331	161070649	.	-	.	transcript_id "MSTRG.19.2"; gene_id "MSTRG.19"; gene_name "uc007dey.2"; xloc "XLOC_000019"; cmp_ref "uc007dey.2"; class_code "j"; tss_id "TSS30";
+chr1	StringTie	transcript	161051331	161070649	.	-	.	transcript_id "MSTRG.19.2"; gene_id "MSTRG.19"; gene_name "MSTRG.19"; xloc "XLOC_000026"; cmp_ref "MSTRG.19.2"; class_code "="; tss_id "TSS30";
 chr1	StringTie	exon	161051331	161051438	.	-	.	transcript_id "MSTRG.19.2"; gene_id "MSTRG.19"; exon_number "1";
 chr1	StringTie	exon	161056461	161056530	.	-	.	transcript_id "MSTRG.19.2"; gene_id "MSTRG.19"; exon_number "2";
 chr1	StringTie	exon	161057447	161057553	.	-	.	transcript_id "MSTRG.19.2"; gene_id "MSTRG.19"; exon_number "3";
@@ -187,9 +187,9 @@
 chr1	StringTie	exon	161065225	161065291	.	-	.	transcript_id "MSTRG.19.2"; gene_id "MSTRG.19"; exon_number "8";
 chr1	StringTie	exon	161069080	161069179	.	-	.	transcript_id "MSTRG.19.2"; gene_id "MSTRG.19"; exon_number "9";
 chr1	StringTie	exon	161069993	161070649	.	-	.	transcript_id "MSTRG.19.2"; gene_id "MSTRG.19"; exon_number "10";
-chr1	StringTie	transcript	161088915	161090275	.	-	.	transcript_id "MSTRG.25.1"; gene_id "MSTRG.25"; gene_name "uc007dff.1"; xloc "XLOC_000020"; cmp_ref "uc007dff.1"; class_code "c"; tss_id "TSS31";
+chr1	StringTie	transcript	161088915	161090275	.	-	.	transcript_id "MSTRG.25.1"; gene_id "MSTRG.25"; gene_name "MSTRG.25"; xloc "XLOC_000027"; cmp_ref "MSTRG.25.1"; class_code "="; tss_id "TSS31";
 chr1	StringTie	exon	161088915	161090275	.	-	.	transcript_id "MSTRG.25.1"; gene_id "MSTRG.25"; exon_number "1";
-chr1	StringTie	transcript	161090412	161131492	.	-	.	transcript_id "MSTRG.27.1"; gene_id "MSTRG.27"; gene_name "uc007dff.1"; xloc "XLOC_000020"; cmp_ref "uc007dff.1"; class_code "="; tss_id "TSS32";
+chr1	StringTie	transcript	161090412	161131492	.	-	.	transcript_id "MSTRG.27.1"; gene_id "MSTRG.27"; gene_name "MSTRG.27"; xloc "XLOC_000028"; cmp_ref "MSTRG.27.1"; class_code "="; tss_id "TSS32";
 chr1	StringTie	exon	161090412	161090511	.	-	.	transcript_id "MSTRG.27.1"; gene_id "MSTRG.27"; exon_number "1";
 chr1	StringTie	exon	161093681	161093787	.	-	.	transcript_id "MSTRG.27.1"; gene_id "MSTRG.27"; exon_number "2";
 chr1	StringTie	exon	161095529	161095737	.	-	.	transcript_id "MSTRG.27.1"; gene_id "MSTRG.27"; exon_number "3";
@@ -202,5 +202,5 @@
 chr1	StringTie	exon	161109222	161109795	.	-	.	transcript_id "MSTRG.27.1"; gene_id "MSTRG.27"; exon_number "10";
 chr1	StringTie	exon	161130389	161130452	.	-	.	transcript_id "MSTRG.27.1"; gene_id "MSTRG.27"; exon_number "11";
 chr1	StringTie	exon	161131363	161131492	.	-	.	transcript_id "MSTRG.27.1"; gene_id "MSTRG.27"; exon_number "12";
-chr1	StringTie	transcript	192074156	192074378	.	-	.	transcript_id "MSTRG.29.1"; gene_id "MSTRG.29"; xloc "XLOC_000021"; class_code "u"; tss_id "TSS33";
+chr1	StringTie	transcript	192074156	192074378	.	-	.	transcript_id "MSTRG.29.1"; gene_id "MSTRG.29"; gene_name "MSTRG.29"; xloc "XLOC_000029"; cmp_ref "MSTRG.29.1"; class_code "="; tss_id "TSS33";
 chr1	StringTie	exon	192074156	192074378	.	-	.	transcript_id "MSTRG.29.1"; gene_id "MSTRG.29"; exon_number "1";
--- a/test-data/gffcompare_out3.loci	Thu Oct 17 03:01:26 2019 -0400
+++ b/test-data/gffcompare_out3.loci	Fri Feb 03 10:57:30 2023 +0000
@@ -1,21 +1,29 @@
-XLOC_000001	chr1[+]160930303-160974977	uc007del.2|uc007del.2	MSTRG.4.1,MSTRG.5.1,MSTRG.6.1,MSTRG.3.1
-XLOC_000002	chr1[+]161003085-161003516	-	MSTRG.7.1
-XLOC_000003	chr1[+]161006151-161006466	-	MSTRG.10.1
-XLOC_000004	chr1[+]161008375-161008625	-	MSTRG.12.1
-XLOC_000005	chr1[+]161009768-161010195	-	MSTRG.13.1
-XLOC_000006	chr1[+]161019713-161019962	-	MSTRG.14.1
-XLOC_000007	chr1[+]161034351-161038539	uc007det.1|uc007det.1,uc007deu.1|uc007deu.1,uc007dev.1|uc007dev.1,uc007dew.1|uc007dew.1,uc011wun.1|uc011wun.1,uc007dex.1|uc007dex.1	MSTRG.16.1,MSTRG.16.2,MSTRG.16.3,MSTRG.16.4,MSTRG.16.5
-XLOC_000008	chr1[+]161041562-161070639	-	MSTRG.18.1,MSTRG.18.2
-XLOC_000009	chr1[+]161070945-161086329	uc007dfe.4|uc007dfe.4,uc007dfc.3|uc007dfc.3,uc007dfd.3|uc007dfd.3,uc056yep.1|uc056yep.1	MSTRG.20.1,MSTRG.21.1,MSTRG.22.1,MSTRG.23.1
-XLOC_000010	chr1[+]161088497-161088913	-	MSTRG.24.1
-XLOC_000011	chr1[+]161089415-161131512	-	MSTRG.26.1
-XLOC_000012	chr1[+]161123665-161123877	-	MSTRG.28.1
-XLOC_000013	chr1[-]29485012-29485458	-	MSTRG.1.1
-XLOC_000014	chr1[-]86909344-86909692	-	MSTRG.2.1
-XLOC_000015	chr1[-]161003658-161004769	-	MSTRG.8.1
-XLOC_000016	chr1[-]161005030-161005802	-	MSTRG.9.1
-XLOC_000017	chr1[-]161007444-161007700	-	MSTRG.11.1
-XLOC_000018	chr1[-]161019713-161034848	uc007der.1|uc007der.1,uc007des.1|uc007des.1	MSTRG.15.1
-XLOC_000019	chr1[-]161041525-161070649	uc007dey.2|uc007dey.2,uc007dez.2|uc007dez.2	MSTRG.17.1,MSTRG.19.1,MSTRG.19.2
-XLOC_000020	chr1[-]161088497-161131492	uc007dff.1|uc007dff.1,uc007dfg.1|uc007dfg.1,uc007dfh.1|uc007dfh.1,uc007dfi.1|uc007dfi.1	MSTRG.25.1,MSTRG.27.1
-XLOC_000021	chr1[-]192074156-192074378	-	MSTRG.29.1
+XLOC_000001	chr1[+]160930303-160940234	MSTRG.3|MSTRG.3.1	MSTRG.3.1
+XLOC_000002	chr1[+]160940817-160967997	MSTRG.4|MSTRG.4.1	MSTRG.4.1
+XLOC_000003	chr1[+]160968644-160972020	MSTRG.5|MSTRG.5.1	MSTRG.5.1
+XLOC_000004	chr1[+]160972938-160974977	MSTRG.6|MSTRG.6.1	MSTRG.6.1
+XLOC_000005	chr1[+]161003085-161003516	MSTRG.7|MSTRG.7.1	MSTRG.7.1
+XLOC_000006	chr1[+]161006151-161006466	MSTRG.10|MSTRG.10.1	MSTRG.10.1
+XLOC_000007	chr1[+]161008375-161008625	MSTRG.12|MSTRG.12.1	MSTRG.12.1
+XLOC_000008	chr1[+]161009768-161010195	MSTRG.13|MSTRG.13.1	MSTRG.13.1
+XLOC_000009	chr1[+]161019713-161019962	MSTRG.14|MSTRG.14.1	MSTRG.14.1
+XLOC_000010	chr1[+]161034351-161038539	MSTRG.16|MSTRG.16.1,MSTRG.16|MSTRG.16.2,MSTRG.16|MSTRG.16.3,MSTRG.16|MSTRG.16.4,MSTRG.16|MSTRG.16.5	MSTRG.16.1,MSTRG.16.2,MSTRG.16.3,MSTRG.16.4,MSTRG.16.5
+XLOC_000011	chr1[+]161041562-161070639	MSTRG.18|MSTRG.18.1,MSTRG.18|MSTRG.18.2	MSTRG.18.1,MSTRG.18.2
+XLOC_000012	chr1[+]161070945-161078458	MSTRG.20|MSTRG.20.1	MSTRG.20.1
+XLOC_000013	chr1[+]161082956-161083421	MSTRG.21|MSTRG.21.1	MSTRG.21.1
+XLOC_000014	chr1[+]161084121-161084344	MSTRG.22|MSTRG.22.1	MSTRG.22.1
+XLOC_000015	chr1[+]161085014-161086329	MSTRG.23|MSTRG.23.1	MSTRG.23.1
+XLOC_000016	chr1[+]161088497-161088913	MSTRG.24|MSTRG.24.1	MSTRG.24.1
+XLOC_000017	chr1[+]161089415-161131512	MSTRG.26|MSTRG.26.1	MSTRG.26.1
+XLOC_000018	chr1[+]161123665-161123877	MSTRG.28|MSTRG.28.1	MSTRG.28.1
+XLOC_000019	chr1[-]29485012-29485458	MSTRG.1|MSTRG.1.1	MSTRG.1.1
+XLOC_000020	chr1[-]86909344-86909692	MSTRG.2|MSTRG.2.1	MSTRG.2.1
+XLOC_000021	chr1[-]161003658-161004769	MSTRG.8|MSTRG.8.1	MSTRG.8.1
+XLOC_000022	chr1[-]161005030-161005802	MSTRG.9|MSTRG.9.1	MSTRG.9.1
+XLOC_000023	chr1[-]161007444-161007700	MSTRG.11|MSTRG.11.1	MSTRG.11.1
+XLOC_000024	chr1[-]161032044-161032396	MSTRG.15|MSTRG.15.1	MSTRG.15.1
+XLOC_000025	chr1[-]161041525-161050001	MSTRG.17|MSTRG.17.1	MSTRG.17.1
+XLOC_000026	chr1[-]161051330-161070649	MSTRG.19|MSTRG.19.1,MSTRG.19|MSTRG.19.2	MSTRG.19.1,MSTRG.19.2
+XLOC_000027	chr1[-]161088915-161090275	MSTRG.25|MSTRG.25.1	MSTRG.25.1
+XLOC_000028	chr1[-]161090412-161131492	MSTRG.27|MSTRG.27.1	MSTRG.27.1
+XLOC_000029	chr1[-]192074156-192074378	MSTRG.29|MSTRG.29.1	MSTRG.29.1
--- a/test-data/gffcompare_out3.stats	Thu Oct 17 03:01:26 2019 -0400
+++ b/test-data/gffcompare_out3.stats	Fri Feb 03 10:57:30 2023 +0000
@@ -1,30 +1,30 @@
-# gffcompare v0.11.2 | Command line was:
-#gffcompare -r ref_annotation -R -T -e 100 -d 100 -p TCONS gffcompare_in4_gtf
+# gffcompare v0.12.6 | Command line was:
+#gffcompare -V -r reference_annotation -R --strict-match -e 100 -T -d 100 -p TCONS gffcompare_in4_gtf
 #
 
 #= Summary for dataset: gffcompare_in4_gtf 
 #     Query mRNAs :      35 in      29 loci  (15 multi-exon transcripts)
 #            (3 multi-transcript loci, ~1.2 transcripts per locus)
-# Reference mRNAs :      19 in       6 loci  (19 multi-exon)
-# Super-loci w/ reference transcripts:        6
+# Reference mRNAs :      35 in      29 loci  (15 multi-exon)
+# Super-loci w/ reference transcripts:       29
 #-----------------| Sensitivity | Precision  |
-        Base level:    72.7     |    60.7    |
-        Exon level:    81.0     |    55.7    |
-      Intron level:    81.2     |    64.4    |
-Intron chain level:    10.5     |    13.3    |
-  Transcript level:    10.5     |     5.7    |
-       Locus level:    33.3     |     6.9    |
+        Base level:   100.0     |   100.0    |
+        Exon level:   100.0     |   100.0    |
+      Intron level:   100.0     |   100.0    |
+Intron chain level:   100.0     |   100.0    |
+  Transcript level:   100.0     |   100.0    |
+       Locus level:   100.0     |   100.0    |
 
-     Matching intron chains:       2
-       Matching transcripts:       2
-              Matching loci:       2
+     Matching intron chains:      15
+       Matching transcripts:      35
+              Matching loci:      29
 
-          Missed exons:       2/84	(  2.4%)
-           Novel exons:      46/122	( 37.7%)
-        Missed introns:      11/69	( 15.9%)
-         Novel introns:      28/87	( 32.2%)
-           Missed loci:       0/6	(  0.0%)
-            Novel loci:      15/29	( 51.7%)
+          Missed exons:       0/122	(  0.0%)
+           Novel exons:       0/122	(  0.0%)
+        Missed introns:       0/87	(  0.0%)
+         Novel introns:       0/87	(  0.0%)
+           Missed loci:       0/29	(  0.0%)
+            Novel loci:       0/29	(  0.0%)
 
- Total union super-loci across all input datasets: 21 
+ Total union super-loci across all input datasets: 29 
 35 out of 35 consensus transcripts written in gffcmp.annotated.gtf (0 discarded as redundant)
--- a/test-data/gffcompare_out3.tracking	Thu Oct 17 03:01:26 2019 -0400
+++ b/test-data/gffcompare_out3.tracking	Fri Feb 03 10:57:30 2023 +0000
@@ -1,35 +1,35 @@
-TCONS_00000001	XLOC_000001	uc007del.2|uc007del.2	c	q1:MSTRG.3|MSTRG.3.1|3|0.000000|0.000000|0.000000|403
-TCONS_00000002	XLOC_000001	uc007del.2|uc007del.2	c	q1:MSTRG.4|MSTRG.4.1|16|0.000000|0.000000|0.000000|3003
-TCONS_00000003	XLOC_000001	uc007del.2|uc007del.2	c	q1:MSTRG.5|MSTRG.5.1|1|0.000000|0.000000|0.000000|3377
-TCONS_00000004	XLOC_000001	uc007del.2|uc007del.2	c	q1:MSTRG.6|MSTRG.6.1|1|0.000000|0.000000|0.000000|2040
-TCONS_00000005	XLOC_000002	-	u	q1:MSTRG.7|MSTRG.7.1|1|0.000000|0.000000|0.000000|432
-TCONS_00000006	XLOC_000003	-	u	q1:MSTRG.10|MSTRG.10.1|1|0.000000|0.000000|0.000000|316
-TCONS_00000007	XLOC_000004	-	u	q1:MSTRG.12|MSTRG.12.1|1|0.000000|0.000000|0.000000|251
-TCONS_00000008	XLOC_000005	-	u	q1:MSTRG.13|MSTRG.13.1|1|0.000000|0.000000|0.000000|428
-TCONS_00000009	XLOC_000006	uc007der.1|uc007der.1	x	q1:MSTRG.14|MSTRG.14.1|1|0.000000|0.000000|0.000000|250
-TCONS_00000010	XLOC_000007	uc007dev.1|uc007dev.1	j	q1:MSTRG.16|MSTRG.16.1|11|0.000000|0.000000|0.000000|800
-TCONS_00000011	XLOC_000007	uc007dev.1|uc007dev.1	j	q1:MSTRG.16|MSTRG.16.2|12|0.000000|0.000000|0.000000|608
-TCONS_00000012	XLOC_000007	uc007dev.1|uc007dev.1	j	q1:MSTRG.16|MSTRG.16.3|11|0.000000|0.000000|0.000000|1008
-TCONS_00000013	XLOC_000007	uc007dev.1|uc007dev.1	j	q1:MSTRG.16|MSTRG.16.4|11|0.000000|0.000000|0.000000|531
-TCONS_00000014	XLOC_000007	uc007dev.1|uc007dev.1	=	q1:MSTRG.16|MSTRG.16.5|11|0.000000|0.000000|0.000000|807
-TCONS_00000015	XLOC_000008	uc007dey.2|uc007dey.2	s	q1:MSTRG.18|MSTRG.18.1|16|0.000000|0.000000|0.000000|2459
-TCONS_00000016	XLOC_000008	uc007dey.2|uc007dey.2	s	q1:MSTRG.18|MSTRG.18.2|6|0.000000|0.000000|0.000000|903
-TCONS_00000017	XLOC_000009	uc007dfd.3|uc007dfd.3	c	q1:MSTRG.20|MSTRG.20.1|3|0.000000|0.000000|0.000000|716
-TCONS_00000018	XLOC_000009	uc007dfe.4|uc007dfe.4	c	q1:MSTRG.21|MSTRG.21.1|1|0.000000|0.000000|0.000000|466
-TCONS_00000019	XLOC_000009	uc007dfe.4|uc007dfe.4	c	q1:MSTRG.22|MSTRG.22.1|1|0.000000|0.000000|0.000000|224
-TCONS_00000020	XLOC_000009	uc056yep.1|uc056yep.1	c	q1:MSTRG.23|MSTRG.23.1|1|0.000000|0.000000|0.000000|1316
-TCONS_00000021	XLOC_000010	uc007dff.1|uc007dff.1	x	q1:MSTRG.24|MSTRG.24.1|1|0.000000|0.000000|0.000000|417
-TCONS_00000022	XLOC_000011	uc007dff.1|uc007dff.1	s	q1:MSTRG.26|MSTRG.26.1|12|0.000000|0.000000|0.000000|3033
-TCONS_00000023	XLOC_000012	uc007dff.1|uc007dff.1	i	q1:MSTRG.28|MSTRG.28.1|1|0.000000|0.000000|0.000000|213
-TCONS_00000024	XLOC_000013	-	u	q1:MSTRG.1|MSTRG.1.1|1|0.000000|0.000000|0.000000|447
-TCONS_00000025	XLOC_000014	-	u	q1:MSTRG.2|MSTRG.2.1|1|0.000000|0.000000|0.000000|349
-TCONS_00000026	XLOC_000015	-	u	q1:MSTRG.8|MSTRG.8.1|1|0.000000|0.000000|0.000000|1112
-TCONS_00000027	XLOC_000016	-	u	q1:MSTRG.9|MSTRG.9.1|1|0.000000|0.000000|0.000000|773
-TCONS_00000028	XLOC_000017	-	u	q1:MSTRG.11|MSTRG.11.1|1|0.000000|0.000000|0.000000|257
-TCONS_00000029	XLOC_000018	uc007des.1|uc007des.1	c	q1:MSTRG.15|MSTRG.15.1|1|0.000000|0.000000|0.000000|353
-TCONS_00000030	XLOC_000019	uc007dey.2|uc007dey.2	c	q1:MSTRG.17|MSTRG.17.1|6|0.000000|0.000000|0.000000|1029
-TCONS_00000031	XLOC_000019	uc007dey.2|uc007dey.2	c	q1:MSTRG.19|MSTRG.19.1|11|0.000000|0.000000|0.000000|1514
-TCONS_00000032	XLOC_000019	uc007dey.2|uc007dey.2	j	q1:MSTRG.19|MSTRG.19.2|10|0.000000|0.000000|0.000000|1478
-TCONS_00000033	XLOC_000020	uc007dff.1|uc007dff.1	c	q1:MSTRG.25|MSTRG.25.1|1|0.000000|0.000000|0.000000|1361
-TCONS_00000034	XLOC_000020	uc007dff.1|uc007dff.1	=	q1:MSTRG.27|MSTRG.27.1|12|0.000000|0.000000|0.000000|2016
-TCONS_00000035	XLOC_000021	-	u	q1:MSTRG.29|MSTRG.29.1|1|0.000000|0.000000|0.000000|223
+TCONS_00000001	XLOC_000001	MSTRG.3|MSTRG.3.1	=	q1:MSTRG.3|MSTRG.3.1|3|0.000000|0.000000|0.000000|403
+TCONS_00000002	XLOC_000002	MSTRG.4|MSTRG.4.1	=	q1:MSTRG.4|MSTRG.4.1|16|0.000000|0.000000|0.000000|3003
+TCONS_00000003	XLOC_000003	MSTRG.5|MSTRG.5.1	=	q1:MSTRG.5|MSTRG.5.1|1|0.000000|0.000000|0.000000|3377
+TCONS_00000004	XLOC_000004	MSTRG.6|MSTRG.6.1	=	q1:MSTRG.6|MSTRG.6.1|1|0.000000|0.000000|0.000000|2040
+TCONS_00000005	XLOC_000005	MSTRG.7|MSTRG.7.1	=	q1:MSTRG.7|MSTRG.7.1|1|0.000000|0.000000|0.000000|432
+TCONS_00000006	XLOC_000006	MSTRG.10|MSTRG.10.1	=	q1:MSTRG.10|MSTRG.10.1|1|0.000000|0.000000|0.000000|316
+TCONS_00000007	XLOC_000007	MSTRG.12|MSTRG.12.1	=	q1:MSTRG.12|MSTRG.12.1|1|0.000000|0.000000|0.000000|251
+TCONS_00000008	XLOC_000008	MSTRG.13|MSTRG.13.1	=	q1:MSTRG.13|MSTRG.13.1|1|0.000000|0.000000|0.000000|428
+TCONS_00000009	XLOC_000009	MSTRG.14|MSTRG.14.1	=	q1:MSTRG.14|MSTRG.14.1|1|0.000000|0.000000|0.000000|250
+TCONS_00000010	XLOC_000010	MSTRG.16|MSTRG.16.1	=	q1:MSTRG.16|MSTRG.16.1|11|0.000000|0.000000|0.000000|800
+TCONS_00000011	XLOC_000010	MSTRG.16|MSTRG.16.2	=	q1:MSTRG.16|MSTRG.16.2|12|0.000000|0.000000|0.000000|608
+TCONS_00000012	XLOC_000010	MSTRG.16|MSTRG.16.3	=	q1:MSTRG.16|MSTRG.16.3|11|0.000000|0.000000|0.000000|1008
+TCONS_00000013	XLOC_000010	MSTRG.16|MSTRG.16.4	=	q1:MSTRG.16|MSTRG.16.4|11|0.000000|0.000000|0.000000|531
+TCONS_00000014	XLOC_000010	MSTRG.16|MSTRG.16.5	=	q1:MSTRG.16|MSTRG.16.5|11|0.000000|0.000000|0.000000|807
+TCONS_00000015	XLOC_000011	MSTRG.18|MSTRG.18.1	=	q1:MSTRG.18|MSTRG.18.1|16|0.000000|0.000000|0.000000|2459
+TCONS_00000016	XLOC_000011	MSTRG.18|MSTRG.18.2	=	q1:MSTRG.18|MSTRG.18.2|6|0.000000|0.000000|0.000000|903
+TCONS_00000017	XLOC_000012	MSTRG.20|MSTRG.20.1	=	q1:MSTRG.20|MSTRG.20.1|3|0.000000|0.000000|0.000000|716
+TCONS_00000018	XLOC_000013	MSTRG.21|MSTRG.21.1	=	q1:MSTRG.21|MSTRG.21.1|1|0.000000|0.000000|0.000000|466
+TCONS_00000019	XLOC_000014	MSTRG.22|MSTRG.22.1	=	q1:MSTRG.22|MSTRG.22.1|1|0.000000|0.000000|0.000000|224
+TCONS_00000020	XLOC_000015	MSTRG.23|MSTRG.23.1	=	q1:MSTRG.23|MSTRG.23.1|1|0.000000|0.000000|0.000000|1316
+TCONS_00000021	XLOC_000016	MSTRG.24|MSTRG.24.1	=	q1:MSTRG.24|MSTRG.24.1|1|0.000000|0.000000|0.000000|417
+TCONS_00000022	XLOC_000017	MSTRG.26|MSTRG.26.1	=	q1:MSTRG.26|MSTRG.26.1|12|0.000000|0.000000|0.000000|3033
+TCONS_00000023	XLOC_000018	MSTRG.28|MSTRG.28.1	=	q1:MSTRG.28|MSTRG.28.1|1|0.000000|0.000000|0.000000|213
+TCONS_00000024	XLOC_000019	MSTRG.1|MSTRG.1.1	=	q1:MSTRG.1|MSTRG.1.1|1|0.000000|0.000000|0.000000|447
+TCONS_00000025	XLOC_000020	MSTRG.2|MSTRG.2.1	=	q1:MSTRG.2|MSTRG.2.1|1|0.000000|0.000000|0.000000|349
+TCONS_00000026	XLOC_000021	MSTRG.8|MSTRG.8.1	=	q1:MSTRG.8|MSTRG.8.1|1|0.000000|0.000000|0.000000|1112
+TCONS_00000027	XLOC_000022	MSTRG.9|MSTRG.9.1	=	q1:MSTRG.9|MSTRG.9.1|1|0.000000|0.000000|0.000000|773
+TCONS_00000028	XLOC_000023	MSTRG.11|MSTRG.11.1	=	q1:MSTRG.11|MSTRG.11.1|1|0.000000|0.000000|0.000000|257
+TCONS_00000029	XLOC_000024	MSTRG.15|MSTRG.15.1	=	q1:MSTRG.15|MSTRG.15.1|1|0.000000|0.000000|0.000000|353
+TCONS_00000030	XLOC_000025	MSTRG.17|MSTRG.17.1	=	q1:MSTRG.17|MSTRG.17.1|6|0.000000|0.000000|0.000000|1029
+TCONS_00000031	XLOC_000026	MSTRG.19|MSTRG.19.1	=	q1:MSTRG.19|MSTRG.19.1|11|0.000000|0.000000|0.000000|1514
+TCONS_00000032	XLOC_000026	MSTRG.19|MSTRG.19.2	=	q1:MSTRG.19|MSTRG.19.2|10|0.000000|0.000000|0.000000|1478
+TCONS_00000033	XLOC_000027	MSTRG.25|MSTRG.25.1	=	q1:MSTRG.25|MSTRG.25.1|1|0.000000|0.000000|0.000000|1361
+TCONS_00000034	XLOC_000028	MSTRG.27|MSTRG.27.1	=	q1:MSTRG.27|MSTRG.27.1|12|0.000000|0.000000|0.000000|2016
+TCONS_00000035	XLOC_000029	MSTRG.29|MSTRG.29.1	=	q1:MSTRG.29|MSTRG.29.1|1|0.000000|0.000000|0.000000|223