Exemple #1
0
 def passes_filters(self):
     """Checks whether a VCF variant passes user defined criteria.
     
     Returns:
         boolean value for whether the variant passes the filters
     """
     
     # some CNVs are on female Y chrom, which give errors, fail those CNVs
     try:
         self.set_genotype()
     except ValueError:
         return False
     
     # we rely on the CALLSOURCE field to inform us what the CNV has been
     # called by. Raise an error if this is not present.
     assert "CALLSOURCE" in self.info
     
     track_variant = False
     if self.get_chrom() == self.debug_chrom and self.get_position() == self.debug_pos:
         track_variant = True
     
     passes = True
     if "aCGH" in self.info["CALLSOURCE"]:
         filt = ACGH_CNV(self)
         passes = filt.filter_cnv(track_variant)
     elif "EXOME" in self.info["CALLSOURCE"]:
         # currently return false for all exome-only CNVs, undergoing testing
         filt = ExomeCNV(self)
         passes = filt.filter_cnv(track_variant)
     else:
         if track_variant:
             print("CNV is not an aCGH or exome CNV")
         passes = False
     
     return passes
    def setUp(self):
        """ define a default VcfInfo object
        """

        extra = 'OR5A1;CNSOLIDATE;WSCORE=0.5;CALLP=0.000;COMMONFORWARDS=0.000;MEANLR2=0.5;MADL2R=0.02;'
        cnv = create_cnv('F', 'deNovo', extra_info=extra)

        self.var = ACGH_CNV(cnv)
 def setUp(self):
     """ define a default VcfInfo object
     """
     
     extra = 'OR5A1;CNSOLIDATE;WSCORE=0.5;CALLP=0.000;COMMONFORWARDS=0.000;MEANLR2=0.5;MADL2R=0.02;'
     cnv = create_cnv('F', 'deNovo', extra_info=extra)
     
     self.var = ACGH_CNV(cnv)
    def setUp(self):
        """ define a default VcfInfo object
        """

        chrom = "1"
        pos = "15000000"
        snp_id = "."
        ref = "A"
        alt = "<DUP>"
        filt = "PASS"

        # set up a SNV object, since SNV inherits VcfInfo
        cnv = CNV(chrom, pos, snp_id, ref, alt, filt)
        self.var = ACGH_CNV(cnv)

        info = "HGNC=TEST;HGNC_ALL=TEST,OR5A1;CQ=missense_variant;CNSOLIDATE;WSCORE=0.5;CALLP=0.000;COMMONFORWARDS=0.000;MEANLR2=0.5;MADL2R=0.02;END=16000000;SVLEN=1000000"
        format_keys = "inheritance:DP"
        sample_values = "deNovo:50"

        self.var.cnv.add_info(info)
        self.var.cnv.add_format(format_keys, sample_values)
        self.var.cnv.set_gender("F")
Exemple #5
0
    def passes_filters(self):
        """Checks whether a VCF variant passes user defined criteria.
        
        Returns:
            boolean value for whether the variant passes the filters
        """

        # some CNVs are on female Y chrom, which give errors, fail those CNVs
        try:
            self.set_genotype()
        except ValueError:
            return False

        track_variant = False
        if self.get_chrom() == self.debug_chrom and self.get_position(
        ) == self.debug_pos:
            track_variant = True

        passes = True
        if "CONVEX" in self.info and "CNSOLIDATE" not in self.info:
            # currently return false for all exome-only CNVs, undergoing testing
            filt = ExomeCNV(self)
            # passes = filt.filter_cnv(track_variant)
            passes = False
        elif "CNSOLIDATE" in self.info:
            filt = ACGH_CNV(self)
            passes = filt.filter_cnv(track_variant)
        elif "BREAKDANCER" in self.info:
            filt = BreakdancerCNV(self)
            passes = filt.filter_cnv(track_variant)
        else:
            if track_variant:
                print("CNV is not an aCGH or exome CNV")
            passes = False

        return passes
