From f7a50522f095cab4a601c95f0e4f0da479286f5b Mon Sep 17 00:00:00 2001
From: Laurent Modolo <laurent.modolo@ens-lyon.fr>
Date: Fri, 9 Jul 2021 10:06:02 +0200
Subject: [PATCH] kb: update to 0.26.3

---
 src/.docker_modules/kb/0.26.3/Dockerfile     | 11 +++++
 src/.docker_modules/kb/0.26.3/docker_init.sh |  4 ++
 src/.docker_modules/kb/0.26.3/t2g.py         | 47 ++++++++++++++++++++
 src/nf_modules/kb/main.nf                    |  2 +-
 4 files changed, 63 insertions(+), 1 deletion(-)
 create mode 100644 src/.docker_modules/kb/0.26.3/Dockerfile
 create mode 100755 src/.docker_modules/kb/0.26.3/docker_init.sh
 create mode 100755 src/.docker_modules/kb/0.26.3/t2g.py

diff --git a/src/.docker_modules/kb/0.26.3/Dockerfile b/src/.docker_modules/kb/0.26.3/Dockerfile
new file mode 100644
index 00000000..8ca889e8
--- /dev/null
+++ b/src/.docker_modules/kb/0.26.3/Dockerfile
@@ -0,0 +1,11 @@
+FROM python:3.9-slim 
+
+ENV KB_VERSION="0.26.3"
+
+RUN apt update && apt install -y procps && pip3 install kb-python==${KB_VERSION} gffutils==0.10.1
+
+COPY t2g.py /usr/bin/
+
+RUN chmod +x /usr/bin/t2g.py
+
+CMD [ "bash" ]
diff --git a/src/.docker_modules/kb/0.26.3/docker_init.sh b/src/.docker_modules/kb/0.26.3/docker_init.sh
new file mode 100755
index 00000000..0294274a
--- /dev/null
+++ b/src/.docker_modules/kb/0.26.3/docker_init.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+docker pull lbmc/kb:0.26.3
+docker build src/.docker_modules/kb/0.26.3 -t 'lbmc/kb:0.26.3'
+docker push lbmc/kb:0.26.3
diff --git a/src/.docker_modules/kb/0.26.3/t2g.py b/src/.docker_modules/kb/0.26.3/t2g.py
new file mode 100755
index 00000000..f9f0b45d
--- /dev/null
+++ b/src/.docker_modules/kb/0.26.3/t2g.py
@@ -0,0 +1,47 @@
+#!/usr/local/bin/python
+import os
+import gffutils
+import argparse
+
+
+def validate_file(f):
+    if not os.path.exists(f):
+        # Argparse uses the ArgumentTypeError to give a rejection message like:
+        # error: argument input: x does not exist
+        raise argparse.ArgumentTypeError("{0} does not exist".format(f))
+    return f
+
+
+if __name__ == "__main__":
+    parser = argparse.ArgumentParser(
+        description="create transcript to genes file from a gtf file."
+    )
+    parser.add_argument(
+        "-g", "--gtf", dest="gtf", required=True, type=validate_file,
+        help="gtf file", metavar="FILE"
+    )
+    args = parser.parse_args()
+
+    db = gffutils.create_db(
+        args.gtf,
+        dbfn=":memory:",
+        force=True,
+        merge_strategy="merge",
+        disable_infer_transcripts=False,
+        disable_infer_genes=False
+    )
+    with open("t2g.txt", "w") as t2g:
+        for gene in db.all_features():
+            for transcript in db.children(
+              gene, featuretype='transcript', order_by='start'
+            ):
+                t2g_line = str(transcript["transcript_id"][0]) + \
+                    "\t" + \
+                    str(gene["gene_id"][0])
+                t2g_line = t2g_line.split("\t")
+                t2g.write(
+                    str(t2g_line[0].split(".")[0]) +
+                    "\t" +
+                    str(t2g_line[1].split(".")[0]) +
+                    "\n"
+                )
diff --git a/src/nf_modules/kb/main.nf b/src/nf_modules/kb/main.nf
index a6cbfa75..f7cf0e08 100644
--- a/src/nf_modules/kb/main.nf
+++ b/src/nf_modules/kb/main.nf
@@ -1,4 +1,4 @@
-version = "0.26.0"
+version = "0.26.3"
 container_url = "lbmc/kb:${version}"
 
 params.index_fasta = ""
-- 
GitLab