def testDynamicOutgroupsJustLeaves(self): tree = '((((HUMAN:0.006969,CHIMP:0.009727)Anc7:0.025291,BABOON:0.044568)Anc6:0.11,(MOUSE:0.072818,RAT:0.081244)Anc5:0.260342)Anc4:0.023260,((DOG:0.07,CAT:0.07)Anc3:0.087381,(PIG:0.06,COW:0.06)Anc2:0.104728)Anc1:0.04)Anc0;' mcTree = MultiCactusTree(NXNewick().parseString(tree, addImpliedRoots = False)) mcTree.computeSubtreeRoots() og = DynamicOutgroup() og.importTree(mcTree, self.blanchetteSeqMap) og.compute(maxNumOutgroups=3, sequenceLossWeight=0.) # make sure all entries have <= 3 outgroups. assert all(map(lambda x: len(x) <= 3, og.ogMap.values())) # and for all entries, the closest must be first. assert all(map(lambda x: x == sorted(x, key=itemgetter(1)), og.ogMap.values())) # ordering is important! assert og.ogMap['Anc1'][0][0] == 'HUMAN' assert og.ogMap['Anc7'][0][0] == 'BABOON' og = DynamicOutgroup() og.importTree(mcTree, self.blanchetteSeqMap) og.compute(maxNumOutgroups=3) # make sure all entries have <= 3 outgroups. assert all(map(lambda x: len(x) <= 3, og.ogMap.values())) # we keep dynamic outgroups sorted by distance too assert all(map(lambda x: x == sorted(x, key=itemgetter(1)), og.ogMap.values()))
def testDynamicOutgroupsOnRandomTrees(self): for tree, seqMap in zip(self.mcTrees, self.dummySeqMaps): degree = max([len(tree.getChildren(x)) for x in tree.breadthFirstTraversal()]) if degree < 8: og = DynamicOutgroup() og.edgeLen = 5 og.importTree(tree, seqMap) og.compute(maxNumOutgroups=3) # make sure all entries have <= 3 outgroups. assert all(map(lambda x: len(x) <= 3, og.ogMap.values())) # and for all entries, the closest must be first. # (this will be true because all sequences are the same) assert all(map(lambda x: x == sorted(x, key=itemgetter(1)), og.ogMap.values()))
def testDynamicOutgroupsOnRandomTrees(self): for tree, seqMap in zip(self.mcTrees, self.dummySeqMaps): degree = max([ len(tree.getChildren(x)) for x in tree.breadthFirstTraversal() ]) if degree < 8: og = DynamicOutgroup() og.edgeLen = 5 og.importTree(tree, seqMap) og.compute(maxNumOutgroups=3) # make sure all entries have <= 3 outgroups. assert all(map(lambda x: len(x) <= 3, og.ogMap.values())) # and for all entries, the closest must be first. # (this will be true because all sequences are the same) assert all( map(lambda x: x == sorted(x, key=itemgetter(1)), og.ogMap.values()))
def testDynamicOutgroupsJustLeaves(self): og = DynamicOutgroup() og.importTree(self.borMcTree, self.blanchetteSeqMap) og.compute(maxNumOutgroups=3, sequenceLossWeight=0.) # make sure all entries have <= 3 outgroups. assert all(map(lambda x: len(x) <= 3, og.ogMap.values())) # and for all entries, the closest must be first. assert all(map(lambda x: x == sorted(x, key=itemgetter(1)), og.ogMap.values())) # ordering is important! assert og.ogMap['Anc1'][0][0] == 'HUMAN' assert og.ogMap['Anc7'][0][0] == 'BABOON' og = DynamicOutgroup() og.importTree(self.borMcTree, self.blanchetteSeqMap) og.compute(maxNumOutgroups=3) # make sure all entries have <= 3 outgroups. assert all(map(lambda x: len(x) <= 3, og.ogMap.values())) # we keep dynamic outgroups sorted by distance too assert all(map(lambda x: x == sorted(x, key=itemgetter(1)), og.ogMap.values()))
def testDynamicOutgroupsJustLeaves(self): og = DynamicOutgroup() og.importTree(self.borMcTree, self.blanchetteSeqMap) og.compute(maxNumOutgroups=3, sequenceLossWeight=0.) # make sure all entries have <= 3 outgroups. assert all(map(lambda x: len(x) <= 3, og.ogMap.values())) # and for all entries, the closest must be first. assert all( map(lambda x: x == sorted(x, key=itemgetter(1)), og.ogMap.values())) # ordering is important! assert og.ogMap['Anc1'][0][0] == 'HUMAN' assert og.ogMap['Anc7'][0][0] == 'BABOON' og = DynamicOutgroup() og.importTree(self.borMcTree, self.blanchetteSeqMap) og.compute(maxNumOutgroups=3) # make sure all entries have <= 3 outgroups. assert all(map(lambda x: len(x) <= 3, og.ogMap.values())) # we keep dynamic outgroups sorted by distance too assert all( map(lambda x: x == sorted(x, key=itemgetter(1)), og.ogMap.values()))