def samples(): """ Flask function to show list of all samples in the database. """ mgr = sample_manager(db="test",conn=g.conn) rows = mgr.get_all_samples() return render_template("samples.html", sample_rows=rows, columns=["sample_id","study_name", "files","attributes"])
def _variants(): query = GaussQuery(db="test", conn=g.conn) if is_arg("sample_id"): sample_mgr = sample_manager(db="test", conn=g.conn) sample_id = sample_mgr.get_sample(request.args["sample_id"])["_id"] query.add("sample_id", sample_id) if is_arg("gene"): query.add("annotations.EFF.g", request.args["gene"]) if is_arg("isoform"): query.add("annotations.EFF.tx", request.args["isoform"]) if is_arg("chrom") and is_arg("start") and is_arg("end"): chrom = request.args["chrom"].lower().replace("chr", "") start = int(request.args["start"]) end = int(request.args["end"]) query.add("chrom", chrom) query.add("start", {'$gte': start, '$lte': end}) if is_arg("limit"): query.set_limit(request.args["limit"]) if is_arg("skip"): query.set_skip(request.args["skip"]) if is_arg("columns"): for c in request.args["columns"].rstrip(";").split(";"): query.add_column(c) if is_arg("exclude_filters"): for f in request.args["exclude_filters"].split(";"): query.add_exclude_filter(f) if is_arg("include_filters"): for f in request.args["include_filters"].strip(";").split(";"): query.add_include_filter(f) if is_arg("group"): query.set_grouping(request.args["group"]) query.execute() return query.get_results(format="datatables")
def samples_info(sample_id): """ Flask function to return sample info page. Returns a summary of the number of variants in this sample, as well as the files attached to this sample and metadata. """ mgr = sample_manager(db="test",conn=g.conn) var_mgr = variant_manager(db="test",conn=g.conn) data = mgr.get_sample(sample_id = sample_id) effect_summary = var_mgr.get_sample_variant_summary(data["_id"]) for row in effect_summary: eff_code = row["_id"] eff_type = VARIANT_EFFECTS[eff_code] eff_rank = VARIANT_RANKS[eff_type] row["effect_str"] = Markup("<span class='label impact-tag %s'>%s</span>" % (eff_type, VARIANT_SHORTNAMES[eff_code])) row["effect_rank"] = eff_rank rank_sort = np.argsort(map(operator.itemgetter("effect_rank"), effect_summary)) data["variant_summary"] = [effect_summary[i] for i in rank_sort[::-1]] return render_template("sample_info.html", sample_id=sample_id, info=data)