def merge_bam_files(bam_files, work_dir, config): """Merge multiple BAM files from a sample into a single BAM for processing. """ out_file = os.path.join(work_dir, os.path.basename(bam_files[0])) if not os.path.exists(out_file): picard = PicardRunner(config["program"]["picard"]) with utils.curdir_tmpdir() as tmp_dir: opts = [("OUTPUT", out_file), ("SORT_ORDER", "coordinate"), ("TMP_DIR", tmp_dir)] for b in bam_files: opts.append(("INPUT", b)) picard.run("MergeSamFiles", opts) return out_file