def report_summary(samples, run_parallel): """ Run coverage report with bcbiocov package """ work_dir = dd.get_work_dir(samples[0][0]) parent_dir = utils.safe_makedir(os.path.join(work_dir, "report")) qsignature_fn = os.path.join(work_dir, "qc", "qsignature", "qsignature.ma") with utils.chdir(parent_dir): logger.info("copy qsignature") if qsignature_fn: if utils.file_exists(qsignature_fn) and not utils.file_exists("qsignature.ma"): shutil.copy(qsignature_fn, "qsignature.ma") out_dir = utils.safe_makedir("fastqc") logger.info("summarize fastqc") with utils.chdir(out_dir): _merge_fastqc(samples) out_dir = utils.safe_makedir("coverage") out_dir = utils.safe_makedir("variants") samples = run_parallel("coverage_report", samples) try: import bcbreport.prepare as bcbreport bcbreport.report(parent_dir) except: logger.info("skipping report. No bcbreport installed.") pass logger.info("summarize metrics") samples = _merge_metrics(samples) return samples
def _report_summary(samples, out_dir): """ Run coverage report with bcbiocov package """ try: import bcbreport.prepare as bcbreport except ImportError: logger.info("skipping report. No bcbreport installed.") return samples # samples = utils.unpack_worlds(samples) work_dir = dd.get_work_dir(samples[0]) parent_dir = utils.safe_makedir(out_dir) with utils.chdir(parent_dir): logger.info("copy qsignature") qsignature_fn = os.path.join(work_dir, "qc", "qsignature", "qsignature.ma") if qsignature_fn: # this need to be inside summary/qc dict if utils.file_exists( qsignature_fn) and not utils.file_exists("qsignature.ma"): shutil.copy(qsignature_fn, "bcbio_qsignature.ma") out_dir = utils.safe_makedir("fastqc") logger.info("summarize fastqc") with utils.chdir(out_dir): _merge_fastqc(samples) logger.info("summarize metrics") samples = _merge_metrics(samples) logger.info("summarize target information") samples = _merge_target_information(samples) out_dir = utils.safe_makedir("coverage") logger.info("summarize coverage") for data in samples: pfiles = tz.get_in(["summary", "qc", "coverage"], data, []) if isinstance(pfiles, dict): pfiles = [pfiles["base"]] + pfiles["secondary"] elif pfiles: pfiles = [pfiles] for fn in pfiles: if os.path.basename(fn).find("coverage_fixed") > -1: utils.copy_plus( fn, os.path.join(out_dir, os.path.basename(fn))) out_dir = utils.safe_makedir("variants") logger.info("summarize variants") for data in samples: pfiles = tz.get_in(["summary", "qc", "variants"], data, []) if isinstance(pfiles, dict): pfiles = [pfiles["base"]] + pfiles["secondary"] elif pfiles: pfiles = [pfiles] for fn in pfiles: if os.path.basename(fn).find("gc-depth-parse.tsv") > -1: utils.copy_plus( fn, os.path.join(out_dir, os.path.basename(fn))) bcbreport.report(parent_dir) out_report = os.path.join(parent_dir, "qc-coverage-report.html") if not utils.file_exists(out_report): rmd_file = os.path.join(parent_dir, "report-ready.Rmd") run_file = "%s-run.R" % (os.path.splitext(out_report)[0]) with open(run_file, "w") as out_handle: out_handle.write("""library(rmarkdown)\nrender("%s")\n""" % rmd_file) cmd = "%s %s" % (utils.Rscript_cmd(), run_file) # Skip automated generation of coverage report to avoid error # messages. We need to generalize coverage reporting and re-include. # try: # do.run(cmd, "Prepare coverage summary", log_error=False) # except subprocess.CalledProcessError as msg: # logger.info("Skipping generation of coverage report: %s" % (str(msg))) if utils.file_exists("report-ready.html"): shutil.move("report-ready.html", out_report) return samples
def _report_summary(samples, out_dir): """ Run coverage report with bcbiocov package """ try: import bcbreport.prepare as bcbreport except ImportError: logger.info("skipping report. No bcbreport installed.") return samples # samples = utils.unpack_worlds(samples) work_dir = dd.get_work_dir(samples[0]) parent_dir = utils.safe_makedir(out_dir) with utils.chdir(parent_dir): logger.info("copy qsignature") qsignature_fn = os.path.join(work_dir, "qc", "qsignature", "qsignature.ma") if qsignature_fn: # this need to be inside summary/qc dict if utils.file_exists(qsignature_fn) and not utils.file_exists("qsignature.ma"): shutil.copy(qsignature_fn, "bcbio_qsignature.ma") out_dir = utils.safe_makedir("fastqc") logger.info("summarize fastqc") with utils.chdir(out_dir): _merge_fastqc(samples) logger.info("summarize metrics") samples = _merge_metrics(samples) out_dir = utils.safe_makedir("coverage") logger.info("summarize coverage") for data in samples: pfiles = tz.get_in(["summary", "qc", "coverage"], data, []) if isinstance(pfiles, dict): pfiles = [pfiles["base"]] + pfiles["secondary"] elif pfiles: pfiles = [pfiles] for fn in pfiles: if os.path.basename(fn).find("coverage_fixed") > -1: utils.copy_plus(fn, os.path.join(out_dir, os.path.basename(fn))) out_dir = utils.safe_makedir("variants") logger.info("summarize variants") for data in samples: pfiles = tz.get_in(["summary", "qc", "variants"], data, []) if isinstance(pfiles, dict): pfiles = [pfiles["base"]] + pfiles["secondary"] elif pfiles: pfiles = [pfiles] for fn in pfiles: if os.path.basename(fn).find("gc-depth-parse.tsv") > -1: utils.copy_plus(fn, os.path.join(out_dir, os.path.basename(fn))) bcbreport.report(parent_dir) out_report = os.path.join(parent_dir, "qc-coverage-report.html") if not utils.file_exists(out_report): rmd_file = os.path.join(parent_dir, "report-ready.Rmd") run_file = "%s-run.R" % (os.path.splitext(out_report)[0]) with open(run_file, "w") as out_handle: out_handle.write("""library(rmarkdown)\nrender("%s")\n""" % rmd_file) cmd = "%s %s" % (utils.Rscript_cmd(), run_file) # Skip automated generation of coverage report to avoid error # messages. We need to generalize coverage reporting and re-include. # try: # do.run(cmd, "Prepare coverage summary", log_error=False) # except subprocess.CalledProcessError, msg: # logger.info("Skipping generation of coverage report: %s" % (str(msg))) if utils.file_exists("report-ready.html"): shutil.move("report-ready.html", out_report) return samples