changeset 1:29760e9a840b draft

Uploaded
author sjung
date Wed, 24 May 2017 00:35:08 -0400
parents 2d6315e241e4
children 0ea254c514b7
files fseq_wrapper.py
diffstat 1 files changed, 57 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fseq_wrapper.py	Wed May 24 00:35:08 2017 -0400
@@ -0,0 +1,57 @@
+#/usr/bin/python
+
+import optparse, sys, subprocess, tempfile
+import shutil, os
+
+CHUNK_SIZE = 2**20 #1mbi
+
+def cleanup_before_exit( tmp_dir ):
+    if tmp_dir and os.path.exists( tmp_dir ):
+        shutil.rmtree( tmp_dir )
+
+def __main__():
+    parser = optparse.OptionParser()
+    parser.add_option( '-p', '--pass_through', dest='pass_through_options', action='append', type="string", help='These options are passed through directly to GATK, without any modification.' )
+    parser.add_option('', '--of', dest='output_format', action='store', type="string", help='output format')
+    parser.add_option('-i', '--input-files', dest='input_files', action='store', type="string", help='input files')
+    parser.add_option( '-o', '--output-file', dest='output_file', action='store', type="string", default=None, help='bed output' )
+
+    (options, args) = parser.parse_args()
+    pass_through = ""
+    if options.pass_through_options:
+        pass_through = ' '.join( options.pass_through_options )
+
+    cmd = "fseq %s -of %s %s" % (pass_through, options.output_format, options.input_files)
+    print cmd
+    tmp_dir = tempfile.mkdtemp( prefix='tmp-tool-' )
+
+    stdout = tempfile.NamedTemporaryFile( prefix="fseq-stdout-", dir=tmp_dir )
+    stderr = tempfile.NamedTemporaryFile( prefix="fseq-stderr-", dir=tmp_dir )
+    proc = subprocess.Popen( args=cmd, stdout=stdout, stderr=stderr, shell=True, cwd=tmp_dir )
+    return_code = proc.wait()
+
+    if return_code:
+        stderr_target = sys.stderr
+    else:
+        stderr_target = sys.stdout
+    stderr.flush()
+    stderr.seek(0)
+
+    while True:
+        chunk = stderr.read( CHUNK_SIZE )
+        if chunk:
+            stderr_target.write( chunk )
+        else:
+            break
+    stderr.close()
+    stdout.close()
+    if options.output_format == 'bed':
+        os.system("cat %s/*.bed > %s/output.bed" % (tmp_dir, tmp_dir)) 
+        shutil.copy("%s/output.bed" % tmp_dir, options.output_file)
+    else: 
+        os.system("cat %s/*.wig > %s/output.wig" % (tmp_dir, tmp_dir))
+        shutil.copy("%s/output.wig" % tmp_dir, options.output_file)
+
+    cleanup_before_exit( tmp_dir )
+
+if __name__ == "__main__": __main__()