def test_multiple_case_genotypes(): ''' Filter on multiple case genotypes ''' out = get_tmp_out() kwargs = dict(case=['Case1', 'Case2', 'Case3'], output=out, quiet=True) expected_indices = [ True, True, True, True, True, True, False, True, True, True ] expected_records = [x for x, y in zip(ad_records, expected_indices) if y] main(ad_vcf, **kwargs) results = get_variants(out) assert_equal(results, expected_records) if os.path.exists(out): os.remove(out)
def test_one_case_control_genotypes(): ''' Filter on single case/control pair genotypes ''' out = get_tmp_out() kwargs = dict(case=['Case1'], control=['Control1'], output=out, quiet=True) expected_indices = [ False, True, False, True, False, True, False, True, False, True ] expected_records = [x for x, y in zip(ad_records, expected_indices) if y] main(ad_vcf, **kwargs) results = get_variants(out) assert_equal(results, expected_records) if os.path.exists(out): os.remove(out)
def test_max_control_vaf_filtering(): ''' Filter on genotypes, expressions and maximum control VAF ''' out = get_tmp_out() kwargs = dict(case=['Case1', 'Case2', 'Case3'], case_expressions=["DP > 20"], control=['Control1', 'Control2', 'Control3'], max_control_vaf=0.05, output=out, quiet=True) expected_indices = [ False, False, False, False, True, True, False, True, True, False ] expected_records = [x for x, y in zip(ad_records, expected_indices) if y] main(ad_vcf, **kwargs) results = get_variants(out)
def test_case_control_vaf(): ''' Filter on minimum case and maximum control VAF ''' out = get_tmp_out() kwargs = dict(case=['Case1', 'Case2'], control=['Control1', 'Control2'], min_case_vaf=0.2, max_control_vaf=0.05, ignore_genotypes=True, output=out, quiet=True) expected_indices = [ False, False, False, True, True, False, False, True, False, False ] expected_records = [x for x, y in zip(ad_records, expected_indices) if y] main(ad_vcf, **kwargs) results = get_variants(out)
def test_expression_plus_genotypes(): ''' Filter cases using both genotypes and an expression ''' out = get_tmp_out() kwargs = dict(case=['Case1', 'Case2', 'Case3'], case_expressions=["AD > 5"], output=out, quiet=True) expected_indices = [ True, True, True, False, True, True, False, True, False, True ] expected_records = [x for x, y in zip(ad_records, expected_indices) if y] main(ad_vcf, **kwargs) results = get_variants(out) assert_equal(results, expected_records) if os.path.exists(out): os.remove(out)
def test_expressions_with_summed_values(): ''' Filter cases using a summed values ''' out = get_tmp_out() kwargs = dict(case=['Case1', 'Case2', 'Case3'], case_expressions=["sum(AD) >= 30"], ignore_genotypes=True, output=out, quiet=True) expected_indices = [ True, False, True, False, True, True, True, True, True, True ] expected_records = [x for x, y in zip(ad_records, expected_indices) if y] main(ad_vcf, **kwargs) results = get_variants(out) assert_equal(results, expected_records) if os.path.exists(out): os.remove(out)
def test_vaf_ratio_multi(): ''' Filter on multiple case/control VAF ratio ''' out = get_tmp_out() kwargs = dict(case=['Case1', 'Case2'], control=['Control1', 'Control2'], vaf_ratio=10.0, ignore_genotypes=True, output=out, quiet=True) expected_indices = [ False, False, False, True, True, True, False, True, True, False ] expected_records = [x for x, y in zip(ad_records, expected_indices) if y] main(ad_vcf, **kwargs) results = get_variants(out) assert_equal(results, expected_records) if os.path.exists(out): os.remove(out)
def test_add_info_tag(): ''' Test filtering and adding bitwise filter tag ''' out = get_tmp_out() kwargs = dict(case=['Case1', 'Case2', 'Case3'], control=['Control1', 'Control2', 'Control3'], output=out, info_tag="TEST_TAG", quiet=True) expected_indices = [ False, True, True, False, True, True, False, True, True, True ] expected_flags = [1, 1, 1, 3, 1, 1, 1] expected_records = [x for x, y in zip(ad_records, expected_indices) if y] main(ad_vcf, **kwargs) results = get_variants(out) for res, exp, flag in zip(results, expected_records, expected_flags): for attr in ('pos', 'ref', 'alts'): assert_equal(getattr(res, attr), getattr(exp, attr)) assert_equal(res.info['TEST_TAG'], flag) if os.path.exists(out): os.remove(out)