changeset 6:8e534225baa9 draft

Uploaded
author devteam
date Fri, 19 Dec 2014 11:55:55 -0500
parents 67695d7ff787
children b77178f66fc3
files cuff_macros.xml cuffcompare_wrapper.py cuffcompare_wrapper.xml test-data/cuffcompare_out5.gtf test-data/cuffcompare_out6.tracking test-data/cuffcompare_out7.txt tool_dependencies.xml
diffstat 7 files changed, 273 insertions(+), 140 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cuff_macros.xml	Fri Dec 19 11:55:55 2014 -0500
@@ -0,0 +1,91 @@
+<macros>
+  <token name="@VERSION@">2.2.1</token>
+  <xml name="requirements">
+    <requirements>
+      <requirement type="package" version="2.2.1">cufflinks</requirement>
+      <yield />
+    </requirements>
+  </xml>
+  <xml name="stdio">
+    <stdio>
+        <exit_code range="1:" />
+        <exit_code range=":-1" />
+        <regex match="Error:" />
+        <regex match="Exception:" />
+    </stdio>
+  </xml>
+  <xml name="condition_inputs">
+    <!-- DEFAULT : use BAM/SAM files -->
+    <conditional name="in_type">
+        <param name="set_in_type" type="select" label="Input data type"
+            help="CuffNorm supports either CXB (from cuffquant) or SAM/BAM input files. Mixing is not supported. Default: SAM/BAM">
+            <option value="BAM">SAM/BAM</option>
+            <option value="CXB">Cuffquant (CXB)</option>
+            <option value="CONDITION_LIST">List of single replicate conditions</option>
+            <option value="CONDITION_REPLICATE_LIST">List of multiple replicate conditions</option>
+        </param>
+        <when value="BAM">
+            <repeat name="conditions" title="Condition" min="2">
+                <param name="name" title="Condition name" type="text" label="Name"/>
+                <param name="samples" label="Replicates" type="data" format="sam,bam" multiple="true"/>
+            </repeat>
+        </when>
+        <when value="CXB">
+            <repeat name="conditions" title="Condition" min="2">
+                <param name="name" title="Condition name" type="text" label="Name"/>
+                <param name="samples" label="Replicates" type="data" format="cxb" multiple="true"/>
+            </repeat>
+        </when>
+        <when value="CONDITION_LIST">
+            <param name="conditions" title="List of Conditions" type="data_collection" collection_type="list" />
+        </when>
+        <when value="CONDITION_REPLICATE_LIST">
+            <param name="conditions" title="List of Conditions" type="data_collection" collection_type="list:list" />
+        </when>
+    </conditional>
+  </xml>
+  <token name="@CONDITION_SAMPLES@">
+            #if $in_type.set_in_type in ['BAM', 'CXB']
+                #for $condition in $in_type.conditions:
+                    #set samples = ','.join( [ str( $sample ) for $sample in $condition.samples ] )
+                    $samples
+                #end for
+            #elif $in_type.set_in_type == 'CONDITION_LIST'
+                #for $sample in $in_type.conditions:
+                    $sample
+                #end for
+            #elif $in_type.set_in_type == 'CONDITION_REPLICATE_LIST'
+                #for $condition_list in $in_type.conditions:
+                    #set samples = ','.join( [ str( $sample ) for $sample in $condition_list ] )
+                    $samples
+                #end for
+            #end if
+  </token>
+  <token name="@CONDITION_LABELS@">
+            #import re
+            #if $in_type.set_in_type in ['BAM', 'CXB']
+                #set labels = '\'' + '\',\''.join( [ str( $condition.name ) for $condition in $in_type.conditions ] ) + '\''
+            #elif $in_type.set_in_type in ['CONDITION_LIST', 'CONDITION_REPLICATE_LIST']
+                #set labels = '\'' + '\',\''.join( map(lambda x: re.sub('[^\w\-_]', '_', x), $in_type.conditions.keys() ) ) + '\''
+            #end if
+            --labels $labels
+  </token>
+  <xml name="cufflinks_gtf_inputs">
+    <param format="gtf" name="inputs" type="data" label="GTF file(s) produced by Cufflinks" help="" multiple="true" />
+    <repeat name="additional_inputs" title="Additional GTF Inputs (Lists)">
+      <param format="gtf" name="additional_inputs" type="data_collection" label="GTF file(s) produced by Cufflinks" help="" />
+    </repeat>
+  </xml>
+  <token name="@CUFFLINKS_GTF_INPUTS@">
+            ## Inputs.
+            #for $input_file in $inputs:
+                "${input_file}"
+            #end for
+            #for $additional_input in $additional_inputs:
+                #for $input_file in $additional_input.additional_inputs:
+                  "${input_file}"
+                #end for
+            #end for
+  </token>
+  <token name="@HAS_MULTIPLE_INPUTS@">getattr(inputs, "__len__", [].__len__)() >= 2</token>
+</macros>
\ No newline at end of file
--- a/cuffcompare_wrapper.py	Thu Jan 09 14:27:37 2014 -0500
+++ b/cuffcompare_wrapper.py	Fri Dec 19 11:55:55 2014 -0500
@@ -12,9 +12,17 @@
     #Parse Command Line
     parser = optparse.OptionParser()
     parser.add_option( '-r', dest='ref_annotation', help='An optional "reference" annotation GTF. Each sample is matched against this file, and sample isoforms are tagged as overlapping, matching, or novel where appropriate. See the refmap and tmap output file descriptions below.' )
-    parser.add_option( '-R', action="store_true", dest='ignore_nonoverlap', help='If -r was specified, this option causes cuffcompare to ignore reference transcripts that are not overlapped by any transcript in one of cuff1.gtf,...,cuffN.gtf. Useful for ignoring annotated transcripts that are not present in your RNA-Seq samples and thus adjusting the "sensitivity" calculation in the accuracy report written in the transcripts accuracy file' )
+    parser.add_option( '-R', action="store_true", dest='ignore_nonoverlap_reference', help='If -r was specified, this option causes cuffcompare to ignore reference transcripts that are not overlapped by any transcript in one of cuff1.gtf,...,cuffN.gtf. Useful for ignoring annotated transcripts that are not present in your RNA-Seq samples and thus adjusting the "sensitivity" calculation in the accuracy report written in the transcripts accuracy file' )
+    parser.add_option( '-Q', action="store_true", dest='ignore_nonoverlap_transfrag', help='If -r was specified, this option causes cuffcompare to consider only the input transcripts that overlap any of the reference transcripts (Sp correction); Warning: this will discard all "novel" loci!)' )
+
     parser.add_option( '-s', dest='use_seq_data', action="store_true", help='Causes cuffcompare to look into for fasta files with the underlying genomic sequences (one file per contig) against which your reads were aligned for some optional classification functions. For example, Cufflinks transcripts consisting mostly of lower-case bases are classified as repeats. Note that <seq_dir> must contain one fasta file per reference chromosome, and each file must be named after the chromosome, and have a .fa or .fasta extension.')
     
+    parser.add_option( '-M', action="store_true", dest='discard_single_exon_all', help='discard (ignore) single-exon transfrags and reference transcript')
+    parser.add_option( '-N', action="store_true", dest='discard_single_exon_ref', help='discard (ignore) single-exon reference transcripts')
+    parser.add_option( '-e', dest='max_dist_exon', help='Max. Distance for assessing exon accuracy" help="max. distance (range) allowed from free ends of terminal exons of reference transcripts when assessing exon accuracy. Default: 100')
+    parser.add_option( '-d', dest='max_dist_group', help='Max.Distance for transcript grouping" help="max. distance (range) for grouping transcript start sites. Default: 100')
+    parser.add_option( '-F', action="store_true", dest='discard_redundant_intron_transfrags', help='Discard intron-redundant transfrags if they share the 5-prime end (if they differ only at the 3-prime end)')
+
     # Wrapper / Galaxy options.
     parser.add_option( '', '--index', dest='index', help='The path of the reference genome' )
     parser.add_option( '', '--ref_file', dest='ref_file', help='The reference dataset from the history' )
