diff --git a/exac.py b/exac.py index fa0950f..bad5d17 100644 --- a/exac.py +++ b/exac.py @@ -32,6 +32,9 @@ ], )) +import math +app.jinja_env.globals.update(log=math.log) + def connect_db(): """ @@ -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') diff --git a/parsing.py b/parsing.py index 4384a31..4bc961a 100644 --- a/parsing.py +++ b/parsing.py @@ -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}) diff --git a/src/precompute_histogram.py b/src/precompute_histogram.py index af537ef..b85eea7 100644 --- a/src/precompute_histogram.py +++ b/src/precompute_histogram.py @@ -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]) diff --git a/static/exac.js b/static/exac.js index de6c98c..8f3169f 100644 --- a/static/exac.js +++ b/static/exac.js @@ -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]); diff --git a/templates/region.html b/templates/region.html index 4d271d8..d9ae560 100644 --- a/templates/region.html +++ b/templates/region.html @@ -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); + } });