Example #1
0
 def test_minor_allele_frequency_at_uncovered_position(self):
     snp = SNP(chromosome='chr1', position=1000, genotype=None, counts={'A': 0, 'C': 0, 'G': 0, 'T': 0})
     self.assertEqual(snp.minor_allele_frequency(), 0.0)
Example #2
0
class TestSNP(unittest.TestCase):

    def setUp(self):
        self.snp = SNP(chromosome='chr1', position=1000, genotype='AA', counts={'A': 95, 'C': 1, 'G': 3, 'T': 1})

    def test_create_snp(self):
        self.assertEqual(self.snp._chromosome, 'chr1')
        self.assertEqual(self.snp._position, 1000)
        self.assertEqual(self.snp._genotype, 'AA')
        self.assertEqual(self.snp._counts, {'A': 95, 'C': 1, 'G': 3, 'T': 1})

    def test_get_genotype(self):
        self.assertEqual(self.snp.genotype, 'AA')

    def test_get_depth(self):
        self.assertEqual(self.snp.depth, 100)

    def test_is_homozygote(self):
        self.assertTrue(SNP(chromosome='chr1', position=1000, genotype='AA', counts={'A': 95, 'C': 1, 'G': 3, 'T': 1}).is_homozygote())
        self.assertFalse(SNP(chromosome='chr2', position=5000, genotype='GT', counts={'A': 0, 'C': 0, 'G': 35, 'T': 25}).is_homozygote())
        self.assertFalse(SNP(chromosome='chr1', position=1000, genotype=None, counts={'A': 0, 'C': 0, 'G': 0, 'T': 0}).is_homozygote())

    def test_is_heterozygote(self):
        self.assertFalse(SNP(chromosome='chr1', position=1000, genotype='AA', counts={'A': 95, 'C': 1, 'G': 3, 'T': 1}).is_heterozygote())
        self.assertTrue(SNP(chromosome='chr2', position=5000, genotype='GT', counts={'A': 0, 'C': 0, 'G': 35, 'T': 25}).is_heterozygote())
        self.assertFalse(SNP(chromosome='chr1', position=1000, genotype=None, counts={'A': 0, 'C': 0, 'G': 0, 'T': 0}).is_heterozygote())

    def test_minor_allele(self):
        self.assertEqual(self.snp.minor_allele, 'G')

    def test_major_allele(self):
        self.assertEqual(self.snp.major_allele, 'A')

    def test_minor_allele_frequency(self):
        self.assertEqual(self.snp.minor_allele_frequency(), 0.03)

    def test_minor_allele_frequency_at_uncovered_position(self):
        snp = SNP(chromosome='chr1', position=1000, genotype=None, counts={'A': 0, 'C': 0, 'G': 0, 'T': 0})
        self.assertEqual(snp.minor_allele_frequency(), 0.0)

    def test_major_allele_frequency(self):
        self.assertEqual(self.snp.major_allele_frequency(), 0.95)

    def test_major_allele_frequency_at_uncovered_position(self):
        snp = SNP(chromosome='chr1', position=1000, genotype=None, counts={'A': 0, 'C': 0, 'G': 0, 'T': 0})
        self.assertEqual(snp.major_allele_frequency(), 0.0)

    def test_off_genotype_frequency_homozygote_site(self):
        snp = SNP(chromosome='chr1', position=1000, genotype='AA', counts={'A': 95, 'C': 1, 'G': 3, 'T': 1})
        self.assertEqual(snp.off_genotype_frequency(), 0.05)

    def test_off_genotype_frequency_heterozygote_site(self):
        snp = SNP(chromosome='chr2', position=5000, genotype='GT', counts={'A': 3, 'C': 2, 'G': 25, 'T': 20})
        self.assertEqual(snp.off_genotype_frequency(), 0.1)

    def test_off_genotype_frequency_at_non_genotyped_site_raises_exception(self):
        snp = SNP(chromosome='chr1', position=1000, genotype=None, counts={'A': 1, 'C': 2, 'G': 0, 'T': 1})
        with self.assertRaises(MissingGenotypeError):
            snp.off_genotype_frequency()

    def test_count(self):
        snp = SNP(chromosome='chr19', position=230, genotype='AC', counts={'A': 30, 'C': 22, 'G': 7, 'T': 9})
        self.assertEqual(snp.count('A'), 30)
        self.assertEqual(snp.count('C'), 22)
        self.assertEqual(snp.count('G'), 7)
        self.assertEqual(snp.count('T'), 9)

    def test_count_unknown_base_raises_exception(self):
        snp = SNP(chromosome='chr1', position=1000, genotype='AA', counts={'A': 95, 'C': 1, 'G': 3, 'T': 1})
        with self.assertRaises(UnknownBaseError):
            snp.count('N')

    def test_snp_string_representation(self):
        self.assertEqual(self.snp.__str__(), 'chr1:1000')