@@ -63,11 +71,22 @@
     # Add options.
     if options.ref_annotation:
         cmd += " -r %s " % options.ref_annotation
-    if options.ignore_nonoverlap:
+    if options.ignore_nonoverlap_reference:
         cmd += " -R "
+    if options.ignore_nonoverlap_transfrag:
+	cmd += " -Q "
     if options.use_seq_data:
         cmd += " -s %s " % seq_path
-        
+    if options.discard_single_exon_all:
+	cmd += " -M "
+    if options.discard_single_exon_ref:
+	cmd += " -N "
+    if options.max_dist_exon:
+	cmd += " -e %i " % int( options.max_dist_exon )
+    if options.max_dist_group:
+	cmd += " -d %i " % int( options.max_dist_group )
+    if options.discard_redundant_intron_transfrags: 
+	cmd += " -F "
     # Add input files.
         
     # Need to symlink inputs so that output files are written to temp directory.
--- a/cuffcompare_wrapper.xml	Thu Jan 09 14:27:37 2014 -0500
+++ b/cuffcompare_wrapper.xml	Fri Dec 19 11:55:55 2014 -0500
@@ -1,19 +1,23 @@
-<tool id="cuffcompare" name="Cuffcompare" version="0.0.6">
-    <!-- Wrapper supports Cuffcompare versions v1.3.0 and newer -->
+<tool id="cuffcompare" name="Cuffcompare" version="2.2.1.0">
     <description>compare assembled transcripts to a reference annotation and track Cufflinks transcripts across multiple experiments</description>
-    <requirements>
-        <requirement type="package" version="2.1.1">cufflinks</requirement>
-    </requirements>
+    <expand macro="requirements" />
+    <expand macro="stdio" />
+    <macros>
+      <import>cuff_macros.xml</import>
+    </macros>
     <version_command>cuffcompare 2>&amp;1 | head -n 1</version_command>
     <command interpreter="python">
         cuffcompare_wrapper.py 
-            
             ## Use annotation reference?
             #if $annotation.use_ref_annotation == "Yes":
                 -r $annotation.reference_annotation
                 #if $annotation.ignore_nonoverlapping_reference:
                     -R
                 #end if
+                #if $annotation.ignore_nonoverlapping_transfrags:
+                    -Q
+                #end if
+
             #end if
             
             ## Use sequence data?
@@ -26,35 +30,38 @@
                 #end if
             #end if
             
+            $discard_single_exon
+
+            -e $max_dist_exon
+            -d $max_dist_group
+
+            #if $discard_intron_redundant_transfrags:
+                -F
+            #end if 
+
             ## Outputs.
             --combined-transcripts=${transcripts_combined}
-            
-            ## Inputs.
-            ${first_input}
-            #for $input_file in $input_files:
-              ${input_file.additional_input}
-            #end for
-            
+
+            @CUFFLINKS_GTF_INPUTS@
     </command>
     <inputs>
-        <param format="gtf" name="first_input" type="data" label="GTF file produced by Cufflinks" help=""/>
-        <repeat name="input_files" title="Additional GTF Input Files">
-            <param format="gtf" name="additional_input" type="data" label="GTF file produced by Cufflinks" help=""/>
-        </repeat>
+        <expand macro="cufflinks_gtf_inputs" />
         <conditional name="annotation">
             <param name="use_ref_annotation" type="select" label="Use Reference Annotation">
                 <option value="No">No</option>
                 <option value="Yes">Yes</option>
             </param>
             <when value="Yes">
-                <param format="gff3,gtf" name="reference_annotation" type="data" label="Reference Annotation" help="Requires an annotation file in GFF3 or GTF format."/>    
-                <param name="ignore_nonoverlapping_reference" type="boolean" label="Ignore reference transcripts that are not overlapped by any transcript in input files"/>
+                <param format="gff3,gtf" name="reference_annotation" type="data" label="Reference Annotation" help="Requires an annotation file in GFF3 or GTF format."/>
+                <param name="ignore_nonoverlapping_reference" type="boolean" label="Ignore reference transcripts that are not overlapped by any input transfrags" help="consider only the reference transcripts that overlap any of the input transfrags (Sn correction)" />
+                <param name="ignore_nonoverlapping_transfrags" type="boolean" label="Ignore input transcripts that are not overlapped by any reference transcripts" help="consider only the input transcripts that overlap any of the reference transcripts (Sp correction). Warning: this will discard all 'novel' loci!" />
             </when>
             <when value="No">
             </when>
         </conditional>
         <conditional name="seq_data">
-            <param name="use_seq_data" 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.">
+            <param name="use_seq_data" 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="Yes">Yes</option>
                 <option value="No">No</option>
             </param>
@@ -68,7 +75,7 @@
                   <when value="cached">
                     <param name="index" type="select" label="Using reference genome">
                       <options from_data_table="fasta_indexes">
-                        <filter type="data_meta" ref="first_input" key="dbkey" column="1" />
+                        <filter type="data_meta" ref="inputs" key="dbkey" column="1" />
                         <validator type="no_options" message="No reference genome is available for the build associated with the selected input dataset" />
                       </options>
                     </param>
@@ -79,28 +86,39 @@
                 </conditional>
             </when>
         </conditional>
+        <param type="select" name="discard_single_exon" label="discard (ignore) single-exon transcripts">
+                <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>
+        <param type="integer" name="max_dist_exon" value="100" label="Max. Distance for assessing exon accuracy" 
+            help="max. distance (range) allowed from free ends of terminal exons of reference transcripts when assessing exon accuracy. Default: 100" />
+        <param type="integer" name="max_dist_group" value="100" label="Max.Distance for transcript grouping" 
+            help="max. distance (range) for grouping transcript start sites. Default: 100" />
+        <param type="boolean" name="discard_intron_redundant_transfrags" label="discard intron-redundant transfrags sharing 5'" 
+            help="Discard intron-redundant transfrags if they share the 5' end (if they differ only at the 3' end)" />
     </inputs>
 
     <outputs>
         <data format="txt" name="transcripts_accuracy" label="${tool.name} on ${on_string}: transcript accuracy" 
             from_work_dir="cc_output.stats" />
-        <data format="tabular" name="input1_tmap" label="${tool.name} on ${on_string}: data ${first_input.hid} tmap file"
+        <data format="tabular" name="input1_tmap" label="${tool.name} on ${on_string}: data ${inputs[0].hid} tmap file"
             from_work_dir="cc_output.input1.tmap" />
         <data format="tabular" name="input1_refmap" 
-              label="${tool.name} on ${on_string}: data ${first_input.hid} refmap file" 
+              label="${tool.name} on ${on_string}: data ${inputs[0].hid} refmap file" 
               from_work_dir="cc_output.input1.refmap">
             <filter>annotation['use_ref_annotation'] == 'Yes'</filter>
         </data>
-        <data format="tabular" name="input2_tmap" label="${tool.name} on ${on_string}: data ${input_files[0]['additional_input'].hid} tmap file" from_work_dir="cc_output.input2.tmap">
-            <filter>len( input_files ) >= 1</filter>
+        <data format="tabular" name="input2_tmap" label="${tool.name} on ${on_string}: data ${inputs[1].hid} tmap file" from_work_dir="cc_output.input2.tmap">
+            <filter>@HAS_MULTIPLE_INPUTS@</filter>
         </data>
         <data format="tabular" name="input2_refmap" 
