def get_histograms(config_path, info_path, num_samples = 10000, num_div_values = None, div_model_values = None, ordered_div_model_values = None, iteration_index = 99, y_limits = [0.45, 0.45, 0.05, 0.05], xtick_label_size = 8.0): cfg = MsBayesConfig(config_path) dmc = DMCSimulationResults(info_path) npairs = dmc.num_taxon_pairs psi_path = (dmc.get_result_path_prefix(1, 1, 1) + '{0}-psi-results.txt'.format(iteration_index)) sum_path = (dmc.get_result_path_prefix(1, 1, 1) + '{0}-posterior-summary.txt'.format(iteration_index)) psis = get_values_psi_path(psi_path) omega, omega_hpd = get_omega_from_summary_path(sum_path) (num_div_prior_psis, div_model_prior_psis, ordered_div_model_prior_psis) = ( num_div_values, div_model_values, ordered_div_model_values) if ((not num_div_values) or (not div_model_values) or (not ordered_div_model_values)): if cfg.div_model_prior == 'dpp': num_div_prior_psis, div_model_prior_psis, ordered_div_model_prior_psis = get_dpp_prior_values( config_path = config_path, num_samples = num_samples) elif cfg.div_model_prior == 'uniform': num_div_prior_psis, div_model_prior_psis, ordered_div_model_prior_psis = get_uniform_prior_values( npairs = npairs, num_samples = num_samples) elif cfg.div_model_prior == 'psi': num_div_prior_psis, div_model_prior_psis, ordered_div_model_prior_psis = get_psi_uniform_prior_values( npairs = npairs, num_samples = num_samples) # Extra bin for zero values bins = range(0, npairs + 2) hds = [] for p in [psis, num_div_prior_psis, div_model_prior_psis, ordered_div_model_prior_psis]: hds.append(HistData(x = p, normed = True, bins = bins, histtype = 'bar', align = 'mid', orientation = 'vertical', zorder = 0)) tick_labels = [] for x in bins[0:-1]: if x % 2: tick_labels.append(str(x)) else: tick_labels.append('') xticks_obj = Ticks(ticks = bins, labels = tick_labels, horizontalalignment = 'left', size = xtick_label_size) hists = [] for i, hd in enumerate(hds): right_text = '' if i == 0: right_text = r'$D_T = {0:.2f} ({1:.2f}-{2:.2f})$'.format(omega, omega_hpd[0], omega_hpd[1]) hist = ScatterPlot(hist_data_list = [hd], right_text = right_text, xticks_obj = xticks_obj) # cut off extra zero-valued bin hist.set_xlim(left = bins[1], right = bins[-1]) top = y_limits[i] hist.set_ylim(bottom = 0.0, top = top) hist.right_text_size = 10.0 hist.plot_label_size = 12.0 yticks = [i for i in hist.ax.get_yticks()] ytick_labels = [i for i in yticks] if len(ytick_labels) > 5: for i in range(1, len(ytick_labels), 2): ytick_labels[i] = '' yticks_obj = Ticks(ticks = yticks, labels = ytick_labels, size = 10.0) hist.yticks_obj = yticks_obj hists.append(hist) return hists