示例#1
0
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()
示例#2
0
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()
示例#3
0
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()
示例#4
0
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()