-              label="${tool.name} on ${on_string}: data ${input_files[0]['additional_input'].hid} refmap file" 
+              label="${tool.name} on ${on_string}: data ${inputs[1].hid} refmap file" 
               from_work_dir="cc_output.input2.refmap">
-            <filter>annotation['use_ref_annotation'] == 'Yes' and len( input_files ) >= 1</filter>
+            <filter>annotation['use_ref_annotation'] == 'Yes' and @HAS_MULTIPLE_INPUTS@</filter>
         </data>
         <data format="tabular" name="transcripts_tracking" label="${tool.name} on ${on_string}: transcript tracking" from_work_dir="cc_output.tracking">
-            <filter>len( input_files ) > 0</filter>
+            <filter>@HAS_MULTIPLE_INPUTS@</filter>
         </data>
         <data format="gtf" name="transcripts_combined" label="${tool.name} on ${on_string}: combined transcripts"/>
     </outputs>
@@ -110,15 +128,19 @@
             cuffcompare -r cuffcompare_in3.gtf -R cuffcompare_in1.gtf cuffcompare_in2.gtf
         -->
         <test>
-            <param name="first_input" value="cuffcompare_in1.gtf" ftype="gtf"/>
-            <param name="additional_input" value="cuffcompare_in2.gtf" ftype="gtf"/>
+            <param name="inputs" value="cuffcompare_in1.gtf,cuffcompare_in2.gtf" ftype="gtf"/>
             <param name="use_ref_annotation" value="Yes"/>
             <param name="reference_annotation" value="cuffcompare_in3.gtf" ftype="gtf"/>
             <param name="ignore_nonoverlapping_reference" value="Yes"/>
+            <param name="ignore_nonoverlapping_transfrags" value="No"/>
             <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" />
+            <param name="discard_intron_redundant_transfrags" value="No" />
             <!-- Line diffs are the result of different locations for input files; this cannot be fixed as cuffcompare outputs
                 full input path for each input. -->
-            <output name="transcripts_accuracy" file="cuffcompare_out7.txt" lines_diff="16"/>
+            <output name="transcripts_accuracy" file="cuffcompare_out7.txt" lines_diff="2"/>
             <output name="input1_tmap" file="cuffcompare_out1.tmap"/>
             <output name="input1_refmap" file="cuffcompare_out2.refmap"/>
             <output name="input2_tmap" file="cuffcompare_out3.tmap"/>
@@ -133,8 +155,8 @@
 
 Cuffcompare is part of Cufflinks_. Cuffcompare helps you: (a) compare your assembled transcripts to a reference annotation and (b) track Cufflinks transcripts across multiple experiments (e.g. across a time course). Please cite: Trapnell C, Williams BA, Pertea G, Mortazavi AM, Kwan G, van Baren MJ, Salzberg SL, Wold B, Pachter L. Transcript assembly and abundance estimation from RNA-Seq reveals thousands of new transcripts and switching among isoforms. Nature Biotechnology doi:10.1038/nbt.1621
 
-.. _Cufflinks: http://cufflinks.cbcb.umd.edu/
-        
+.. _Cufflinks: http://cole-trapnell-lab.github.io/cufflinks/
+
 ------
 
 **Know what you are doing**
@@ -143,7 +165,7 @@
 
 There is no such thing (yet) as an automated gearshift in expression analysis. It is all like stick-shift driving in San Francisco. In other words, running this tool with default parameters will probably not give you meaningful results. A way to deal with this is to **understand** the parameters by carefully reading the `documentation`__ and experimenting. Fortunately, Galaxy makes experimenting easy.
 
-.. __: http://cufflinks.cbcb.umd.edu/manual.html#cuffcompare
+.. __: http://cole-trapnell-lab.github.io/cufflinks/cuffcompare/
 
 ------
 
@@ -174,7 +196,7 @@
 
 Here's an example of a line from the tracking file::
 
-  TCONS_00000045 XLOC_000023 Tcea|uc007afj.1	j	\
+  TCONS_00000045 XLOC_000023 Tcea|uc007afj.1        j        \
      q1:exp.115|exp.115.0|100|3.061355|0.350242|0.350207 \
      q2:60hr.292|60hr.292.0|100|4.094084|0.000000|0.000000
 
@@ -197,18 +219,18 @@
 
 If you ran cuffcompare with the -r option, tracking rows will contain the following values. If you did not use -r, the rows will all contain "-" in their class code column::
 
-  Priority	 Code	   Description
+  Priority         Code           Description
   ---------------------------------
-  1	         =	       Match
-  2	         c	       Contained	
-  3	         j	       New isoform	
-  4	         e	       A single exon transcript overlapping a reference exon and at least 10 bp of a reference intron, indicating a possible pre-mRNA fragment.	
-  5	         i	       A single exon transcript falling entirely with a reference intron	
-  6	         r	       Repeat. Currently determined by looking at the reference sequence and applied to transcripts where at least 50% of the bases are lower case	
-  7	         p	       Possible polymerase run-on fragment	
-  8	         u	       Unknown, intergenic transcript	
-  9	         o	       Unknown, generic overlap with reference	
-  10             .	       (.tracking file only, indicates multiple classifications)
+  1                 =               Match
+  2                 c               Contained        
+  3                 j               New isoform        
+  4                 e               A single exon transcript overlapping a reference exon and at least 10 bp of a reference intron, indicating a possible pre-mRNA fragment.        
+  5                 i               A single exon transcript falling entirely with a reference intron        
+  6                 r               Repeat. Currently determined by looking at the reference sequence and applied to transcripts where at least 50% of the bases are lower case        
+  7                 p               Possible polymerase run-on fragment        
+  8                 u               Unknown, intergenic transcript        
+  9                 o               Unknown, generic overlap with reference        
+  10             .               (.tracking file only, indicates multiple classifications)
     
 -------
 
@@ -225,4 +247,7 @@
   -r    An optional "reference" annotation GTF. Each sample is matched against this file, and sample isoforms are tagged as overlapping, matching, or novel where appropriate. See the refmap and tmap output file descriptions below.
   -R    If -r was specified, this option causes cuffcompare to ignore reference transcripts that are not overlapped by any transcript in one of cuff1.gtf,...,cuffN.gtf. Useful for ignoring annotated transcripts that are not present in your RNA-Seq samples and thus adjusting the "sensitivity" calculation in the accuracy report written in the transcripts_accuracy file
     </help>
+    <citations>
+        <citation type="doi">10.1038/nbt.1621</citation>
+    </citations>
 </tool>
--- a/test-data/cuffcompare_out5.gtf	Thu Jan 09 14:27:37 2014 -0500
+++ b/test-data/cuffcompare_out5.gtf	Fri Dec 19 11:55:55 2014 -0500
@@ -22,67 +22,67 @@
 chr1	Cufflinks	exon	3197247	3197273	.	.	.	gene_id "XLOC_000022"; transcript_id "TCONS_00000018"; exon_number "1"; oId "CUFF.57.1"; class_code "u"; tss_id "TSS25";
 chr1	Cufflinks	exon	3197347	3197373	.	.	.	gene_id "XLOC_000023"; transcript_id "TCONS_00000019"; exon_number "1"; oId "CUFF.59.1"; class_code "u"; tss_id "TSS26";
 chr1	Cufflinks	exon	3197426	3197452	.	.	.	gene_id "XLOC_000024"; transcript_id "TCONS_00000060"; exon_number "1"; oId "CUFF.19.1"; class_code "u"; tss_id "TSS27";
