Esempio n. 1
0
def create_plots(info_path):
    dmc_sim = DMCSimulationResults(info_path)
    prior_configs = {}
    for k, v in dmc_sim.prior_index_to_config.iteritems():
        prior_configs[k] = MsBayesConfig(v)
    output_dir = os.path.join(os.path.dirname(info_path), 'plots')
    if not os.path.exists(output_dir):
        os.mkdir(output_dir)
    (psi_res, cv_res, prior_index_to_name,
     prior_index_to_model_type) = parse_results(dmc_sim)
    for prior_index, prior_name in prior_index_to_name.iteritems():
        cfg_to_psi = {}
        cfg_to_psi_prob = {}
        cfg_to_cv = {}
        cfg_to_cv_prob = {}
        cfg_to_cv_true_ests = {}
        prefix = prior_name
        for observed_name in psi_res.iterkeys():
            div_model_prior = prior_index_to_model_type[prior_index]
            dpp_concentration_mean = None
            if div_model_prior == 'dpp':
                dpp_concentration_mean = prior_configs[
                    prior_index].dpp_concentration.mean
            psi_results = psi_res[observed_name][prior_index]
            cv_results = cv_res[observed_name][prior_index]
            for cfg, psi in psi_results.iteritems():
                cfg_to_psi[cfg] = psi.mode
                cfg_to_psi_prob[cfg] = psi.prob
            for cfg, cv in cv_results.iteritems():
                cfg_to_cv[cfg] = cv.median
                cfg_to_cv_prob[cfg] = cv.prob
                cfg_to_cv_true_ests[cfg] = {'x': cv.true, 'y': cv.median}

        psi_plot = PowerPlotGrid(observed_config_to_estimates=cfg_to_psi,
                                 variable='psi',
                                 variable_symbol=r'|\mathbf{\tau}|',
                                 num_columns=2,
                                 margin_top=0.975)
        fig = psi_plot.create_grid()
        fig.savefig(os.path.join(output_dir, prefix + '_power_psi_mode.pdf'))

        psi_prob_plot = ProbabilityPowerPlotGrid(
            observed_config_to_estimates=cfg_to_psi_prob,
            variable='psi',
            variable_symbol=r'|\mathbf{\tau}|',
            div_model_prior=div_model_prior,
            dpp_concentration_mean=dpp_concentration_mean,
            bayes_factor=10,
            num_columns=2)
        fig = psi_prob_plot.create_grid()
        fig.savefig(os.path.join(output_dir, prefix + '_power_psi_prob.pdf'))

        cv_accuracy_plot = AccuracyPowerPlotGrid(
            observed_config_to_estimates=cfg_to_cv_true_ests,
            variable_symbol=r'CV_T',
            num_columns=2,
            padding_between_vertical=2.0,
            margin_left=0.04,
            margin_bottom=0.03)
        fig = cv_accuracy_plot.create_grid()
        fig.savefig(
            os.path.join(output_dir, prefix + '_accuracy_cv_median.pdf'))