From aa9011e1a1bbaa80d22cfaa8173cf5bdceef5132 Mon Sep 17 00:00:00 2001 From: moonso Date: Fri, 29 Apr 2016 09:24:28 +0200 Subject: [PATCH] Added tests for gemini inheritance and gemini queries --- tests/plugins/gemini/test_gemini_init.py | 2 +- .../gemini/test_gemini_variant_mixin.py | 22 ++++++------ tests/utils/test_gemini_query.py | 36 +++++++++++++++++++ 3 files changed, 48 insertions(+), 12 deletions(-) create mode 100644 tests/utils/test_gemini_query.py diff --git a/tests/plugins/gemini/test_gemini_init.py b/tests/plugins/gemini/test_gemini_init.py index f8d748b..a913c44 100644 --- a/tests/plugins/gemini/test_gemini_init.py +++ b/tests/plugins/gemini/test_gemini_init.py @@ -13,7 +13,7 @@ def test_setup_no_db(): assert adapter.variant_type == 'snv' assert adapter.filters.can_filter_gene == True - assert adapter.filters.can_filter_inheritance == False + assert adapter.filters.can_filter_inheritance == True def test_setup_with_variant_type(gemini_path): adapter = GeminiPlugin('sv') diff --git a/tests/plugins/gemini/test_gemini_variant_mixin.py b/tests/plugins/gemini/test_gemini_variant_mixin.py index 158d360..1dfa551 100644 --- a/tests/plugins/gemini/test_gemini_variant_mixin.py +++ b/tests/plugins/gemini/test_gemini_variant_mixin.py @@ -241,20 +241,20 @@ def test_filters_range(self, gemini_case_obj): assert nr_of_variants == 1 class TestGeminiInheritance: - def test_filters_ar(self, gemini_large_case_obj): + def test_filters_ar(self, gemini_case_obj): plugin = GeminiPlugin() - plugin.add_case(gemini_large_case_obj) + plugin.add_case(gemini_case_obj) filters = {'genetic_models': ['AR_hom']} result = plugin.variants('643594', filters=filters, count=100000) variants = result.variants nr_of_variants = result.nr_of_variants - assert nr_of_variants == 635 + assert nr_of_variants == 0 - def test_filters_ad(self, gemini_large_case_obj): + def test_filters_ad(self, gemini_case_obj): plugin = GeminiPlugin() - plugin.add_case(gemini_large_case_obj) + plugin.add_case(gemini_case_obj) filters = {'genetic_models': ['AD']} result = plugin.variants('643594', filters=filters, count=1000) @@ -263,24 +263,24 @@ def test_filters_ad(self, gemini_large_case_obj): assert nr_of_variants == 0 - def test_filters_ad_dn(self, gemini_large_case_obj): + def test_filters_ad_dn(self, gemini_case_obj): plugin = GeminiPlugin() - plugin.add_case(gemini_large_case_obj) + plugin.add_case(gemini_case_obj) filters = {'genetic_models': ['AD_dn']} result = plugin.variants('643594', filters=filters, count=1000) variants = result.variants nr_of_variants = result.nr_of_variants - assert nr_of_variants == 170 + assert nr_of_variants == 6 - def test_filters_ar_comp(self, gemini_large_case_obj): + def test_filters_ar_comp(self, gemini_case_obj): plugin = GeminiPlugin() - plugin.add_case(gemini_large_case_obj) + plugin.add_case(gemini_case_obj) filters = {'genetic_models': ['AR_comp']} result = plugin.variants('643594', filters=filters, count=10000) variants = result.variants nr_of_variants = result.nr_of_variants - assert nr_of_variants == 2466 + assert nr_of_variants == 0 diff --git a/tests/utils/test_gemini_query.py b/tests/utils/test_gemini_query.py new file mode 100644 index 0000000..d2b1b1c --- /dev/null +++ b/tests/utils/test_gemini_query.py @@ -0,0 +1,36 @@ +from puzzle.utils.gemini_extras import (add_to_query, build_gemini_query) + +def test_add_to_query(): + query = "SELECT * from variants" + extra_info = "max_aaf_all < 0.01" + new_query = add_to_query(query, extra_info) + assert new_query == "SELECT * from variants WHERE max_aaf_all < 0.01" + + extra_info = "cadd_score > 10" + new_query = add_to_query(new_query, extra_info) + assert new_query == "SELECT * from variants WHERE max_aaf_all < 0.01 AND cadd_score > 10" + +def test_build_gemini_query(): + filters = { + 'frequency' : 0.01 + } + query = build_gemini_query(filters) + + assert query == "SELECT * from variants WHERE (max_aaf_all < 0.01 or max_aaf_all is Null)" + +def test_build_gemini_query_models(): + filters = { + 'frequency' : 0.01 + } + query = build_gemini_query(filters, add_where = False) + + assert query == "(max_aaf_all < 0.01 or max_aaf_all is Null)" + +def test_build_gemini_query_models_two(): + filters = { + 'frequency' : 0.01, + 'cadd' : 15.0 + } + query = build_gemini_query(filters, add_where = False) + + assert query == "(max_aaf_all < 0.01 or max_aaf_all is Null) AND (cadd_scaled > 15.0)" \ No newline at end of file