def _maybe_add_alignment(algorithm, sample, out): if _has_alignment_file(algorithm, sample) and dd.get_phenotype(sample) != "germline": for (fname, ext, isplus) in [(sample.get("work_bam"), "ready", False), (sample.get("umi_bam"), "umi", False), (sample.get("bigwig"), "ready", False), (dd.get_disc_bam(sample), "disc", True), (dd.get_sr_bam(sample), "sr", True)]: if fname and os.path.exists(fname): if fname.endswith("bam"): ftype, fext = "bam", ".bai" elif fname.endswith("cram"): ftype, fext = "cram", ".crai" elif fname.endswith("bw"): ftype, fext = "bw", ".bw" else: raise ValueError("Unexpected alignment file type %s" % fname) out.append({ "path": fname, "type": ftype, "plus": isplus, "ext": ext }) if utils.file_exists(fname + fext): out.append({ "path": fname + fext, "type": ftype + fext, "plus": isplus, "index": True, "ext": ext }) return out
def _maybe_add_alignment(algorithm, sample, out): if _has_alignment_file(algorithm, sample) and dd.get_phenotype(sample) != "germline": for (fname, ext, isplus) in [(sample.get("work_bam"), "ready", False), (sample.get("umi_bam"), "umi", False), (sample.get("bigwig"), "ready", False), (dd.get_disc_bam(sample), "disc", True), (dd.get_sr_bam(sample), "sr", True)]: if fname and os.path.exists(fname): if fname.endswith("bam"): ftype, fext = "bam", ".bai" elif fname.endswith("cram"): ftype, fext = "cram", ".crai" elif fname.endswith("bw"): ftype, fext = "bw", ".bw" else: raise ValueError("Unexpected alignment file type %s" % fname) out.append({"path": fname, "type": ftype, "plus": isplus, "ext": ext}) if utils.file_exists(fname + fext): out.append({"path": fname + fext, "type": ftype + fext, "plus": isplus, "index": True, "ext": ext}) return out
def find_existing_split_discordants(data): """Check for pre-calculated split reads and discordants done as part of alignment streaming. """ in_bam = dd.get_align_bam(data) sr_file = "%s-sr.bam" % os.path.splitext(in_bam)[0] disc_file = "%s-disc.bam" % os.path.splitext(in_bam)[0] if utils.file_exists(sr_file) and utils.file_exists(disc_file): return sr_file, disc_file else: sr_file = dd.get_sr_bam(data) disc_file = dd.get_disc_bam(data) if sr_file and utils.file_exists(sr_file) and disc_file and utils.file_exists(disc_file): return sr_file, disc_file else: return None, None
def _find_existing_inputs(data): """Check for pre-calculated split reads and discordants done as part of alignment streaming. """ in_bam = dd.get_align_bam(data) sr_file = "%s-sr.bam" % os.path.splitext(in_bam)[0] disc_file = "%s-disc.bam" % os.path.splitext(in_bam)[0] if utils.file_exists(sr_file) and utils.file_exists(disc_file): return in_bam, sr_file, disc_file else: sr_file = dd.get_sr_bam(data) disc_file = dd.get_disc_bam(data) if sr_file and utils.file_exists(sr_file) and disc_file and utils.file_exists(disc_file): return in_bam, sr_file, disc_file else: return None, None, None