예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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)
예제 #6
0
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)
예제 #7
0
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)
예제 #8
0
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)