示例#1
0
 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()
示例#2
0
    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
示例#3
0
	def __init__(self, tree, sp_rate = 0, fix_sp_rate = False, max_iters = 20000, min_br = 0.0001):
		self.min_brl = min_br
		self.tree = Tree(tree, format = 1)
		self.tree.resolve_polytomy(recursive=True)
		self.tree.dist = 0.0
		self.fix_spe_rate = fix_sp_rate
		self.fix_spe = sp_rate
		self.max_logl = float("-inf") 
		self.max_setting = None
		self.null_logl = 0.0
		self.null_model()
		self.species_list = None
		self.counter = 0
		self.setting_set = set([])
		self.max_num_search = max_iters
示例#4
0
 def __init__(self,
              tree,
              start_config=None,
              reroot=False,
              startmethod="H0",
              min_br=0.0001,
              seed=1234,
              thinning=100,
              sampling=10000,
              burning=0.1,
              taxa_order=[]):
     if start_config == None:
         me = exponential_mixture(tree=tree)
         me.search(strategy=startmethod, reroot=reroot)
         me.count_species(print_log=False, pv=0.0)
         self.tree = me.tree
         self.current_setting = me.max_setting
     else:
         self.current_setting = start_config
         self.tree = Tree(tree, format=1)
     self.burning = burning
     self.last_setting = self.current_setting
     self.current_logl = self.current_setting.get_log_l()
     self.last_logl = self.last_setting.get_log_l()
     self.min_br = min_br
     self.rand_nr = random.Random()
     self.rand_nr.seed(seed)
     self.thinning = thinning
     self.sampling = sampling
     if taxa_order == []:
         self.taxaorder = self.tree.get_leaf_names()
     else:
         self.taxaorder = taxa_order
     self.numtaxa = len(self.taxaorder)
     self.partitions = []
     self.llhs = []
     self.nsplit = 0
     self.nmerge = 0
     """remember the ML partition"""
     self.maxllh = self.current_logl
     to, spe = self.current_setting.output_species(
         taxa_order=self.taxaorder)
     self.maxpar = spe
     self.max_setting = self.current_setting
     """record all delimitation settings for plotting, this could consume a lot of MEM"""
     self.settings = []
示例#5
0
    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