Пример #1
0
def gene(gene_name):
    title = gene_name
    tbl_color = {"LOW": 'success', "MODERATE": 'warning', "HIGH": 'danger'}
    bcs = OrderedDict([("Gene", None), (title, None)])

    result = list(wb_gene.filter((wb_gene.Name == gene_name) |
                                  (wb_gene.sequence_name == gene_name) |
                                  (wb_gene.locus == gene_name)).dicts().execute())

    if len(result) != 1:
        return render_template('404.html'), 404

    gene_record = result[0]

    # Retrieve variants
    variants = WI.select().filter(
               WI.CHROM == gene_record["CHROM"],
               WI.gene_id == gene_record["Name"]).dicts().execute()

    # Retrieve mappings
    mapping_set = mapping.select(mapping, trait, report) \
                       .join(trait) \
                       .join(report) \
                       .where((gene_record["CHROM"] == mapping.chrom) &
                        (report.release == 0) &
                        (gene_record["start"] >= mapping.interval_start) & 
                        (gene_record["end"] <= mapping.interval_end)) \
                       .dicts() \
                       .execute()



    return render_template('gene.html', **locals())
Пример #2
0
def gt_from_interval(chrom, start, end, var_eff):
    if var_eff == "ALL":
        var_eff = WI.CHROM == chrom
    else:
        var_eff = (WI.putative_impact << var_eff)
    result = list(WI.select(WI.CHROM,
                            WI.POS,
                            WI.REF,
                            WI.ALT,
                            WI.FILTER,
                            WI.transcript_biotype,
                            WI.putative_impact,
                            WI.gene_name,
                            WI.gene_id,
                            WI.hgvs_p,
                            WI.protein_position,
                            WI.GT,
                            WI.feature_id,
                            WI.annotation)
                    .filter(WI.CHROM == chrom,
                            WI.POS >= start,
                            WI.POS <= end,
                            var_eff) 
                    .limit(1000)
                    .dicts()
                    .execute())
    for i in result:
        i["GT"] = decode_gt(i["GT"])
    return result
Пример #3
0
def variants_in_biotype(chrom, start, end):
    q = list(WI.select(WI.transcript_biotype) \
               .filter(WI.gene_id != "",
                  WI.CHROM == chrom,
                  WI.POS >= start,
                  WI.POS <= end,
                  WI.FILTER == "") \
          .group_by(WI.variant) \
          .tuples()
          .execute())
    q = count_column(q)
    q["total"] = sum(q.values())
    return q
Пример #4
0
def get_variant_count(chrom, start, end, filter=True):
    """
        Return the number of variants within an interval
    """
    if filter:
        var_filter = (WI.FILTER == "")
    else:
        var_filter = (1 == 1)
    return WI.select(WI.variant) \
        .filter((WI.CHROM == chrom) &
                (WI.POS >= start) &
                (WI.POS <= end) &
                (var_filter)) \
        .group_by() \
        .distinct().count()
Пример #5
0
def get_gene_w_impact(chrom, start, end):
    """
        Return Genes with variants of given impact for a given interval
    """
    q_biotype = Counter(list(WI.select(WI.transcript_biotype, WI.putative_impact) \
               .filter(WI.gene_id != "",
                  WI.CHROM == chrom,
                  WI.POS >= start,
                  WI.POS <= end,
                  WI.FILTER == "") \
          .group_by(WI.gene_id, WI.transcript_biotype) \
          .tuples()
          .execute()))
    total = {"LOW": 0, "MODERATE": 0, "HIGH":0}
    for k,v in zip([x[1] for x in q_biotype.keys()], q_biotype.values()):
        total[k] += v
    by_biotype = defaultdict(dict)
    for k,v in q_biotype.items():
        by_biotype[k[1]][k[0]] = v
    response = {}
    response["total"] = total
    response.update(by_biotype)
    return response
Пример #6
0
def get_gt(chrom, pos):
    """
        return GT by chrom and position
    """
    return decode_gt(WI.get(WI.CHROM == chrom, WI.POS == pos).GT)