-chr1	Cufflinks	exon	3200023	3200191	.	.	.	gene_id "XLOC_000025"; transcript_id "TCONS_00000020"; exon_number "1"; oId "CUFF.7.1"; class_code "u"; tss_id "TSS28";
+chr1	Cufflinks	exon	3200023	3200191	.	.	.	gene_id "XLOC_000025"; transcript_id "TCONS_00000020"; exon_number "1"; oId "CUFF.7.1"; class_code "."; tss_id "TSS28";
 chr1	Cufflinks	exon	3200326	3200352	.	.	.	gene_id "XLOC_000026"; transcript_id "TCONS_00000021"; exon_number "1"; oId "CUFF.5.1"; class_code "u"; tss_id "TSS29";
-chr1	Cufflinks	exon	3200431	3200457	.	.	.	gene_id "XLOC_000027"; transcript_id "TCONS_00000062"; exon_number "1"; oId "CUFF.21.1"; class_code "u"; tss_id "TSS30";
-chr1	Cufflinks	exon	3201008	3201039	.	.	.	gene_id "XLOC_000028"; transcript_id "TCONS_00000063"; exon_number "1"; oId "CUFF.26.1"; class_code "u"; tss_id "TSS31";
-chr1	Cufflinks	exon	3201078	3201481	.	.	.	gene_id "XLOC_000029"; transcript_id "TCONS_00000022"; exon_number "1"; oId "CUFF.9.1"; class_code "u"; tss_id "TSS32";
-chr1	Cufflinks	exon	3201597	3201666	.	.	.	gene_id "XLOC_000030"; transcript_id "TCONS_00000065"; exon_number "1"; oId "CUFF.29.1"; class_code "u"; tss_id "TSS33";
+chr1	Cufflinks	exon	3200431	3200457	.	.	.	gene_id "XLOC_000027"; transcript_id "TCONS_00000061"; exon_number "1"; oId "CUFF.21.1"; class_code "u"; tss_id "TSS30";
+chr1	Cufflinks	exon	3201008	3201039	.	.	.	gene_id "XLOC_000028"; transcript_id "TCONS_00000062"; exon_number "1"; oId "CUFF.26.1"; class_code "u"; tss_id "TSS31";
+chr1	Cufflinks	exon	3201078	3201481	.	.	.	gene_id "XLOC_000029"; transcript_id "TCONS_00000022"; exon_number "1"; oId "CUFF.9.1"; class_code "."; tss_id "TSS32";
+chr1	Cufflinks	exon	3201597	3201666	.	.	.	gene_id "XLOC_000030"; transcript_id "TCONS_00000063"; exon_number "1"; oId "CUFF.29.1"; class_code "u"; tss_id "TSS33";
 chr1	Cufflinks	exon	3201673	3201699	.	.	.	gene_id "XLOC_000031"; transcript_id "TCONS_00000023"; exon_number "1"; oId "CUFF.11.1"; class_code "u"; tss_id "TSS34";
-chr1	Cufflinks	exon	3201726	3201809	.	.	.	gene_id "XLOC_000032"; transcript_id "TCONS_00000066"; exon_number "1"; oId "CUFF.31.1"; class_code "u"; tss_id "TSS35";
-chr1	Cufflinks	exon	3211522	3211561	.	.	.	gene_id "XLOC_000033"; transcript_id "TCONS_00000067"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.33.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS36";
+chr1	Cufflinks	exon	3201726	3201809	.	.	.	gene_id "XLOC_000032"; transcript_id "TCONS_00000064"; exon_number "1"; oId "CUFF.31.1"; class_code "u"; tss_id "TSS35";
+chr1	Cufflinks	exon	3211522	3211561	.	.	.	gene_id "XLOC_000033"; transcript_id "TCONS_00000065"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.33.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS36";
 chr1	Cufflinks	exon	3212214	3212292	.	.	.	gene_id "XLOC_000034"; transcript_id "TCONS_00000024"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.15.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS37";
 chr1	Cufflinks	exon	3212368	3212439	.	.	.	gene_id "XLOC_000035"; transcript_id "TCONS_00000025"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.19.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS38";
-chr1	Cufflinks	exon	3212718	3212801	.	.	.	gene_id "XLOC_000036"; transcript_id "TCONS_00000068"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.35.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS39";
+chr1	Cufflinks	exon	3212718	3212801	.	.	.	gene_id "XLOC_000036"; transcript_id "TCONS_00000066"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.35.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS39";
 chr1	Cufflinks	exon	3213096	3213192	.	.	.	gene_id "XLOC_000037"; transcript_id "TCONS_00000026"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.17.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS40";
-chr1	Cufflinks	exon	3213119	3213242	.	.	.	gene_id "XLOC_000037"; transcript_id "TCONS_00000069"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.37.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS40";
-chr1	Cufflinks	exon	3240607	3240633	.	.	.	gene_id "XLOC_000038"; transcript_id "TCONS_00000070"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.39.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS41";
-chr1	Cufflinks	exon	3242480	3242512	.	.	.	gene_id "XLOC_000039"; transcript_id "TCONS_00000071"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.41.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS42";
+chr1	Cufflinks	exon	3213119	3213242	.	.	.	gene_id "XLOC_000037"; transcript_id "TCONS_00000067"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.37.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS40";
+chr1	Cufflinks	exon	3240607	3240633	.	.	.	gene_id "XLOC_000038"; transcript_id "TCONS_00000068"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.39.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS41";
+chr1	Cufflinks	exon	3242480	3242512	.	.	.	gene_id "XLOC_000039"; transcript_id "TCONS_00000069"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.41.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS42";
 chr1	Cufflinks	exon	3242634	3242923	.	.	.	gene_id "XLOC_000040"; transcript_id "TCONS_00000027"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.25.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS43";
-chr1	Cufflinks	exon	3242925	3243005	.	.	.	gene_id "XLOC_000041"; transcript_id "TCONS_00000072"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.43.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS44";
+chr1	Cufflinks	exon	3242925	3243005	.	.	.	gene_id "XLOC_000041"; transcript_id "TCONS_00000070"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.43.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS44";
 chr1	Cufflinks	exon	3243019	3243079	.	.	.	gene_id "XLOC_000042"; transcript_id "TCONS_00000028"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.21.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS45";
-chr1	Cufflinks	exon	3243109	3243154	.	.	.	gene_id "XLOC_000043"; transcript_id "TCONS_00000073"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.45.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS46";
+chr1	Cufflinks	exon	3243109	3243154	.	.	.	gene_id "XLOC_000043"; transcript_id "TCONS_00000071"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.45.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS46";
 chr1	Cufflinks	exon	3243348	3243401	.	.	.	gene_id "XLOC_000044"; transcript_id "TCONS_00000029"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.23.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS47";
-chr1	Cufflinks	exon	3254080	3254106	.	.	.	gene_id "XLOC_000045"; transcript_id "TCONS_00000074"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.47.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS48";
+chr1	Cufflinks	exon	3254080	3254106	.	.	.	gene_id "XLOC_000045"; transcript_id "TCONS_00000072"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.47.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS48";
 chr1	Cufflinks	exon	3256975	3257011	.	.	.	gene_id "XLOC_000046"; transcript_id "TCONS_00000030"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.27.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS49";
-chr1	Cufflinks	exon	3277156	3277182	.	.	.	gene_id "XLOC_000047"; transcript_id "TCONS_00000075"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.49.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS50";
+chr1	Cufflinks	exon	3277156	3277182	.	.	.	gene_id "XLOC_000047"; transcript_id "TCONS_00000073"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.49.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS50";
 chr1	Cufflinks	exon	3277191	3277218	.	.	.	gene_id "XLOC_000048"; transcript_id "TCONS_00000031"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.61.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS51";
