def test_bulk_re_search_variants(self): sorted_queries = [ CoordinateQuery('7', 140453136, 140453136), CoordinateQuery('7', 140453136, 140453137) ] search_results = civic.bulk_search_variants_by_coordinates( sorted_queries, search_mode='record_encompassing') assert len(search_results[sorted_queries[0]]) == 19 assert len(search_results[sorted_queries[1]]) == 16
def test_bulk_any_search_variants(self): sorted_queries = [ CoordinateQuery('7', 140453136, 140453136, 'T'), CoordinateQuery('7', 140453136, 140453137, 'TT') ] search_results = civic.bulk_search_variants_by_coordinates( sorted_queries, search_mode='any') assert len(search_results[sorted_queries[0]]) == 19 assert len(search_results[sorted_queries[1]]) >= 19
def test_bulk_exact_search_variants(self): sorted_queries = [ CoordinateQuery('7', 140453136, 140453136, 'T', '*'), CoordinateQuery('7', 140453136, 140453137, 'TT', '*'), CoordinateQuery('7', 140453136, 140453136, 'T', 'A'), CoordinateQuery('7', 140453136, 140453137, 'TT', 'AC'), ] search_results = civic.bulk_search_variants_by_coordinates( sorted_queries, search_mode='exact') assert len(search_results[sorted_queries[0]]) == 1 assert len(search_results[sorted_queries[1]]) == 1 assert len(search_results[sorted_queries[2]]) == 1 assert len(search_results[sorted_queries[3]]) == 1
def test_errors(self): with pytest.raises(ValueError) as context: query = CoordinateQuery('7', 140453136, 140453136, 'T', 'A') variants_single = civic.search_variants_by_coordinates( query, search_mode='wrong_mode') assert "unexpected search mode" in str(context.value) with pytest.raises(ValueError) as context: query = CoordinateQuery('7', 140753336, 140753336, '*', 'A', 'GRCh38') search_results = civic.search_variants_by_coordinates( query, search_mode='exact') assert "Can't use wildcard when searching for non-GRCh37 coordinates" in str( context.value) with pytest.raises(ValueError) as context: query = CoordinateQuery('7', 140753336, 140753336, None, None, 'GRCh38') search_results = civic.search_variants_by_coordinates( query, search_mode='exact') assert "alt or ref required for non-GRCh37 coordinate queries" in str( context.value) with pytest.raises(ValueError) as context: query = CoordinateQuery('7', 140753336, 140753336, 'T', 'A', 'GRCh38') search_results = civic.search_variants_by_coordinates( query, search_mode='any') assert "Only exact search mode is supported for non-GRCh37 coordinate queries" in str( context.value) with pytest.raises(ValueError) as context: query = CoordinateQuery('7', 140453136, 140453136, '-', 'A') variants_single = civic.search_variants_by_coordinates( query, search_mode='exact') assert "Unexpected alt `-` in coordinate query. Did you mean `None`?" in str( context.value) with pytest.raises(ValueError) as context: query = CoordinateQuery('7', 140453136, 140453136, 'T', '-') variants_single = civic.search_variants_by_coordinates( query, search_mode='exact') assert "Unexpected ref `-` in coordinate query. Did you mean `None`?" in str( context.value) with pytest.raises(ValueError) as context: query = CoordinateQuery('7', 140453136, 140453136, '-', 'A', 'GRCh38') variants_single = civic.search_variants_by_coordinates( query, search_mode='exact') assert "Unexpected alt `-` in coordinate query. Did you mean `None`?" in str( context.value) with pytest.raises(ValueError) as context: query = CoordinateQuery('7', 140453136, 140453136, 'T', '-', 'GRCh38') variants_single = civic.search_variants_by_coordinates( query, search_mode='exact') assert "Unexpected ref `-` in coordinate query. Did you mean `None`?" in str( context.value) with pytest.raises(ValueError) as context: query = CoordinateQuery('7', 140453136, 140453136, '-', 'A') variants_bulk = civic.bulk_search_variants_by_coordinates( [query], search_mode='exact') assert "Unexpected alt `-` in coordinate query. Did you mean `None`?" in str( context.value) with pytest.raises(ValueError) as context: query = CoordinateQuery('7', 140453136, 140453136, 'T', '-') variants_bulk = civic.bulk_search_variants_by_coordinates( [query], search_mode='exact') assert "Unexpected ref `-` in coordinate query. Did you mean `None`?" in str( context.value)
def test_single_and_bulk_exact_return_same_variants(self): query = CoordinateQuery('7', 140453136, 140453136, 'T', '*') variants_single = civic.search_variants_by_coordinates( query, search_mode='exact') variants_bulk = civic.bulk_search_variants_by_coordinates( [query], search_mode='exact') assert len(variants_single) == 1 assert len(variants_bulk[query]) == 1 assert hash(variants_single[0]) == variants_bulk[query][0].v_hash query = CoordinateQuery('7', 140453136, 140453136, 'T', 'A') variants_single = civic.search_variants_by_coordinates( query, search_mode='exact') variants_bulk = civic.bulk_search_variants_by_coordinates( [query], search_mode='exact') assert len(variants_single) == 1 assert len(variants_bulk[query]) == 1 assert hash(variants_single[0]) == variants_bulk[query][0].v_hash query = CoordinateQuery('7', 140453136, 140453136, 'T', None) variants_single = civic.search_variants_by_coordinates( query, search_mode='exact') variants_bulk = civic.bulk_search_variants_by_coordinates( [query], search_mode='exact') assert len(variants_single) == 0 assert len(variants_bulk) == 0 query = CoordinateQuery('7', 140453136, 140453137, 'TT', '*') variants_single = civic.search_variants_by_coordinates( query, search_mode='exact') variants_bulk = civic.bulk_search_variants_by_coordinates( [query], search_mode='exact') assert len(variants_single) == 1 assert len(variants_bulk[query]) == 1 assert hash(variants_single[0]) == variants_bulk[query][0].v_hash query = CoordinateQuery('7', 140453136, 140453137, 'TT', 'AC') variants_single = civic.search_variants_by_coordinates( query, search_mode='exact') variants_bulk = civic.bulk_search_variants_by_coordinates( [query], search_mode='exact') assert len(variants_single) == 1 assert len(variants_bulk[query]) == 1 assert hash(variants_single[0]) == variants_bulk[query][0].v_hash query = CoordinateQuery('7', 140453136, 140453137, 'TT', None) variants_single = civic.search_variants_by_coordinates( query, search_mode='exact') variants_bulk = civic.bulk_search_variants_by_coordinates( [query], search_mode='exact') assert len(variants_single) == 0 assert len(variants_bulk) == 0 query = CoordinateQuery('3', 10183706, 10183706, None, 'C') variants_single = civic.search_variants_by_coordinates( query, search_mode='exact') variants_bulk = civic.bulk_search_variants_by_coordinates( [query], search_mode='exact') assert len(variants_single) == 1 assert len(variants_bulk[query]) == 1 assert hash(variants_single[0]) == variants_bulk[query][0].v_hash query = CoordinateQuery('3', 10183706, 10183706, 'T', 'C') variants_single = civic.search_variants_by_coordinates( query, search_mode='exact') variants_bulk = civic.bulk_search_variants_by_coordinates( [query], search_mode='exact') assert len(variants_single) == 1 assert len(variants_bulk[query]) == 1 assert hash(variants_single[0]) == variants_bulk[query][0].v_hash query = CoordinateQuery('3', 10183706, 10183706, '*', 'C') variants_single = civic.search_variants_by_coordinates( query, search_mode='exact') variants_bulk = civic.bulk_search_variants_by_coordinates( [query], search_mode='exact') variants_single = list(map(lambda v: hash(v), variants_single)) variants_bulk = list(map(lambda v: v.v_hash, variants_bulk[query])) assert len(variants_single) == 2 assert len(variants_bulk) == 2 assert sorted(variants_single) == sorted(variants_bulk) assert sorted(variants_single) == sorted(variants_bulk)