class TestAcghCnvPy(unittest.TestCase):
    """ test the ACGH CNV filters
    """
    
    def setUp(self):
        """ define a default VcfInfo object
        """
        
        extra = 'OR5A1;CNSOLIDATE;WSCORE=0.5;CALLP=0.000;COMMONFORWARDS=0.000;MEANLR2=0.5;MADL2R=0.02;'
        cnv = create_cnv('F', 'deNovo', extra_info=extra)
        
        self.var = ACGH_CNV(cnv)
    
    def test_fails_mad_ratio(self):
        """ test that fails_mad_ratio() works correctly.
        """
        
        # check that var passes when MAD ratio >= 15
        self.var.cnv.info["MEANLR2"] = "0.3"
        self.var.cnv.info["MADL2R"] = "0.02"
        self.assertFalse(self.var.fails_mad_ratio())
        
        # check that var fails when MAD ratio < 10
        self.var.cnv.info["MEANLR2"] = "0.29"
        self.var.cnv.info["MADL2R"] = "0.03"
        self.assertTrue(self.var.fails_mad_ratio())
        
        # check that var passes when MAD ratio == 0
        self.var.cnv.info["MEANLR2"] = "0.3"
        self.var.cnv.info["MADL2R"] = float("inf")
        self.assertTrue(self.var.fails_mad_ratio())
        
        # check that var fails when trying to divide by zero
        self.var.cnv.info["MEANLR2"] = "0.2"
        self.var.cnv.info["MADL2R"] = "0"
        self.assertTrue(self.var.fails_mad_ratio())
        
        # check that var passes when the fields are NA
        self.var.cnv.info["MEANLR2"] = "0.2"
        self.var.cnv.info["MADL2R"] = "NA"
        self.assertFalse(self.var.fails_mad_ratio())
    
    def test_fails_wscore(self):
        """ test that fails_wscore() works correctly
        """
        
        # check that var passes when WSCORE > 0.45
        self.var.cnv.info["WSCORE"] = "0.45"
        self.assertFalse(self.var.fails_wscore())
        
        # check that var fails when WSCORE < 0.45
        self.var.cnv.info["WSCORE"] = "0.449"
        self.assertTrue(self.var.fails_wscore())
    
    def test_fails_callp(self):
        """ test that fails_callp() works correctly
        """
        
        # check that var passes when CALLP < 0.01
        self.var.cnv.info["CALLP"] = "0.0"
        self.assertFalse(self.var.fails_callp())
        
        # check that var passes when CALLP == 0.01
        self.var.cnv.info["CALLP"] = "0.01"
        self.assertFalse(self.var.fails_callp())
        
        # check that var fails when CALLP > 0.01
        self.var.cnv.info["CALLP"] = "0.0101"
        self.assertTrue(self.var.fails_callp())
    
    def test_fails_commmon_forwards(self):
        """ test that fails_commmon_forwards() works correctly
        """
        
        # check that var passes when COMMONFORWARDS < 0.8
        self.var.cnv.info["COMMONFORWARDS"] = "0.0"
        self.assertFalse(self.var.fails_commmon_forwards())
        
        # check that var fails when COMMONFORWARDS == 0.8
        self.var.cnv.info["COMMONFORWARDS"] = "0.8"
        self.assertFalse(self.var.fails_commmon_forwards())
        
        # check that var fails when COMMONFORWARDS > 0.8
        self.var.cnv.info["COMMONFORWARDS"] = "0.9"
        self.assertTrue(self.var.fails_commmon_forwards())
    
    def test_fails_mean_lr2_dup(self):
        """ test that fails_mean_lr2() works correctly on duplications
        """
        
        # set the var as a duplication
        self.var.cnv.alt_alleles = ["<DUP>"]
        self.var.cnv.set_genotype()
        
        # check that dup passes with MEANLR2 > 0.4
        self.var.cnv.info["MEANLR2"] = "0.4"
        self.assertFalse(self.var.fails_meanlr2())
        
        # check that dup passes with MEANLR2 < 0.4
        self.var.cnv.info["MEANLR2"] = "0.399"
        self.assertTrue(self.var.fails_meanlr2())
    
    def test_fails_mean_lr2_del(self):
        """ test that fails_mean_lr2() works correctly on deletions
        """
        # set the var as a deletion
        self.var.cnv.alt_alleles = ["<DEL>"]
        self.var.cnv.set_genotype()
        
        # check that del passes with MEANLR2 < -0.5
        self.var.cnv.info["MEANLR2"] = "-0.5"
        self.assertFalse(self.var.fails_meanlr2())
        
        # check that del fails with MEANLR2 > -0.41
        self.var.cnv.info["MEANLR2"] = "-0.499"
        self.assertTrue(self.var.fails_meanlr2())
    
    def test_fails_no_exons(self):
        """ test that fails_no_exons() works correctly
        """
        
        self.var.cnv.info["NUMBEREXONS"] = "1"
        self.assertFalse(self.var.fails_no_exons())

        self.var.cnv.info["NUMBEREXONS"] = "0"
        self.assertTrue(self.var.fails_no_exons())
    
    def test_fails_frequency(self):
        """ test that fails_frequency() works correctly
        """
        
        # a low population frequency will pass
        self.var.cnv.info["ACGH_RC_FREQ50"] = "0.01"
        self.assertFalse(self.var.fails_frequency())
        
        # a high population frequency will fail
        self.var.cnv.info["ACGH_RC_FREQ50"] = "0.011"
        self.assertTrue(self.var.fails_frequency())
        
        # if population frequency information is unavailable, it should pass,
        # since this suggests the frequency is 0.
        del self.var.cnv.info["ACGH_RC_FREQ50"]
        self.assertFalse(self.var.fails_frequency())
    
    def test_fails_cifer_inh(self):
        """ test that fails_cifer_inh() works correctly
        """
        
        # CNVs annotated as not_inherited, or inherited will pass
        self.var.cnv.format["CIFER_INHERITANCE"] = "not_inherited"
        self.assertFalse(self.var.fails_cifer_inh())
        
        # CNVs annotated as false_positive will fail
        self.var.cnv.format["CIFER_INHERITANCE"] = "false_positive"
        self.assertTrue(self.var.fails_cifer_inh())
