comparison tools/mira4/mira4_make_bam.py @ 21:4abe8d59a438 draft

Uploaded v0.0.4 preview 1; fix getting BAM without MAF
author peterjc
date Tue, 28 Oct 2014 08:29:59 -0400
parents 302d13490b23
children
comparison
equal deleted inserted replaced
20:aeb3e35f8236 21:4abe8d59a438
30 stdout = stdout[:10] + ["...", "<snip>", "..."] + stdout[-10:] 30 stdout = stdout[:10] + ["...", "<snip>", "..."] + stdout[-10:]
31 stdout = "\n".join(stdout) 31 stdout = "\n".join(stdout)
32 log_handle.write(stdout) 32 log_handle.write(stdout)
33 return child.returncode 33 return child.returncode
34 34
35 def depad(fasta_file, sam_file, bam_file, log_handle):
36 log_handle.write("\n================= Converting MIRA assembly from SAM to BAM ===================\n")
37 #Also doing SAM to (uncompressed) BAM during depad
38 bam_stem = bam_file + ".tmp" # Have write permissions and want final file in this folder
39 cmd = 'samtools depad -S -u -T "%s" "%s" | samtools sort - "%s"' % (fasta_file, sam_file, bam_stem)
40 return_code = run(cmd, log_handle)
41 if return_code:
42 return "Error %i from command:\n%s" % (return_code, cmd)
43 if not os.path.isfile(bam_stem + ".bam"):
44 return "samtools depad or sort failed to produce BAM file"
45
46 log_handle.write("\n====================== Indexing MIRA assembly BAM file =======================\n")
47 cmd = 'samtools index "%s.bam"' % bam_stem
48 return_code = run(cmd, log_handle)
49 if return_code:
50 return "Error %i from command:\n%s" % (return_code, cmd)
51 if not os.path.isfile(bam_stem + ".bam.bai"):
52 return "samtools indexing of BAM file failed to produce BAI file"
53
54 shutil.move(bam_stem + ".bam", bam_file)
55 os.remove(bam_stem + ".bam.bai") #Let Galaxy handle that...
56
57
35 def make_bam(mira_convert, maf_file, fasta_file, bam_file, log_handle): 58 def make_bam(mira_convert, maf_file, fasta_file, bam_file, log_handle):
36 if not os.path.isfile(mira_convert): 59 if not os.path.isfile(mira_convert):
37 return "Missing binary %r" % mira_convert 60 return "Missing binary %r" % mira_convert
38 if not os.path.isfile(maf_file): 61 if not os.path.isfile(maf_file):
39 return "Missing input MIRA file: %r" % maf_file 62 return "Missing input MIRA file: %r" % maf_file
50 if return_code: 73 if return_code:
51 return "Error %i from command:\n%s" % (return_code, cmd) 74 return "Error %i from command:\n%s" % (return_code, cmd)
52 if not os.path.isfile(sam_file): 75 if not os.path.isfile(sam_file):
53 return "Conversion from MIRA to SAM failed" 76 return "Conversion from MIRA to SAM failed"
54 77
55 log_handle.write("\n================= Converting MIRA assembly from SAM to BAM ===================\n")
56 #Also doing SAM to (uncompressed) BAM during depad 78 #Also doing SAM to (uncompressed) BAM during depad
57 bam_stem = bam_file + ".tmp" # Have write permissions and want final file in this folder 79 msg = depad(fasta_file, sam_file, bam_file, log_handle)
58 cmd = 'samtools depad -S -u -T "%s" "%s" | samtools sort - "%s"' % (fasta_file, sam_file, bam_stem) 80 if msg:
59 return_code = run(cmd, log_handle) 81 return msg
60 if return_code:
61 return "Error %i from command:\n%s" % (return_code, cmd)
62 if not os.path.isfile(bam_stem + ".bam"):
63 return "samtools depad or sort failed to produce BAM file"
64 82
65 os.remove(sam_file) 83 os.remove(sam_file)
66 os.rmdir(tmp_dir) 84 os.rmdir(tmp_dir)
67
68 log_handle.write("\n====================== Indexing MIRA assembly BAM file =======================\n")
69 cmd = 'samtools index "%s.bam"' % bam_stem
70 return_code = run(cmd, log_handle)
71 if return_code:
72 return "Error %i from command:\n%s" % (return_code, cmd)
73 if not os.path.isfile(bam_stem + ".bam.bai"):
74 return "samtools indexing of BAM file failed to produce BAI file"
75
76 shutil.move(bam_stem + ".bam", bam_file)
77 os.remove(bam_stem + ".bam.bai") #Let Galaxy handle that...
78 85
79 return None #Good :) 86 return None #Good :)
80 87
81 if __name__ == "__main__": 88 if __name__ == "__main__":
82 mira_convert, maf_file, fasta_file, bam_file = sys.argv[1:] 89 mira_convert, maf_file, fasta_file, bam_file = sys.argv[1:]