need to sort them by the mrcas and then do them all at once """ # this will either be sister or will be at a polytomy add_as_sister = True if __name__ == "__main__": if len(sys.argv) != 3: print "python " + sys.argv[0] + " infile.tre names.txt" sys.exit(0) tree = tree_reader.read_tree_file_iter(sys.argv[1]).next() tree_utils.set_heights(tree) of = open(sys.argv[2], "r") replace = {} #key is single mrca taxon, value is node that is to be used for i in of: spls = i.strip().split(",") nms = spls[1:] nm = spls[0] x = None if len(nms) == 1: if nms[0] in replace: x = replace[nms[0]] else: for j in tree.leaves(): if j.label == nms[0]: x = j
toremove.append(i) for i in toremove: sys.stderr.write("remove internal: "+i.get_newick_repr(False)+"\n") par = i.parent par.remove_child(i) if __name__ == "__main__": if len(sys.argv) != 3: print "python "+sys.argv[0]+ " addtree bigtre" sys.exit(0) tree1 = tree_reader.read_tree_file_iter(sys.argv[1]).next() bigtree = tree_reader.read_tree_file_iter(sys.argv[2]).next() if EDITLEN: tree_utils.set_heights(tree1) tree_utils.set_heights(bigtree) rootnms = set(tree1.lvsnms()) remove_int_ext_nodes(rootnms,bigtree) othernms = set(bigtree.lvsnms()) if VERBOSE: ddifs = rootnms.difference(othernms) for i in ddifs: sys.stderr.write(i+"\n") diffnms = [] diffnds = {} didit = False nrt = tree_utils.get_mrca_wnms(list(rootnms.intersection(othernms)),bigtree).parent
import os import tree_reader import tree_utils """ assuming that the datedtre just has ott ids as the tip names assuming the labelled_supertree has ott in front of the ott ids """ if __name__ == "__main__": if len(sys.argv) != 3: print "python " + sys.argv[0] + " datedtree labelled_superrtree" sys.exit(0) dated = tree_reader.read_tree_file_iter(sys.argv[1]).next() ott = tree_reader.read_tree_file_iter(sys.argv[2]).next() tree_utils.set_heights(dated) ottlvsd = {} #key is name and value is node for i in ott.iternodes(): ottlvsd[i.label] = i for i in dated.leaves(): try: i.data["node"] = ottlvsd[i.label] #ottlvsd["ott"+i.label] except: print >> sys.stderr, "not matched", i.label continue done = set() dates = {} # key is node, value is date dates_names = {} #key is node, value is mrca string for i in dated.iternodes(order="preorder"):