class TestAcghCnvPy(unittest.TestCase):
    """ test the ACGH CNV filters
    """
    def setUp(self):
        """ define a default VcfInfo object
        """

        chrom = "1"
        pos = "15000000"
        snp_id = "."
        ref = "A"
        alt = "<DUP>"
        filt = "PASS"

        # set up a SNV object, since SNV inherits VcfInfo
        cnv = CNV(chrom, pos, snp_id, ref, alt, filt)
        self.var = ACGH_CNV(cnv)

        info = "HGNC=TEST;HGNC_ALL=TEST,OR5A1;CQ=missense_variant;CNSOLIDATE;WSCORE=0.5;CALLP=0.000;COMMONFORWARDS=0.000;MEANLR2=0.5;MADL2R=0.02;END=16000000;SVLEN=1000000"
        format_keys = "inheritance:DP"
        sample_values = "deNovo:50"

        self.var.cnv.add_info(info)
        self.var.cnv.add_format(format_keys, sample_values)
        self.var.cnv.set_gender("F")

    def test_fails_mad_ratio(self):
        """ test that fails_mad_ratio() works correctly.
        """

        # check that var passes when MAD ratio > 0
        self.var.cnv.info["MEANLR2"] = "0.5"
        self.var.cnv.info["MADL2R"] = "0.02"
        self.assertFalse(self.var.fails_mad_ratio())

        # check that var passes when MAD ratio == 0
        self.var.cnv.info["MEANLR2"] = "0.3"
        self.var.cnv.info["MADL2R"] = float("inf")
        self.assertFalse(self.var.fails_mad_ratio())

        # check that var fails when trying to divide by zero
        self.var.cnv.info["MEANLR2"] = "0.2"
        self.var.cnv.info["MADL2R"] = "0"
        self.assertTrue(self.var.fails_mad_ratio())

    def test_fails_wscore(self):
        """ test that fails_wscore() works correctly
        """

        # check that var passes when WSCORE > 0.4
        self.var.cnv.info["WSCORE"] = "0.5"
        self.assertFalse(self.var.fails_wscore())

        # check that var passes when WSCORE == 0.4
        self.var.cnv.info["WSCORE"] = "0.4"
        self.assertFalse(self.var.fails_wscore())

        # check that var fails when WSCORE > 0.4
        self.var.cnv.info["WSCORE"] = "0.399"
        self.assertTrue(self.var.fails_wscore())

    def test_fails_callp(self):
        """ test that fails_callp() works correctly
        """

        # check that var passes when CALLP < 0.01
        self.var.cnv.info["CALLP"] = "0.0"
        self.assertFalse(self.var.fails_callp())

        # check that var passes when CALLP == 0.01
        self.var.cnv.info["CALLP"] = "0.01"
        self.assertFalse(self.var.fails_callp())

        # check that var fails when CALLP > 0.01
        self.var.cnv.info["CALLP"] = "0.0101"
        self.assertTrue(self.var.fails_callp())

    def test_fails_commmon_forwards(self):
        """ test that fails_commmon_forwards() works correctly
        """

        # check that var passes when COMMONFORWARDS < 0.8
        self.var.cnv.info["COMMONFORWARDS"] = "0.0"
        self.assertFalse(self.var.fails_commmon_forwards())

        # check that var fails when COMMONFORWARDS == 0.8
        self.var.cnv.info["COMMONFORWARDS"] = "0.8"
        self.assertFalse(self.var.fails_commmon_forwards())

        # check that var fails when COMMONFORWARDS > 0.8
        self.var.cnv.info["COMMONFORWARDS"] = "0.9"
        self.assertTrue(self.var.fails_commmon_forwards())

    def test_fails_mean_lr2_dup(self):
        """ test that fails_mean_lr2() works correctly on duplications
        """

        # set the var as a duplication
        self.var.cnv.alt_allele = "<DUP>"
        self.var.cnv.set_genotype()

        # check that dup passes with MEANLR2 > 0.36
        self.var.cnv.info["MEANLR2"] = "0.4"
        self.assertFalse(self.var.fails_meanlr2())

        # check that dup passes with MEANLR2 == 0.36
        self.var.cnv.info["MEANLR2"] = "0.36"
        self.assertFalse(self.var.fails_meanlr2())

        # check that dup passes with MEANLR2 < 0.36
        self.var.cnv.info["MEANLR2"] = "0.359"
        self.assertTrue(self.var.fails_meanlr2())

    def test_fails_mean_lr2_del(self):
        """ test that fails_mean_lr2() works correctly on deletions
        """
        # set the var as a deletion
        self.var.cnv.alt_allele = "<DEL>"
        self.var.cnv.set_genotype()

        # check that del passes with MEANLR2 < -0.41
        self.var.cnv.info["MEANLR2"] = "-0.5"
        self.assertFalse(self.var.fails_meanlr2())

        # check that del passes with MEANLR2 == -0.41
        self.var.cnv.info["MEANLR2"] = "-0.41"
        self.assertFalse(self.var.fails_meanlr2())

        # check that del passes with MEANLR2 > -0.41
        self.var.cnv.info["MEANLR2"] = "-0.409"
        self.assertTrue(self.var.fails_meanlr2())

    def test_fails_no_exons(self):
        """ test that fails_no_exons() works correctly
        """

        self.var.cnv.info["NUMBEREXONS"] = "1"
        self.assertFalse(self.var.fails_no_exons())

        self.var.cnv.info["NUMBEREXONS"] = "0"
        self.assertTrue(self.var.fails_no_exons())

    def test_fails_frequency(self):
        """ test that fails_frequency() works correctly
        """

        # a low population frequency will pass
        self.var.cnv.info["ACGH_RC_FREQ50"] = "0.01"
        self.assertFalse(self.var.fails_frequency())

        # a high population frequency will fail
        self.var.cnv.info["ACGH_RC_FREQ50"] = "0.011"
        self.assertTrue(self.var.fails_frequency())

        # if population frequency information is unavailable, it should pass,
        # since this suggests the frequency is 0.
        del self.var.cnv.info["ACGH_RC_FREQ50"]
        self.assertFalse(self.var.fails_frequency())

    def test_fails_cifer_inh(self):
        """ test that fails_cifer_inh() works correctly
        """

        # CNVs annotated as not_inherited, or inherited will pass
        self.var.cnv.format["CIFER_INHERITANCE"] = "not_inherited"
        self.assertFalse(self.var.fails_cifer_inh())

        # CNVs annotated as false_positive will fail
        self.var.cnv.format["CIFER_INHERITANCE"] = "false_positive"
        self.assertTrue(self.var.fails_cifer_inh())
