예제 #1
0
def get_snps(coordinates: List[Tuple[str, int]], genotyper: Genotyper, get_counts=Callable[[str, int], Dict[str, int]]) -> List[SNP]:
    result: List[SNP] = []
    for chromosome, position in coordinates:
        counts = get_counts(chromosome, position)
        genotype = genotyper.genotype(counts=counts)
        result.append(SNP(chromosome=chromosome, position=position, counts=counts, genotype=genotype))
    return result
예제 #2
0
 def setUp(self):
     self.snps = [
         SNP(chromosome='chr1',
             position=1000,
             genotype='AA',
             counts={
                 'A': 46,
                 'C': 1,
                 'G': 3,
                 'T': 0
             }),
         SNP(chromosome='chr2',
             position=5000,
             genotype='GT',
             counts={
                 'A': 2,
                 'C': 0,
                 'G': 18,
                 'T': 30
             })
     ]
예제 #3
0
 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')
예제 #4
0
 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)
예제 #5
0
 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()
예제 #6
0
 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)
예제 #7
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)
예제 #8
0
 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)
예제 #9
0
 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())
예제 #10
0
 def setUp(self):
     self.snp = SNP(chromosome='chr1', position=1000, genotype='AA', counts={'A': 95, 'C': 1, 'G': 3, 'T': 1})
예제 #11
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')