-chr1	Cufflinks	exon	3277914	3278390	.	.	.	gene_id "XLOC_000049"; transcript_id "TCONS_00000076"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.51.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS52";
-chr1	Cufflinks	exon	3280118	3280144	.	.	.	gene_id "XLOC_000050"; transcript_id "TCONS_00000077"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.53.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS54";
-chr1	Cufflinks	exon	3280499	3280525	.	.	.	gene_id "XLOC_000051"; transcript_id "TCONS_00000078"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.55.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS55";
+chr1	Cufflinks	exon	3277914	3278390	.	.	.	gene_id "XLOC_000049"; transcript_id "TCONS_00000074"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.51.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS52";
+chr1	Cufflinks	exon	3280118	3280144	.	.	.	gene_id "XLOC_000050"; transcript_id "TCONS_00000075"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.53.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS54";
+chr1	Cufflinks	exon	3280499	3280525	.	.	.	gene_id "XLOC_000051"; transcript_id "TCONS_00000076"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.55.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS55";
 chr1	Cufflinks	exon	3280687	3280741	.	.	.	gene_id "XLOC_000052"; transcript_id "TCONS_00000033"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.65.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS56";
-chr1	Cufflinks	exon	3282505	3282531	.	.	.	gene_id "XLOC_000053"; transcript_id "TCONS_00000079"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.57.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS57";
-chr1	Cufflinks	exon	3282651	3282677	.	.	.	gene_id "XLOC_000054"; transcript_id "TCONS_00000080"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.59.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS58";
-chr1	Cufflinks	exon	3282761	3282832	.	.	.	gene_id "XLOC_000055"; transcript_id "TCONS_00000081"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.61.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS59";
-chr1	Cufflinks	exon	3284967	3284993	.	.	.	gene_id "XLOC_000056"; transcript_id "TCONS_00000082"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.63.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS60";
+chr1	Cufflinks	exon	3282505	3282531	.	.	.	gene_id "XLOC_000053"; transcript_id "TCONS_00000077"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.57.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS57";
+chr1	Cufflinks	exon	3282651	3282677	.	.	.	gene_id "XLOC_000054"; transcript_id "TCONS_00000078"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.59.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS58";
+chr1	Cufflinks	exon	3282761	3282832	.	.	.	gene_id "XLOC_000055"; transcript_id "TCONS_00000079"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.61.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS59";
+chr1	Cufflinks	exon	3284967	3284993	.	.	.	gene_id "XLOC_000056"; transcript_id "TCONS_00000080"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.63.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS60";
 chr1	Cufflinks	exon	3290489	3290553	.	.	.	gene_id "XLOC_000057"; transcript_id "TCONS_00000034"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.67.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS61";
-chr1	Cufflinks	exon	3290799	3290859	.	.	.	gene_id "XLOC_000058"; transcript_id "TCONS_00000083"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.65.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS62";
-chr1	Cufflinks	exon	3290920	3291273	.	.	.	gene_id "XLOC_000059"; transcript_id "TCONS_00000084"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.69.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS63";
-chr1	Cufflinks	exon	3299444	3299640	.	.	.	gene_id "XLOC_000060"; transcript_id "TCONS_00000085"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.67.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS65";
+chr1	Cufflinks	exon	3290799	3290859	.	.	.	gene_id "XLOC_000058"; transcript_id "TCONS_00000081"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.65.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS62";
+chr1	Cufflinks	exon	3290920	3291273	.	.	.	gene_id "XLOC_000059"; transcript_id "TCONS_00000082"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.69.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS63";
+chr1	Cufflinks	exon	3299444	3299640	.	.	.	gene_id "XLOC_000060"; transcript_id "TCONS_00000083"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.67.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS65";
 chr1	Cufflinks	exon	3299610	3299664	.	.	.	gene_id "XLOC_000060"; transcript_id "TCONS_00000037"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.73.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS66";
-chr1	Cufflinks	exon	3299692	3299733	.	.	.	gene_id "XLOC_000061"; transcript_id "TCONS_00000086"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.71.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS67";
+chr1	Cufflinks	exon	3299692	3299733	.	.	.	gene_id "XLOC_000061"; transcript_id "TCONS_00000084"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.71.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS67";
 chr1	Cufflinks	exon	3300052	3300078	.	.	.	gene_id "XLOC_000062"; transcript_id "TCONS_00000038"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.75.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS68";
-chr1	Cufflinks	exon	3307749	3307775	.	.	.	gene_id "XLOC_000063"; transcript_id "TCONS_00000087"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.73.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS69";
-chr1	Cufflinks	exon	3318621	3318647	.	.	.	gene_id "XLOC_000064"; transcript_id "TCONS_00000088"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.75.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS70";
+chr1	Cufflinks	exon	3307749	3307775	.	.	.	gene_id "XLOC_000063"; transcript_id "TCONS_00000085"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.73.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS69";
+chr1	Cufflinks	exon	3318621	3318647	.	.	.	gene_id "XLOC_000064"; transcript_id "TCONS_00000086"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.75.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS70";
 chr1	Cufflinks	exon	3319000	3319051	.	.	.	gene_id "XLOC_000065"; transcript_id "TCONS_00000039"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.77.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS71";
-chr1	Cufflinks	exon	3330528	3330554	.	.	.	gene_id "XLOC_000066"; transcript_id "TCONS_00000089"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.77.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS72";
-chr1	Cufflinks	exon	3351241	3351311	.	.	.	gene_id "XLOC_000067"; transcript_id "TCONS_00000090"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.79.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS73";
+chr1	Cufflinks	exon	3330528	3330554	.	.	.	gene_id "XLOC_000066"; transcript_id "TCONS_00000087"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.77.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS72";
+chr1	Cufflinks	exon	3351241	3351311	.	.	.	gene_id "XLOC_000067"; transcript_id "TCONS_00000088"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.79.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS73";
 chr1	Cufflinks	exon	3355888	3355914	.	.	.	gene_id "XLOC_000068"; transcript_id "TCONS_00000040"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.79.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS74";
-chr1	Cufflinks	exon	3355908	3356119	.	.	.	gene_id "XLOC_000068"; transcript_id "TCONS_00000091"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.81.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS74";
-chr1	Cufflinks	exon	3356181	3356225	.	.	.	gene_id "XLOC_000069"; transcript_id "TCONS_00000092"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.83.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS75";
-chr1	Cufflinks	exon	3363077	3363176	.	.	.	gene_id "XLOC_000070"; transcript_id "TCONS_00000093"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.85.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS76";
+chr1	Cufflinks	exon	3355908	3356119	.	.	.	gene_id "XLOC_000068"; transcript_id "TCONS_00000089"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.81.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS74";
+chr1	Cufflinks	exon	3356181	3356225	.	.	.	gene_id "XLOC_000069"; transcript_id "TCONS_00000090"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.83.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS75";
+chr1	Cufflinks	exon	3363077	3363176	.	.	.	gene_id "XLOC_000070"; transcript_id "TCONS_00000091"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.85.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS76";
 chr1	Cufflinks	exon	3363215	3363278	.	.	.	gene_id "XLOC_000071"; transcript_id "TCONS_00000041"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.81.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS77";
-chr1	Cufflinks	exon	3363388	3363446	.	.	.	gene_id "XLOC_000072"; transcript_id "TCONS_00000094"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.87.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS78";
+chr1	Cufflinks	exon	3363388	3363446	.	.	.	gene_id "XLOC_000072"; transcript_id "TCONS_00000092"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.87.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS78";
 chr1	Cufflinks	exon	3363754	3363849	.	.	.	gene_id "XLOC_000073"; transcript_id "TCONS_00000042"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.83.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS79";
-chr1	Cufflinks	exon	3364872	3364919	.	.	.	gene_id "XLOC_000074"; transcript_id "TCONS_00000095"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.89.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS80";
+chr1	Cufflinks	exon	3364872	3364919	.	.	.	gene_id "XLOC_000074"; transcript_id "TCONS_00000093"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.89.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS80";
 chr1	Cufflinks	exon	3367136	3367162	.	.	.	gene_id "XLOC_000075"; transcript_id "TCONS_00000043"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.85.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS81";