class TestAcghCnvPy(unittest.TestCase):
    """ test the ACGH CNV filters
    """
    def setUp(self):
        """ define a default VcfInfo object
        """

        chrom = "1"
        pos = "15000000"
        snp_id = "."
        ref = "A"
        alt = "<DUP>"
        filt = "PASS"

        # set up a SNV object, since SNV inherits VcfInfo
        cnv = CNV(chrom, pos, snp_id, ref, alt, filt)
        self.var = ACGH_CNV(cnv)

        info = "HGNC=TEST;HGNC_ALL=TEST,OR5A1;CQ=missense_variant;CNSOLIDATE;WSCORE=0.5;CALLP=0.000;COMMONFORWARDS=0.000;MEANLR2=0.5;MADL2R=0.02;END=16000000;SVLEN=1000000"
        format_keys = "inheritance:DP"
        sample_values = "deNovo:50"

        self.var.cnv.add_info(info)
        self.var.cnv.add_format(format_keys, sample_values)
        self.var.cnv.set_gender("F")

    def test_fails_mad_ratio(self):
        """ test that fails_mad_ratio() works correctly
        """

        # check that var passes when MAD ratio > 15
        self.var.cnv.info["MEANLR2"] = "0.5"
        self.var.cnv.info["MADL2R"] = "0.02"
        self.assertFalse(self.var.fails_mad_ratio())

        # check that var passes when MAD ratio == 15
        self.var.cnv.info["MEANLR2"] = "0.3"
        self.var.cnv.info["MADL2R"] = "0.02"
        self.assertFalse(self.var.fails_mad_ratio())

        # check that var fails when MAD ratio < 15
        self.var.cnv.info["MEANLR2"] = "0.2"
        self.var.cnv.info["MADL2R"] = "0.02"
        self.assertTrue(self.var.fails_mad_ratio())

        # check that var fails when trying to divide by zero
        self.var.cnv.info["MEANLR2"] = "0.2"
        self.var.cnv.info["MADL2R"] = "0"
        self.assertTrue(self.var.fails_mad_ratio())

    def test_fails_wscore(self):
        """ test that fails_wscore() works correctly
        """

        # check that var passes when WSCORE > 0.4
        self.var.cnv.info["WSCORE"] = "0.5"
        self.assertFalse(self.var.fails_wscore())

        # check that var passes when WSCORE == 0.4
        self.var.cnv.info["WSCORE"] = "0.4"
        self.assertFalse(self.var.fails_wscore())

        # check that var fails when WSCORE > 0.4
        self.var.cnv.info["WSCORE"] = "0.399"
        self.assertTrue(self.var.fails_wscore())

    def test_fails_callp(self):
        """ test that fails_callp() works correctly
        """

        # check that var passes when CALLP < 0.01
        self.var.cnv.info["CALLP"] = "0.0"
        self.assertFalse(self.var.fails_callp())

        # check that var passes when CALLP == 0.01
        self.var.cnv.info["CALLP"] = "0.01"
        self.assertFalse(self.var.fails_callp())

        # check that var fails when CALLP > 0.01
        self.var.cnv.info["CALLP"] = "0.0101"
        self.assertTrue(self.var.fails_callp())

    def test_fails_commmon_forwards(self):
        """ test that fails_commmon_forwards() works correctly
        """

        # check that var passes when COMMONFORWARDS < 0.8
        self.var.cnv.info["COMMONFORWARDS"] = "0.0"
        self.assertFalse(self.var.fails_commmon_forwards())

        # check that var fails when COMMONFORWARDS == 0.8
        self.var.cnv.info["COMMONFORWARDS"] = "0.8"
        self.assertFalse(self.var.fails_commmon_forwards())

        # check that var fails when COMMONFORWARDS > 0.8
        self.var.cnv.info["COMMONFORWARDS"] = "0.9"
        self.assertTrue(self.var.fails_commmon_forwards())

    def test_fails_mean_lr2_dup(self):
        """ test that fails_mean_lr2() works correctly on duplications
        """

        # set the var as a duplication
        self.var.cnv.alt_allele = "<DUP>"
        self.var.cnv.set_genotype()

        # check that dup passes with MEANLR2 > 0.36
        self.var.cnv.info["MEANLR2"] = "0.4"
        self.assertFalse(self.var.fails_meanlr2())

        # check that dup passes with MEANLR2 == 0.36
        self.var.cnv.info["MEANLR2"] = "0.36"
        self.assertFalse(self.var.fails_meanlr2())

        # check that dup passes with MEANLR2 < 0.36
        self.var.cnv.info["MEANLR2"] = "0.359"
        self.assertTrue(self.var.fails_meanlr2())

    def test_fails_mean_lr2_del(self):
        """ test that fails_mean_lr2() works correctly on deletions
        """
        # set the var as a deletion
        self.var.cnv.alt_allele = "<DEL>"
        self.var.cnv.set_genotype()

        # check that del passes with MEANLR2 < -0.41
        self.var.cnv.info["MEANLR2"] = "-0.5"
        self.assertFalse(self.var.fails_meanlr2())

        # check that del passes with MEANLR2 == -0.41
        self.var.cnv.info["MEANLR2"] = "-0.41"
        self.assertFalse(self.var.fails_meanlr2())

        # check that del passes with MEANLR2 > -0.41
        self.var.cnv.info["MEANLR2"] = "-0.409"
        self.assertTrue(self.var.fails_meanlr2())

    def test_fails_no_exons(self):
        """ test that fails_no_exons() works correctly
        """

        self.var.cnv.info["NUMBEREXONS"] = "1"
        self.assertFalse(self.var.fails_no_exons())

        self.var.cnv.info["NUMBEREXONS"] = "0"
        self.assertTrue(self.var.fails_no_exons())
