Repository 'dexseq'
hg clone https://toolshed.g2.bx.psu.edu/repos/iuc/dexseq

Changeset 2:6e8b61c54ff3 (2018-01-28)
Previous changeset 1:f1c406f9554c (2017-01-29) Next changeset 3:f89c9b25feb4 (2018-07-28)
Commit message:
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/dexseq commit 0a56599c36b4968095ec5a3cb589f94fb139466c
modified:
dexseq.R
dexseq.xml
dexseq_count.xml
test-data/dexseq_result.tabular
test-data/flattened.gtf
added:
macros.xml
test-data/dexseq_result_2fact.tabular
b
diff -r f1c406f9554c -r 6e8b61c54ff3 dexseq.R
--- a/dexseq.R Sun Jan 29 06:59:35 2017 -0500
+++ b/dexseq.R Sun Jan 28 04:04:39 2018 -0500
b
@@ -3,9 +3,11 @@
 # we need that to not crash galaxy with an UTF8 error on German LC settings.
 Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
 
-library("DEXSeq")
-library('getopt')
-library('rjson')
+suppressPackageStartupMessages({
+    library("DEXSeq")
+    library('getopt')
+    library('rjson')
+})
 
 
 options(stringAsfactors = FALSE, useFancyQuotes = FALSE)
@@ -90,7 +92,7 @@
 BPPARAM=MulticoreParam(workers=opt$threads)
 dxd <- estimateDispersions(dxd, formula=formulaFullModel, BPPARAM=BPPARAM)
 print("Estimated dispersions")
-dxd <- testForDEU(dxd, fullModel=formulaFullModel, BPPARAM=BPPARAM)
+dxd <- testForDEU(dxd, reducedModel=formulaReducedModel, fullModel=formulaFullModel, BPPARAM=BPPARAM)
 print("tested for DEU")
 dxd <- estimateExonFoldChanges(dxd, fitExpToVar=primaryFactor, BPPARAM=BPPARAM)
 print("Estimated fold changes")
@@ -111,7 +113,7 @@
 if ( !is.null(opt$reportdir) ) {
     save(dxd, resSorted, file = file.path(opt$reportdir,"DEXSeq_analysis.RData"))
     save.image()
-    DEXSeqHTML(res, path=opt$reportdir, FDR=opt$fdr, color=c("#B7FEA0", "#FF8F43", "#637EE9", "#FF0000", "#F1E7A1", "#C3EEE7","#CEAEFF", "#EDC3C5", "#AAA8AA"))
+    DEXSeqHTML(res, fitExpToVar=primaryFactor, path=opt$reportdir, FDR=opt$fdr, color=c("#B7FEA0", "#FF8F43", "#637EE9", "#FF0000", "#F1E7A1", "#C3EEE7","#CEAEFF", "#EDC3C5", "#AAA8AA"))
     unlink(file.path(opt$reportdir,"DEXSeq_analysis.RData"))
 }
 sessionInfo()
