def get_omega_from_summary_path(summary_path): results = parsing.parse_posterior_summary_file(summary_path) omega = float(results['PRI.omega']['median']) hpd = [float(results['PRI.omega']['HPD_95_interval'][0]), float(results['PRI.omega']['HPD_95_interval'][1])] if hpd[0] < 0.0: hpd[0] = 0.0 return omega, (hpd[0], hpd[1])
def main_cli(): sum_file_pattern = re.compile( r'^d1-m1-s1-(?P<iter_index>\d{1,4})-posterior-summary.txt.gz$') result_dir = os.path.join(project_util.RESULT_DIR, 'sampling-error', 'pymsbayes-results') post_dir = os.path.join(result_dir, 'pymsbayes-output', 'd1', 'm1') post_sum_paths = {} for f in os.listdir(post_dir): m = sum_file_pattern.match(f) if m: post_sum_paths[int(m.group('iter_index'))] = os.path.join(post_dir, f) iter_indices = sorted(post_sum_paths.iterkeys()) nsamples = [] omega_HPD_low = [] omega_HPD_high = [] omega_HPD_low_glm = [] omega_HPD_high_glm = [] for i in iter_indices: nsamples.append((i + 1) * 100000) f, close = process_file_arg(post_sum_paths[i], 'r') post_sum = parse_posterior_summary_file(f) hpd_int = post_sum['PRI.omega']['HPD_95_interval'] omega_HPD_low.append(float(hpd_int[0])) omega_HPD_high.append(float(hpd_int[1])) hpd_int_glm = post_sum['PRI.omega']['HPD_95_interval_glm'] omega_HPD_low_glm.append(float(hpd_int_glm[0])) omega_HPD_high_glm.append(float(hpd_int_glm[1])) f.close() sp_list = [] sd_list = [] sd_list.append(plotting.ScatterData(x = nsamples, y = omega_HPD_low)) sd_list.append(plotting.ScatterData(x = nsamples, y = omega_HPD_high)) sp = plotting.ScatterPlot( scatter_data_list = sd_list, y_label = r'$\Omega$ 95% HPD') sp_list.append(sp) sd_list = [] sd_list.append(plotting.ScatterData(x = nsamples, y = omega_HPD_low_glm)) sd_list.append(plotting.ScatterData(x = nsamples, y = omega_HPD_high_glm)) sp = plotting.ScatterPlot( scatter_data_list = sd_list, y_label = r'$\Omega$ 95% HPD (GLM-adjusted)') sp_list.append(sp) pg = plotting.PlotGrid(subplots = sp_list, num_columns = 1, title = r'Number of prior samples', title_top = False, share_x = True, share_y = False, width = 8.0, height = 10.0, auto_height = False) pg.auto_adjust_margins = False pg.margin_top = 0.99 pg.margin_bottom = 0.01 pg.reset_figure() pg.savefig(os.path.join(result_dir, 'omega_over_sampling.pdf'))