comparison extract_aln_ends.py @ 14:570a7de9f151 draft

read from bam; fix header issue
author rnateam
date Mon, 30 Nov 2015 07:53:36 -0500
parents de4ea3aa1090
children 0b9aab6aaebf
comparison
equal deleted inserted replaced
13:258b6f9e19ab 14:570a7de9f151
12 ("forward-reverse") direction. 12 ("forward-reverse") direction.
13 13
14 By default output is written to stdout. 14 By default output is written to stdout.
15 15
16 Input: 16 Input:
17 * sam file containing alignments (paired-end sequencing) 17 * alignments in SAM or BAM format (paired-end sequencing)
18 18
19 Output: 19 Output:
20 * bed6 file containing outer coordinates (sorted by read id) 20 * bed6 file containing outer coordinates (sorted by read id)
21 21
22 Example usage: 22 Example usage:
55 parser = argparse.ArgumentParser(description=tool_description, 55 parser = argparse.ArgumentParser(description=tool_description,
56 epilog=epilog, 56 epilog=epilog,
57 formatter_class=DefaultsRawDescriptionHelpFormatter) 57 formatter_class=DefaultsRawDescriptionHelpFormatter)
58 # positional arguments 58 # positional arguments
59 parser.add_argument( 59 parser.add_argument(
60 "sam", 60 "infile",
61 help="Path to sam file containing alignments.") 61 help="Path to alignments in SAM or BAM format.")
62 # optional arguments 62 # optional arguments
63 parser.add_argument( 63 parser.add_argument(
64 "-o", "--outfile", 64 "-o", "--outfile",
65 help="Write results to this file.") 65 help="Write results to this file.")
66 # misc arguments 66 # misc arguments
73 help="Print lots of debugging information", 73 help="Print lots of debugging information",
74 action="store_true") 74 action="store_true")
75 parser.add_argument( 75 parser.add_argument(
76 '--version', 76 '--version',
77 action='version', 77 action='version',
78 version='0.1.0') 78 version='0.2.0')
79 79
80 args = parser.parse_args() 80 args = parser.parse_args()
81 81
82 if args.debug: 82 if args.debug:
83 logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - %(filename)s - %(levelname)s - %(message)s") 83 logging.basicConfig(level=logging.DEBUG, format="%(asctime)s - %(filename)s - %(levelname)s - %(message)s")
84 elif args.verbose: 84 elif args.verbose:
85 logging.basicConfig(level=logging.INFO, format="%(filename)s - %(levelname)s - %(message)s") 85 logging.basicConfig(level=logging.INFO, format="%(filename)s - %(levelname)s - %(message)s")
86 else: 86 else:
87 logging.basicConfig(format="%(filename)s - %(levelname)s - %(message)s") 87 logging.basicConfig(format="%(filename)s - %(levelname)s - %(message)s")
88 logging.info("Parsed arguments:") 88 logging.info("Parsed arguments:")
89 logging.info(" sam: '{}'".format(args.sam)) 89 logging.info(" infile: '{}'".format(args.infile))
90 if args.outfile: 90 if args.outfile:
91 logging.info(" outfile: enabled writing to file") 91 logging.info(" outfile: enabled writing to file")
92 logging.info(" outfile: '{}'".format(args.outfile)) 92 logging.info(" outfile: '{}'".format(args.outfile))
93 logging.info("") 93 logging.info("")
94 94
101 fn_sorted = tmpdir + "/sorted.bam" 101 fn_sorted = tmpdir + "/sorted.bam"
102 fn_fixedmates = tmpdir + "/fixedmates.bam" 102 fn_fixedmates = tmpdir + "/fixedmates.bam"
103 103
104 # sort by id 104 # sort by id
105 logging.debug("calling samtools sort") 105 logging.debug("calling samtools sort")
106 pysam.sort(args.sam, "-n", "-o{}".format(fn_sorted), "-T sortprefix") 106 pysam.sort(args.infile, "-n", "-o{}".format(fn_sorted), "-T sortprefix")
107 107
108 # fix mate information 108 # fix mate information
109 # also removes secondary and unmapped reads 109 # also removes secondary and unmapped reads
110 logging.debug("calling samtools fixmates") 110 logging.debug("calling samtools fixmates")
111 pysam.fixmate("-r", fn_sorted, fn_fixedmates) 111 pysam.fixmate("-r", fn_sorted, fn_fixedmates)