b
diff -r f1c406f9554c -r 6e8b61c54ff3 dexseq.xml
--- a/dexseq.xml Sun Jan 29 06:59:35 2017 -0500
+++ b/dexseq.xml Sun Jan 28 04:04:39 2018 -0500
[
@@ -1,10 +1,12 @@
-<tool id="dexseq" name="DEXSeq" version="1.20.1">
+<tool id="dexseq" name="DEXSeq" version="@VERSION@.0">
     <description>Determines differential exon usage from count tables</description>
-    <requirements>
-        <requirement type="package" version="1.20.1">bioconductor-dexseq</requirement>
+     <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="requirements">
         <requirement type="package" version="1.20.0">r-getopt</requirement>
         <requirement type="package" version="0.2.15">r-rjson</requirement>
-    </requirements>
+    </expand>
     <code file="dexseq_helper.py" />
     <stdio>
         <regex match="Execution halted"
@@ -24,50 +26,45 @@
             level="fatal"
             description="Error in the R script." />
     </stdio>
-    <version_command>
-    <![CDATA[
-        echo $(R --version | grep version | grep -v GNU)", DEXSeq version" $(R --vanilla --slave -e "library(DEXSeq); cat(sessionInfo()\$otherPkgs\$DEXSeq\$Version)" 2> /dev/null | grep -v -i "WARNING: ")" (depends on DESeq2 "$(R --vanilla --slave -e "library(DESeq2); cat(sessionInfo()\$otherPkgs\$DESeq2\$Version)" 2> /dev/null | grep -v -i "WARNING: ")")"
-    ]]>
-    </version_command>
-    <command>
-    <![CDATA[
-        mkdir ./html_out &&
-        #import json
-        Rscript '$__tool_directory__/dexseq.R'
-            -o '$dexseq_out'
-            -p \${GALAXY_SLOTS:-4}
-            #set $temp_factor_names = list()
-            #for $factor in $rep_factorName:
-                #set $temp_factor = list()
-                #set $count_files1 = list()
-                #for $file in $factor.countFiles1:
-                    $count_files1.append(str($file))
-                #end for
-                $temp_factor.append( {str($factor.factorLevel1): $count_files1} )
+    <version_command><![CDATA[
+echo $(R --version | grep version | grep -v GNU)", DEXSeq version" $(R --vanilla --slave -e "library(DEXSeq); cat(sessionInfo()\$otherPkgs\$DEXSeq\$Version)" 2> /dev/null | grep -v -i "WARNING: ")" (depends on DESeq2 "$(R --vanilla --slave -e "library(DESeq2); cat(sessionInfo()\$otherPkgs\$DESeq2\$Version)" 2> /dev/null | grep -v -i "WARNING: ")")"
+    ]]></version_command>
+    <command><![CDATA[
+ mkdir ./html_out &&
+ #import json
+ Rscript '$__tool_directory__/dexseq.R'
+     -o '$dexseq_out'
+     -p \${GALAXY_SLOTS:-4}
+     #set $temp_factor_names = list()
+     #for $factor in $rep_factorName:
+         #set $temp_factor = list()
+         #set $count_files1 = list()
+         #for $file in $factor.countFiles1:
+             $count_files1.append(str($file))
+         #end for
+         $temp_factor.append( {str($factor.factorLevel1): $count_files1} )
 
-                #set $count_files2 = list()
-                #for $file in $factor.countFiles2:
-                    $count_files2.append(str($file))
-                #end for
-                $temp_factor.append( {str($factor.factorLevel2): $count_files2} )
-                $temp_factor_names.append([str($factor.factorName), $temp_factor])
-            #end for
-            -f '#echo json.dumps(temp_factor_names)#'
-            -a $gtf
-            -c $fdr_cutoff
+         #set $count_files2 = list()
+         #for $file in $factor.countFiles2:
+             $count_files2.append(str($file))
+         #end for
+         $temp_factor.append( {str($factor.factorLevel2): $count_files2} )
+         $temp_factor_names.append([str($factor.factorName), $temp_factor])
+     #end for
+     -f '#echo json.dumps(temp_factor_names)#'
+     -a $gtf
+     -c $fdr_cutoff
 
-            #if $report:
-                -r ./html_out
-                &&
-                mkdir '$htmlreport.extra_files_path'
-                &&
-                cp ./html_out/testForDEU.html $htmlreport
-                &&
-                cp -r ./html_out/* '$htmlreport.extra_files_path'
-            #end if
-
-    ]]>
-    </command>
+     #if $report:
+         -r ./html_out
+         &&
+         mkdir '$htmlreport.extra_files_path'
+         &&
+         cp ./html_out/testForDEU.html $htmlreport
+         &&
+         cp -r ./html_out/* '$htmlreport.extra_files_path'
+     #end if
+    ]]></command>
     <inputs>
         <param name="gtf" type="data" format="gtf,gff" label="GTF file created from DEXSeq-Count tool"/>
         <repeat name="rep_factorName" title="Factor" min="1">
@@ -105,7 +102,36 @@
         </data>
     </outputs>
     <tests>
-        <test>
+        <!-- Ensure default output works-->
+        <test expect_num_outputs="1">
+            <param name="gtf" value="dexseq.gtf" ftype="gtf"/>
+            <repeat name="rep_factorName">
+                <param name="factorName" value="condition"/>
+                <param name="factorLevel1" value="knockdown"/>
+                <param name="countFiles1" value="treated1fb.txt,treated2fb.txt,treated3fb.txt" ftype="tabular"/>
+                <param name="factorLevel2" value="control"/>
+                <param name="countFiles2" value="untreated1fb.txt,untreated2fb.txt,untreated3fb.txt,untreated4fb.txt" ftype="tabular"/>
+            </repeat>
+            <param name="report" value="False"/>
+            <param name="fdr_cutoff" value="1"/>
+            <output name="dexseq_out" file="dexseq_result.tabular" ftype="tabular"/>
+        </test>
+        <!-- Ensure report works-->
+        <test expect_num_outputs="2">
+            <param name="gtf" value="dexseq.gtf" ftype="gtf"/>
+            <repeat name="rep_factorName">
+                <param name="factorName" value="Treatment"/>
+                <param name="factorLevel1" value="knockdown"/>
+                <param name="countFiles1" value="treated1fb.txt,treated2fb.txt,treated3fb.txt" ftype="tabular"/>
+                <param name="factorLevel2" value="control"/>
+                <param name="countFiles2" value="untreated1fb.txt,untreated2fb.txt,untreated3fb.txt,untreated4fb.txt" ftype="tabular"/>
+            </repeat>
+            <param name="report" value="True"/>
+            <param name="fdr_cutoff" value="1"/>
+            <output name="dexseq_out" file="dexseq_result.tabular" ftype="tabular"/>
+        </test>
+        <!-- Ensure two factors works-->
+        <test expect_num_outputs="1">
             <param name="gtf" value="dexseq.gtf" ftype="gtf"/>
             <repeat name="rep_factorName">
                 <param name="factorName" value="condition"/>
@@ -123,11 +149,10 @@
             </repeat>
             <param name="report" value="False"/>
             <param name="fdr_cutoff" value="0.05"/>
-            <output name="dexseq_out" file="dexseq_result.tabular" ftype="tabular"/>
+            <output name="dexseq_out" file="dexseq_result_2fact.tabular" ftype="tabular"/>
         </test>
     </tests>
-    <help>
-    <![CDATA[
+    <help><![CDATA[
 .. class:: infomark
 
 **What it does**
@@ -139,7 +164,7 @@
 
 DEXSeq_ takes count tables generated from the dexseq_count as input. Count tables must be generated for each sample individually.
 DEXSeq_ is capable of handling multiple factors that effect your experiment. The first factor you input is considered as the primary
-factor that affects gene expressions. Primary factor should always be named as 'condition'. You also input several secondary factors that might
+factor that affects gene expressions. You also input several secondary factors that might
 influence your experiment. But the final output will be changes in genes due to primary factor in presence of secondary factors. Each factor has two levels/states.
 You need to select appropriate count table from your history for each factor level.
 
@@ -186,8 +211,7 @@
 
 
 .. _DEXSeq: http://master.bioconductor.org/packages/release/bioc/html/DEXSeq.html
-    ]]>
-    </help>
+    ]]></help>
     <citations>
         <citation type="doi">10.1101/gr.133744.111</citation>
     </citations>
b
diff -r f1c406f9554c -r 6e8b61c54ff3 dexseq_count.xml
--- a/dexseq_count.xml Sun Jan 29 06:59:35 2017 -0500
+++ b/dexseq_count.xml Sun Jan 28 04:04:39 2018 -0500
[
@@ -1,9 +1,11 @@
-<tool id="dexseq_count" name="DEXSeq-Count" version="1.20.1">
+<tool id="dexseq_count" name="DEXSeq-Count" version="@VERSION@.0">
     <description>Prepare and count exon abundancies from RNA-seq data</description>
-    <requirements>
-        <requirement type="package" version="1.20.1">bioconductor-dexseq</requirement>
-        <requirement type="package" version="0.6.1.post1">htseq</requirement>
-    </requirements>
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="requirements">
+        <requirement type="package" version="0.9.1">htseq</requirement>
+    </expand>
     <stdio>
         <!-- Anything other than zero is an error -->
         <exit_code range="1:" />
@@ -12,26 +14,24 @@
         <regex match="Error:" />
         <regex match="Exception:" />
     </stdio>
-    <command>
-    <![CDATA[
-        #if $mode.mode_select == "prepare":
-            dexseq_prepare_annotation.py
-                -r $mode.aggregate
-                '$mode.gtffile'
-                '$flattened_gtf_out'
-        #elif $mode.mode_select == "count":
-            dexseq_count.py
-                -f bam
-                -p $mode.paired
-                -s $mode.stranded
-                -a $mode.qual
-                -r $mode.order
-                $mode.flattened_gtf_in
-                '$mode.bamfile'
-                '$counts_file'
-        #end if
-    ]]>
-    </command>
+    <command><![CDATA[
+#if $mode.mode_select == "prepare":
+    dexseq_prepare_annotation.py
+        -r $mode.aggregate
+        '$mode.gtffile'
+        '$flattened_gtf_out'
+#elif $mode.mode_select == "count":
+    dexseq_count.py
+        -f bam
+        -p $mode.paired
+        -s $mode.stranded
+        -a $mode.qual
+        -r $mode.order
+        $mode.flattened_gtf_in
+        '$mode.bamfile'
+        '$counts_file'
+#end if
+    ]]></command>
     <inputs>
         <conditional name="mode">
             <param name="mode_select" type="select" label="Mode of operation">
@@ -76,33 +76,31 @@
             <param name="mode_select" value="prepare" />
             <param name="gtffile" ftype="gff" value="original.gtf"/>
             <param name="aggregate" value="True"/>
-            <output name="flattened_gtf_out" file="flattened.gtf" ftype="gtf"/>
+            <output name="flattened_gtf_out" ftype="gtf" compare="sim_size" file="flattened.gtf"/>
         </test>
     </tests>
 
-    <help>
-    <![CDATA[
+    <help><![CDATA[
 .. class:: infomark
 
 **What it does**
 
-The main goal of this tol is to count the number of reads/fragments per exon of each gene in RNA-seq sample. In addition it also prepares your annotation gtf file compatible for counting.
+The main goal of this tool is to count the number of reads/fragments per exon of each gene in RNA-seq samples. In addition, it also prepares your annotation GTF file, making it compatible for counting.
 
 
 **Inputs**
 
-Mode-preprare: Takes a normal gtf file as input. For example from ensembl database.
-Mode-count: Inputs are flattened gtf file and BAM file. The flattened gtf file can be generated from 'prepare' mode of this tool.
+Mode-preprare: Takes a normal gtf file as input. For example from Ensembl database.
+Mode-count: Inputs are flattened GTF file and BAM file. The flattened GTF file can be generated from 'prepare' mode of this tool.
 
 **Output**
 
-Mode-preprare: Flattened gtf file that contains only exons with corresponding gene ids from given gtf file. Sometimes two or more genes sharing an exon will be merged into an 'aggregate gene' if the aggregate option was used.
-Mode-count: Two column tab-delimeted file with exon ids and their read counts.
+Mode-prepare: Flattened GTF file that contains only exons with corresponding gene ids from given GTF file. Sometimes two or more genes sharing an exon will be merged into an 'aggregate gene' if the aggregate option was used.
+Mode-count: Two column tab-delimited file with exon ids and their read counts.
 
 .. _DEXSeq: http://master.bioconductor.org/packages/release/bioc/html/DEXSeq.html
 
-    ]]>
-    </help>
+    ]]></help>
     <citations>
         <citation type="doi">10.1101/gr.133744.111</citation>
     </citations>
b
diff -r f1c406f9554c -r 6e8b61c54ff3 macros.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/macros.xml Sun Jan 28 04:04:39 2018 -0500
b
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<macros>
+    <token name="@VERSION@">1.24.0</token>
+    <xml name="requirements">
+        <requirements>
+            <requirement type="package" version="@VERSION@">bioconductor-dexseq</requirement>
+            <yield />
+        </requirements>
+    </xml>
+    <xml name="citations">
+        <citations>
+            <citation type="doi">10.1101/gr.133744.111</citation>
+        </citations>
+    </xml>
+</macros>
\ No newline at end of file
b
diff -r f1c406f9554c -r 6e8b61c54ff3 test-data/dexseq_result.tabular
--- a/test-data/dexseq_result.tabular Sun Jan 29 06:59:35 2017 -0500
+++ b/test-data/dexseq_result.tabular Sun Jan 28 04:04:39 2018 -0500
b
b'@@ -1,183 +1,214 @@\n-FBgn0000064:E005\tFBgn0000064\tE005\t859.822533198768\t0.00400580335097871\t103.648404274913\t3.11196699769697e-23\t5.44594224596969e-21\t27.5051135091719\t27.9888903359156\t0.0251544333390813\t3R\t22082655\t22082854\t200\t-\t746\t952\t1227\t542\t790\t802\t722\tFBtr0085000, FBtr0085001, FBtr0084995, FBtr0084994, FBtr0306657, FBtr0114544, FBtr0310661, FBtr0310660, FBtr0084999\n-FBgn0000042:E001\tFBgn0000042\tE001\t963.266257907235\t0.0494674041791383\t58.6864023046738\t1.80471928079693e-13\t1.57912937069731e-11\t29.2361793929567\t27.8104974337299\t-0.0721252413332429\tX\t5794894\t5795046\t153\t+\t3322\t262\t275\t1633\t3139\t244\t129\tFBtr0100662, FBtr0100663, FBtr0070822\n-FBgn0000064:E002\tFBgn0000064\tE002\t7.3266084748515\t0.0174415205517328\t52.6891313145547\t3.61993278740899e-12\t2.11162745932191e-10\t4.57344268891687\t4.36382559042999\t-0.0676871299306827\t3R\t22080926\t22081153\t228\t-\t0\t7\t12\t0\t0\t10\t12\tFBtr0310660, FBtr0084995, FBtr0084994, FBtr0084999\n-FBgn0000084:E003\tFBgn0000084\tE003\t12.7120572355022\t0.0837118156540486\t50.7217207682862\t9.68095672648681e-12\t4.23541856783798e-10\t6.0094928632898\t6.08050302516378\t0.0169474311496155\tX\t20066074\t20066255\t182\t-\t0\t16\t13\t0\t0\t29\t11\tFBtr0070025, FBtr0301931\n-FBgn0000042:E005\tFBgn0000042\tE005\t33.8277404051372\t0.00974672760676001\t34.3730215558909\t3.43552573377072e-08\t1.20243400681975e-06\t9.60659972691163\t11.2480627165693\t0.227578761693847\tX\t5798498\t5798821\t324\t+\t119\t20\t29\t45\t52\t14\t8\tFBtr0100662, FBtr0070823\n-FBgn0000032:E005\tFBgn0000032\tE005\t50.5080907808574\t0.00563866250172629\t33.6728457313117\t4.87567169377265e-08\t1.42207091068369e-06\t11.2003987427418\t11.7345634802096\t0.0672140810963772\t3R\t25818551\t25818649\t99\t-\t42\t53\t56\t38\t55\t45\t53\tFBtr0085609, FBtr0085610\n-FBgn0000117:E003\tFBgn0000117\tE003\t651.648249450539\t0.00646832336464667\t32.2394513365441\t9.98371310442968e-08\t2.49592827610742e-06\t25.6842059292453\t26.4526242482609\t0.0425293818432292\tX\t1788541\t1788813\t273\t-\t676\t728\t799\t493\t606\t574\t569\tFBtr0089990, FBtr0089991, FBtr0089992, FBtr0332583, FBtr0089989, FBtr0089988\n-FBgn0000042:E003\tFBgn0000042\tE003\t37923.6657937205\t0.0382188253738751\t28.9809820787994\t5.09166358707019e-07\t9.9004569748587e-06\t51.8034875214762\t51.7296029759846\t-0.0020591075753989\tX\t5796723\t5798206\t1484\t+\t53623\t37301\t41337\t47230\t50144\t22833\t26327\tFBtr0100662, FBtr0100663, FBtr0070822, FBtr0070823\n-FBgn0000117:E004\tFBgn0000117\tE004\t566.705805129229\t0.00396420686097515\t29.062938884796\t4.88723257919492e-07\t9.9004569748587e-06\t25.3467671419344\t24.9167412697074\t-0.0246863519994665\tX\t1788874\t1789074\t201\t-\t541\t507\t690\t417\t761\t498\t535\tFBtr0089990, FBtr0089991, FBtr0089992, FBtr0332583, FBtr0089989, FBtr0089988\n-FBgn0000084:E006\tFBgn0000084\tE006\t59.8440945905321\t0.0203559407131398\t22.0440165999181\t1.6338140100348e-05\t0.000285917451756091\t12.8331207213348\t12.5225760471869\t-0.0353406706853485\tX\t20067507\t20067552\t46\t-\t132\t23\t34\t71\t150\t35\t46\tFBtr0070025\n-FBgn0000042:E004\tFBgn0000042\tE004\t2902.21264539337\t0.0406433600957287\t19.0532609703125\t7.28847971089997e-05\t0.00115953086309772\t36.1678574007083\t34.6381912225652\t-0.06234453895514\tX\t5798207\t5798497\t291\t+\t7007\t1635\t1666\t3678\t8835\t1202\t1091\tFBtr0100662, FBtr0100663, FBtr0070823\n-FBgn0000017:E004\tFBgn0000017\tE004\t118.685044393895\t0.009449205970161\t18.6151588688678\t9.07339069495662e-05\t0.00132320280968117\t15.9518565653778\t15.5132175490521\t-0.0402264002183915\t3L\t16619373\t16619627\t255\t-\t103\t108\t87\t107\t162\t144\t104\tFBtr0330133, FBtr0330132, FBtr0330131, FBtr0330130\n-FBgn0000140:E002\tFBgn0000140\tE002\t24.0938527740886\t0.0069964414120799\t18.2356967741571\t0.000109690434972442\t0.00147660200924441\t8.83210929556324\t7.9081263929815\t-0.159422095913981\t3R\t20579850\t20580026\t177\t+\t19\t23\t22\t24\t32\t25\t21\tFBtr0084692\n-FBgn0000064:E011\tFBgn0000064\tE011\t121.014747579775\t0.0162642835242919\t17.7465902170453\t0.000140080246746098\t0.00175100308432622\t17.4845083643665\t14.7073531559126\t-0.249539598513264\t3R\t22086876\t22086879\t4\t-\t154\t77\t97\t210\t219\t76\t86\tFBtr0085001\n-FBgn0000117:E001\tFBgn0000117\tE001\t1110.87821042994\t0.00687680447260985\t17.5318496824093\t0'..b'NA\t2L\t12282514\t12282562\t49\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0300567, FBtr0331648, FBtr0331646, FBtr0331647, FBtr0331644, FBtr0331645, FBtr0080344, FBtr0080345, FBtr0331998\n-FBgn0000114:E011\tFBgn0000114\tE011\t0.0883366573889214\t14\t0.0422451536000494\t0.979098942398376\tNA\t0.901165948893395\t0.0127751610731135\t-6.14037941516088\t2L\t12288905\t12289344\t440\t+\t0\t0\t0\t0\t1\t0\t0\tFBtr0080347\n-FBgn0000114:E012\tFBgn0000114\tE012\t0.0933261680585749\t14\t0.0165742552848158\t0.991747115940935\tNA\t0.0161636584595612\t0.822669226222095\t5.66948679957666\t2L\t12298568\t12298749\t182\t+\t1\t0\t0\t0\t0\t0\t0\tFBtr0300567, FBtr0331648, FBtr0331646, FBtr0331647, FBtr0331644, FBtr0331645, FBtr0080347, FBtr0080344, FBtr0080345, FBtr0331998\n FBgn0000114:E013\tFBgn0000114\tE013\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t12298814\t12299111\t298\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0300567, FBtr0331648, FBtr0331646, FBtr0331647, FBtr0331644, FBtr0331645, FBtr0080347, FBtr0080344, FBtr0080345, FBtr0331998\n-FBgn0000114:E014\tFBgn0000114\tE014\t0.0883366573889214\t14\t0.0422451536000494\t0.979098942398376\tNA\t0.901165948893395\t0.0127751610731135\t-6.14037941516088\t2L\t12299188\t12299394\t207\t+\t0\t0\t0\t0\t1\t0\t0\tFBtr0300567, FBtr0331648, FBtr0331646, FBtr0331647, FBtr0331644, FBtr0331645, FBtr0080347, FBtr0080344, FBtr0080345, FBtr0331998\n-FBgn0000114:E015\tFBgn0000114\tE015\t0.0883366573889214\t14\t0.0422451536000494\t0.979098942398376\tNA\t0.901165948893395\t0.0127751610731135\t-6.14037941516088\t2L\t12300361\t12300396\t36\t+\t0\t0\t0\t0\t1\t0\t0\tFBtr0331644\n FBgn0000114:E016\tFBgn0000114\tE016\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t12300610\t12300621\t12\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0331644\n FBgn0000114:E017\tFBgn0000114\tE017\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t12304446\t12304595\t150\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0300567, FBtr0331648, FBtr0331646, FBtr0331647, FBtr0331644, FBtr0331645, FBtr0080347, FBtr0080344, FBtr0080345, FBtr0331998\n FBgn0000114:E018\tFBgn0000114\tE018\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t12310682\t12311093\t412\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0300567, FBtr0331648, FBtr0331646, FBtr0331647, FBtr0331644, FBtr0331645, FBtr0080347, FBtr0080344, FBtr0080345, FBtr0331998\n FBgn0000114:E019\tFBgn0000114\tE019\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t12311094\t12311104\t11\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0300567, FBtr0331648, FBtr0331646, FBtr0331645, FBtr0080347, FBtr0331998\n-FBgn0000116:E002\tFBgn0000116\tE002\t0.0883366573889214\t0.649506832951611\t0.955102166349974\t0.620300597862845\tNA\t1.06977392668418\t0.0168077984590731\t-5.99203136858692\t3L\t9044230\t9044817\t588\t-\t0\t0\t0\t0\t1\t0\t0\tFBtr0331550, FBtr0076546\n-FBgn0000116:E004\tFBgn0000116\tE004\t0.15316821713762\t0.43977187338658\t0.328021702700227\t0.848732811933342\tNA\t0.0232213523500242\t0.90648447279086\t5.2867584097007\t3L\t9046620\t9046661\t42\t-\t0\t0\t1\t0\t0\t0\t0\tFBtr0331550\n-FBgn0000116:E006\tFBgn0000116\tE006\t0.15316821713762\t0.43977187338658\t0.328021702700227\t0.848732811933342\tNA\t0.0232213523500242\t0.90648447279086\t5.2867584097007\t3L\t9055007\t9055567\t561\t-\t0\t0\t1\t0\t0\t0\t0\tFBtr0076543, FBtr0076544\n FBgn0000116:E007\tFBgn0000116\tE007\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t3L\t9055912\t9056048\t137\t-\t0\t0\t0\t0\t0\t0\t0\tFBtr0076544\n-FBgn0000116:E008\tFBgn0000116\tE008\t0.205235479273134\t0.353436872439287\t1.98242161309956\t0.371127055796381\tNA\t1.12162424681281\t0.0168071427941747\t-6.06037114417562\t3L\t9057564\t9057617\t54\t-\t0\t0\t0\t0\t0\t1\t0\tFBtr0112791, FBtr0076543\n FBgn0000120:E001\tFBgn0000120\tE001\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t18078269\t18078496\t228\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0307350, FBtr0081030\n FBgn0000120:E002\tFBgn0000120\tE002\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t18078916\t18079723\t808\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0307350, FBtr0081030\n FBgn0000120:E003\tFBgn0000120\tE003\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t18079957\t18080086\t130\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0307350, FBtr0081030\n FBgn0000120:E004\tFBgn0000120\tE004\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t18080147\t18080415\t269\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0307350, FBtr0081030\n FBgn0000137:E001\tFBgn0000137\tE001\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\tX\t354533\t357209\t2677\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0070075\n-FBgn0000139:E001\tFBgn0000139\tE001\t0.187795396756122\t0.374758883334333\t0.855539171390518\t0.651961618776603\tNA\t0.887149388069345\t0.0477444815800361\t-4.21577116420462\t3R\t20475810\t20476066\t257\t+\t0\t0\t0\t0\t0\t0\t1\tFBtr0084660\n'
b
diff -r f1c406f9554c -r 6e8b61c54ff3 test-data/dexseq_result_2fact.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/dexseq_result_2fact.tabular Sun Jan 28 04:04:39 2018 -0500
b
b'@@ -0,0 +1,307 @@\n+FBgn0000042:E005\tFBgn0000042\tE005\t33.8277404051372\t0.00974669544746392\t12.6851918587988\t0.000368562772095343\t0.0770296193679266\t9.60660113871428\t11.248063753255\t0.552857243884021\tX\t5798498\t5798821\t324\t+\t119\t20\t29\t45\t52\t14\t8\tFBtr0100662, FBtr0070823\n+FBgn0000139:E007\tFBgn0000139\tE007\t17.4740062043893\t0.0174768174826308\t10.9795545088389\t0.000921225722996759\t0.0962680880531613\t8.06219042258468\t5.57421805888543\t-1.16397691752144\t3R\t20478032\t20478312\t281\t+\t12\t5\t9\t24\t28\t24\t19\tFBtr0084660, FBtr0084659, FBtr0306171\n+FBgn0000064:E004\tFBgn0000064\tE004\t27.138007646805\t0.0443836931820446\t9.70272381901728\t0.00183995083792701\t0.128183241708915\t7.41146981322546\t10.6361481097095\t1.21002224137722\t3R\t22082196\t22082345\t150\t-\t74\t30\t39\t9\t25\t20\t9\tFBtr0085000, FBtr0114544\n+FBgn0000053:E004\tFBgn0000053\tE004\t6.32535175423168\t0.045626142883598\t9.02161905056228\t0.00266804962459076\t0.139405592884867\t3.09087219098584\t5.79810451815527\t1.88622972793307\t2L\t7018085\t7018148\t64\t-\t13\t7\t15\t0\t3\t3\t4\tFBtr0100353\n+FBgn0000108:E006\tFBgn0000108\tE006\t0.864384408056277\t0.0838775850414772\t8.17622649197865\t0.00424429612727517\t0.177411578120102\t0.0346924384664682\t2.77171489352896\t12.6628857089353\tX\t465164\t465166\t3\t+\t4\t2\t1\t0\t0\t0\t0\tFBtr0307295, FBtr0307293\n+FBgn0000139:E006\tFBgn0000139\tE006\t30.3520375086607\t0.0116274168067176\t7.51778234858958\t0.00610928459168981\t0.212806746610528\t8.82025966787089\t10.4918896523126\t0.593446583668732\t3R\t20477583\t20477963\t381\t+\t44\t29\t34\t39\t45\t15\t21\tFBtr0084660, FBtr0084659, FBtr0306171\n+FBgn0000064:E011\tFBgn0000064\tE011\t121.014747579775\t0.0162642807531925\t7.07528109396534\t0.00781545601050697\t0.233347186599423\t17.4845079060715\t14.7073531946849\t-0.740648902697183\t3R\t22086876\t22086879\t4\t-\t154\t77\t97\t210\t219\t76\t86\tFBtr0085001\n+FBgn0000100:E001\tFBgn0000100\tE001\t6.87698735532182\t0.0164557487090339\t5.56698102594524\t0.0183022903586644\t0.455054200649313\t4.47698551662587\t5.57993111812181\t0.668156167650007\t3L\t22068967\t22069026\t60\t+\t16\t5\t9\t9\t9\t3\t3\tFBtr0334113\n+FBgn0000139:E004\tFBgn0000139\tE004\t6.44700256941908\t0.0176034247520841\t5.44756371003484\t0.0195956354346594\t0.455054200649313\t4.02487788954067\t5.66490257045217\t1.03311218729944\t3R\t20476902\t20476973\t72\t+\t14\t7\t6\t3\t10\t4\t5\tFBtr0306171\n+FBgn0000097:E003\tFBgn0000097\tE003\t558.924889184516\t0.00477031371166494\t5.18854635674609\t0.0227362260928025\t0.475187125339572\t25.4143298642324\t24.7289690820004\t-0.161815950506053\t2L\t2157427\t2158405\t979\t-\t725\t462\t477\t524\t1052\t491\t412\tFBtr0330658, FBtr0330660, FBtr0077850, FBtr0077851, FBtr0330659\n+FBgn0000053:E006\tFBgn0000053\tE006\t247.836023771802\t0.00263067838891117\t4.96081239277488\t0.0259280236472272\t0.492632449297317\t19.8531147771976\t20.6037362803832\t0.185238337954743\t2L\t7018431\t7019080\t650\t-\t368\t279\t279\t214\t298\t171\t181\tFBtr0079431, FBtr0100353\n+FBgn0000117:E004\tFBgn0000117\tE004\t566.705805129229\t0.00396419762812803\t4.3269149915028\t0.0375141798307434\t0.60531370082316\t25.3467633109321\t24.9167377621243\t-0.101492330264968\tX\t1788874\t1789074\t201\t-\t541\t507\t690\t417\t761\t498\t535\tFBtr0089990, FBtr0089991, FBtr0089992, FBtr0332583, FBtr0089989, FBtr0089988\n+FBgn0000140:E002\tFBgn0000140\tE002\t24.0938527740886\t0.00699641461471429\t4.32071532946176\t0.0376510914387611\t0.60531370082316\t8.83211019161567\t7.90812729421176\t-0.363661417457868\t3R\t20579850\t20580026\t177\t+\t19\t23\t22\t24\t32\t25\t21\tFBtr0084692\n+FBgn0000117:E008\tFBgn0000117\tE008\t20.8971168975998\t0.00873563678020118\t3.92015295935667\t0.0477105390847511\t0.702500023104495\t7.84395657324889\t8.88007008822825\t0.408188100799843\tX\t1793414\t1793431\t18\t-\t53\t16\t19\t22\t31\t11\t13\tFBtr0089990, FBtr0089989, FBtr0332583\n+FBgn0000121:E001\tFBgn0000121\tE001\t1.0078404227901\t0.086138824120089\t3.8274806904699\t0.0504186619452987\t0.702500023104495\t1.39252038969136\t2.69308300050152\t1.91892798799308\t3L\t8640361\t8640745\t385\t-\t4\t0\t1\t0\t1\t1\t1\tFBtr0076599\n+FBgn0000017:E003\tFBgn0000017\tE003\t68.6033909674033\t0.0107581511675232\t3.61438663271193\t0.0572818407907794\t0.704229689721935\t13.3760424870186\t12.3288130022102\t-0.310469909507284\t3L\t16616737\t16618374\t1638\t-\t60'..b'3910327521687\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2R\t13012267\t13013887\t1621\t+\t10\t11\t11\t24\t30\t16\t15\tFBtr0086983\n+FBgn0000079:E001\tFBgn0000079\tE001\t84.9770030139345\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2R\t13006211\t13007808\t1598\t-\t44\t51\t53\t78\t132\t115\t99\tFBtr0087004\n+FBgn0000084:E002\tFBgn0000084\tE002\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\tX\t20065962\t20065964\t3\t-\t0\t0\t0\t0\t0\t0\t0\tFBtr0301931\n+FBgn0000099:E001\tFBgn0000099\tE001\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2R\t1593707\t1594728\t1022\t-\t0\t0\t0\t0\t0\t0\t0\tFBtr0300505, FBtr0086058, FBtr0086059\n+FBgn0000099:E005\tFBgn0000099\tE005\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2R\t1596431\t1596604\t174\t-\t0\t0\t0\t0\t0\t0\t0\tFBtr0300505, FBtr0086058, FBtr0086059, FBtr0300504\n+FBgn0000099:E006\tFBgn0000099\tE006\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2R\t1596664\t1596797\t134\t-\t0\t0\t0\t0\t0\t0\t0\tFBtr0086059\n+FBgn0000099:E008\tFBgn0000099\tE008\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2R\t1604294\t1604554\t261\t-\t0\t0\t0\t0\t0\t0\t0\tFBtr0300505\n+FBgn0000099:E009\tFBgn0000099\tE009\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2R\t1604787\t1605003\t217\t-\t0\t0\t0\t0\t0\t0\t0\tFBtr0086058, FBtr0300504\n+FBgn0000099:E010\tFBgn0000099\tE010\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2R\t1605060\t1605268\t209\t-\t0\t0\t0\t0\t0\t0\t0\tFBtr0086058, FBtr0300504\n+FBgn0000099:E011\tFBgn0000099\tE011\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2R\t1605269\t1605271\t3\t-\t0\t0\t0\t0\t0\t0\t0\tFBtr0086058\n+FBgn0000099:E012\tFBgn0000099\tE012\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2R\t1613326\t1614335\t1010\t-\t0\t0\t0\t0\t0\t0\t0\tFBtr0086058, FBtr0300504\n+FBgn0000114:E001\tFBgn0000114\tE001\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t12175004\t12175420\t417\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0331998\n+FBgn0000114:E003\tFBgn0000114\tE003\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t12205843\t12206130\t288\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0331646, FBtr0080344\n+FBgn0000114:E004\tFBgn0000114\tE004\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t12222197\t12222337\t141\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0331647, FBtr0331645\n+FBgn0000114:E007\tFBgn0000114\tE007\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t12271591\t12272084\t494\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0300567, FBtr0331648, FBtr0331646, FBtr0331647, FBtr0331644, FBtr0331645, FBtr0080344, FBtr0080345, FBtr0331998\n+FBgn0000114:E008\tFBgn0000114\tE008\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t12278837\t12278919\t83\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0300567, FBtr0331648, FBtr0331646, FBtr0331647, FBtr0331644, FBtr0331645, FBtr0080344, FBtr0080345, FBtr0331998\n+FBgn0000114:E009\tFBgn0000114\tE009\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t12282514\t12282562\t49\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0300567, FBtr0331648, FBtr0331646, FBtr0331647, FBtr0331644, FBtr0331645, FBtr0080344, FBtr0080345, FBtr0331998\n+FBgn0000114:E013\tFBgn0000114\tE013\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t12298814\t12299111\t298\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0300567, FBtr0331648, FBtr0331646, FBtr0331647, FBtr0331644, FBtr0331645, FBtr0080347, FBtr0080344, FBtr0080345, FBtr0331998\n+FBgn0000114:E016\tFBgn0000114\tE016\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t12300610\t12300621\t12\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0331644\n+FBgn0000114:E017\tFBgn0000114\tE017\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t12304446\t12304595\t150\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0300567, FBtr0331648, FBtr0331646, FBtr0331647, FBtr0331644, FBtr0331645, FBtr0080347, FBtr0080344, FBtr0080345, FBtr0331998\n+FBgn0000114:E018\tFBgn0000114\tE018\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t12310682\t12311093\t412\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0300567, FBtr0331648, FBtr0331646, FBtr0331647, FBtr0331644, FBtr0331645, FBtr0080347, FBtr0080344, FBtr0080345, FBtr0331998\n+FBgn0000114:E019\tFBgn0000114\tE019\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t12311094\t12311104\t11\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0300567, FBtr0331648, FBtr0331646, FBtr0331645, FBtr0080347, FBtr0331998\n+FBgn0000116:E007\tFBgn0000116\tE007\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t3L\t9055912\t9056048\t137\t-\t0\t0\t0\t0\t0\t0\t0\tFBtr0076544\n+FBgn0000120:E001\tFBgn0000120\tE001\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t18078269\t18078496\t228\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0307350, FBtr0081030\n+FBgn0000120:E002\tFBgn0000120\tE002\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t18078916\t18079723\t808\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0307350, FBtr0081030\n+FBgn0000120:E003\tFBgn0000120\tE003\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t18079957\t18080086\t130\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0307350, FBtr0081030\n+FBgn0000120:E004\tFBgn0000120\tE004\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\t2L\t18080147\t18080415\t269\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0307350, FBtr0081030\n+FBgn0000137:E001\tFBgn0000137\tE001\t0\tNA\tNA\tNA\tNA\tNA\tNA\tNA\tX\t354533\t357209\t2677\t+\t0\t0\t0\t0\t0\t0\t0\tFBtr0070075\n'
b
diff -r f1c406f9554c -r 6e8b61c54ff3 test-data/flattened.gtf
--- a/test-data/flattened.gtf Sun Jan 29 06:59:35 2017 -0500
+++ b/test-data/flattened.gtf Sun Jan 28 04:04:39 2018 -0500
b
b'@@ -1,257 +1,257 @@\n 4\tdexseq_prepare_annotation.py\taggregate_gene\t68336\t77667\t.\t-\t.\tgene_id "FBgn0004859"\n-4\tdexseq_prepare_annotation.py\texonic_part\t68336\t71088\t.\t-\t.\ttranscripts "FBtr0308074+FBtr0089178+FBtr0306168"; exonic_part_number "001"; gene_id "FBgn0004859"\n-4\tdexseq_prepare_annotation.py\texonic_part\t71142\t71239\t.\t-\t.\ttranscripts "FBtr0308074+FBtr0089178+FBtr0306168"; exonic_part_number "002"; gene_id "FBgn0004859"\n-4\tdexseq_prepare_annotation.py\texonic_part\t71240\t71306\t.\t-\t.\ttranscripts "FBtr0306168+FBtr0089178"; exonic_part_number "003"; gene_id "FBgn0004859"\n-4\tdexseq_prepare_annotation.py\texonic_part\t71371\t71883\t.\t-\t.\ttranscripts "FBtr0308074+FBtr0089178+FBtr0306168"; exonic_part_number "004"; gene_id "FBgn0004859"\n-4\tdexseq_prepare_annotation.py\texonic_part\t71940\t72580\t.\t-\t.\ttranscripts "FBtr0308074+FBtr0089178+FBtr0306168"; exonic_part_number "005"; gene_id "FBgn0004859"\n-4\tdexseq_prepare_annotation.py\texonic_part\t72643\t73010\t.\t-\t.\ttranscripts "FBtr0308074+FBtr0089178+FBtr0306168"; exonic_part_number "006"; gene_id "FBgn0004859"\n-4\tdexseq_prepare_annotation.py\texonic_part\t76457\t76916\t.\t-\t.\ttranscripts "FBtr0308074+FBtr0089178"; exonic_part_number "007"; gene_id "FBgn0004859"\n-4\tdexseq_prepare_annotation.py\texonic_part\t76917\t76957\t.\t-\t.\ttranscripts "FBtr0308074+FBtr0089178+FBtr0306168"; exonic_part_number "008"; gene_id "FBgn0004859"\n-4\tdexseq_prepare_annotation.py\texonic_part\t76958\t77667\t.\t-\t.\ttranscripts "FBtr0306168"; exonic_part_number "009"; gene_id "FBgn0004859"\n+4\tdexseq_prepare_annotation.py\texonic_part\t68336\t71088\t.\t-\t.\ttranscripts "FBtr0308074+FBtr0089178+FBtr0306168"; gene_id "FBgn0004859"; exonic_part_number "001"\n+4\tdexseq_prepare_annotation.py\texonic_part\t71142\t71239\t.\t-\t.\ttranscripts "FBtr0308074+FBtr0089178+FBtr0306168"; gene_id "FBgn0004859"; exonic_part_number "002"\n+4\tdexseq_prepare_annotation.py\texonic_part\t71240\t71306\t.\t-\t.\ttranscripts "FBtr0306168+FBtr0089178"; gene_id "FBgn0004859"; exonic_part_number "003"\n+4\tdexseq_prepare_annotation.py\texonic_part\t71371\t71883\t.\t-\t.\ttranscripts "FBtr0308074+FBtr0089178+FBtr0306168"; gene_id "FBgn0004859"; exonic_part_number "004"\n+4\tdexseq_prepare_annotation.py\texonic_part\t71940\t72580\t.\t-\t.\ttranscripts "FBtr0308074+FBtr0089178+FBtr0306168"; gene_id "FBgn0004859"; exonic_part_number "005"\n+4\tdexseq_prepare_annotation.py\texonic_part\t72643\t73010\t.\t-\t.\ttranscripts "FBtr0308074+FBtr0089178+FBtr0306168"; gene_id "FBgn0004859"; exonic_part_number "006"\n+4\tdexseq_prepare_annotation.py\texonic_part\t76457\t76916\t.\t-\t.\ttranscripts "FBtr0308074+FBtr0089178"; gene_id "FBgn0004859"; exonic_part_number "007"\n+4\tdexseq_prepare_annotation.py\texonic_part\t76917\t76957\t.\t-\t.\ttranscripts "FBtr0308074+FBtr0089178+FBtr0306168"; gene_id "FBgn0004859"; exonic_part_number "008"\n+4\tdexseq_prepare_annotation.py\texonic_part\t76958\t77667\t.\t-\t.\ttranscripts "FBtr0306168"; gene_id "FBgn0004859"; exonic_part_number "009"\n 4\tdexseq_prepare_annotation.py\taggregate_gene\t137015\t150380\t.\t-\t.\tgene_id "FBgn0011747"\n-4\tdexseq_prepare_annotation.py\texonic_part\t137015\t137256\t.\t-\t.\ttranscripts "FBtr0089172+FBtr0089173+FBtr0089171"; exonic_part_number "001"; gene_id "FBgn0011747"\n-4\tdexseq_prepare_annotation.py\texonic_part\t137312\t139127\t.\t-\t.\ttranscripts "FBtr0089172+FBtr0089173+FBtr0089171"; exonic_part_number "002"; gene_id "FBgn0011747"\n-4\tdexseq_prepare_annotation.py\texonic_part\t139181\t139405\t.\t-\t.\ttranscripts "FBtr0089172+FBtr0089173+FBtr0089171"; exonic_part_number "003"; gene_id "FBgn0011747"\n-4\tdexseq_prepare_annotation.py\texonic_part\t139464\t139557\t.\t-\t.\ttranscripts "FBtr0089172+FBtr0089173+FBtr0089171"; exonic_part_number "004"; gene_id "FBgn0011747"\n-4\tdexseq_prepare_annotation.py\texonic_part\t140514\t140838\t.\t-\t.\ttranscripts "FBtr0089172+FBtr0089173+FBtr0089171"; exonic_part_number "005"; gene_id "FBgn0011747"\n-4\tdexseq_prepare_annotation.py\texonic_part\t141484\t142425\t.\t-\t.\ttranscripts "FBtr0089172+FBtr0089173+FBtr0089171"; exonic_part_number "006"; gene_id "FBgn0011747"\n-4\tdexseq_prepare_annot'..b'epare_annotation.py\texonic_part\t6402\t8124\t.\t-\t.\ttranscripts "FBtr0100877"; gene_id "FBgn0013684"; exonic_part_number "001"\n dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\taggregate_gene\t8140\t8205\t.\t-\t.\tgene_id "FBgn0013695"\n-dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t8140\t8205\t.\t-\t.\ttranscripts "FBtr0100878"; exonic_part_number "001"; gene_id "FBgn0013695"\n+dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t8140\t8205\t.\t-\t.\ttranscripts "FBtr0100878"; gene_id "FBgn0013695"; exonic_part_number "001"\n dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\taggregate_gene\t9837\t9902\t.\t+\t.\tgene_id "FBgn0013707"\n-dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t9837\t9902\t.\t+\t.\ttranscripts "FBtr0100881"; exonic_part_number "001"; gene_id "FBgn0013707"\n+dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t9837\t9902\t.\t+\t.\ttranscripts "FBtr0100881"; gene_id "FBgn0013707"; exonic_part_number "001"\n dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\taggregate_gene\t9903\t9963\t.\t-\t.\tgene_id "FBgn0013702"\n-dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t9903\t9963\t.\t-\t.\ttranscripts "FBtr0100882"; exonic_part_number "001"; gene_id "FBgn0013702"\n+dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t9903\t9963\t.\t-\t.\ttranscripts "FBtr0100882"; gene_id "FBgn0013702"; exonic_part_number "001"\n dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\taggregate_gene\t9970\t10494\t.\t+\t.\tgene_id "FBgn0013685"\n-dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t9970\t10494\t.\t+\t.\ttranscripts "FBtr0100883"; exonic_part_number "001"; gene_id "FBgn0013685"\n+dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t9970\t10494\t.\t+\t.\ttranscripts "FBtr0100883"; gene_id "FBgn0013685"; exonic_part_number "001"\n dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\taggregate_gene\t10498\t11634\t.\t+\t.\tgene_id "FBgn0013678"\n-dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t10498\t11634\t.\t+\t.\ttranscripts "FBtr0100884"; exonic_part_number "001"; gene_id "FBgn0013678"\n+dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t10498\t11634\t.\t+\t.\ttranscripts "FBtr0100884"; gene_id "FBgn0013678"; exonic_part_number "001"\n dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\taggregate_gene\t11637\t11702\t.\t+\t.\tgene_id "FBgn0013706"\n-dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t11637\t11702\t.\t+\t.\ttranscripts "FBtr0100885"; exonic_part_number "001"; gene_id "FBgn0013706"\n+dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t11637\t11702\t.\t+\t.\ttranscripts "FBtr0100885"; gene_id "FBgn0013706"; exonic_part_number "001"\n dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\taggregate_gene\t11720\t12658\t.\t-\t.\tgene_id "FBgn0013679"\n-dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t11720\t12658\t.\t-\t.\ttranscripts "FBtr0100886"; exonic_part_number "001"; gene_id "FBgn0013679"\n+dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t11720\t12658\t.\t-\t.\ttranscripts "FBtr0100886"; gene_id "FBgn0013679"; exonic_part_number "001"\n dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\taggregate_gene\t12669\t12733\t.\t-\t.\tgene_id "FBgn0013698"\n-dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t12669\t12733\t.\t-\t.\ttranscripts "FBtr0100887"; exonic_part_number "001"; gene_id "FBgn0013698"\n+dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t12669\t12733\t.\t-\t.\ttranscripts "FBtr0100887"; gene_id "FBgn0013698"; exonic_part_number "001"\n dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\taggregate_gene\t14131\t14916\t.\t-\t.\tgene_id "FBgn0013688"\n-dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t14131\t14916\t.\t-\t.\ttranscripts "FBtr0100890"; exonic_part_number "001"; gene_id "FBgn0013688"\n+dmel_mitochondrion_genome\tdexseq_prepare_annotation.py\texonic_part\t14131\t14916\t.\t-\t.\ttranscripts "FBtr0100890"; gene_id "FBgn0013688"; exonic_part_number "001"\n'