def combine_max_LLH(self, bestpar, tpartitions, pmap, spe_setting = None, fo = "", plot = True): idxpar = self._convert2idx(bestpar) bestsupport = [0.0] * self.numtaxa for par in idxpar: w = pmap.get(par, 0.0) for idx in par: bestsupport[idx] = float(w)/float(len(tpartitions)) self.meansupport = numpy.mean(bestsupport) spes, support = self._partition2names(bestpar, bestsupport) if spe_setting != None and plot: spe_setting = add_bayesain_support(delimitation = spe_setting, pmap = pmap, taxaorder =self.taxaorder, numpar = len(tpartitions)) spe_setting.root.write(features = ["bs"], outfile = fo + ".ml.tre", format = 0) showTree(delimitation = spe_setting, scale = self.scale, render = True, fout = fo, form = "svg", show_support = True) showTree(delimitation = spe_setting, scale = self.scale, render = True, fout = fo, form = "png", show_support = True) fo_bestpar = open(fo, "w") fo_bestpar.write("# Max likilhood partition \n") for i in range(len(spes)): spe = spes[i] sup = support[i] fo_bestpar.write("Species " + str(i+1) + " (support = " + "{0:.3f}".format(sup) + ")\n") fo_bestpar.write(" " + self._print_list(spe) + "\n") fo_bestpar.close()
def combine_max_LLH(self, bestpar, tpartitions, pmap, spe_setting=None, fo="", plot=True): idxpar = self._convert2idx(bestpar) bestsupport = [0.0] * self.numtaxa for par in idxpar: w = pmap.get(par, 0.0) for idx in par: bestsupport[idx] = float(w) / float(len(tpartitions)) self.meansupport = numpy.mean(bestsupport) spes, support = self._partition2names(bestpar, bestsupport) if spe_setting != None and plot: spe_setting = add_bayesain_support(delimitation=spe_setting, pmap=pmap, taxaorder=self.taxaorder, numpar=len(tpartitions)) spe_setting.root.write(features=["bs"], outfile=fo + ".ml.tre", format=0) showTree(delimitation=spe_setting, scale=self.scale, render=True, fout=fo, form="svg", show_support=True) showTree(delimitation=spe_setting, scale=self.scale, render=True, fout=fo, form="png", show_support=True) fo_bestpar = open(fo, "w") fo_bestpar.write("# Max likilhood partition \n") for i in range(len(spes)): spe = spes[i] sup = support[i] fo_bestpar.write("Species " + str(i + 1) + " (support = " + "{0:.3f}".format(sup) + ")\n") fo_bestpar.write(" " + self._print_list(spe) + "\n") fo_bestpar.close()
def combine_simple_heuristic(self, tpartitions, pmap, idxpars, fo, sp_setting = [], plot = True): maxw = 0 bestpar = None bestsupport = None for i in range(len(tpartitions)): partition = tpartitions[i] pars = idxpars[i] support = [0.0] * self.numtaxa sumw = 0.0 for par in pars: w = pmap.get(par, 0.0) for idx in par: support[idx] = float(w)/float(len(tpartitions)) sumw = sumw + w if sumw > maxw: maxw = sumw bestpar = i bestsupport = support self.meansupport = numpy.mean(bestsupport) spes, support = self._partition2names(tpartitions[bestpar], bestsupport) spe_setting = sp_setting[bestpar] if plot: spe_setting = add_bayesain_support(delimitation = spe_setting, pmap = pmap, taxaorder =self.taxaorder, numpar = len(tpartitions)) spe_setting.root.write(features = ["bs"], outfile = fo + ".sh.tre", format = 0) showTree(delimitation = spe_setting, scale = self.scale, render = True, fout = fo, form = "svg", show_support = True) showTree(delimitation = spe_setting, scale = self.scale, render = True, fout = fo, form = "png", show_support = True) fo_bestpar = open(fo, "w") fo_bestpar.write("# Most supported partition found by simple heuristic search\n") for i in range(len(spes)): spe = spes[i] sup = support[i] fo_bestpar.write("Species " + str(i+1) + " (support = " + "{0:.3f}".format(sup) + ")\n") fo_bestpar.write(" " + self._print_list(spe) + "\n") fo_bestpar.close() return tpartitions[bestpar]
def combine_simple_heuristic(self, tpartitions, pmap, idxpars, fo, sp_setting=[], plot=True): maxw = 0 bestpar = None bestsupport = None for i in range(len(tpartitions)): partition = tpartitions[i] pars = idxpars[i] support = [0.0] * self.numtaxa sumw = 0.0 for par in pars: w = pmap.get(par, 0.0) for idx in par: support[idx] = float(w) / float(len(tpartitions)) sumw = sumw + w if sumw > maxw: maxw = sumw bestpar = i bestsupport = support self.meansupport = numpy.mean(bestsupport) spes, support = self._partition2names(tpartitions[bestpar], bestsupport) spe_setting = sp_setting[bestpar] if plot: spe_setting = add_bayesain_support(delimitation=spe_setting, pmap=pmap, taxaorder=self.taxaorder, numpar=len(tpartitions)) spe_setting.root.write(features=["bs"], outfile=fo + ".sh.tre", format=0) showTree(delimitation=spe_setting, scale=self.scale, render=True, fout=fo, form="svg", show_support=True) showTree(delimitation=spe_setting, scale=self.scale, render=True, fout=fo, form="png", show_support=True) fo_bestpar = open(fo, "w") fo_bestpar.write( "# Most supported partition found by simple heuristic search\n") for i in range(len(spes)): spe = spes[i] sup = support[i] fo_bestpar.write("Species " + str(i + 1) + " (support = " + "{0:.3f}".format(sup) + ")\n") fo_bestpar.write(" " + self._print_list(spe) + "\n") fo_bestpar.close() return tpartitions[bestpar]