Exemple #1
0
    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)
Exemple #3
0
    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)
Exemple #4
0
    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
Exemple #6
0
    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