Skip to content

Commit

Permalink
Fixed up allele frequency table, added small vis of AFs
Browse files Browse the repository at this point in the history
  • Loading branch information
konradjk committed Sep 30, 2014
1 parent b9cd1ce commit 8ae46f0
Show file tree
Hide file tree
Showing 7 changed files with 72 additions and 15 deletions.
6 changes: 6 additions & 0 deletions exac.py
Expand Up @@ -32,6 +32,9 @@
],
))

import math
app.jinja_env.globals.update(log=math.log)


def connect_db():
"""
Expand Down Expand Up @@ -320,10 +323,13 @@ def region_page(region_id):
def dbsnp_page(rsid):
db = get_db()
variant = lookups.get_variants_by_rsid(db, rsid)
print variant
return render_template(
'region.html',
rsid=rsid,
variants_in_region=variant,
coverage=None,
genes_in_region=None
)

@app.route('/howtouse')
Expand Down
20 changes: 14 additions & 6 deletions parsing.py
Expand Up @@ -96,15 +96,23 @@ def get_variants_from_sites_vcf(sites_vcf):
variant['site_quality'] = float(fields[5])
variant['filter'] = fields[6]
variant['vep_annotations'] = vep_annotations
variant['allele_count'] = int(info_field['AC'].split(',')[i])
variant['allele_freq'] = float(info_field['AF'].split(',')[i])
# variant['pop_acs'] = dict([(x, info_field[x].split(',')[i]) for x in info_field if x.startswith('AC_')])
# variant['pop_ans'] = dict([(x, info_field[x].split(',')[i]) for x in info_field if x.startswith('AN_')])
# variant['pop_homs'] = dict([(x, info_field[x]) for x in info_field if x.startswith('Hom_')])

variant['allele_count'] = int(info_field['AC_Adj'].split(',')[i])
variant['allele_num'] = int(info_field['AN_Adj'])

if variant['allele_num'] > 0:
variant['allele_freq'] = float(info_field['AC_Adj'].split(',')[i])/float(info_field['AN_Adj'])
else:
variant['allele_freq'] = None

variant['pop_acs'] = dict([(POPS[x], int(info_field['AC_%s' % x].split(',')[i])) for x in POPS])
variant['pop_ans'] = dict([(POPS[x], int(info_field['AN_%s' % x])) for x in POPS])
variant['pop_homs'] = dict([(POPS[x], int(info_field['Hom_%s' % x].split(',')[i])) for x in POPS])
variant['num_alleles'] = int(info_field['AN'])

variant['pop_acs']['Other'] = int(info_field['AC_Adj'].split(',')[i]) - sum(variant['pop_acs'].values())
variant['pop_ans']['Other'] = int(info_field['AN_Adj']) - sum(variant['pop_ans'].values())
variant['pop_homs']['Other'] = int(info_field['AC_Hom']) - sum(variant['pop_homs'].values())

variant['genes'] = list({annotation['Gene'] for annotation in vep_annotations})
variant['transcripts'] = list({annotation['Feature'] for annotation in vep_annotations})

Expand Down
1 change: 1 addition & 0 deletions src/precompute_histogram.py
Expand Up @@ -83,6 +83,7 @@ def get_histogram_for_variant(vcf_line, metric="DP", num_bins=40, midpoints=True
for sample in fields[9:]:
# This is only DP/GQ for now
sample_info = sample.split(':')
if sample_info[0] == './.': continue
if idx < len(sample_info) and sample_info[idx] != '.':
distr.append(sample_info[idx])

Expand Down
1 change: 0 additions & 1 deletion static/exac.js
Expand Up @@ -4,7 +4,6 @@ quality_chart_margin = {top: 10, right: 30, bottom: 50, left: 50},


function draw_histogram_d3(data) {
console.log(data);
var x = d3.scale.linear()
.domain([d3.min(data, function(d) { return d[0]; }), d3.max(data, function(d) { return d[0]; })])
.range([0, quality_chart_width]);
Expand Down
12 changes: 7 additions & 5 deletions templates/region.html
Expand Up @@ -6,7 +6,9 @@
window.variants = {{ variants_in_region|tojson|safe }};

$(document).ready(function() {
region_chart(window.coverage_stats, window.variants);
if (window.coverage_stats != null) {
region_chart(window.coverage_stats, window.variants);
}
});
</script>
<div class="container">
Expand All @@ -15,11 +17,11 @@ <h1>RSID: {{ rsid }}</h1>
{% else %}
<h1>Region: {{ chrom }} / {{ start }} / {{ stop }}</h1>
{% endif %}
<h3>Coverage summary</h3>
<div class="row">
{% include 'region_display.html' %}
</div>
{% if genes_in_region %}
<h3>Coverage summary</h3>
<div class="row">
{% include 'region_display.html' %}
</div>
<ul>
{% for gene in genes_in_region %}
<li><a href="/gene/{{ gene.gene_id }}">{{ gene.gene_id }}</a></li>
Expand Down
10 changes: 9 additions & 1 deletion templates/variant.html
Expand Up @@ -109,7 +109,7 @@ <h1>Variant: {{ variant.chrom }}:{{ variant.pos }} {{ variant.ref }} / {{ varian
<dt>Allele Frequency</dt>
<dd>{{ variant.allele_freq }}</dd>
<dt>Allele Count</dt>
<dd>{{ variant.allele_count }} / {{ variant.num_alleles }}</dd>
<dd>{{ variant.allele_count }} / {{ variant.allele_num }}</dd>
</dl>
</div>
<div class="col-md-6">
Expand Down Expand Up @@ -186,6 +186,14 @@ <h3>Population Frequencies</h3>
</tr>
{% endfor %}
</tbody>
<tfoot>
<tr>
<td><b>Total</b></td>
<td><b>{{ variant.pop_acs.values()|sum }}</b></td>
<td><b>{{ variant.pop_homs.values()|sum }}</b></td>
<td><b>{{ variant.allele_freq }}</b></td>
</tr>
</tfoot>
</table>
</div>
</div>
Expand Down
37 changes: 35 additions & 2 deletions templates/variant_table.html
Expand Up @@ -7,12 +7,41 @@
$("#variants_table_container").show();
$("#variant_table").tablesorter({
widthFixed: true,
sortList: [[1,0]]
sortList: [[1,0]],
headers: {
6: { sorter: false, parser: false }
}
});
{# .tablesorterPager({container: $("#pager"), positionFixed: false});#}
{# if (window.table_variants.length <= 10) {#}
$('#pager').hide();
{# }#}
$(document).ready(function() {
var data = window.table_variants;

var width = 50;
var height = 15;

var x = d3.scale.log()
.domain([d3.min(data, function(d) { return d.allele_freq; })/2, 1])
.range([0, width]);

var svg;
$.each(data, function(i, d) {
svg = d3.select('#variant_af_box_' + d.variant_id)
.append("svg")
.attr("width", width)
.attr("height", height)
.append("g");

svg.append('rect')
.style('fill', 'steelblue')
.attr('x', 0)
.attr('y', 0)
.attr('width', x(d.allele_freq))
.attr('height', height);
});
});
});
</script>
<div id="variants_loading">Loading variants...</div>
Expand All @@ -26,6 +55,7 @@
<th>Annotation</th>
<th>Allele Count</th>
<th>Allele Frequency</th>
<th></th>
</tr>
</thead>
<tbody>
Expand Down Expand Up @@ -57,7 +87,10 @@
<td> {{ variant.filter }} </td>
<td class="{{ variant.category }}"><b> {{ variant.major_consequence }} </b> </td>
<td> {{ variant.allele_count }} </td>
<td> {{ variant.allele_freq }} </td>
<td>
{{ variant.allele_freq }}
</td>
<td id="variant_af_box_{{ variant.variant_id }}"></td>
</tr>
{% endfor %}
<tbody>
Expand Down

0 comments on commit 8ae46f0

Please sign in to comment.