annotate bwameth_wrapper.py @ 5:f9c8c79b8b08 draft

Uploaded
author dpryan79
date Tue, 13 Sep 2016 16:01:35 -0400
parents 3e1095e1defa
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
1 #!/usr/bin/env python
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
2 import argparse
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
3 import subprocess
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
4 import os
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
5 import shlex
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
6
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
7 def createIndex(fname):
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
8 """
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
9 Create an index for a file, return where it is
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
10 """
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
11 d = os.mkdir("index_dir")
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
12 os.link(fname, "index_dir/genome.fa")
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
13 cmd = "{}/bwameth.py index index_dir/genome.fa".format(os.path.dirname(__file__))
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
14 proc = subprocess.Popen(args=shlex.split(cmd))
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
15 returncode = proc.wait()
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
16 if returncode != 0:
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
17 raise Exception("Error during '%s'" % cmd)
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
18 return "index_dir/genome.fa"
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
19
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
20
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
21 parser = argparse.ArgumentParser(description="A wrapper around bwameth for Galaxy. There's minimal argument checking done")
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
22 parser.add_argument('-p', '--numThreads', type=int, default=4, help="number of threads")
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
23 parser.add_argument('--makeIndex', help="Given a fasta file, index it")
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
24 parser.add_argument('--premadeIndex', help="If an index already exists, this is the fasta file associated with it (the index files must be in the same directory")
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
25 parser.add_argument('--readGroup', help="The read group text, if desired")
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
26 parser.add_argument('files', nargs="+", help="Fasta files (possibly gzipped, if the file names end in .gz)")
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
27 args = parser.parse_args()
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
28
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
29 if "makeIndex" in args:
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
30 ifile = createIndex(args.makeIndex)
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
31 else:
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
32 ifile = args.premadeIndex
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
33
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
34 files = " ".join(['{}'.format(x) for x in args.files])
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
35 if "readGroup" in args:
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
36 files = "{} --read-group '{}'".format(files, args.readGroup)
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
37
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
38 cmd = "{}/bwameth.py -p {} '{}' {} | samtools view -Su - - | samtools sort -@ {} -o output.bam -".format(os.path.dirname(__file__), args.numThreads, ifile, files, args.numThreads)
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
39 proc = subprocess.Popen(args=shlex.split(cmd))
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
40 returncode = proc.wait()
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
41 if returncode != 0:
3e1095e1defa Deleted selected files
dpryan79
parents:
diff changeset
42 raise Exception("Error during '%s'" % cmd)