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

Changeset 0:206a71a69161 (2019-12-04)
Next changeset 1:2c338211927c (2021-09-23)
Commit message:
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/tximport commit 66c3b86403faa115751332ea8e0383e26b9ee599"
added:
test-data/Araport11_subset.gff3
test-data/cached_locally/tx2gene.loc
test-data/custom_sample.tab
test-data/salmon_sample1.tab
test-data/salmon_sample2.tab
test-data/tx2gene.tab
tool-data/tx2gene.loc.sample
tool_data_table_conf.xml.sample
tool_data_table_conf.xml.test
tximport.R
tximport.xml
b
diff -r 000000000000 -r 206a71a69161 test-data/Araport11_subset.gff3
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/Araport11_subset.gff3 Wed Dec 04 05:57:26 2019 -0500
b
b'@@ -0,0 +1,106 @@\n+Chr1\tAraport11\tgene\t3631\t5899\t.\t+\t.\tID=AT1G01010;Alias=ANAC001,NAC domain containing protein 1;symbol=NAC001;tid=AT1G01010.1;Name=AT1G01010;gene_id=AT1G01010\n+Chr1\tAraport11\tmRNA\t3631\t5899\t.\t+\t.\tID=AT1G01010.1;Parent=AT1G01010;Name=AT1G01010.1;gene_id=AT1G01010\n+Chr1\tAraport11\texon\t3631\t3913\t.\t+\t.\tID=AT1G01010.1:exon:1;Parent=AT1G01010.1;Name=AT1G01010;gene_id=AT1G01010\n+Chr1\tAraport11\tfive_prime_UTR\t3631\t3759\t.\t+\t.\tID=AT1G01010.1:five_prime_UTR;Parent=AT1G01010.1;Name=AT1G01010;gene_id=AT1G01010\n+Chr1\tAraport11\texon\t3996\t4276\t.\t+\t.\tID=AT1G01010.1:exon:2;Parent=AT1G01010.1;Name=AT1G01010;gene_id=AT1G01010\n+Chr1\tAraport11\texon\t4486\t4605\t.\t+\t.\tID=AT1G01010.1:exon:3;Parent=AT1G01010.1;Name=AT1G01010;gene_id=AT1G01010\n+Chr1\tAraport11\texon\t4706\t5095\t.\t+\t.\tID=AT1G01010.1:exon:4;Parent=AT1G01010.1;Name=AT1G01010;gene_id=AT1G01010\n+Chr1\tAraport11\texon\t5174\t5326\t.\t+\t.\tID=AT1G01010.1:exon:5;Parent=AT1G01010.1;Name=AT1G01010;gene_id=AT1G01010\n+Chr1\tAraport11\texon\t5439\t5899\t.\t+\t.\tID=AT1G01010.1:exon:6;Parent=AT1G01010.1;Name=AT1G01010;gene_id=AT1G01010\n+Chr1\tAraport11\tfive_prime_UTR\t3759\t5439\t.\t+\t.\tID=AT1G01010.1:five_prime_UTR;Parent=AT1G01010.1;Name=AT1G01010;gene_id=AT1G01010\n+Chr1\tAraport11\tthree_prime_UTR\t5631\t5899\t.\t+\t.\tID=AT1G01010.1:three_prime_UTR;Parent=AT1G01010.1;Name=AT1G01010;gene_id=AT1G01010\n+Chr1\tAraport11\tgene\t6788\t9130\t.\t-\t.\tID=AT1G01020;symbol=ARV1;tid=AT1G01020.5;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\tmRNA\t6788\t9130\t.\t-\t.\tID=AT1G01020.5;Parent=AT1G01020;Name=AT1G01020.5;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t6788\t7069\t.\t-\t.\tID=AT1G01020.5:exon:1;Parent=AT1G01020.5;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\tfive_prime_UTR\t6788\t6914\t.\t-\t.\tID=AT1G01020.5:five_prime_UTR;Parent=AT1G01020.5;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t7157\t7232\t.\t-\t.\tID=AT1G01020.5:exon:2;Parent=AT1G01020.5;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t7384\t7450\t.\t-\t.\tID=AT1G01020.5:exon:3;Parent=AT1G01020.5;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t7564\t7649\t.\t-\t.\tID=AT1G01020.5:exon:4;Parent=AT1G01020.5;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t7762\t7835\t.\t-\t.\tID=AT1G01020.5:exon:5;Parent=AT1G01020.5;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t7942\t7987\t.\t-\t.\tID=AT1G01020.5:exon:6;Parent=AT1G01020.5;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t8236\t8325\t.\t-\t.\tID=AT1G01020.5:exon:7;Parent=AT1G01020.5;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t8417\t8464\t.\t-\t.\tID=AT1G01020.5:exon:8;Parent=AT1G01020.5;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\tfive_prime_UTR\t6914\t8417\t.\t-\t.\tID=AT1G01020.5:five_prime_UTR;Parent=AT1G01020.5;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\tthree_prime_UTR\t8420\t8464\t.\t-\t.\tID=AT1G01020.5:three_prime_UTR;Parent=AT1G01020.5;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t8594\t9130\t.\t-\t.\tID=AT1G01020.5:exon:9;Parent=AT1G01020.5;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\tthree_prime_UTR\t8594\t9130\t.\t-\t.\tID=AT1G01020.5:three_prime_UTR;Parent=AT1G01020.5;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\tmRNA\t6788\t9130\t.\t-\t.\tID=AT1G01020.4;Parent=AT1G01020;Name=AT1G01020.4;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t6788\t7069\t.\t-\t.\tID=AT1G01020.4:exon:1;Parent=AT1G01020.4;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\tfive_prime_UTR\t6788\t6914\t.\t-\t.\tID=AT1G01020.4:five_prime_UTR;Parent=AT1G01020.4;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t7157\t7232\t.\t-\t.\tID=AT1G01020.4:exon:2;Parent=AT1G01020.4;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t7384\t7450\t.\t-\t.\tID=AT1G01020.4:exon:3;Parent=AT1G01020.4;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t7564\t7649\t.\t-\t.\tID=AT1G01020.4:exon:4;Parent=AT1G01020.4;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t7762\t7835\t.\t-\t.\tID=AT1G01020.4:exon:5;Parent=AT1G01020.4;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t7942\t7987\t.\t-\t.\tID=AT1G01020.4:exon:6;Parent=AT1G01020.4;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t8236\t8464'..b'01020.2;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t7942\t7987\t.\t-\t.\tID=AT1G01020.2:exon:5;Parent=AT1G01020.2;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t8236\t8325\t.\t-\t.\tID=AT1G01020.2:exon:6;Parent=AT1G01020.2;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t8417\t8464\t.\t-\t.\tID=AT1G01020.2:exon:7;Parent=AT1G01020.2;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t8571\t8737\t.\t-\t.\tID=AT1G01020.2:exon:8;Parent=AT1G01020.2;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\tfive_prime_UTR\t7314\t8571\t.\t-\t.\tID=AT1G01020.2:five_prime_UTR;Parent=AT1G01020.2;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\tthree_prime_UTR\t8667\t8737\t.\t-\t.\tID=AT1G01020.2:three_prime_UTR;Parent=AT1G01020.2;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\tmRNA\t6788\t8737\t.\t-\t.\tID=AT1G01020.6;Parent=AT1G01020;Name=AT1G01020.6;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t6788\t7069\t.\t-\t.\tID=AT1G01020.6:exon:1;Parent=AT1G01020.6;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\tfive_prime_UTR\t6788\t7069\t.\t-\t.\tID=AT1G01020.6:five_prime_UTR;Parent=AT1G01020.6;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t7157\t7450\t.\t-\t.\tID=AT1G01020.6:exon:2;Parent=AT1G01020.6;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\tfive_prime_UTR\t7157\t7314\t.\t-\t.\tID=AT1G01020.6:five_prime_UTR;Parent=AT1G01020.6;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t7564\t7649\t.\t-\t.\tID=AT1G01020.6:exon:3;Parent=AT1G01020.6;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t8236\t8325\t.\t-\t.\tID=AT1G01020.6:exon:4;Parent=AT1G01020.6;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t8417\t8464\t.\t-\t.\tID=AT1G01020.6:exon:5;Parent=AT1G01020.6;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\tfive_prime_UTR\t7314\t8417\t.\t-\t.\tID=AT1G01020.6:five_prime_UTR;Parent=AT1G01020.6;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\tthree_prime_UTR\t8420\t8464\t.\t-\t.\tID=AT1G01020.6:three_prime_UTR;Parent=AT1G01020.6;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\texon\t8594\t8737\t.\t-\t.\tID=AT1G01020.6:exon:6;Parent=AT1G01020.6;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\tthree_prime_UTR\t8594\t8737\t.\t-\t.\tID=AT1G01020.6:three_prime_UTR;Parent=AT1G01020.6;Name=AT1G01020;gene_id=AT1G01020\n+Chr1\tAraport11\tgene\t11649\t13714\t.\t-\t.\tID=AT1G01030;symbol=NGA3;full_name=NGATHA3;tid=AT1G01030.1;Name=AT1G01030;gene_id=AT1G01030\n+Chr1\tAraport11\tmRNA\t11649\t13714\t.\t-\t.\tID=AT1G01030.1;Parent=AT1G01030;Name=AT1G01030.1;gene_id=AT1G01030\n+Chr1\tAraport11\texon\t11649\t13173\t.\t-\t.\tID=AT1G01030.1:exon:1;Parent=AT1G01030.1;Name=AT1G01030;gene_id=AT1G01030\n+Chr1\tAraport11\tfive_prime_UTR\t11649\t11863\t.\t-\t.\tID=AT1G01030.1:five_prime_UTR;Parent=AT1G01030.1;Name=AT1G01030;gene_id=AT1G01030\n+Chr1\tAraport11\tthree_prime_UTR\t12941\t13173\t.\t-\t.\tID=AT1G01030.1:three_prime_UTR;Parent=AT1G01030.1;Name=AT1G01030;gene_id=AT1G01030\n+Chr1\tAraport11\texon\t13335\t13714\t.\t-\t.\tID=AT1G01030.1:exon:2;Parent=AT1G01030.1;Name=AT1G01030;gene_id=AT1G01030\n+Chr1\tAraport11\tthree_prime_UTR\t13335\t13714\t.\t-\t.\tID=AT1G01030.1:three_prime_UTR;Parent=AT1G01030.1;Name=AT1G01030;gene_id=AT1G01030\n+Chr1\tAraport11\tmRNA\t11649\t13714\t.\t-\t.\tID=AT1G01030.2;Parent=AT1G01030;Name=AT1G01030.2;gene_id=AT1G01030\n+Chr1\tAraport11\texon\t11649\t12354\t.\t-\t.\tID=AT1G01030.2:exon:1;Parent=AT1G01030.2;Name=AT1G01030;gene_id=AT1G01030\n+Chr1\tAraport11\tfive_prime_UTR\t11649\t11863\t.\t-\t.\tID=AT1G01030.2:five_prime_UTR;Parent=AT1G01030.2;Name=AT1G01030;gene_id=AT1G01030\n+Chr1\tAraport11\texon\t12424\t13173\t.\t-\t.\tID=AT1G01030.2:exon:2;Parent=AT1G01030.2;Name=AT1G01030;gene_id=AT1G01030\n+Chr1\tAraport11\tfive_prime_UTR\t11863\t12424\t.\t-\t.\tID=AT1G01030.2:five_prime_UTR;Parent=AT1G01030.2;Name=AT1G01030;gene_id=AT1G01030\n+Chr1\tAraport11\tthree_prime_UTR\t12941\t13173\t.\t-\t.\tID=AT1G01030.2:three_prime_UTR;Parent=AT1G01030.2;Name=AT1G01030;gene_id=AT1G01030\n+Chr1\tAraport11\texon\t13335\t13714\t.\t-\t.\tID=AT1G01030.2:exon:3;Parent=AT1G01030.2;Name=AT1G01030;gene_id=AT1G01030\n+Chr1\tAraport11\tthree_prime_UTR\t13335\t13714\t.\t-\t.\tID=AT1G01030.2:three_prime_UTR;Parent=AT1G01030.2;Name=AT1G01030;gene_id=AT1G01030\n+\n'
b
diff -r 000000000000 -r 206a71a69161 test-data/cached_locally/tx2gene.loc
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/cached_locally/tx2gene.loc Wed Dec 04 05:57:26 2019 -0500
b
@@ -0,0 +1,5 @@
+#The tx2gene.loc file has this format:
+#
+#<unique_build_id> <dbkey> <display_name> <path_to_tx2gene_file>
+
+Ath_Araport11_subset Ath Arabidopsis thaliana - Araport11 - subset ${__HERE__}/../tx2gene.tab
b
diff -r 000000000000 -r 206a71a69161 test-data/custom_sample.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/custom_sample.tab Wed Dec 04 05:57:26 2019 -0500
b
@@ -0,0 +1,14 @@
+Transcript_id_here Here_goes_the_length Extra_useless_column_1 Abundance_goes_here Extra_useless_column_2 Here_goes_the_counts
+AT1G01010.1 1688 1487.57 4.6817 1 156
+AT1G01020.3 1420 1219.57 1.68167 2 45.9399
+AT1G01020.4 711 510.567 6.65521 3 76.113
+AT1G01020.1 738 537.567 18.1462 4 218.506
+AT1G01020.5 1179 978.567 0.491433 5 10.7721
+AT1G01020.6 617 416.567 0.607591 6 5.66944
+AT1G01020.2 647 446.567 2.63345e-08 7 2.63425e-07
+AT1G03987.1 272 97.3356 0 8 0
+AT1G01030.2 1456 1255.57 0.519509 9 14.6109
+AT1G01030.1 1905 1704.57 0.298284 10 11.3891
+AT1G01040.1 6276 6075.57 1.56643 11 213.178
+AT1G03993.1 788 587.567 0 12 0
+AT1G01040.2 5877 5676.57 4.30834 13 547.822
b
diff -r 000000000000 -r 206a71a69161 test-data/salmon_sample1.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/salmon_sample1.tab Wed Dec 04 05:57:26 2019 -0500
b
@@ -0,0 +1,14 @@
+Name Length EffectiveLength TPM NumReads
+AT1G01010.1 1688 1487.57 4.6817 156
+AT1G01020.3 1420 1219.57 1.68167 45.9399
+AT1G01020.4 711 510.567 6.65521 76.113
+AT1G01020.1 738 537.567 18.1462 218.506
+AT1G01020.5 1179 978.567 0.491433 10.7721
+AT1G01020.6 617 416.567 0.607591 5.66944
+AT1G01020.2 647 446.567 2.63345e-08 2.63425e-07
+AT1G03987.1 272 97.3356 0 0
+AT1G01030.2 1456 1255.57 0.519509 14.6109
+AT1G01030.1 1905 1704.57 0.298284 11.3891
+AT1G01040.1 6276 6075.57 1.56643 213.178
+AT1G03993.1 788 587.567 0 0
+AT1G01040.2 5877 5676.57 4.30834 547.822
b
diff -r 000000000000 -r 206a71a69161 test-data/salmon_sample2.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/salmon_sample2.tab Wed Dec 04 05:57:26 2019 -0500
b
@@ -0,0 +1,14 @@
+Name Length EffectiveLength TPM NumReads
+AT1G01010.1 1688 1487.57 4.6817 156
+AT1G01020.3 1420 1219.57 1.68167 45.9399
+AT1G01020.4 711 510.567 6.65521 76.113
+AT1G01020.1 738 537.567 18.1462 218.506
+AT1G01020.5 1179 978.567 0.491433 10.7721
+AT1G01020.6 617 416.567 0.607591 5.66944
+AT1G01020.2 647 446.567 2.63345e-08 2.63425e-07
+AT1G03987.1 272 97.3356 0 0
+AT1G01030.2 1456 1255.57 0.519509 14.6109
+AT1G01030.1 1905 1704.57 0.298284 11.3891
+AT1G01040.1 6276 6075.57 1.56643 213.178
+AT1G03993.1 788 587.567 0 0
+AT1G01040.2 5877 5676.57 4.30834 547.822
b
diff -r 000000000000 -r 206a71a69161 test-data/tx2gene.tab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/tx2gene.tab Wed Dec 04 05:57:26 2019 -0500
b
@@ -0,0 +1,14 @@
+Transcript Gene
+AT1G01010.1 AT1G01010
+AT1G01020.3 AT1G01020
+AT1G01020.4 AT1G01020
+AT1G01020.1 AT1G01020
+AT1G01020.5 AT1G01020
+AT1G01020.6 AT1G01020
+AT1G01020.2 AT1G01020
+AT1G03987.1 AT1G03987
+AT1G01030.2 AT1G01030
+AT1G01030.1 AT1G01030
+AT1G01040.1 AT1G01040
+AT1G03993.1 AT1G03993
+AT1G01040.2 AT1G01040
b
diff -r 000000000000 -r 206a71a69161 tool-data/tx2gene.loc.sample
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tool-data/tx2gene.loc.sample Wed Dec 04 05:57:26 2019 -0500
b
@@ -0,0 +1,1 @@
+#value, dbkey, name, path
b
diff -r 000000000000 -r 206a71a69161 tool_data_table_conf.xml.sample
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tool_data_table_conf.xml.sample Wed Dec 04 05:57:26 2019 -0500
b
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<tables>
+        <table name="tx2gene_table" comment_char="#" allow_duplicate_entries="False">
+            <columns>value, dbkey, name, path</columns>
+            <file path="tool-data/tx2gene.loc" />
+        </table>
+</tables>
b
diff -r 000000000000 -r 206a71a69161 tool_data_table_conf.xml.test
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tool_data_table_conf.xml.test Wed Dec 04 05:57:26 2019 -0500
b
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<tables>
+        <table name="tx2gene_table" comment_char="#" allow_duplicate_entries="False">
+            <columns>value, dbkey, name, path</columns>
+            <file path="${__HERE__}/test-data/cached_locally/tx2gene.loc" />
+        </table>
+</tables>
+
b
diff -r 000000000000 -r 206a71a69161 tximport.R
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tximport.R Wed Dec 04 05:57:26 2019 -0500
[
@@ -0,0 +1,100 @@
+# setup R error handling to go to stderr
+options( show.error.messages=F, error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
+
+# we need that to not crash galaxy with an UTF8 error on German LC settings.
+loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
+
+library("getopt")
+options(stringAsFactors = FALSE, useFancyQuotes = FALSE)
+args <- commandArgs(trailingOnly = TRUE)
+
+# get options, using the spec as defined by the enclosed list.
+# we read the options from the default: commandArgs(TRUE).
+spec <- matrix(c(
+  "help", "h", 0, "logical",
+  "out_file", "o", 1, "character",
+  "countsFiles", "n", 1, "character",
+  "countsFromAbundance", "r", 1, "character",
+  "format", "v", 1, "character",
+  "gff_file", "H", 0, "character",
+  "tx2gene", "f", 0, "character",
+  "geneIdCol", "l", 0, "character",
+  "txIdCol" , "p", 1, "character",
+  "abundanceCol", "i", 0, "character",
+  "countsCol", "y", 1, "character",
+  "lengthCol", "x", 1, "character"),
+  byrow=TRUE, ncol=4)
+
+opt <- getopt(spec)
+
+# if help was asked for print a friendly message
+# and exit with a non-zero error code
+if (!is.null(opt$help)) {
+  cat(getopt(spec, usage=TRUE))
+  q(status=1)
+}
+
+if (is.null(opt$gff_file) & is.null(opt$tx2gene)) {
+  cat("A GFF/GTF file or a tx2gene table is required\n")
+  q(status=1)
+}
+
+if (opt$format == 'none'){  #custom format
+    if (is.null(opt$txIdCol) | is.null(opt$abundanceCol) | is.null(opt$countsCol) | is.null(opt$lengthCol)) {
+        cat("If you select a custom format for the input files you need to specify the column names\n")
+        q(status=1)
+   }
+}
+
+if (is.null(opt$countsFiles)) {
+  cat("'countsFiles' is required\n")
+  q(status=1)
+}
+
+
+# load samples from tab file
+samples_df <- read.table(opt$countsFiles, sep="\t", header=TRUE)
+colnames(samples_df) <- c("id","path")
+rownames(samples_df) <- NULL
+# Prepare char vector with files and sample names 
+files <- file.path(samples_df[,"path"])
+names(files) <- samples_df[,"id"]
+
+
+
+library(tximport)
+
+### if the input is a gff/gtf file first need to create the tx2gene table
+if (!is.null(opt$gff_file)) {
+    suppressPackageStartupMessages({
+        library("GenomicFeatures")
+    })
+    txdb <- makeTxDbFromGFF(opt$gff_file)
+    k <- keys(txdb, keytype = "TXNAME")
+    tx2gene <- select(txdb, keys=k, columns="GENEID", keytype="TXNAME")
+    # Remove 'transcript:' from transcript IDs (when gffFile is a GFF3 from Ensembl and the transcript does not have a Name)
+    tx2gene$TXNAME <- sub('^transcript:', '', tx2gene$TXNAME)
+
+} else {
+        tx2gene <- read.table(opt$tx2gene,header=FALSE)
+    }
+
+
+
+##
+if (is.null(opt$geneIdCol)) { ## there is a tx2gene table
+    if (opt$format == 'none'){  #predefined format 
+        txi_out <- tximport(files, type="none",txIdCol=opt$txIdCol,abundanceCol=opt$abundanceCol,countsCol=opt$countsCol,lengthCol=opt$lengthCol,tx2gene=tx2gene,countsFromAbundance=opt$countsFromAbundance)
+    } else {
+        txi_out <- tximport(files, type=opt$format, tx2gene=tx2gene,countsFromAbundance=opt$countsFromAbundance)
+    }
+} else {  # the gene_ID is a column in the counts table
+    if (opt$format == 'none'){  #predefined format
+        txi_out <- tximport(files, type="none",geneIdCol=opt$geneIdCol,txIdCol=opt$txIdCol,abundanceCol=opt$abundanceCol,countsCol=opt$countsCol,lengthCol=opt$lengthCol,tx2gene=tx2gene,countsFromAbundance=opt$countsFromAbundance)
+    } else {
+        txi_out <- tximport(files, type=opt$format, geneIdCol=opt$geneIdCol,countsFromAbundance=opt$countsFromAbundance)
+    }
+
+}
+# write count as table
+write.table(txi_out$counts, file=opt$out_file, row.names = TRUE, col.names = TRUE, quote = FALSE, sep = "\t")
b
diff -r 000000000000 -r 206a71a69161 tximport.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/tximport.xml Wed Dec 04 05:57:26 2019 -0500
[
b'@@ -0,0 +1,208 @@\n+<tool id="tximport" name="tximport" version="0.1">\n+    <description>Summarize transcript-level estimates for gene-level analysis</description>\n+    <requirements>\n+        <requirement type="package">bioconductor-tximport</requirement>\n+        <requirement type="package" version="1.34.1">bioconductor-genomicfeatures</requirement>\n+        <requirement type="package" version="1.20.2">r-getopt</requirement>\n+    </requirements>\n+\n+    <stdio>\n+        <exit_code range="1:" level="fatal" description="Error code returned" />\n+        <regex match="is not TRUE"\n+           source="both"\n+           level="fatal"\n+           description="Execution halted." />\n+    </stdio>\n+\n+    <command><![CDATA[\n+#if $gene_id_source_selector.gene_id_source == \'external_file\':\n+    #if $gene_id_source_selector.gff_source_selector.gff_source == \'history\':\n+        #if $gene_id_source_selector.gff_source_selector.gff_tx2gene_selector.mapping_file_option == \'gff_gtf\':\n+            ln -s \'$gene_id_source_selector.gff_source_selector.gff_tx2gene_selector.own_gff\' mapping.gff &&\n+        #else:\n+            ln -s \'$gene_id_source_selector.gff_source_selector.gff_tx2gene_selector.own_tx2gene\' mapping.tab &&\n+        #end if\n+    #end if\n+#end if\n+\n+Rscript \'${__tool_directory__}/tximport.R\'\n+--format $input_source_selector.input_source\n+#if $input_source_selector.input_source == \'none\':\n+    --txIdCol \'$input_source_selector.tx_id_col\'\n+    --abundanceCol \'$input_source_selector.abundance_col\'\n+    --countsCol \'$input_source_selector.counts_col\'\n+    --lengthCol \'$input_source_selector.length_col\'\n+#end if\n+#if $gene_id_source_selector.gene_id_source == \'gene_id_column_option\':\n+    --geneIdCol \'$gene_id_source_selector.gene_id_column\'\n+#else\n+    #if $gene_id_source_selector.gff_source_selector.gff_source == "history":\n+        #if $gene_id_source_selector.gff_source_selector.gff_tx2gene_selector.mapping_file_option == \'tx2gene\':\n+            --tx2gene mapping.tab\n+        #else\n+            --gff_file mapping.gff\n+        #end if\n+    #else:\n+        --tx2gene $gene_id_source_selector.gff_source_selector.tx2gene.fields.path\n+    #end if\n+#end if\n+--countsFiles \'$counts_files_table\'\n+--countsFromAbundance $counts_from_abundance\n+--out_file \'${gene_level_values}\'\n+    ]]></command>\n+\n+    <configfiles>\n+        <configfile name="counts_files_table"><![CDATA[#echo "sample_id\\tpath\\n"\n+#for $file in $counts_file:\n+    #echo str($file.element_identifier) + "\\t" + str($file) + "\\n"\n+#end for]]></configfile>\n+    </configfiles>\n+    <inputs>\n+        <param name="counts_file" type="data" format="tabular" multiple="true" label="Counts file(s)"/>\n+        <conditional name="input_source_selector">\n+            <param name="input_source" type ="select" label="Select the source of the quantification file">\n+                <option value="salmon" selected="True">Salmon</option>\n+                <option value="sailfish">Sailfish</option>\n+                <option value="alevin">Alevin</option>\n+                <option value="kallisto">Kallisto</option>\n+                <option value="rsem">RSEM</option>\n+                <option value="stringtie">Stringtie</option>\n+                <option value="none">Custom format (specify the columns)</option>\n+            </param>\n+            <when value="none">\n+                <param name="tx_id_col" type="text" label="Name of the txID columns"/>\n+                <param name="abundance_col" type="text" label="Name of the abundance column"/>\n+                <param name="counts_col" type="text" label="Name of the counts column"/>\n+                <param name="length_col" type="text" label="Name of the length column"/>\n+            </when>\n+            <when value="salmon"/>\n+            <when value="sailfish"/>\n+            <when value="alevin"/>\n+            <when value="kallisto"/>\n+            <when value="rsem"/>\n+            <when value="stringtie"/>\n+        </conditional>\n+        <conditional name='..b'tu_scaled_TPM">Scaled using the median transcript length among isoforms of a gene, and then the library size</option>\n+        </param>\n+    </inputs>\n+    <outputs>\n+        <data name="gene_level_values" format="tabular" label="Gene level summarization on ${on_string}"/>\n+    </outputs>\n+\n+    <tests>\n+        <test>\n+            <param name="input_source" value="salmon"/>\n+            <param name="gene_id_source" value="external_file"/>\n+            <param name="counts_from_abundance" value="no"/>\n+            <param name="gff_source" value="history"/>\n+            <param name="mapping_file_option" value="tx2gene"/>\n+        <param name="own_tx2gene" value="tx2gene.tab"/>\n+        <param name="counts_file" value="salmon_sample2.tab,salmon_sample1.tab" />\n+            <output name="gene_level_values">\n+                 <assert_contents>\n+                    <has_text_matching expression="salmon_sample2.tab\\tsalmon_sample1.tab" />\n+                    <has_text_matching expression="AT1G01010\\t156\\t156" />\n+                </assert_contents>\n+            </output>\n+        </test>\n+        <test>\n+            <param name="input_source" value="salmon"/>\n+            <param name="gene_id_source" value="external_file"/>\n+            <param name="counts_from_abundance" value="no"/>\n+            <param name="gff_source" value="history"/>\n+            <param name="mapping_file_option" value="gff_gtf"/>\n+            <param name="own_gff" value="Araport11_subset.gff3"/>\n+            <param name="counts_file" value="salmon_sample2.tab,salmon_sample1.tab" />\n+            <output name="gene_level_values">\n+                <assert_contents>\n+                    <has_text_matching expression="salmon_sample2.tab\\tsalmon_sample1.tab" />\n+                    <has_text_matching expression="AT1G01010\\t156\\t156" />\n+                </assert_contents>\n+            </output>\n+        </test>\n+        <test>\n+            <param name="input_source" value="salmon"/>\n+            <param name="gene_id_source" value="external_file"/>\n+            <param name="counts_from_abundance" value="no"/>\n+            <param name="gff_source" value="built-in"/>\n+            <param name="tx2gene" value="Ath_Araport11_subset"/>\n+            <param name="counts_file" value="salmon_sample2.tab,salmon_sample1.tab" />\n+            <output name="gene_level_values">\n+                 <assert_contents>\n+                    <has_text_matching expression="salmon_sample2.tab\\tsalmon_sample1.tab" />\n+                    <has_text_matching expression="AT1G01010\\t156\\t156" />\n+                </assert_contents>\n+            </output>\n+        </test>\n+        <!-- Test input with custom format -->\n+        <test>\n+            <param name="input_source" value="none"/>\n+            <param name="tx_id_col" value="Transcript_id_here"/>\n+            <param name="abundance_col" value="Abundance_goes_here"/>\n+            <param name="counts_col" value="Here_goes_the_counts"/>\n+            <param name="length_col" value="Here_goes_the_length"/>\n+            <param name="counts_from_abundance" value="no"/>\n+            <param name="gff_source" value="built-in"/>\n+            <param name="tx2gene" value="Ath_Araport11_subset"/>\n+            <param name="counts_file" value="custom_sample.tab" />\n+            <output name="gene_level_values">\n+                <assert_contents>\n+                    <has_text_matching expression="custom_sample.tab" />\n+                    <has_text_matching expression="AT1G01010\\t156" />\n+                </assert_contents>\n+            </output>\n+        </test>\n+    </tests>\n+    <help><![CDATA[\n+.. class:: infomark\n+\n+Current version only works in \'merge\' mode: A single table of gene summarizations is generated with one column for each sample file.\n+Take into account that DEseq2 package in Galaxy requires one table per sample.\n+    ]]></help>\n+    <citations>\n+        <citation type="doi">doi:10.18129/B9.bioc.tximport</citation>\n+    </citations>\n+</tool>\n'