-chr1	Cufflinks	exon	3367211	3367237	.	.	.	gene_id "XLOC_000076"; transcript_id "TCONS_00000096"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.91.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS82";
+chr1	Cufflinks	exon	3367211	3367237	.	.	.	gene_id "XLOC_000076"; transcript_id "TCONS_00000094"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.91.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS82";
 chr1	Cufflinks	exon	3367334	3367382	.	.	.	gene_id "XLOC_000077"; transcript_id "TCONS_00000044"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.87.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS83";
-chr1	Cufflinks	exon	3369581	3369607	.	.	.	gene_id "XLOC_000078"; transcript_id "TCONS_00000097"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.93.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS84";
-chr1	Cufflinks	exon	3375002	3375028	.	.	.	gene_id "XLOC_000079"; transcript_id "TCONS_00000098"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.95.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS85";
+chr1	Cufflinks	exon	3369581	3369607	.	.	.	gene_id "XLOC_000078"; transcript_id "TCONS_00000095"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.93.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS84";
+chr1	Cufflinks	exon	3375002	3375028	.	.	.	gene_id "XLOC_000079"; transcript_id "TCONS_00000096"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.95.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS85";
 chr1	Cufflinks	exon	3377212	3377262	.	.	.	gene_id "XLOC_000080"; transcript_id "TCONS_00000045"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.89.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS86";
-chr1	Cufflinks	exon	3379889	3379915	.	.	.	gene_id "XLOC_000081"; transcript_id "TCONS_00000099"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.97.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS87";
-chr1	Cufflinks	exon	3386740	3386836	.	.	.	gene_id "XLOC_000082"; transcript_id "TCONS_00000100"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.99.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS88";
+chr1	Cufflinks	exon	3379889	3379915	.	.	.	gene_id "XLOC_000081"; transcript_id "TCONS_00000097"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.97.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS87";
+chr1	Cufflinks	exon	3386740	3386836	.	.	.	gene_id "XLOC_000082"; transcript_id "TCONS_00000098"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.99.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS88";
 chr1	Cufflinks	exon	3391326	3391352	.	.	.	gene_id "XLOC_000083"; transcript_id "TCONS_00000046"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.91.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS89";
 chr1	Cufflinks	exon	3435842	3435880	.	.	.	gene_id "XLOC_000084"; transcript_id "TCONS_00000047"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.93.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS90";
 chr1	Cufflinks	exon	3447762	3447788	.	.	.	gene_id "XLOC_000085"; transcript_id "TCONS_00000048"; exon_number "1"; gene_name "Xkr4"; oId "CUFF.95.1"; nearest_ref "Xkr4"; class_code "i"; tss_id "TSS91";
--- a/test-data/cuffcompare_out6.tracking	Thu Jan 09 14:27:37 2014 -0500
+++ b/test-data/cuffcompare_out6.tracking	Fri Dec 19 11:55:55 2014 -0500
@@ -17,9 +17,9 @@
 TCONS_00000017	XLOC_000021	-	u	q1:CUFF.55|CUFF.55.1|100|31.293533|0.000000|75.549272|2.000000|-	-
 TCONS_00000018	XLOC_000022	-	u	q1:CUFF.57|CUFF.57.1|100|15.646767|0.000000|46.940300|1.000000|-	-
 TCONS_00000019	XLOC_000023	-	u	q1:CUFF.59|CUFF.59.1|100|15.646767|0.000000|46.940300|1.000000|-	-
-TCONS_00000020	XLOC_000025	-	u	q1:CUFF.7|CUFF.7.1|100|9.999117|0.000000|19.998234|0.639053|-	-
+TCONS_00000020	XLOC_000025	-	.	q1:CUFF.7|CUFF.7.1|100|9.999117|0.000000|19.998234|0.639053|169	q2:CUFF.23|CUFF.23.1|100|16.205195|0.000000|34.917342|0.920455|88
 TCONS_00000021	XLOC_000026	-	u	q1:CUFF.5|CUFF.5.1|100|31.293533|0.000000|75.549272|2.000000|-	-
-TCONS_00000022	XLOC_000029	-	u	q1:CUFF.9|CUFF.9.1|100|17.776896|9.153835|26.399957|1.136139|-	-
+TCONS_00000022	XLOC_000029	-	.	q1:CUFF.9|CUFF.9.1|100|17.776896|9.153835|26.399957|1.136139|404	q2:CUFF.25|CUFF.25.1|100|35.211287|0.000000|85.007567|2.000000|27
 TCONS_00000023	XLOC_000031	-	u	q1:CUFF.11|CUFF.11.1|100|31.293533|0.000000|75.549272|2.000000|-	-
 TCONS_00000024	XLOC_000034	Xkr4|Xkr4	i	q1:CUFF.15|CUFF.15.1|100|10.695258|0.000000|25.820637|0.683544|-	-
 TCONS_00000025	XLOC_000035	Xkr4|Xkr4	i	q1:CUFF.19|CUFF.19.1|100|29.337687|3.097262|55.578113|1.875000|-	-
@@ -58,43 +58,41 @@
 TCONS_00000058	XLOC_000013	-	u	-	q2:CUFF.15|CUFF.15.1|100|35.211287|0.000000|85.007567|2.000000|-
 TCONS_00000059	XLOC_000018	-	u	-	q2:CUFF.17|CUFF.17.1|100|35.211287|0.000000|85.007567|2.000000|-
 TCONS_00000060	XLOC_000024	-	u	-	q2:CUFF.19|CUFF.19.1|100|35.211287|0.000000|85.007567|2.000000|-
