diff tools/samtools_depad/samtools_depad.py @ 0:2d303f2e09e0 draft

Uploaded v0.0.1, previously only on the Test Tool Shed
author peterjc
date Fri, 21 Nov 2014 06:37:20 -0500
parents
children 01f8967ce1e0
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/samtools_depad/samtools_depad.py	Fri Nov 21 06:37:20 2014 -0500
@@ -0,0 +1,48 @@
+#!/usr/bin/env python
+"""Wrapper for "samtools depad" for use in Galaxy.
+
+This script takes exactly four command line arguments:
+ * Input padded reference FASTA file
+ * Input SAM/BAM filename
+ * Input format ("sam" or "bam")
+ * Output BAM filename
+
+Runs "samtools depad" and captures the output to the desired BAM file.
+"""
+import sys
+import os
+import subprocess
+import tempfile
+
+if "-v" in sys.argv or "--version" in sys.argv:
+    #Galaxy seems to invert the order of the two lines
+    print "(Galaxy wrapper v0.0.1)"
+    cmd = "samtools 2>&1 | grep -i ^Version"
+    sys.exit(os.system(cmd))
+
+def stop_err(msg, error_level=1):
+   """Print error message to stdout and quit with given error level."""
+   sys.stderr.write("%s\n" % msg)
+   sys.exit(error_level)
+
+if len(sys.argv) != 5:
+   stop_err("Require four arguments: padded FASTA, SAM/BAM file, format (SAM or BAM), output BAM filenames")
+
+padded_ref, bam_filename, input_format, output_filename = sys.argv[1:]
+
+if not os.path.isfile(padded_ref):
+    stop_err("Input padded reference FASTA file not found: %s" % padded_ref)
+if not os.path.isfile(bam_filename):
+    stop_err("Input BAM file not found: %s" % bam_filename)
+if input_format.lower() not in ["sam", "bam"]:
+    stop_err("Input format should be SAM or BAM, not %r" % input_format)
+
+#Run samtools depad:
+if input_format.lower() == "sam":
+    cmd = "samtools depad -S -T %s %s > %s" % (padded_ref, bam_filename, output_filename)
+else:
+    cmd = "samtools depad -T %s %s > %s" % (padded_ref, bam_filename, output_filename)
+return_code = os.system(cmd)
+
+if return_code:
+    stop_err("Return code %i from command:\n%s" % (return_code, cmd))