annotate bam_to_bigwig.py @ 6:9163e1db4c16 draft default tip

planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
author lparsons
date Thu, 12 May 2016 11:39:13 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
1 #!/usr/bin/env python
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
2 """Convert BAM files to BigWig file format in a specified region.
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
3
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
4 Original version copyright Brad Chapman with revisions from Peter Cock
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
5 and ideas from Lance Parsons
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
6
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
7 Usage:
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
8 bam_to_bigwig.py <BAM file> [--outfile=<output file name>] [--split]
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
9
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
10 The --split argument is passed to bedtools genomecov
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
11
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
12 The script requires:
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
13 pysam (http://code.google.com/p/pysam/)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
14 bedtools genomecov (http://code.google.com/p/bedtools/)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
15 bedGraphToBigWig from UCSC (http://hgdownload.cse.ucsc.edu/admin/exe/)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
16 """
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
17 import os
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
18 import sys
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
19 import subprocess
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
20 import tempfile
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
21 from optparse import OptionParser
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
22 from contextlib import contextmanager, closing
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
23
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
24 import pysam
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
25
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
26
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
27 def main(bam_file, outfile=None, split=False):
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
28 config = {"program": {"ucsc_bedGraphToBigWig": ["bedGraphToBigWig"],
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
29 "bedtools_genomeCoverageBed":
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
30 ["bedtools", "genomecov"]}}
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
31 if outfile is None:
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
32 outfile = "%s.bigwig" % os.path.splitext(bam_file)[0]
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
33 if os.path.abspath(bam_file) == os.path.abspath(outfile):
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
34 sys.stderr.write("Bad arguments, "
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
35 "input and output files are the same.\n")
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
36 sys.exit(1)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
37 if os.path.exists(outfile) and os.path.getsize(outfile) > 0:
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
38 sys.stderr.write("Warning, output file already exists.\n")
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
39
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
40 sizes = get_sizes(bam_file, config)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
41 print "Have %i references" % len(sizes)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
42 if not sizes:
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
43 sys.stderr.write("Problem reading BAM header.\n")
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
44 sys.exit(1)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
45
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
46 # Use a temp file to avoid any possiblity of not having write permission
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
47 temp_handle = tempfile.NamedTemporaryFile(delete=False)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
48 temp_file = temp_handle.name
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
49 with closing(temp_handle):
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
50 print "Calculating coverage..."
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
51 convert_to_graph(bam_file, split, config, temp_handle)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
52 try:
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
53 print("Converting %i MB graph file to bigwig..." %
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
54 (os.path.getsize(temp_file) // (1024 * 1024)))
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
55 # Can't pipe this as stdin due to converter design,
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
56 # https://lists.soe.ucsc.edu/pipermail/genome/2011-March/025455.html
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
57 convert_to_bigwig(temp_file, sizes, config, outfile)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
58 finally:
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
59 if os.path.isfile(temp_file):
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
60 os.remove(temp_file)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
61 print "Done"
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
62
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
63
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
64 @contextmanager
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
65 def indexed_bam(bam_file, config):
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
66 if not os.path.exists(bam_file + ".bai"):
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
67 pysam.index(bam_file)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
68 sam_reader = pysam.Samfile(bam_file, "rb")
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
69 yield sam_reader
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
70 sam_reader.close()
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
71
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
72
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
73 def get_sizes(bam_file, config):
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
74 with indexed_bam(bam_file, config) as work_bam:
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
75 sizes = zip(work_bam.references, work_bam.lengths)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
76 return sizes
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
77
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
78
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
79 def convert_to_graph(bam_file, split, config, out_handle):
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
80 cl = config["program"]["bedtools_genomeCoverageBed"] + \
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
81 ["-ibam", bam_file, "-bg"]
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
82 if split:
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
83 cl.append("-split")
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
84 new_env = os.environ.copy()
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
85 new_env['LC_COLLATE'] = 'C'
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
86 p1 = subprocess.Popen(cl, stdout=subprocess.PIPE)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
87 p2 = subprocess.Popen(["sort", "-k1,1", "-k2,2n"],
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
88 env=new_env,
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
89 stdin=p1.stdout,
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
90 stdout=out_handle)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
91 p1.stdout.close()
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
92 p2.communicate()
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
93
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
94
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
95 def convert_to_bigwig(bedgraph_file, chr_sizes, config, bw_file):
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
96 # This will be fine under Galaxy, but could use temp folder?
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
97 size_file = "%s-sizes.txt" % (os.path.splitext(bw_file)[0])
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
98 with open(size_file, "w") as out_handle:
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
99 for chrom, size in chr_sizes:
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
100 out_handle.write("%s\t%s\n" % (chrom, size))
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
101 try:
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
102 cl = config["program"]["ucsc_bedGraphToBigWig"] + \
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
103 [bedgraph_file, size_file, bw_file]
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
104 subprocess.check_call(cl)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
105 finally:
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
106 os.remove(size_file)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
107 return bw_file
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
108
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
109
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
110 if __name__ == "__main__":
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
111 parser = OptionParser()
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
112 parser.add_option("-o", "--outfile", dest="outfile")
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
113 parser.add_option("-s", "--split", action="store_true", dest="split")
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
114 (options, args) = parser.parse_args()
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
115 if len(args) not in [1, 2]:
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
116 print "Incorrect arguments"
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
117 print __doc__
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
118 sys.exit()
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
119 kwargs = dict(
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
120 outfile=options.outfile,
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
121 split=options.split)
9163e1db4c16 planemo upload for repository https://github.com/lparsons/galaxy_tools/tree/master/tools/bam_to_bigwig/ commit b5c3df21127fc27f66a97761173c07e161f2fa8e
lparsons
parents:
diff changeset
122 main(*args, **kwargs)