-TCONS_00000061	XLOC_000025	-	u	-	q2:CUFF.23|CUFF.23.1|100|16.205195|0.000000|34.917342|0.920455|-
-TCONS_00000062	XLOC_000027	-	u	-	q2:CUFF.21|CUFF.21.1|100|35.211287|0.000000|85.007567|2.000000|-
-TCONS_00000063	XLOC_000028	-	u	-	q2:CUFF.26|CUFF.26.1|100|29.709524|0.000000|71.725135|1.687500|-
-TCONS_00000064	XLOC_000029	-	u	-	q2:CUFF.25|CUFF.25.1|100|35.211287|0.000000|85.007567|2.000000|-
-TCONS_00000065	XLOC_000030	-	u	-	q2:CUFF.29|CUFF.29.1|100|13.581496|0.000000|32.788633|0.771429|-
-TCONS_00000066	XLOC_000032	-	u	-	q2:CUFF.31|CUFF.31.1|100|22.635827|0.000000|45.271655|1.285714|-
-TCONS_00000067	XLOC_000033	Xkr4|Xkr4	i	-	q2:CUFF.33|CUFF.33.1|100|23.767619|0.000000|57.380108|1.350000|-
-TCONS_00000068	XLOC_000036	Xkr4|Xkr4	i	-	q2:CUFF.35|CUFF.35.1|100|11.317914|0.000000|27.323861|0.642857|-
-TCONS_00000069	XLOC_000037	Xkr4|Xkr4	i	-	q2:CUFF.37|CUFF.37.1|100|11.500461|0.000000|24.780049|0.653226|-
-TCONS_00000070	XLOC_000038	Xkr4|Xkr4	i	-	q2:CUFF.39|CUFF.39.1|100|52.816931|0.000000|113.804669|3.000000|-
-TCONS_00000071	XLOC_000039	Xkr4|Xkr4	i	-	q2:CUFF.41|CUFF.41.1|100|43.213852|0.000000|93.112911|2.454545|-
-TCONS_00000072	XLOC_000041	Xkr4|Xkr4	i	-	q2:CUFF.43|CUFF.43.1|100|23.474191|0.000000|46.948383|1.333333|-
-TCONS_00000073	XLOC_000043	Xkr4|Xkr4	i	-	q2:CUFF.45|CUFF.45.1|100|20.667495|0.000000|49.895746|1.173913|-
-TCONS_00000074	XLOC_000045	Xkr4|Xkr4	i	-	q2:CUFF.47|CUFF.47.1|100|35.211287|0.000000|85.007567|2.000000|-
-TCONS_00000075	XLOC_000047	Xkr4|Xkr4	i	-	q2:CUFF.49|CUFF.49.1|100|35.211287|0.000000|85.007567|2.000000|-
-TCONS_00000076	XLOC_000049	Xkr4|Xkr4	i	-	q2:CUFF.51|CUFF.51.1|100|14.948188|7.228977|22.667399|0.849057|-
-TCONS_00000077	XLOC_000050	Xkr4|Xkr4	i	-	q2:CUFF.53|CUFF.53.1|100|52.816931|0.000000|113.804669|3.000000|-
-TCONS_00000078	XLOC_000051	Xkr4|Xkr4	i	-	q2:CUFF.55|CUFF.55.1|100|35.211287|0.000000|85.007567|2.000000|-
-TCONS_00000079	XLOC_000053	Xkr4|Xkr4	i	-	q2:CUFF.57|CUFF.57.1|100|35.211287|0.000000|85.007567|2.000000|-
-TCONS_00000080	XLOC_000054	Xkr4|Xkr4	i	-	q2:CUFF.59|CUFF.59.1|100|35.211287|0.000000|85.007567|2.000000|-
-TCONS_00000081	XLOC_000055	Xkr4|Xkr4	i	-	q2:CUFF.61|CUFF.61.1|100|13.204233|0.000000|31.877838|0.750000|-
-TCONS_00000082	XLOC_000056	Xkr4|Xkr4	i	-	q2:CUFF.63|CUFF.63.1|100|35.211287|0.000000|85.007567|2.000000|-
-TCONS_00000083	XLOC_000058	Xkr4|Xkr4	i	-	q2:CUFF.65|CUFF.65.1|100|31.170648|0.000000|62.341295|1.770492|-
-TCONS_00000084	XLOC_000059	Xkr4|Xkr4	i	-	q2:CUFF.69|CUFF.69.1|100|18.799247|8.750627|28.847866|1.067797|-
-TCONS_00000085	XLOC_000060	Xkr4|Xkr4	i	-	q2:CUFF.67|CUFF.67.1|100|15.681351|3.378764|27.983938|0.890700|-
-TCONS_00000086	XLOC_000061	Xkr4|Xkr4	i	-	q2:CUFF.71|CUFF.71.1|100|22.635827|0.000000|54.647722|1.285714|-
-TCONS_00000087	XLOC_000063	Xkr4|Xkr4	i	-	q2:CUFF.73|CUFF.73.1|100|35.211287|0.000000|85.007567|2.000000|-
-TCONS_00000088	XLOC_000064	Xkr4|Xkr4	i	-	q2:CUFF.75|CUFF.75.1|100|52.816931|0.000000|113.804669|3.000000|-
-TCONS_00000089	XLOC_000066	Xkr4|Xkr4	i	-	q2:CUFF.77|CUFF.77.1|100|17.605644|0.000000|52.816931|1.000000|-
-TCONS_00000090	XLOC_000067	Xkr4|Xkr4	i	-	q2:CUFF.79|CUFF.79.1|100|13.390208|0.000000|32.326821|0.760563|-
-TCONS_00000091	XLOC_000068	Xkr4|Xkr4	i	-	q2:CUFF.81|CUFF.81.1|100|11.211141|1.183592|21.238690|0.636792|-
-TCONS_00000092	XLOC_000069	Xkr4|Xkr4	i	-	q2:CUFF.83|CUFF.83.1|100|21.126772|0.000000|51.004540|1.200000|-
-TCONS_00000093	XLOC_000070	Xkr4|Xkr4	i	-	q2:CUFF.85|CUFF.85.1|100|19.014095|0.000000|38.028190|1.080000|-
-TCONS_00000094	XLOC_000072	Xkr4|Xkr4	i	-	q2:CUFF.87|CUFF.87.1|100|24.170460|0.000000|52.080103|1.372881|-
-TCONS_00000095	XLOC_000074	Xkr4|Xkr4	i	-	q2:CUFF.89|CUFF.89.1|100|29.709524|0.000000|64.015126|1.687500|-
-TCONS_00000096	XLOC_000076	Xkr4|Xkr4	i	-	q2:CUFF.91|CUFF.91.1|100|35.211287|0.000000|85.007567|2.000000|-
-TCONS_00000097	XLOC_000078	Xkr4|Xkr4	i	-	q2:CUFF.93|CUFF.93.1|100|35.211287|0.000000|85.007567|2.000000|-
-TCONS_00000098	XLOC_000079	Xkr4|Xkr4	i	-	q2:CUFF.95|CUFF.95.1|100|35.211287|0.000000|85.007567|2.000000|-
-TCONS_00000099	XLOC_000081	Xkr4|Xkr4	i	-	q2:CUFF.97|CUFF.97.1|100|35.211287|0.000000|85.007567|2.000000|-
-TCONS_00000100	XLOC_000082	Xkr4|Xkr4	i	-	q2:CUFF.99|CUFF.99.1|100|19.602160|0.000000|39.204320|1.113402|-
+TCONS_00000061	XLOC_000027	-	u	-	q2:CUFF.21|CUFF.21.1|100|35.211287|0.000000|85.007567|2.000000|-
+TCONS_00000062	XLOC_000028	-	u	-	q2:CUFF.26|CUFF.26.1|100|29.709524|0.000000|71.725135|1.687500|-
+TCONS_00000063	XLOC_000030	-	u	-	q2:CUFF.29|CUFF.29.1|100|13.581496|0.000000|32.788633|0.771429|-
+TCONS_00000064	XLOC_000032	-	u	-	q2:CUFF.31|CUFF.31.1|100|22.635827|0.000000|45.271655|1.285714|-
+TCONS_00000065	XLOC_000033	Xkr4|Xkr4	i	-	q2:CUFF.33|CUFF.33.1|100|23.767619|0.000000|57.380108|1.350000|-
+TCONS_00000066	XLOC_000036	Xkr4|Xkr4	i	-	q2:CUFF.35|CUFF.35.1|100|11.317914|0.000000|27.323861|0.642857|-
+TCONS_00000067	XLOC_000037	Xkr4|Xkr4	i	-	q2:CUFF.37|CUFF.37.1|100|11.500461|0.000000|24.780049|0.653226|-
+TCONS_00000068	XLOC_000038	Xkr4|Xkr4	i	-	q2:CUFF.39|CUFF.39.1|100|52.816931|0.000000|113.804669|3.000000|-
+TCONS_00000069	XLOC_000039	Xkr4|Xkr4	i	-	q2:CUFF.41|CUFF.41.1|100|43.213852|0.000000|93.112911|2.454545|-
+TCONS_00000070	XLOC_000041	Xkr4|Xkr4	i	-	q2:CUFF.43|CUFF.43.1|100|23.474191|0.000000|46.948383|1.333333|-
+TCONS_00000071	XLOC_000043	Xkr4|Xkr4	i	-	q2:CUFF.45|CUFF.45.1|100|20.667495|0.000000|49.895746|1.173913|-
+TCONS_00000072	XLOC_000045	Xkr4|Xkr4	i	-	q2:CUFF.47|CUFF.47.1|100|35.211287|0.000000|85.007567|2.000000|-
+TCONS_00000073	XLOC_000047	Xkr4|Xkr4	i	-	q2:CUFF.49|CUFF.49.1|100|35.211287|0.000000|85.007567|2.000000|-
+TCONS_00000074	XLOC_000049	Xkr4|Xkr4	i	-	q2:CUFF.51|CUFF.51.1|100|14.948188|7.228977|22.667399|0.849057|-
+TCONS_00000075	XLOC_000050	Xkr4|Xkr4	i	-	q2:CUFF.53|CUFF.53.1|100|52.816931|0.000000|113.804669|3.000000|-
+TCONS_00000076	XLOC_000051	Xkr4|Xkr4	i	-	q2:CUFF.55|CUFF.55.1|100|35.211287|0.000000|85.007567|2.000000|-
+TCONS_00000077	XLOC_000053	Xkr4|Xkr4	i	-	q2:CUFF.57|CUFF.57.1|100|35.211287|0.000000|85.007567|2.000000|-
+TCONS_00000078	XLOC_000054	Xkr4|Xkr4	i	-	q2:CUFF.59|CUFF.59.1|100|35.211287|0.000000|85.007567|2.000000|-
+TCONS_00000079	XLOC_000055	Xkr4|Xkr4	i	-	q2:CUFF.61|CUFF.61.1|100|13.204233|0.000000|31.877838|0.750000|-
+TCONS_00000080	XLOC_000056	Xkr4|Xkr4	i	-	q2:CUFF.63|CUFF.63.1|100|35.211287|0.000000|85.007567|2.000000|-
+TCONS_00000081	XLOC_000058	Xkr4|Xkr4	i	-	q2:CUFF.65|CUFF.65.1|100|31.170648|0.000000|62.341295|1.770492|-
+TCONS_00000082	XLOC_000059	Xkr4|Xkr4	i	-	q2:CUFF.69|CUFF.69.1|100|18.799247|8.750627|28.847866|1.067797|-
+TCONS_00000083	XLOC_000060	Xkr4|Xkr4	i	-	q2:CUFF.67|CUFF.67.1|100|15.681351|3.378764|27.983938|0.890700|-
+TCONS_00000084	XLOC_000061	Xkr4|Xkr4	i	-	q2:CUFF.71|CUFF.71.1|100|22.635827|0.000000|54.647722|1.285714|-
+TCONS_00000085	XLOC_000063	Xkr4|Xkr4	i	-	q2:CUFF.73|CUFF.73.1|100|35.211287|0.000000|85.007567|2.000000|-
+TCONS_00000086	XLOC_000064	Xkr4|Xkr4	i	-	q2:CUFF.75|CUFF.75.1|100|52.816931|0.000000|113.804669|3.000000|-
+TCONS_00000087	XLOC_000066	Xkr4|Xkr4	i	-	q2:CUFF.77|CUFF.77.1|100|17.605644|0.000000|52.816931|1.000000|-
+TCONS_00000088	XLOC_000067	Xkr4|Xkr4	i	-	q2:CUFF.79|CUFF.79.1|100|13.390208|0.000000|32.326821|0.760563|-
+TCONS_00000089	XLOC_000068	Xkr4|Xkr4	i	-	q2:CUFF.81|CUFF.81.1|100|11.211141|1.183592|21.238690|0.636792|-
+TCONS_00000090	XLOC_000069	Xkr4|Xkr4	i	-	q2:CUFF.83|CUFF.83.1|100|21.126772|0.000000|51.004540|1.200000|-
+TCONS_00000091	XLOC_000070	Xkr4|Xkr4	i	-	q2:CUFF.85|CUFF.85.1|100|19.014095|0.000000|38.028190|1.080000|-
+TCONS_00000092	XLOC_000072	Xkr4|Xkr4	i	-	q2:CUFF.87|CUFF.87.1|100|24.170460|0.000000|52.080103|1.372881|-
+TCONS_00000093	XLOC_000074	Xkr4|Xkr4	i	-	q2:CUFF.89|CUFF.89.1|100|29.709524|0.000000|64.015126|1.687500|-
+TCONS_00000094	XLOC_000076	Xkr4|Xkr4	i	-	q2:CUFF.91|CUFF.91.1|100|35.211287|0.000000|85.007567|2.000000|-
+TCONS_00000095	XLOC_000078	Xkr4|Xkr4	i	-	q2:CUFF.93|CUFF.93.1|100|35.211287|0.000000|85.007567|2.000000|-
+TCONS_00000096	XLOC_000079	Xkr4|Xkr4	i	-	q2:CUFF.95|CUFF.95.1|100|35.211287|0.000000|85.007567|2.000000|-
+TCONS_00000097	XLOC_000081	Xkr4|Xkr4	i	-	q2:CUFF.97|CUFF.97.1|100|35.211287|0.000000|85.007567|2.000000|-
+TCONS_00000098	XLOC_000082	Xkr4|Xkr4	i	-	q2:CUFF.99|CUFF.99.1|100|19.602160|0.000000|39.204320|1.113402|-
--- a/test-data/cuffcompare_out7.txt	Thu Jan 09 14:27:37 2014 -0500
+++ b/test-data/cuffcompare_out7.txt	Fri Dec 19 11:55:55 2014 -0500
@@ -1,22 +1,22 @@
-# Cuffcompare v2.0.2 | Command line was:
-#cuffcompare -o cc_output -r /Users/jeremy/projects/galaxy-central/database/files/002/dataset_2770.dat -R ./input1 ./input2
+# Cuffcompare v2.2.1 | Command line was:
+#cuffcompare -o cc_output -r /tmp/tmpZ9KXPVfiles/000/dataset_3.dat -R -e 100 -d 100 ./input1 ./input2
 #
 
 #= Summary for dataset: ./input1 :
 #     Query mRNAs :      50 in      50 loci  (0 multi-exon transcripts)
 #            (0 multi-transcript loci, ~1.0 transcripts per locus)
 # Reference mRNAs :       1 in       1 loci  (1 multi-exon)
