diff --git a/seqr/utils/search/elasticsearch/es_search.py b/seqr/utils/search/elasticsearch/es_search.py index 8b0d9e705c..b372d223e2 100644 --- a/seqr/utils/search/elasticsearch/es_search.py +++ b/seqr/utils/search/elasticsearch/es_search.py @@ -1413,7 +1413,9 @@ def _location_filter(genes, intervals, exclude_locations): } } for key in ['xpos', 'xstop']] interval_q = _build_or_filter('range', range_filters) - interval_q |= Q('range', xpos={'lte': xstart}) & Q('range', xstop={'gte': xstop}) + interval_q |= Q('range', xpos={'lte': xstart}) & Q('range', xstop={'gte': xstop}) & \ + Q('range', xpos={'gte': get_xpos(interval['chrom'], MIN_POS)}) & \ + Q('range', xstop={'lte': get_xpos(interval['chrom'], MAX_POS)}) if q: q |= interval_q diff --git a/seqr/utils/search/elasticsearch/es_utils_tests.py b/seqr/utils/search/elasticsearch/es_utils_tests.py index d20a390887..910ca8e7c7 100644 --- a/seqr/utils/search/elasticsearch/es_utils_tests.py +++ b/seqr/utils/search/elasticsearch/es_utils_tests.py @@ -1613,7 +1613,10 @@ def test_filtered_get_es_variants(self): {'range': {'xstop': {'gte': 2000001234, 'lte': 2000005678}}}, {'bool': {'must': [ {'range': {'xpos': {'lte': 2000001234}}}, - {'range': {'xstop': {'gte': 2000005678}}}]}}, + {'range': {'xstop': {'gte': 2000005678}}}, + {'range': {'xpos': {'gte': 2000000001}}}, + {'range': {'xstop': {'lte': 2300000000}}}, + ]}}, {'terms': {'geneIds': ['ENSG00000223972']}}, {'bool': {'must': [ {'range': {'xpos': {'gte': 7000000001, 'lte': 7000001100}}},