From 336a5a944422505148932b8a7adf00b40af0bc13 Mon Sep 17 00:00:00 2001
From: Redmar van den Berg <RedmarvandenBerg@lumc.nl>
Date: Tue, 27 Aug 2019 18:00:24 +0200
Subject: [PATCH] Add tests for quality and depth filter

---
 tests/test_evaluate.py | 62 +++++++++++++++++++++++++++++++-----------
 vtools/evaluate.py     |  1 +
 2 files changed, 47 insertions(+), 16 deletions(-)

diff --git a/tests/test_evaluate.py b/tests/test_evaluate.py
index 717ef87..a7f92b3 100644
--- a/tests/test_evaluate.py
+++ b/tests/test_evaluate.py
@@ -5,22 +5,14 @@ from vtools.evaluate import site_concordancy
 from cyvcf2 import VCF
 
 
-@pytest.fixture
+@pytest.fixture(scope='module')
 def known_concordant():
-    known = 'tests/cases/gatk.vcf.gz'
-    d, disc = site_concordancy(VCF(known, gts012=True), VCF(known,
-                                                            gts012=True),
-                               ['NA12878'], ['NA12878'], min_gq=0,
-                               min_dp=0)
-    return d
-
-
-@pytest.fixture
-def blank_NA12878():
     filename = 'tests/cases/gatk.vcf.gz'
-    d, disc = site_concordancy(VCF(filename, gts012=True), VCF(filename,
-                                                               gts012=True),
-                               ['NA12878'], ['BLANK'], min_gq=0, min_dp=0)
+    call = VCF(filename, gts012=True)
+    positive = VCF(filename, gts012=True)
+    d, disc = site_concordancy(call, positive, call_samples=['NA12878'],
+                               positive_samples=['NA12878'],
+                               min_gq=0, min_dp=0)
     return d
 
 
@@ -56,8 +48,8 @@ def test_alleles_discordant(known_concordant):
     assert known_concordant['alleles_discordant'] == 0
 
 
-def test_alleles_no_call(blank_NA12878):
-    assert blank_NA12878['alleles_no_call'] == 8
+def test_alleles_no_call(known_concordant):
+    assert known_concordant['alleles_no_call'] == 0
 
 
 def test_alleles_low_qual(known_concordant):
@@ -66,3 +58,41 @@ def test_alleles_low_qual(known_concordant):
 
 def test_alleles_low_depth(known_concordant):
     assert known_concordant['alleles_low_depth'] == 0
+
+
+@pytest.fixture(scope='module')
+def BLANK_NA12878():
+    filename = 'tests/cases/gatk.vcf.gz'
+    call = VCF(filename, gts012=True)
+    positive = VCF(filename, gts012=True)
+    d, disc = site_concordancy(call, positive, call_samples=['BLANK'],
+                               positive_samples=['NA12878'],
+                               min_gq=30, min_dp=20)
+    return d
+
+
+def test_low_qual_30(BLANK_NA12878):
+    assert BLANK_NA12878['alleles_low_qual'] == 42
+
+
+def test_low_depth_20(BLANK_NA12878):
+    assert BLANK_NA12878['alleles_low_depth'] == 44
+
+
+def test_no_call(BLANK_NA12878):
+    assert BLANK_NA12878['alleles_no_call'] == 8
+
+
+@pytest.fixture(scope='module')
+def NA12878_BLANK():
+    filename = 'tests/cases/gatk.vcf.gz'
+    call = VCF(filename, gts012=True)
+    positive = VCF(filename, gts012=True)
+    d, disc = site_concordancy(call, positive, call_samples=['NA12878'],
+                               positive_samples=['BLANK'],
+                               min_gq=30, min_dp=20)
+    return d
+
+
+# def test_no_call2(NA12878_BLANK):
+#     assert NA12878_BLANK['alleles_no_call'] == 8
diff --git a/vtools/evaluate.py b/vtools/evaluate.py
index 5593bf7..bd3d3a0 100644
--- a/vtools/evaluate.py
+++ b/vtools/evaluate.py
@@ -98,6 +98,7 @@ def site_concordancy(call_vcf: VCF,
             # If the site does not pass the quality requirements
             c_gq = call_record.gt_quals[c_s]
             c_dp = call_record.gt_depths[c_s]
+            print(f'{call_record.POS}\tc_gt: {c_gt} p_gt: {p_gt}')
 
             if c_gq < min_gq or c_dp < min_dp:
                 if c_gq < min_gq:
-- 
GitLab