def test_joint_probability(self): # One gene people = hrd.load_data("data/family0.csv") one_gene = {"Harry"} two_genes = {"James"} have_trait = {"James"} self.assertAlmostEqual( hrd.joint_probability(people, one_gene, two_genes, have_trait), 0.00266, 5, ) # No genes one_gene = {} two_genes = {"James"} have_trait = {"James"} self.assertAlmostEqual( hrd.joint_probability(people, one_gene, two_genes, have_trait), 0.000060546, 5, ) # Two genes one_gene = {} two_genes = {"James", "Harry"} have_trait = {"James"} self.assertAlmostEqual( hrd.joint_probability(people, one_gene, two_genes, have_trait), 0.000021405, 5, )
def testJointProbability(self): joint_prob_0 = hr.joint_probability(self.people_0, {"Harry"}, {"James"}, {"James"}) # Verified self.assertEqual(joint_prob_0, 0.0026643247488) joint_prob_1 = hr.joint_probability(self.people_1, {}, {}, {"Fred"}) self.assertEqual(joint_prob_1, 0.008764324299878399) joint_prob_2 = hr.joint_probability(self.people_2, {}, {'Arthur'}, {'Arthur'}) self.assertEqual(joint_prob_2, 0.00022787243179683852)
def test_joint_probability(self): people = { 'Lily': { 'name': 'Lily', 'mother': None, 'father': None, 'trait': False }, 'James': { 'name': 'James', 'mother': None, 'father': None, 'trait': True }, 'Harry': { 'name': 'Harry', 'mother': 'Lily', 'father': 'James', 'trait': None } } one_gene = {"Harry"} two_genes = {"James"} have_trait = {"James"} result = joint_probability(people, one_gene, two_genes, have_trait) self.assertEqual(result, 0.0026643247488)
def test_joint_probability(self): people = { 'Harry': {'name': 'Harry', 'mother': 'Lily', 'father': 'James', 'trait': None}, 'James': {'name': 'James', 'mother': None, 'father': None, 'trait': True}, 'Lily': {'name': 'Lily', 'mother': None, 'father': None, 'trait': False} } self.assertAlmostEqual( joint_probability(people, {"Harry"}, {"James"}, {"James"}), 0.0026643247488, places=5 )
def test_joint_probability(): assert heredity.joint_probability(people, {"Harry"}, {"James"}, {"James"}) == 0.0026643247488
Return a list of all possible subsets of set s. """ s = list(s) return [ set(s) for s in itertools.chain.from_iterable( itertools.combinations(s, r) for r in range(len(s) + 1)) ] people = load_data(sys.argv[1]) names = set(people) print(people) print(names) print(powerset(names)) print(joint_probability(people, {"Harry"}, {"James"}, {"James"})) # for have_trait in powerset(names): # # Check if current set of people violates known information # fails_evidence = any( # (people[person]["trait"] is not None and # people[person]["trait"] != (person in have_trait)) # for person in names # ) # if fails_evidence: # print('\n fails_evidence is True') # print(have_trait) # continue