Skip to content

Commit

Permalink
Merge pull request #558 from NBISweden/bugfix/gene-exception
Browse files Browse the repository at this point in the history
avoid exceptions when a non-existing gene is requested
  • Loading branch information
viklund committed May 17, 2019
2 parents a723542 + 49956d1 commit 80a7d65
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 28 deletions.
1 change: 1 addition & 0 deletions backend/modules/browser/browser_handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,7 @@ def get(self, dataset:str, gene:str, ds_version:str=None):
gene = lookups.get_gene(dataset, gene_id, ds_version)
if not gene:
self.send_error(status_code=404, reason='Gene not found')
return
ret['gene'] = gene

# Add exons from transcript
Expand Down
2 changes: 2 additions & 0 deletions backend/modules/browser/lookups.py
Original file line number Diff line number Diff line change
Expand Up @@ -507,6 +507,8 @@ def get_variants_in_gene(dataset:str, gene_id:str, ds_version:str=None):
if not dataset_version:
return None
gene = get_gene(dataset, gene_id, ds_version)
if not gene:
return None

variants = [variant for variant in db.Variant.select()
.join(db.VariantGenes)
Expand Down
59 changes: 31 additions & 28 deletions backend/modules/browser/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,9 @@ def get_coverage_pos(dataset:str, datatype:str, item:str, ds_version:str=None):
else:
if datatype == 'gene':
gene = lookups.get_gene(dataset, item)
transcript = lookups.get_transcript(dataset, gene['canonical_transcript'], ds_version)
if gene:
transcript = lookups.get_transcript(dataset, gene['canonical_transcript'], ds_version)
else: transcript = None
elif datatype == 'transcript':
transcript = lookups.get_transcript(dataset, item, ds_version)
if transcript:
Expand Down Expand Up @@ -361,33 +363,34 @@ def get_variant_list(dataset:str, datatype:str, item:str, ds_version:str=None):
return None
refgene = transcript['gene_id']

for variant in variants:
if datatype in ('gene', 'transcript'):
anno = None
if datatype == 'transcript':
anno = [ann for ann in variant['vep_annotations'] if ann['Feature'] == item]
if not anno:
anno = [ann for ann in variant['vep_annotations'] if ann['Gene'] == refgene]
else:
anno = [ann for ann in variant['vep_annotations'] if ann['Gene'] == item]
if anno:
variant['vep_annotations'] = anno

add_consequence_to_variants(variants)

for variant in variants:
remove_extraneous_information(variant)

# Format output
def format_variant(variant):
variant['major_consequence'] = (variant['major_consequence'].replace('_variant','')
.replace('_prime_', '\'')
.replace('_', ' '))

# This is so an array values turns into a comma separated string instead
return {k: ", ".join(v) if isinstance(v,list) else v for k, v in variant.items()}

variants = list(map(format_variant, variants))
if variants:
for variant in variants:
if datatype in ('gene', 'transcript'):
anno = None
if datatype == 'transcript':
anno = [ann for ann in variant['vep_annotations'] if ann['Feature'] == item]
if not anno:
anno = [ann for ann in variant['vep_annotations'] if ann['Gene'] == refgene]
else:
anno = [ann for ann in variant['vep_annotations'] if ann['Gene'] == item]
if anno:
variant['vep_annotations'] = anno

add_consequence_to_variants(variants)

for variant in variants:
remove_extraneous_information(variant)

# Format output
def format_variant(variant):
variant['major_consequence'] = (variant['major_consequence'].replace('_variant','')
.replace('_prime_', '\'')
.replace('_', ' '))

# This is so an array values turns into a comma separated string instead
return {k: ", ".join(v) if isinstance(v,list) else v for k, v in variant.items()}

variants = list(map(format_variant, variants))

return {'variants': variants, 'headers': headers}

Expand Down

0 comments on commit 80a7d65

Please sign in to comment.