Пример #1
0
def test_pathfraternity():
    from pydigree.paths import fraternity

    peds = getpeds()
    ped = peds["fullsib"]

    # None should return 0
    assert fraternity(ped["1"], None) == 0
    # Unrelated founders
    assert fraternity(ped["1"], ped["2"]) == 0
    # Full-sib
    assert fraternity(ped["3"], ped["4"]) == 1 / 4
    # Parent-child
    assert fraternity(ped["1"], ped["3"]) == 0

    ped = peds["first_cousins"]
    # First cousins
    assert fraternity(ped["7"], ped["8"]) == 0
    # Avuncular (related)
    assert fraternity(ped["7"], ped["5"]) == 0
    # Avuncular (marry-in)
    assert fraternity(ped["7"], ped["6"]) == 0
    # Grandparent
    assert fraternity(ped["7"], ped["1"]) == 0

    ped = peds["half_sibs"]
    assert fraternity(ped["4"], ped["5"]) == 0
Пример #2
0
    def fraternity(self, id1, id2):
        """
        Like Pedigree.kinship, this is a convenience function for getting
        fraternity coefficients for two pedigree memebers by their ID label.

        This is a wrapper for paths.fraternity

        Returns: a double
        """
        pair = frozenset([id1, id2])
        if pair not in self.fratmat:
            f = fraternity(self[id1], self[id2])
            self.fratmat[pair] = f
            return f
        else:
            return self.fratmat[pair]
Пример #3
0
    def fraternity(self, id1, id2):
        """
        Like Pedigree.kinship, this is a convenience function for getting
        fraternity coefficients for two pedigree memebers by their ID label.

        This is a wrapper for paths.fraternity

        :param id1: the label of a individual to be evaluated
        :param id2: the label of a individual to be evaluated

        :returns: coefficient of fraternity
        :rtype: float
        """
        pair = frozenset([id1, id2])
        if pair not in self.fratmat:
            f = f = fraternity(self[id1], self[id2])
            self.fratmat[pair] = f
            return f
        else:
            return self.fratmat[pair]