Skip to content

Commit

Permalink
Stripping chr prefixes for queries via API (#402)
Browse files Browse the repository at this point in the history
Related-Issue: #402
Projected-Results-Impact: none
  • Loading branch information
holtgrewe committed Mar 24, 2022
1 parent 66b6fa7 commit 2a671bc
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 9 deletions.
8 changes: 4 additions & 4 deletions variants/query_presets.py
Expand Up @@ -773,25 +773,25 @@ class _ChromosomePresets:
}
#: Presets for the "autosomes" chromosome/region/gene settings
autosomes: typing.Dict[str, typing.Any] = {
"genomic_region": tuple(f"chr{num}" for num in range(1, 23)),
"genomic_region": tuple(f"{num}" for num in range(1, 23)),
"gene_allowlist": (),
"gene_blocklist": (),
}
#: Presets for the "X-chromosome" chromosome/region/gene settings
x_chromosome: typing.Dict[str, typing.Any] = {
"genomic_region": ("chrX",),
"genomic_region": ("X",),
"gene_allowlist": (),
"gene_blocklist": (),
}
#: Presets for the "Y-chromosomes" chromosome/region/gene settings
y_chromosome: typing.Dict[str, typing.Any] = {
"genomic_region": ("chrY",),
"genomic_region": ("Y",),
"gene_allowlist": (),
"gene_blocklist": (),
}
#: Presets for the "mitochondrial" chromosome/region/gene settings
mt_chromosome: typing.Dict[str, typing.Any] = {
"genomic_region": ("chrMT",),
"genomic_region": ("MT",),
"gene_allowlist": (),
"gene_blocklist": (),
}
Expand Down
14 changes: 13 additions & 1 deletion variants/query_schemas.py
Expand Up @@ -8,6 +8,7 @@
import typing

import attr
import attrs
import cattr
from jsonschema import Draft7Validator, validators

Expand Down Expand Up @@ -137,8 +138,14 @@ class GenomicRegionV1:
chromosome: str
range: typing.Optional[RangeV1] = None

def with_chr_stripped(self):
chromosome = self.chromosome
if chromosome.startswith("chr"):
chromosome = chromosome[len("chr") :]
return GenomicRegionV1(chromosome, self.range)

def to_str(self):
if not range:
if not self.range:
return self.chromosome
else:
return "%s:%d-%d" % (self.chromosome, self.range.start, self.range.end)
Expand Down Expand Up @@ -427,6 +434,11 @@ def convert_query_json_to_small_variant_filter_form_v1(
tmp = copy.deepcopy(query_json)
DefaultValidatingDraft7Validator(SCHEMA_QUERY_V1).validate(tmp)
query = cattr.structure(tmp, CaseQueryV1)
if query.genomic_region:
query = attrs.evolve(
query,
genomic_region=list(map(GenomicRegionV1.with_chr_stripped, query.genomic_region)),
)
return QueryJsonToFormConverter().convert(case, query)


Expand Down
8 changes: 4 additions & 4 deletions variants/tests/test_query_presets.py
Expand Up @@ -1311,7 +1311,7 @@ def testToSettingsAutosomes(self):
self.assertEqual(
query_presets.Chromosomes.AUTOSOMES.to_settings(),
{
"genomic_region": tuple(f"chr{num}" for num in range(1, 23)),
"genomic_region": tuple(f"{num}" for num in range(1, 23)),
"gene_allowlist": (),
"gene_blocklist": (),
},
Expand All @@ -1320,19 +1320,19 @@ def testToSettingsAutosomes(self):
def testToSettingsXChromosome(self):
self.assertEqual(
query_presets.Chromosomes.X_CHROMOSOME.to_settings(),
{"genomic_region": ("chrX",), "gene_allowlist": (), "gene_blocklist": (),},
{"genomic_region": ("X",), "gene_allowlist": (), "gene_blocklist": (),},
)

def testToSettingsYChromosome(self):
self.assertEqual(
query_presets.Chromosomes.Y_CHROMOSOME.to_settings(),
{"genomic_region": ("chrY",), "gene_allowlist": (), "gene_blocklist": (),},
{"genomic_region": ("Y",), "gene_allowlist": (), "gene_blocklist": (),},
)

def testToSettingsMTChromosome(self):
self.assertEqual(
query_presets.Chromosomes.MT_CHROMOSOME.to_settings(),
{"genomic_region": ("chrMT",), "gene_allowlist": (), "gene_blocklist": (),},
{"genomic_region": ("MT",), "gene_allowlist": (), "gene_blocklist": (),},
)


Expand Down

0 comments on commit 2a671bc

Please sign in to comment.