-# Corresponding super-loci:              1
+# Super-loci w/ reference transcripts:        1
 #--------------------|   Sn   |  Sp   |  fSn |  fSp  
         Base level: 	  2.2	  2.3	  - 	  - 
         Exon level: 	  0.0	  0.0	  0.0	  0.0
-      Intron level: 	  0.0	  nan	  0.0	  nan
-Intron chain level: 	  0.0	  nan	  0.0	  nan
+      Intron level: 	  0.0	 -nan	  0.0	 -nan
+Intron chain level: 	  0.0	 -nan	  0.0	 -nan
   Transcript level: 	  0.0	  0.0	  0.0	  0.0
        Locus level: 	  0.0	  0.0	  0.0	  0.0
 
-Matching intron chains:       0
-         Matching loci:       0
+     Matching intron chains:       0
+              Matching loci:       0
 
           Missed exons:       2/3	( 66.7%)
            Novel exons:      49/50	( 98.0%)
--- a/tool_dependencies.xml	Thu Jan 09 14:27:37 2014 -0500
+++ b/tool_dependencies.xml	Fri Dec 19 11:55:55 2014 -0500
@@ -1,6 +1,6 @@
 <?xml version="1.0"?>
 <tool_dependency>
-    <package name="cufflinks" version="2.1.1">
-        <repository changeset_revision="394b13717223" name="package_cufflinks_2_1_1" owner="devteam" toolshed="http://toolshed.g2.bx.psu.edu" />
+    <package name="cufflinks" version="2.2.1">
+        <repository changeset_revision="899067a260d1" name="package_cufflinks_2_2_1" owner="devteam" toolshed="https://toolshed.g2.bx.psu.edu" />
     </package>
 </tool_dependency>