def _maybe_add_summary(algorithm, sample, out): out = [] if "summary" in sample: if sample["summary"].get("pdf"): out.append({ "path": sample["summary"]["pdf"], "type": "pdf", "ext": "summary" }) if sample["summary"].get("qc"): out.append({ "path": sample["summary"]["qc"], "type": "directory", "ext": "qc" }) if utils.get_in(sample, ("summary", "researcher")): out.append({ "path": sample["summary"]["researcher"], "type": "tsv", "sample": run_info.clean_name( utils.get_in(sample, ("upload", "researcher"))), "ext": "summary" }) return out
def _maybe_add_summary(algorithm, sample, out): out = [] if "summary" in sample: if sample["summary"].get("pdf"): out.append({ "path": sample["summary"]["pdf"], "type": "pdf", "ext": "summary" }) if sample["summary"].get("qc"): for program, finfo in sample["summary"]["qc"].items(): out.extend( _flatten_file_with_secondary(finfo, os.path.join("qc", program))) if utils.get_in(sample, ("summary", "researcher")): out.append({ "path": sample["summary"]["researcher"], "type": "tsv", "sample": run_info.clean_name( utils.get_in(sample, ("upload", "researcher"))), "ext": "summary" }) return out
def _summary_csv_by_researcher(summary_yaml, researcher, descrs, data): """Generate a CSV file with summary information for a researcher on this project. """ out_file = os.path.join(utils.safe_makedir(os.path.join(data["dirs"]["work"], "researcher")), "%s-summary.tsv" % run_info.clean_name(researcher)) metrics = ["Total reads", "Mapped reads", "Mapped reads pct", "Duplicates", "Duplicates pct"] with open(summary_yaml) as in_handle: with open(out_file, "w") as out_handle: writer = csv.writer(out_handle, dialect="excel-tab") writer.writerow(["Name"] + metrics) for sample in yaml.safe_load(in_handle)["samples"]: if sample["description"] in descrs: row = [sample["description"]] + [utils.get_in(sample, ("summary", "metrics", x), "") for x in metrics] writer.writerow(row) return out_file
def _maybe_add_summary(algorithm, sample, out): out = [] if "summary" in sample: if sample["summary"].get("pdf"): out.append({"path": sample["summary"]["pdf"], "type": "pdf", "ext": "summary"}) if sample["summary"].get("qc"): for program, finfo in sample["summary"]["qc"].iteritems(): out.extend(_flatten_file_with_secondary(finfo, os.path.join("qc", program))) if utils.get_in(sample, ("summary", "researcher")): out.append({"path": sample["summary"]["researcher"], "type": "tsv", "sample": run_info.clean_name(utils.get_in(sample, ("upload", "researcher"))), "ext": "summary"}) return out
def _summary_csv_by_researcher(summary_yaml, researcher, descrs, data): """Generate a CSV file with summary information for a researcher on this project. """ out_file = os.path.join(utils.safe_makedir(os.path.join(data["dirs"]["work"], "researcher")), "%s-summary.tsv" % run_info.clean_name(researcher)) metrics = ["Total_reads", "Mapped_reads", "Mapped_reads_pct", "Duplicates", "Duplicates_pct"] with open(summary_yaml) as in_handle: with open(out_file, "w") as out_handle: writer = csv.writer(out_handle, dialect="excel-tab") writer.writerow(["Name"] + metrics) for sample in yaml.safe_load(in_handle)["samples"]: if sample["description"] in descrs: row = [sample["description"]] + [utils.get_in(sample, ("summary", "metrics", x), "") for x in metrics] writer.writerow(row) return out_file
def _prepare_sample(data, run_folder): """Extract passed keywords from input LIMS information. """ want = set(["description", "files", "genome_build", "name", "analysis", "upload", "algorithm"]) out = {} for k, v in data.items(): if k in want: out[k] = _relative_paths(v, run_folder) if "algorithm" not in out: analysis, algorithm = _select_default_algorithm(out.get("analysis")) out["algorithm"] = algorithm out["analysis"] = analysis description = "%s-%s" % (out["name"], clean_name(out["description"])) out["name"] = [out["name"], description] out["description"] = description return out
def _flatten_lane_details(runinfo): """Provide flattened lane information with multiplexed barcodes separated. """ out = [] for ldetail in runinfo["details"]: # handle controls if "project_name" not in ldetail and ldetail["description"] == "control": ldetail["project_name"] = "control" for i, barcode in enumerate(ldetail.get("multiplex", [{}])): cur = copy.deepcopy(ldetail) cur["name"] = "%s-%s" % (ldetail["name"], i + 1) cur["description"] = barcode.get("name", ldetail["description"]) cur["bc_index"] = barcode.get("sequence", "") cur["project_name"] = clean_name(ldetail["project_name"]) out.append(cur) return out
def _maybe_add_summary(algorithm, sample, out): out = [] if "summary" in sample: if sample["summary"].get("pdf"): out.append({"path": sample["summary"]["pdf"], "type": "pdf", "ext": "summary"}) if sample["summary"].get("qc"): out.append({"path": sample["summary"]["qc"], "type": "directory", "ext": "qc"}) if utils.get_in(sample, ("summary", "researcher")): out.append({"path": sample["summary"]["researcher"], "type": "tsv", "sample": run_info.clean_name(utils.get_in(sample, ("upload", "researcher"))), "ext": "summary"}) return out
def _add_meta(xs, sample=None, config=None): out = [] for x in xs: x["mtime"] = shared.get_file_timestamp(x["path"]) if sample and "sample" not in x: if isinstance(sample["name"], (tuple, list)): name = sample["name"][-1] else: name = "%s-%s" % (sample["name"], run_info.clean_name(sample["description"])) x["sample"] = name if config: if "fc_name" in config and "fc_date" in config: x["run"] = "%s_%s" % (config["fc_date"], config["fc_name"]) else: x["run"] = "project_%s" % datetime.datetime.now().strftime("%Y-%m-%d") out.append(x) return out