class TestAcghCnvPy(unittest.TestCase):
    """ test the ACGH CNV filters
    """
    def setUp(self):
        """ define a default VcfInfo object
        """

        extra = 'OR5A1;CNSOLIDATE;WSCORE=0.5;CALLP=0.000;COMMONFORWARDS=0.000;MEANLR2=0.5;MADL2R=0.02;'
        cnv = create_cnv('F', 'deNovo', extra_info=extra)

        self.var = ACGH_CNV(cnv)

    def test_fails_mad_ratio(self):
        """ test that fails_mad_ratio() works correctly.
        """

        # check that var passes when MAD ratio >= 15
        self.var.cnv.info["MEANLR2"] = "0.3"
        self.var.cnv.info["MADL2R"] = "0.02"
        self.assertFalse(self.var.fails_mad_ratio())

        # check that var fails when MAD ratio < 10
        self.var.cnv.info["MEANLR2"] = "0.29"
        self.var.cnv.info["MADL2R"] = "0.03"
        self.assertTrue(self.var.fails_mad_ratio())

        # check that var passes when MAD ratio == 0
        self.var.cnv.info["MEANLR2"] = "0.3"
        self.var.cnv.info["MADL2R"] = float("inf")
        self.assertTrue(self.var.fails_mad_ratio())

        # check that var fails when trying to divide by zero
        self.var.cnv.info["MEANLR2"] = "0.2"
        self.var.cnv.info["MADL2R"] = "0"
        self.assertTrue(self.var.fails_mad_ratio())

        # check that var passes when the fields are NA
        self.var.cnv.info["MEANLR2"] = "0.2"
        self.var.cnv.info["MADL2R"] = "NA"
        self.assertFalse(self.var.fails_mad_ratio())

    def test_fails_wscore(self):
        """ test that fails_wscore() works correctly
        """

        # check that var passes when WSCORE > 0.45
        self.var.cnv.info["WSCORE"] = "0.45"
        self.assertFalse(self.var.fails_wscore())

        # check that var fails when WSCORE < 0.45
        self.var.cnv.info["WSCORE"] = "0.449"
        self.assertTrue(self.var.fails_wscore())

    def test_fails_callp(self):
        """ test that fails_callp() works correctly
        """

        # check that var passes when CALLP < 0.01
        self.var.cnv.info["CALLP"] = "0.0"
        self.assertFalse(self.var.fails_callp())

        # check that var passes when CALLP == 0.01
        self.var.cnv.info["CALLP"] = "0.01"
        self.assertFalse(self.var.fails_callp())

        # check that var fails when CALLP > 0.01
        self.var.cnv.info["CALLP"] = "0.0101"
        self.assertTrue(self.var.fails_callp())

    def test_fails_commmon_forwards(self):
        """ test that fails_commmon_forwards() works correctly
        """

        # check that var passes when COMMONFORWARDS < 0.8
        self.var.cnv.info["COMMONFORWARDS"] = "0.0"
        self.assertFalse(self.var.fails_commmon_forwards())

        # check that var fails when COMMONFORWARDS == 0.8
        self.var.cnv.info["COMMONFORWARDS"] = "0.8"
        self.assertFalse(self.var.fails_commmon_forwards())

        # check that var fails when COMMONFORWARDS > 0.8
        self.var.cnv.info["COMMONFORWARDS"] = "0.9"
        self.assertTrue(self.var.fails_commmon_forwards())

    def test_fails_mean_lr2_dup(self):
        """ test that fails_mean_lr2() works correctly on duplications
        """

        # set the var as a duplication
        self.var.cnv.alt_alleles = ["<DUP>"]
        self.var.cnv.set_genotype()

        # check that dup passes with MEANLR2 > 0.4
        self.var.cnv.info["MEANLR2"] = "0.4"
        self.assertFalse(self.var.fails_meanlr2())

        # check that dup passes with MEANLR2 < 0.4
        self.var.cnv.info["MEANLR2"] = "0.399"
        self.assertTrue(self.var.fails_meanlr2())

    def test_fails_mean_lr2_del(self):
        """ test that fails_mean_lr2() works correctly on deletions
        """
        # set the var as a deletion
        self.var.cnv.alt_alleles = ["<DEL>"]
        self.var.cnv.set_genotype()

        # check that del passes with MEANLR2 < -0.5
        self.var.cnv.info["MEANLR2"] = "-0.5"
        self.assertFalse(self.var.fails_meanlr2())

        # check that del fails with MEANLR2 > -0.41
        self.var.cnv.info["MEANLR2"] = "-0.499"
        self.assertTrue(self.var.fails_meanlr2())

    def test_fails_no_exons(self):
        """ test that fails_no_exons() works correctly
        """

        self.var.cnv.info["NUMBEREXONS"] = "1"
        self.assertFalse(self.var.fails_no_exons())

        self.var.cnv.info["NUMBEREXONS"] = "0"
        self.assertTrue(self.var.fails_no_exons())

    def test_fails_frequency(self):
        """ test that fails_frequency() works correctly
        """

        # a low population frequency will pass
        self.var.cnv.info["ACGH_RC_FREQ50"] = "0.01"
        self.assertFalse(self.var.fails_frequency())

        # a high population frequency will fail
        self.var.cnv.info["ACGH_RC_FREQ50"] = "0.011"
        self.assertTrue(self.var.fails_frequency())

        # if population frequency information is unavailable, it should pass,
        # since this suggests the frequency is 0.
        del self.var.cnv.info["ACGH_RC_FREQ50"]
        self.assertFalse(self.var.fails_frequency())

    def test_fails_cifer_inh(self):
        """ test that fails_cifer_inh() works correctly
        """

        # CNVs annotated as not_inherited, or inherited will pass
        self.var.cnv.format["CIFER_INHERITANCE"] = "not_inherited"
        self.assertFalse(self.var.fails_cifer_inh())

        # CNVs annotated as false_positive will fail
        self.var.cnv.format["CIFER_INHERITANCE"] = "false_positive"
        self.assertTrue(self.var.fails_cifer_inh())