diff oases_optimiser.py @ 0:f7dd852c8f4c draft

planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/master/tools/oases commit 48b8101fd53263212839ecb14d3029811a3278f4
author artbio
date Sun, 15 Oct 2017 19:07:38 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/oases_optimiser.py	Sun Oct 15 19:07:38 2017 -0400
@@ -0,0 +1,60 @@
+#!/usr/bin/env python
+
+"""
+VelvetOptimiser Wrapper
+refactored using the adaptation of
+Konrad Paszkiewicz	University of Exeter, UK.
+
+"""
+import os
+import subprocess
+import sys
+
+
+def stop_err(msg):
+    sys.stderr.write("%s\n" % msg)
+    sys.exit()
+
+
+def oases_optimiser(starthash, endhash, input):
+    '''
+    Replaces call to oases_optimiser.sh. For all k-mers between
+    starthash and endhash run velvet and oases.
+    '''
+    for i in range(starthash, endhash, 2):
+        cmd1 = "velveth outputFolder_{0} {0} {1} && ".format(i, input)
+        cmd2 = "velvetg outputFolder_{0} -read_trkg yes && ".format(i)
+        cmd3 = "oases outputFolder_{0}".format(i)
+        proc = subprocess.call(args=cmd1 + cmd2 + cmd3, shell=True,
+                               stdout=sys.stdout, stderr=sys.stdout)
+        if not proc == 0:
+            print("Oases failed at k-mer %s, skipping" % i)
+            continue
+    cmd4 = "velveth MergedAssemblyFolder 27 -long\
+            outputFolder_*/transcripts.fa && "
+    cmd5 = "velvetg MergedAssemblyFolder -read_trkg yes -conserveLong yes && "
+    cmd6 = "oases MergedAssemblyFolder -merge yes"
+    proc = subprocess.call(args=cmd4 + cmd5 + cmd6, shell=True,
+                           stdout=sys.stdout, stderr=sys.stdout)
+    if not proc == 0:
+        raise Exception("Oases could not merge assembly")
+
+
+def __main__():
+    starthash = int(sys.argv[1])
+    endhash = int(sys.argv[2])
+    input = sys.argv[3]
+    transcripts = sys.argv[4]
+    try:
+        oases_optimiser(starthash, endhash, input)
+    except Exception as e:
+        stop_err('Error running oases_optimiser.py\n' + str(e))
+    with open(transcripts, 'w') as out:
+        transcript_path = os.path.join('MergedAssemblyFolder',
+                                       'transcripts.fa')
+        for line in open(transcript_path):
+            out.write("%s" % (line))
+
+
+if __name__ == "__main__":
+    __main__()