def _run_cnvkit_shared(data, test_bams, background_bams, access_file, work_dir, background_name=None): """Shared functionality to run CNVkit. """ ref_file = dd.get_ref_file(data) raw_work_dir = os.path.join(work_dir, "raw") out_base = os.path.splitext(os.path.basename(test_bams[0]))[0] background_cnn = "%s_background.cnn" % (background_name if background_name else "flat") if not utils.file_exists(os.path.join(raw_work_dir, "%s.cnr" % out_base)): with tx_tmpdir(data, work_dir) as tx_work_dir: target_bed = tz.get_in(["config", "algorithm", "variant_regions"], data) cmd = ["batch"] + test_bams + ["-n"] + background_bams + ["-f", ref_file] + \ ["--targets", target_bed, "--access", access_file, "-d", raw_work_dir, "--split", "-p", str(tz.get_in(["config", "algorithm", "num_cores"], data, 1)), "--output-reference", os.path.join(raw_work_dir, background_cnn)] at_avg, at_min, t_avg = _get_antitarget_size(access_file, target_bed) if at_avg: cmd += ["--antitarget-avg-size", str(at_avg), "--antitarget-min-size", str(at_min), "--target-avg-size", str(t_avg)] args = cnvlib_cmd.parse_args(cmd) args.func(args) shutil.move(tx_work_dir, raw_work_dir) return {"cnr": os.path.join(raw_work_dir, "%s.cnr" % out_base), "cns": os.path.join(raw_work_dir, "%s.cns" % out_base), "back_cnn": os.path.join(raw_work_dir, background_cnn)}
def _run_cnvkit_shared(data, test_bams, background_bams, access_file, work_dir, background_name=None): """Shared functionality to run CNVkit. """ ref_file = dd.get_ref_file(data) raw_work_dir = os.path.join(work_dir, "raw") out_base = os.path.splitext(os.path.basename(test_bams[0]))[0] background_cnn = "%s_background.cnn" % (background_name if background_name else "flat") if not utils.file_exists(os.path.join(raw_work_dir, "%s.cnr" % out_base)): with tx_tmpdir(data, work_dir) as tx_work_dir: target_bed = tz.get_in(["config", "algorithm", "variant_regions"], data) cmd = ["batch"] + test_bams + ["-n"] + background_bams + ["-f", ref_file] + \ ["--targets", target_bed, "--access", access_file, "-d", raw_work_dir, "--split", "-p", str(tz.get_in(["config", "algorithm", "num_cores"], data, 1)), "--output-reference", os.path.join(raw_work_dir, background_cnn)] at_avg, at_min, t_avg = _get_antitarget_size(access_file, target_bed) if at_avg: cmd += ["--antitarget-avg-size", str(at_avg), "--antitarget-min-size", str(at_min), "--target-avg-size", str(t_avg)] local_sitelib = os.path.join(install.get_defaults().get("tooldir", "/usr/local"), "lib", "R", "site-library") cmd += ["--rlibpath", local_sitelib] args = cnvlib_cmd.parse_args(cmd) args.func(args) shutil.move(tx_work_dir, raw_work_dir) return {"cnr": os.path.join(raw_work_dir, "%s.cnr" % out_base), "cns": os.path.join(raw_work_dir, "%s.cns" % out_base), "back_cnn": os.path.join(raw_work_dir, background_cnn)}
def _add_seg_to_output(out, items): """Export outputs to 'seg' format compatible with IGV and GenePattern. """ out_file = "%s.seg" % os.path.splitext(out["cns"])[0] if not utils.file_exists(out_file): with file_transaction(items[0], out_file) as tx_out_file: cmd = ["export", "seg", "-o", tx_out_file, out["cns"]] args = cnvlib_cmd.parse_args(cmd) args.func(args) out["seg"] = out_file return out
def _add_seg_to_output(out, items): """Export outputs to 'seg' format compatible with IGV and GenePattern. """ out_file = "%s.seg" % os.path.splitext(out["cns"])[0] if not utils.file_exists(out_file): with file_transaction(items[0], out_file) as tx_out_file: cmd = ["export", "seg", "-o", tx_out_file, out["cns"]] args = cnvlib_cmd.parse_args(cmd) args.func(args) out["seg"] = out_file return out
def _run_cnvkit_single(data, work_dir): """Process a single input file with a uniform background. """ ref_file = dd.get_ref_file(data) access_file = _create_access_file(ref_file, work_dir) raw_work_dir = os.path.join(work_dir, "raw") if not utils.file_exists(os.path.join(raw_work_dir, "%s.cnr" % os.path.splitext(os.path.basename(data["align_bam"]))[0])): with utils.curdir_tmpdir(data, work_dir) as tx_work_dir: cmd = ["batch", data["align_bam"], "-n", "-f", ref_file, "--targets", tz.get_in(["config", "algorithm", "variant_regions"], data), "--access", access_file, "-d", tx_work_dir, "--split", "-p", str(tz.get_in(["config", "algorithm", "num_cores"], data, 1)), # XXX Currently set for testing -- need to generalize "--target-avg-size", "500", "--antitarget-avg-size", "500"] args = cnvlib_cmd.parse_args(cmd) args.func(args) shutil.move(tx_work_dir, raw_work_dir) raise NotImplementedError
#!/usr/bin/env python """Command-line interface for CNVkit, the Copy Number Variation toolkit.""" import logging from cnvlib import commands if __name__ == '__main__': logging.basicConfig(level=logging.INFO, format="%(message)s") args = commands.parse_args() args.func(args)