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
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]
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]