Пример #1
0
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"])
Пример #2
0
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")
Пример #3
0
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)