Exemplo n.º 1
0
    def testTheta(self):
        """test theta"""
        profile_base = {'D3S1358': (('15', 113), ('17', 89)),
            'VWA': (('14', 34), ('17', 100)),
            'D16S539': (('11', 119), ('13', 70)),
            'D2S1338': (('24', 40), ('25', 48)),
            'D8S1179': (('11', 25), ('13', 139)),
            'D21S11': (('30', 105), ('31.2', 42)),
            'D18S51': (('14', 67), ('15', 57)),
            'D19S433': (('14', 131), ('15.2', 10)),
            'TH01': (('9', 55), ('9.3', 140)),
            'FGA': (('21', 71), ('21', 71))}

        profile = {}
        for i in profile_base:
            p = profile_base[i]
            profile[i] = ((p[0][0], float(p[0][1]) / 400), (p[1][0], float(p[1][1]) / 400))

        result = strmarker.calc_profile_match_probability(profile, 0.0)
        expected = 7.58e-14
        #print "result", result, expected
        self.assertAlmostEqual(result, expected, 16)

        result = strmarker.calc_profile_match_probability(profile, 0.01)
        expected = 2.44e-13
        #print "result 0.01", result, expected
        self.assertAlmostEqual(result, expected, 15)

        result = strmarker.calc_profile_match_probability(profile, 0.03)
        expected = 1.614e-12
        #print "result 0.03", result, expected
        self.assertAlmostEqual(result, expected, 14)

        # size bias correction
        for i in profile_base:
            p = profile_base[i]
            if p[0][1] == p[1][1]:
                profile[i] = ((p[0][0], float(p[0][1] + 4) / 404), (p[1][0], float(p[1][1] + 4) / 404))
            else:
                profile[i] = ((p[0][0], float(p[0][1] + 2) / 404), (p[1][0], float(p[1][1] + 2) / 404))

        result = strmarker.calc_profile_match_probability(profile, 0.0)
        expected = 1.4225e-13
        #print "result 0.0", result, expected
        self.assertAlmostEqual(result, expected, 17)
Exemplo n.º 2
0
 def testGetModalProfile(self):
     """Get modal profile."""
     item = {'name': 'AB', 'marker': 'VWA', 'alleles': {'5': 0.94, '6': 0.03, '7': 0.02, '8': 0.01}}
     data = [{'name': 'AB', 'count': 400, 'marker': 'FGA', 'alleles': self.AB_Cau_FGA_alleles},
         {'name': 'AB', 'count': 400, 'marker': 'TH01', 'alleles': self.AB_Cau_TH01_alleles},
         {'name': 'AB', 'count': 400, 'marker': 'D16S539', 'alleles': self.AB_Cau_D16S539_alleles}, item]
     expected = {'FGA': (('21', 0.1775), ('22', 0.165)), 'TH01': (('9.3', 0.35), ('6', 0.2525)),
         'D16S539': (('12', 0.3425), ('11', 0.2975)), 'VWA': (('5', 0.94), ('5', 0.94))}
     profile = expected
     result = strmarker.get_modal_profile(data, 'AB')
     for i in expected:
         self.assertEqual(result[i][0][0], expected[i][0][0])
         self.assertEqual(result[i][1][0], expected[i][1][0])
         self.assertAlmostEqual(result[i][0][1], expected[i][0][1])
         self.assertAlmostEqual(result[i][1][1], expected[i][1][1])
     expected = 2 * 0.1775 * 0.165 * 2 * 0.35 * 0.2525 * 2 * 0.3425 * 0.2975 * 0.94 * 0.94
     result = strmarker.calc_profile_match_probability(profile, 0.0)
     self.assertAlmostEqual(result, expected)