changeset 3:77c1ee3bad82 draft

Uploaded
author dsobral
date Sat, 03 Mar 2018 11:44:15 -0500
parents 2fd7f01d1909
children 98495b42b982
files breseq_wrapper.py
diffstat 1 files changed, 73 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/breseq_wrapper.py	Sat Mar 03 11:44:15 2018 -0500
@@ -0,0 +1,73 @@
+# -*- coding: utf-8 -*-
+
+from __future__ import print_function
+import sys
+import os
+import shutil
+from subprocess import call
+from glob import glob
+
+"""
+Expected input format:
+    ./thiscript output_file output_folder zipfile (args)
+"""
+
+
+def fail(exitcode):
+    sys.stderr.write("Breseq did not finish successfully\n")
+    sys.stderr.write("Exit code was: {0}\n".format(exitcode))
+    sys.exit(1)
+
+
+def main(args):
+    output, outdir = args[1:3]
+    cmd = ["breseq"] + args[3:]
+
+    returncode = call(cmd)
+
+    if returncode != 0:
+        fail(returncode)
+
+    # the short HTML report
+    summary = "output/summary.html"
+    if not os.path.isfile(summary):
+        fail(returncode)
+
+    # Data will be in the zipfile together will all the content of "output"
+    shutil.move("data", "output/")
+
+    if not os.path.isfile(outdir):
+        os.mkdir(outdir)
+
+    # Zip the whole folder
+    shutil.make_archive("results", "zip", os.path.dirname(outdir), "output/")
+    shutil.move("results.zip", outdir)
+
+    shutil.copy(summary, output)
+
+    # move all the files needed for preview of HTML
+    for file in glob("output/*"):
+        dest = file.split("/", 1)[1]
+        # Folder "data" only needs to go in the zipfile not the HTML preview
+        if file == "data":
+            continue
+
+        shutil.move(file, os.path.join(outdir, dest))
+
+
+def usage():
+    err = sys.stderr
+    err.write("Usage:\n")
+    err.write("  {0} output_filename output_folder [args]\n".format(
+        sys.argv[0]))
+    sys.exit(1)
+
+if __name__ == "__main__":
+    args = sys.argv
+
+    if len(args) <= 3:
+        usage()
+
+    main(args)
+
+# vim: ai sts=4 et sw=4