class bayesianptp: """Run MCMC on multiple trees""" def __init__(self, filename, ftype = "nexus", reroot = False, method = "H1", seed = 1234, thinning = 100, sampling = 10000, burnin = 0.1, firstktrees = 0, taxa_order = []): self.method = method self.seed = seed self.thinning = thinning self.sampling = sampling self.burnin = burnin self.firstktrees = firstktrees if ftype == "nexus": self.nexus = NexusReader(filename) self.nexus.blocks['trees'].detranslate() self.trees = self.nexus.trees.trees else: self.trees = self.raxmlTreeParser(filename) if self.firstktrees > 0 and self.firstktrees <= len(self.trees): self.trees = self.trees[:self.firstktrees] self.taxa_order = taxa_order if len(self.taxa_order) == 0: self.taxa_order = Tree(self.trees[0]).get_leaf_names() self.numtaxa = len(self.taxa_order) self.numtrees = len(self.trees) self.reroot = reroot def remove_outgroups(self, ognames, remove = False, output = ""): """reroot using outgroups and remove them""" self.reroot = False try: if remove: for og in ognames: self.taxa_order.remove(og) self.numtaxa = len(self.taxa_order) for i in range(len(self.trees)): t = Tree(self.trees[i]) if len(ognames) < 2: t.set_outgroup(ognames[0]) if remove: t.prune(self.taxa_order, preserve_branch_length=True) else: ancestor = t.get_common_ancestor(ognames) if not t == ancestor: t.set_outgroup(ancestor) if remove: t.prune(self.taxa_order, preserve_branch_length=True) self.trees[i] = t.write() if remove and output!="": with open(output, "w") as fout: for t in self.trees: fout.write(t + "\n") except ValueError, e: print(e) print("") print("") print("Somthing is wrong with the input outgroup names") print("") print("Quiting .....") sys.exit()
class bootstrap_ptp: """Run MCMC on multiple trees""" def __init__(self, filename, ftype="nexus", reroot=False, method="H1", firstktrees=0): self.method = method self.firstktrees = firstktrees if ftype == "nexus": self.nexus = NexusReader(filename) self.nexus.blocks['trees'].detranslate() self.trees = self.nexus.trees.trees else: self.trees = self.raxmlTreeParser(filename) if self.firstktrees > 0 and self.firstktrees <= len(self.trees): self.trees = self.trees[:self.firstktrees] self.taxa_order = Tree(self.trees[0]).get_leaf_names() self.numtaxa = len(self.taxa_order) self.numtrees = len(self.trees) self.reroot = reroot def remove_outgroups(self, ognames, remove=False): """reroot using outgroups and remove them""" self.reroot = False try: if remove: for og in ognames: self.taxa_order.remove(og) self.numtaxa = len(self.taxa_order) for i in range(len(self.trees)): t = Tree(self.trees[i]) if len(ognames) < 2: t.set_outgroup(ognames[0]) if remove: t.prune(self.taxa_order, preserve_branch_length=True) else: ancestor = t.get_common_ancestor(ognames) if not t == ancestor: t.set_outgroup(ancestor) if remove: t.prune(self.taxa_order, preserve_branch_length=True) self.trees[i] = t.write() except ValueError, e: print(e) print( "\n Somthing is wrong with the input outgroup names \n Quiting ..." ) sys.exit()
class bootstrap_ptp: """Run MCMC on multiple trees""" def __init__(self, filename, ftype="nexus", reroot=False, method="H1", firstktrees=0): self.method = method self.firstktrees = firstktrees if ftype == "nexus": self.nexus = NexusReader(filename) self.nexus.blocks["trees"].detranslate() self.trees = self.nexus.trees.trees else: self.trees = self.raxmlTreeParser(filename) if self.firstktrees > 0 and self.firstktrees <= len(self.trees): self.trees = self.trees[: self.firstktrees] self.taxa_order = Tree(self.trees[0]).get_leaf_names() self.numtaxa = len(self.taxa_order) self.numtrees = len(self.trees) self.reroot = reroot def remove_outgroups(self, ognames, remove=False): """reroot using outgroups and remove them""" self.reroot = False try: if remove: for og in ognames: self.taxa_order.remove(og) self.numtaxa = len(self.taxa_order) for i in range(len(self.trees)): t = Tree(self.trees[i]) if len(ognames) < 2: t.set_outgroup(ognames[0]) if remove: t.prune(self.taxa_order, preserve_branch_length=True) else: ancestor = t.get_common_ancestor(ognames) if not t == ancestor: t.set_outgroup(ancestor) if remove: t.prune(self.taxa_order, preserve_branch_length=True) self.trees[i] = t.write() except ValueError, e: print(e) print("\n Somthing is wrong with the input outgroup names \n Quiting ...") sys.exit()
class bayesianptp: """Run MCMC on multiple trees""" def __init__(self, filename, ftype="nexus", reroot=False, method="H1", seed=1234, thinning=100, sampling=10000, burnin=0.1, firstktrees=0, taxa_order=[]): self.method = method self.seed = seed self.thinning = thinning self.sampling = sampling self.burnin = burnin self.firstktrees = firstktrees if ftype == "nexus": self.nexus = NexusReader(filename) self.nexus.blocks['trees'].detranslate() self.trees = self.nexus.trees.trees else: self.trees = self.raxmlTreeParser(filename) if self.firstktrees > 0 and self.firstktrees <= len(self.trees): self.trees = self.trees[:self.firstktrees] self.taxa_order = taxa_order if len(self.taxa_order) == 0: self.taxa_order = Tree(self.trees[0]).get_leaf_names() self.numtaxa = len(self.taxa_order) self.numtrees = len(self.trees) self.reroot = reroot def remove_outgroups(self, ognames, remove=False, output=""): """reroot using outgroups and remove them""" self.reroot = False try: if remove: for og in ognames: self.taxa_order.remove(og) self.numtaxa = len(self.taxa_order) for i in range(len(self.trees)): t = Tree(self.trees[i]) if len(ognames) < 2: t.set_outgroup(ognames[0]) if remove: t.prune(self.taxa_order, preserve_branch_length=True) else: ancestor = t.get_common_ancestor(ognames) if not t == ancestor: t.set_outgroup(ancestor) if remove: t.prune(self.taxa_order, preserve_branch_length=True) self.trees[i] = t.write() if remove and output != "": with open(output, "w") as fout: for t in self.trees: fout.write(t + "\n") except ValueError, e: print(e) print("") print("") print("Somthing is wrong with the input outgroup names") print("") print("Quiting .....") sys.exit()