Exemplo n.º 1
0
def plot_1pt_distributions(param_file):
    param = dtk.Param(param_file)
    cluster_hfname = param.get_string("cluster_loc")
    zmr_hfname = param.get_string("zmrh5_loc")

    core_hfile = h5py.File(cluster_hfname, 'r')
    zmr_hfile = h5py.File(zmr_hfname, 'r')
    plot_cluster_mass(
        core_hfile,
        '/data/a/cpac/dkorytov/data/Ngal_sdss/data/normal_wmap7/query_results/query_results.hdf5'
    )
    plot_cluster_redshift(
        0.24,
        '/data/a/cpac/dkorytov/data/Ngal_sdss/data/normal_wmap7/query_results/query_results.hdf5'
    )
    plot_cluster_cores2(core_hfile, [
        10,
        10.5,
        11,
        11.5,
        12,
        12.5,
        13.0,
        13.5,
    ])
    dtk.save_figs("figs/" + param_file + "/" + __file__ + "/")
    plt.show()
Exemplo n.º 2
0
def plot_multiple_model_profiles(param_base, fig_dir):
    mstars = ['-1', '-0.5', '0', '0.5', '1']
    for mstar in mstars:
        plot_profiles_mstar(param_base, mstar)
        dtk.save_figs(fig_dir+"/mstar"+mstar+"/", extension=".pdf", reset_count=True)
        dtk.save_figs(fig_dir+"/mstar"+mstar+"/", extension=".png")
        plt.show()
        plt.close('all')
Exemplo n.º 3
0
def plot_saved_clusters(param_filename):
    global n2merger
    param = dtk.Param(param_filename)
    cluster_loc = param.get_string("cluster_loc")
    cluster_data = ClusterData()
    # n2lib_loc = "lib/libn2merg.so"
    # n2merger = N2Merger(n2lib_loc)
    # core_loc = param.get_string('core_loc').replace("${step}", str(401)).replace("_500L", "")
    fit_mi, fit_rd = get_fit_param(param_filename)
    # fit_mi, fit_rd = 1e12, 1e3
    print("Infall mass: {:.2e}\nR disrupt: {:.4f}".format(fit_mi, fit_rd))
    # test_core_catalog(core_loc, 1)

    cluster_data.load_file(cluster_loc)
    for i in range(int(cluster_data.num)):
        if cluster_data.mass[i] > 1e14:
            # cluster_data.plot_fit_cluster(i, 12.2, 0.02)
            # cluster_data.plot_cluster(i)
            cluster_data.plot_fit_cluster(i, fit_mi, fit_rd)
            dtk.save_figs("figs/" + __file__ + "/" + param_filename + "/",
                          extension=".png")
            plt.show()
            plt.close('all')
Exemplo n.º 4
0
def plot_zmr(param_fname):
    zmr = load_zmr(param_fname)
    mass_bins = zmr['m_bins'].value
    r_bins = zmr['r_bins'].value
    r_bins_center = dtk.bins_avg(r_bins)
    plt.figure()
    colors = ['b', 'g', 'r', 'c', 'm']
    for i in range(0, len(mass_bins) - 1):
        if zmr['zm_counts'][0][i] > 2:
            rad_profile = zmr['zmr_gal_density'].value[0, i]
            rad_profile_err = zmr['zmr_gal_density_err'].value[0, i]
            label = "--"  #"{:.2f} < log$_{{10}}$ M$_{{200c}}$ < {:.2f}".format(np.log(mass_bins[i]), np.log(mass_bins[i+1]))
            label = "{:.2f} $<$ log$_{{10}}$ M$_{{200c}}$ $<$ {:.2f}".format(
                np.log10(mass_bins[i]), np.log10(mass_bins[i + 1]))
            plt.errorbar(r_bins_center,
                         rad_profile,
                         yerr=rad_profile_err,
                         fmt='-o',
                         markeredgecolor='none',
                         label=label,
                         markerfacecolor=colors[i],
                         color=colors[i],
                         capsize=0)
            yerr_min = np.clip(rad_profile - rad_profile_err,
                               a_max=np.inf,
                               a_min=1e-3)
            plt.fill_between(r_bins_center,
                             rad_profile + rad_profile_err,
                             yerr_min,
                             color=colors[i],
                             alpha=0.3)
    plt.legend(loc='best', framealpha=0.0)
    plt.yscale('log')
    plt.xlabel('r/R$_{200c}$')
    plt.ylabel('$\Sigma_{galaxy} [(R_{200c})^{-2}$]')
    dtk.save_figs("figs/" + param_fname + "/" + __file__ + "/")
Exemplo n.º 5
0
            fit_rm_bins[fit_rm_bds_lwr], fit_rm_bins[fit_rm_bds_upr]))
        param_num += 1
    txt_file.write("cost\t{}\n".format(np.min(result2)))
    dof = (
        5 *
        15) - param_num  #Five mass bins w/ halos. Each halo has 15 radial bins
    txt_file.write("X_red\t{}\n".format(np.min(result2) / dof))


def write_fit_param(param_file):
    fname = "output/" + param_file + "/fit_core_params.hdf5"
    print(fname)
    grad_descent_hfile = h5py.File(fname, 'r')
    fname = "figs/" + param_file + "/" + __file__ + "/fit_param.txt"
    dtk.ensure_dir(fname)
    txt_file = file(fname, 'w')
    for key in grad_descent_hfile.keys():
        txt_file.write(key + "\t" + str(grad_descent_hfile[key][()][0]) + "\n")
    grad_descent_hfile.close()
    txt_file.close()


if __name__ == "__main__":
    param_file_name = sys.argv[1]
    # write_fit_param(param_file_name)
    calc_likelihood_bounds(sys.argv[1])
    dtk.save_figs('figs/' + param_file_name + '/' + __file__ + '/')
    dtk.save_figs('figs/' + param_file_name + '/' + __file__ + '/',
                  extension='.pdf')
    plt.show()
        yerrtop = err 
        yerrbot = y-(np.maximum(y-err,ymin))
        ax.errorbar(r_bins_avg,y,yerr = [yerrbot,yerrtop],fmt='-ok',mfc='none',mec='k')

        if(unity):
            norm = 1.0/np.sum(H5[i,:]/hm_counts[i])
        y = H5[i,:]/r_bins_volume/hm_counts[i]*norm
        err  = np.sqrt(H5[i,:])/r_bins_volume/hm_counts[i]*norm
        yerrtop = err 
        yerrbot = y-(np.maximum(y-err,ymin))
        ax.errorbar(r_bins_avg,y,yerr = [yerrbot,yerrtop],fmt='-sc',mfc='none',mec='c')

        if(unity):
            norm = 1.0/np.sum(H6[i,:]/hm_counts[i])
        y = H6[i,:]/r_bins_volume/hm_counts[i]*norm
        err  = np.sqrt(H6[i,:])/r_bins_volume/hm_counts[i]*norm
        yerrtop = err 
        yerrbot = y-(np.maximum(y-err,ymin))
        ax.errorbar(r_bins_avg,y,yerr = [yerrbot,yerrtop],fmt='-sm',mfc='none',mec='m')

    if(i==len(mass_bins_avg)-1):
        ax.errorbar([],[],yerr=[],fmt='-ok',mfc='none',mec='k',label='all')
        ax.errorbar([],[],yerr=[],fmt='-or',mfc='none',mec='r',label='core pos')
        ax.errorbar([],[],yerr=[],fmt='-ob',mfc='none',mec='b',label='infall prtcl')
        ax.errorbar([],[],yerr=[],fmt='-og',mfc='none',mec='g',label='rnd host prtcl')
        ax.errorbar([],[],yerr=[],fmt='-sc',mfc='none',mec='c',label='NFW profile')
        ax.errorbar([],[],yerr=[],fmt='-sm',mfc='none',mec='m',label='Centrals')
        ax.legend(loc='best',framealpha=0.5)
dtk.save_figs(path='figs/'+param.file+"/gal_rad_prof/",extension=".png")
plt.show()
Exemplo n.º 7
0
    figure = corner.corner(
        data,
        labels=[r'M$_{infall}$', r'R$_{disrupt}$', r'R$_{merger}$'],
        quantiles=[0.016, 0.5, 0.84],
        title_fmt='.3f',
        show_titles=True)

if (not param.get_bool("fit_r_merger") and not param.get_bool("fit_r_fof")):
    data = np.column_stack(
        (np.log10(mcmc_m_i[slct_half]), mcmc_r_d[slct_half]))
    figure = corner.corner(data,
                           labels=[r'M$_{infall}$', r'R$_{disrupt}$'],
                           quantiles=[0.016, 0.5, 0.84],
                           title_fmt='.3f',
                           show_titles=True)

plt.figure()
max_id = np.max(mcmc_id)
for i in range(0, max_id + 1):
    slct = mcmc_id == i
    plt.plot(mcmc_step[slct], mcmc_val[slct], '-', alpha=0.3)

plt.ylabel('-Log Likelihood')
plt.xlabel('step number')
plt.yscale('log')
print __file__
dtk.save_figs("figs/" + param.file_name + "/" + __file__ + "/",
              extension='.png')

plt.show()
Exemplo n.º 8
0
plt.grid()

sod_mean, _, _ = stats.binned_statistic(halo_cat[step1]['fof_halo_mass'],
                                        sod_cnt,
                                        statistic='mean',
                                        bins=mass_bins)
sod_var, _, _ = stats.binned_statistic(halo_cat[step1]['fof_halo_mass'],
                                       sod_cnt,
                                       statistic=np.std,
                                       bins=mass_bins)
sod_cnt, _, _ = stats.binned_statistic(halo_cat[step1]['sod_halo_mass'],
                                       sod_cnt,
                                       statistic='count',
                                       bins=mass_bins)
plt.figure()
plt.plot(mass_bins_avg, sod_mean)
plt.fill_between(mass_bins_avg,
                 sod_mean - sod_var,
                 sod_mean + sod_var,
                 alpha=0.5)
plt.xscale('log')
plt.yscale('log')
plt.title('SOD HOD')
plt.xlabel('SOD halo mass [Msun/h]')
plt.ylabel('Core count')
plt.grid()

dtk.save_figs("figs/" + param.file + "/plot_hod.py/")

plt.show()
    plot_survival_ratio([centers_or, survival_or, survival_err_or], 
                        [centers_qc, survival_qc, survival_err_qc])
   
if __name__ == "__main__": 
    # mstars = [-1, 0, 0.5, 1]
    # plot_luminosity_dependence("params/cfn/simet/mstar@val@/mean/a2_mi.param", mstars, ['mi', 'rd', 'rm', 'x2'])
    # plot_luminosity_dependence("params/cfn/simet/mstar@val@/mean/a_rd.param", mstars, ['mi', 'rd', 'x2'])
    # plot_luminosity_dependence("params/cfn/simet/mstar@val@/mean/a_rm.param", mstars, ['mi', 'rm', 'x2'])
    # plot_luminosity_dependence("params/cfn/simet/mstar@val@/mean/a_rd_rm.param", mstars, ['mi', 'rd', 'rm', 'x2'])
    # plot_luminosity_dependence_parameters_all()
    # plot_luminosity_dependence_survival()
    # Useless function calls
    # plot_luminosity_dependent_ngal_all("params/cfn/simet/mstar0/mean/a3_rd.param")
    # plot_luminosity_dependent_ngal_all("params/cfn/simet/mstar0/mean/qc_rd.param")
    if len(sys.argv)<2:
        raise KeyError('No argument given')
        exit()
    plot_name = sys.argv[1]
    if plot_name == 'OR_Simet':
        plot_luminosity_dependence_parameters_OR_Simet()
    elif plot_name == 'OR_McClintock':
        plot_luminosity_dependence_parameters_OR_McClintock()
    elif plot_name == "LJ_McClintock":
        plot_luminosity_dependence_parameters_LJ_McClintock()
    else:
        raise KeyError("\"{}\" is not a plotting option".format(plot_name))
    dtk.save_figs("figs/"+__file__+"/"+plot_name+'/', extension=".pdf")
    dtk.save_figs("figs/"+__file__+"/"+plot_name+'/', extension=".png")
    plt.show()
Exemplo n.º 10
0
def plot_core_trajectory(core_fname_pattern, steps):
    cat = get_full_core_catalog(core_fname_pattern, steps)

    slct = cat['step']==steps[0]
    print('select size: ', slct.size/ np.sum(slct))

    # sort ids by infall tree node mass
    core_masses = cat['infall_tree_node_mass'][slct]
    srt = np.argsort(core_masses)[::-1]
    srt = np.argsort(srt)
    core_tags = cat['core_tag'][slct][srt]
    core_masses = core_masses[srt]

    for core_tag, core_mass in zip(core_tags, core_masses):
        slct = cat['core_tag']==core_tag
        srt = np.argsort(cat['step'][slct])
        x = cat['x'][slct][srt]
        y = cat['y'][slct][srt]
        z = cat['z'][slct][srt]
        vx = cat['vx'][slct][srt]
        vy = cat['vy'][slct][srt]
        vz = cat['vz'][slct][srt]
        step = cat['step'][slct][srt]
        radius = cat['radius'][slct][srt]
        mass = cat['infall_tree_node_mass'][slct][srt]
        central = cat['central'][slct][srt] == 1
        print(list(zip(x,y)))
        print(cat['step'][slct][srt])
        step_mid = dtk.bins_avg(step)
        central_step = np.diff(central)
        
        fig, axs = plt.subplots(2, 3, figsize=(15, 8))
        fig.suptitle('TreeNodeMass={:.2e}\nCore Tag:{}'.format(core_mass, core_tag))
        axs[0][0].plot(x-x[-1], y-y[-1], '-o', mfc='none', label='Path')
        axs[0][0].plot(x[-1]-x[-1], y[-1]-y[-1], 'o', ms=20, mfc='none', label='Last Pos', color='tab:orange')
        axs[0][0].plot(x[central]-x[-1], y[central]-y[-1], 'o', label='Central', color='tab:blue')

        axs[0][0].legend(framealpha=0.0)
        axs[0][0].axis('equal')
        axs[0][0].set_xlabel('x')
        axs[0][0].set_ylabel('y')
        
        axs[0][1].plot(z-z[-1], y-y[-1], '-o', mfc='none', label='Path')
        axs[0][1].plot(z[-1]-z[-1], y[-1]-y[-1], 'o', ms=20, mfc='none', label='Last Pos')
        axs[0][1].plot(z[central]-z[-1], y[central]-y[-1], 'o', label='Central', color='tab:blue')
        axs[0][1].axis('equal')
        axs[0][1].set_xlabel('z')
        axs[0][1].set_ylabel('y')
        axs[0][1].set_ylim(axs[0][0].get_ylim())

        dx = np.diff(x)
        dy = np.diff(y)
        dz = np.diff(z)
        dr = np.sqrt(dx*dx + dy*dy + dz*dz)

        axs[0][2].plot(step_mid, dr, '-o')
        axs[0][2].fill_between(step_mid, 0, dr, alpha=0.3)
        axs[0][2].set_xlabel('Mid Step')
        axs[0][2].set_ylabel('displace per snapshot [Mpc/h]')

        dv = np.sqrt(vx*vx + vy*vy + vz*vz)[1:]
        # dx = vx[1:]
        # dy = vy[1:]
        # dz = vz[1:]
        theta = np.arccos((vx[1:]*dx + vy[1:]*dy + vz[1:]*dz)/(dv*dr))
        theta = theta*180.0/np.pi
        
        # theta = (dx*dx + dy*dy + dz*dz)/(dr*dr)
        # theta = np.arccos
        axs[1][2].plot(step_mid, theta, '-o')
        axs[1][2].fill_between(step_mid, 0, theta, alpha=0.3)
        axs[1][2].set_xlabel('Mid Step')
        axs[1][2].set_ylabel('Angle between displ. and vel. [deg.]')

        axs[1][0].plot(step, mass, '-o', mfc='none')
        axs[1][0].fill_between(step, np.min(mass), mass, alpha=0.3)
        axs[1][0].plot(step[-1], mass[-1], 'o', ms=20, mfc='none')
        axs[1][0].plot(step[central], mass[central], 'o', color='tab:blue')
        axs[1][0].set_xlabel('Step')
        axs[1][0].set_ylabel('Infall Mass [Msun/h]')
        axs[1][0].set_yscale('log')

        axs[1][1].plot(step, radius*1000.0, '-o', mfc='none')
        axs[1][1].fill_between(step, 0, radius*1000.0, alpha=0.3)
        axs[1][1].plot(step[-1], radius[-1]*1000.0, 'o', ms=20, mfc='none')
        axs[1][1].plot(step[central], radius[central]*1000.0, 'o', color='tab:blue')
        axs[1][1].set_xlabel('Step')
        axs[1][1].set_ylabel('Core Radius [Kpc/h]')
        axs[1][1].set_ylim([0, 200])
        # axs[1][1].set_yscale('log')
        plt.tight_layout(rect=[0, 0.03, 1, 0.95])
        # plt.show()
        dtk.save_figs('figs/'+__file__+'/individual_cores_random_rev4070_v2/')
        plt.close()
                    label='all')
        ax.errorbar([], [],
                    yerr=[],
                    fmt='-or',
                    mfc='none',
                    mec='r',
                    label='core pos')
        ax.errorbar([], [],
                    yerr=[],
                    fmt='-ob',
                    mfc='none',
                    mec='b',
                    label='infall prtcl')
        ax.errorbar([], [],
                    yerr=[],
                    fmt='-og',
                    mfc='none',
                    mec='g',
                    label='rnd host prtcl')
        ax.errorbar([], [],
                    yerr=[],
                    fmt='-oc',
                    mfc='none',
                    mec='c',
                    label='nfw profile')
        plt.legend(loc='best', framealpha=0.5)

dtk.save_figs(path='figs/' + param.file + '/gal_lum_func/', extension='.png')

plt.show()
Exemplo n.º 12
0
plt.xscale('log')
#plt.colorbar()

plt.figure()
plt.title("Sum of cost")
plt.pcolor(X,
           Y, (cost_mat_gal_den.T + cost_mat_Ngal.T) / 2.0,
           norm=LogNorm(),
           vmax=min(1e2, np.max(cost_mat_gal_den)))
plt.xlabel('disruption length')
plt.ylabel('merger length')
plt.yscale('log')
plt.xscale('log')
#plt.colorbar()

dtk.save_figs("figs/" + param.file + "/")
plt.show()

exit()
plt.figure()
for i in range(0, 7):  #z_size):
    plt.plot(m_avg,
             core_zmr['zm_Ngal'][i, :],
             '-x',
             label='z:%.2f' % (z_avg[i]))
    plt.plot(m_avg, zmr_sdss['Ngal'][i, :], "-s", label='z:%.2f' % (z_avg[i]))
plt.title("Ngal")
plt.legend()
plt.yscale('log')
plt.xscale('log')
Exemplo n.º 13
0
            err = zmr_err_sdss**2 + zmr_err_core**2
            res = diff / err
            total = np.sum(res)
            total_sum += np.sum(res)
            plt.plot(r_avg,
                     res,
                     'o-',
                     color=c,
                     label='%.2e$<$M200$<$%.2e:%f' %
                     (zmr_cores2.m_bins[mi], zmr_cores2.m_bins[mi + 1], total))
            if (c_i == 9):
                for i in range(0, 10):
                    print("diff:")
                    print(zmr_gd_sdss[i], "-", zmr_gd_core[i], "=",
                          zmr_gd_sdss[i] - zmr_gd_core[i])
                    print("->", diff[i])
                    print("err:")
                    print(zmr_err_sdss[i], "+", zmr_err_core[i], "=", err[i])
                    print("res:")
                    print(res[i])
    plt.title("Source of Error [%f]" % total_sum)
    plt.grid()
    plt.legend(loc='best', framealpha=0.5)
    plt.xlabel(r'$R/R_{200}$')
    plt.ylabel(r'\text{Error}')
    plt.yscale('log')
#dtk.set_fig_path("figs/zmrs/")
dtk.save_figs("figs/" + param_file1 + "/" + __file__ + "/" + param_file2 + "/",
              extension=".png")
plt.show()
def plot_saved_clusters(param_fname):
    param = dtk.Param(param_fname)
    query_data_file = param.get_string(
        'query_data_folder') + 'query_results.hdf5'
    mstar_offset = param.get_int('mstar_cut_offset')

    query_results = param.get_string("query_data_folder")
    query_cluster_all = param.get_bool('query_cluster_all')
    query_cluster_num = param.get_int('query_cluster_num')
    query_type = param.get_string('query_type')

    cosmology_name = param.get_string("cosmology_name")
    galaxy_type = param.get_int("galaxy_type")
    galaxy_weight = param.get_int("galaxy_weight")
    galaxy_color_type = param.get_int("galaxy_color_type")
    galaxy_mag_type = param.get_int("galaxy_mag_type")
    galaxy_color_lim = param.get_float_list("galaxy_color_lim%d" %
                                            galaxy_color_type)
    galaxy_mag_lim = param.get_float_list("galaxy_mag_lim%d" % galaxy_mag_type)

    background_folder = param.get_string("background_folder")
    background_force = param.get_bool("background_force")
    background_all = param.get_bool("background_all")
    background_num = param.get_int("background_num")
    # z bins for background estimate
    background_z_start = param.get_float('background_z_start')
    background_z_end = param.get_float('background_z_end')
    background_z_num = param.get_float('background_z_num')

    # external data such as spt
    spt_plot = param.get_bool("spt_plot")
    spt_file = param.get_string("spt_file")

    #params for the final cluster bining
    z_bins_num = param.get_int("z_bins")
    z_bins_start = param.get_float("z_bins_start")
    z_bins_end = param.get_float("z_bins_end")

    mass_bins_num = param.get_int("mass_bins")
    mass_bins_start = param.get_float("mass_bins_start")
    mass_bins_end = param.get_float("mass_bins_end")

    radial_r200_rescale = param.get_bool('radial_r200_rescale')
    radial_bin_num = param.get_int('radial_bin_num')
    radial_bin_kpc_min = param.get_float('radial_bin_kpc_min')
    radial_bin_kpc_max = param.get_float('radial_bin_kpc_max')
    radial_bin_r200_min = param.get_float('radial_bin_r200_min')
    radial_bin_r200_max = param.get_float('radial_bin_r200_max')

    RS_line_plot = param.get_bool('RS_line_plot')

    #params for saving the resulting profiles

    result_folder = param.get_string("result_folder")

    if ('mstar_cut_offset' in param.data.keys()):
        mstar_cut_offset = param.get_float('mstar_cut_offset')
    else:
        mstar_cut_offset = 1.0

    if 'background_r200_factor' in param:
        background_r200_factor = param.get_float('background_r200_factor')
    else:
        background_r200_factor = 1.0

    if 'richness_mass_author' in param:
        richness_mass_author = param.get_string("richness_mass_author")
    else:
        richness_mass_author = None

    if 'convert_m200m_to_m200c' in param:
        convert_m200m_to_m200c = param.get_bool('convert_m200m_to_m200c')
    else:
        convert_m200m_to_m200c = False
    if 'convert_m200c_to_m200m' in param:
        convert_m200c_to_m200m = param.get_bool('convert_m200c_to_m200m')
    else:
        convert_m200c_to_m200m = False
    #######################
    ## Processing Params ##
    #######################

    background_z_bins = np.linspace(background_z_start, background_z_end,
                                    int(background_z_num))

    if (galaxy_type == 1):
        galaxy_type_name = "all"
    elif (galaxy_type == 2):
        galaxy_type_name = "red"
    elif (galaxy_type == 3):
        galaxy_type_name = "non-red"
    else:
        print("unknwon galaxy type")
        raise
    if (galaxy_weight == 1):
        galaxy_weight_name = "normal"
    elif (galaxy_weight == 2):
        galaxy_weight_name = "red squence"
    elif (galaxy_weight == 3):
        galaxy_weight_name = 'red squence rykoff'
    else:
        print("unknown galaxy weight")
        raise

    if (galaxy_color_type == 1):
        galaxy_color_name = 'g-r'
    elif (galaxy_color_type == 2):
        galaxy_color_name = 'g-r - RS(z)'
    if (galaxy_mag_type == 1):
        galaxy_mag_name = 'i'
    elif (galaxy_mag_type == 2):
        galaxy_mag_name = 'i-m*(z)'

    background.set_gal_clr_type(galaxy_color_type, galaxy_color_lim)
    background.set_gal_mag_type(galaxy_mag_type, galaxy_mag_lim)
    background.set_gal_type_weight(galaxy_type, galaxy_weight)
    background.set_cosmology(cosmology_name)
    background.set_mstar_cut(mstar_cut_offset)

    background.set_mstar_cut(param.get_float('mstar_cut_offset'))
    [dataclstr, datagal, data_pass_mask, clstr_num] = background.get_clstr(
        query_type,
        query_results,
        100,
        till_end=False,

        # query_cluster_num,
        # till_end=query_cluster_all,
        richness_mass_author=richness_mass_author,
        convert_m200c_to_m200m=convert_m200c_to_m200m,
        convert_m200m_to_m200c=convert_m200m_to_m200c)

    for i in range(0, 400):
        print(list(dataclstr[i].keys()))
        print(list(datagal[i].keys()))
        gal_prop = dataclstr[i]
        gal = datagal[i]
        rad = float(gal_prop['r200_arcmin']) / 60
        dec = float(gal_prop['dec'])
        ra = float(gal_prop['ra'])
        mass = float(gal_prop['m200'])
        z = float(gal_prop['z'])
        if dec > 10 or mass < 2e14 or z > 0.35:
            continue
        plt.figure()
        print(ra, dec, rad)
        # c1 = plt.Circle((ra, dec), rad, fill=True, color='r', lw=2)
        e_r200 = matplotlib.patches.Ellipse((ra, dec),
                                            rad / np.cos(dec / 360) * 2.0,
                                            rad * 2.0,
                                            fill=False,
                                            color='k',
                                            lw=2)
        plt.gca().add_artist(e_r200)
        # plotting radial bins
        for j in range(0, 16):
            rad_bin = float(j) / 16 * rad
            e_bin = matplotlib.patches.Ellipse(
                (ra, dec),
                rad_bin / np.cos(dec / 360) * 2.0,
                rad_bin * 2.0,
                fill=False,
                color='k',
                lw=1,
                ls='--')
            plt.gca().add_artist(e_bin)

        plt.ylabel('Dec [deg]')
        plt.xlabel('Ra [deg]')
        plt.plot([], [], 'k', lw=2, label='$R_{200c}$')
        plt.plot([], [], 'k', ls='--', label='radial bins')

        ## Galaxies
        #          bright               saturated             satur_center         nopetro             deblended_as_moving
        cut_flgs = 0x0000000000000002 | 0x0000000000040000 | 0x0000080000000000 | 0x0000000000000100 | 0x0000000100000000
        flgs = gal['flags_i'] | gal['flags_r'] | gal['flags_g']
        slct1 = gal['type'] != 31
        slct2 = np.logical_not(flgs & cut_flgs)
        slct3 = gal['m_i'] < background.m_cut(z)
        slct = slct1 & slct2 & slct3

        plt.plot(gal['ra'][slct],
                 gal['dec'][slct],
                 '.',
                 alpha=0.6,
                 label='galaxies')
        plt.text(
            0.05,
            0.05,
            'M$_{{200c}}$=\n{:2.2e}[$h^{{-1}}$M$_{{\odot}}$]'.format(mass),
            transform=plt.gca().transAxes,
            verticalalignment='bottom',
            horizontalalignment='left')
        plt.text(0.95,
                 0.05,
                 'z={:.2f}'.format(z),
                 transform=plt.gca().transAxes,
                 verticalalignment='bottom',
                 horizontalalignment='right')

        plt.legend(framealpha=0.0, labelspacing=0)
        plt.axis('equal')
        pyplot_zoom_out(top=0.2, right=-0.5, left=0.3)
        plt.tight_layout()
        dtk.save_figs('figs/' + __file__ + '/', '.pdf')
        plt.close('all')
Exemplo n.º 15
0
    num = float(np.sum(slct))
    tot = float(np.sum(slct_m & slct_minfall))
    H,_ = np.histogram(core_radial[slct],bins=radial_bins,normed=True)
    if(np.sum(H) > 0):
        plt.plot(radial_bins_avg,H/radial_bins_area,label=r'R$_disrupt$=%.3f fract[%.2f]'%(r_disrupt_cuts[i],num/tot))
plt.title("%.1e $<$ Mfof $<$ %.1e\nM$_{infall}$=%.1e"%(min_mass,max_mass,m_infall_cut))
plt.legend(loc='best')
plt.yscale('log')
plt.xlabel('r/r200')
plt.ylabel('normalized core surface density')

plt.figure()
r_disrupt_cut = 0.02
slct_r = core_r < r_disrupt_cut
tot = float(np.sum(slct_r))
for i in range(0,len(m_infall_cuts)):
    slct_m = core_m < m_infall_cuts[i]
    slct = slct_r & slct_m
    num = float(np.sum(slct))
    H,_ = np.histogram(core_radial[slct],bins=radial_bins,normed=True)
    if(np.sum(H)>0):
        plt.plot(radial_bins_avg,H/radial_bins_area,label='M$_{infall}$=%.e fract[%.2f]'%(m_infall_cuts[i],num/tot))
# plt.title("%.1e $<$ Mfof $<$ %.1e\nR_disrupt=%.3f"%(min_mass,max_mass,r_disrupt_cut))
plt.yscale('log')
plt.legend(loc='best', framealpha=0.0)
plt.xlabel('r/r200')
plt.ylabel('normalized core surface density')

dtk.save_figs(path='figs/radial_core_prop/',extension='.png')
plt.show()
Exemplo n.º 16
0
                s=gal_w[slct_gal] * 20,
                label='compact cores[%d/%d/%d]' %
                (np.sum(slct_gal), np.sum(gal_w[slct_gal]), core_x.size))
    plt.scatter(gal_x[slct_bcg],
                gal_y[slct_bcg],
                marker='o',
                color=m_alpha,
                s=30,
                label='disrupted fof groups[%d]' % np.sum(slct_bcg))
    plt.plot(halo_x,
             halo_y,
             's',
             label='halo center',
             mec='c',
             mfc='none',
             mew=1.5)
    plt.plot([], [], 'k', label='SOD radius' % halo_r)
    plt.xlabel('x [h^-1 Mpc]')
    plt.ylabel('y [h^-1 Mpc]')
    plt.axis('equal')
    plt.grid()

    if (np.sum(slct_gal) + np.sum(slct_bcg) > 0):
        plt.legend(loc='best', framealpha=.5)
    plt.tight_layout()
    #plt.show()
    dtk.save_figs(extension='.png')
    plt.close()
    print i
    i += 1
Exemplo n.º 17
0
        plt.pcolor(mag_bins,clr_bins,H_radial_sum.T,cmap=plt.cm.BuPu,norm=LogNorm())
        if(np.max(H_radial_sum) != np.min(H_radial_sum)):
            plt.colorbar()
        plt.title("radial sum: %e"%np.sum(H_radial_sum))
        plt.subplot(1,4,2)
        plt.pcolor(mag_bins,clr_bins,h_all.T,cmap=plt.cm.BuPu,norm=LogNorm())
        if(np.max(h_all) != np.min(h_all)):
            plt.colorbar()
        plt.title("normal sum: %e"%np.sum(h_all))
        plt.subplot(1,4,3)
        h_diff = h_all - H_radial_sum
        print(np.nanmean(h_all/H_radial_sum), 1.0/ np.nanmean(h_all/H_radial_sum))
        plt.pcolor(mag_bins,clr_bins,h_diff.T,cmap=plt.cm.RdBu)
        plt.title("diff sum: %e"%np.sum(h_diff))
        plt.subplot(1,4,4)
        plt.pcolor(mag_bins,clr_bins,H_bkgnd_sqkpc([z_bins[i+1]]).T,cmap=plt.cm.BuPu,norm=LogNorm())
        plt.colorbar()
        plt.title("bkgnd sum: %e"%np.sum(H_bkgnd_sqkpc([z_bins[i+1]])))
        plt.tight_layout()






dtk.save_figs("figs/"+param.file+"/rad_profile/")
plt.show()


radial_profile = load_radial_profile(result_folder,galaxy_type,galaxy_weight)
Exemplo n.º 18
0
    plt.xlabel('Clustering Miscentering Distance\n[h$^{-1}$ Mpc Comoving]')
    plt.legend(framealpha=0.0)
    # plt.yscale('log')
    plt.tight_layout()

    num_clusters = len(cat['z_lambda'])
    avg_displaced = np.sum((probs*d_kpcs))/num_clusters
    print("Average Miscentering: {:2f} [comoving kpc/h]".format(avg_displaced))
    print("Average Distance when Miscentered: {:.2f} [comoving kpc/h]".format(np.average(non_center_avg_prob)))
    print("Miscentering Prob: {:.2f}".format(np.average(correct_prop)))

def test_saved_data(fname='data/Pr_center/distribution1.hdf5'):
    hfile = h5py.File(fname,'r')
    data = hfile['radii'][:]
    plt.figure()
    plt.hist(data/1000, bins=100, histtype='step')
    plt.ylabel('Counts')
    plt.xlabel('Distance [Mpc Physical]')
    plt.yscale('log')

    
if __name__ == "__main__":
    # fname = 'redmapper_dr8_public_v6.3_members.fits.gz'
    # calculate_Pr_center(fname)
    fname = 'redmapper_dr8_public_v6.3_catalog.fits.gz'
    calculate_Pr_center2(fname)
    test_saved_data()
    dtk.save_figs('figs/'+__file__+'/', '.pdf')
    dtk.save_figs('figs/'+__file__+'/', '.png')
    plt.show()
Exemplo n.º 19
0
def plot_exclude_central_region():
    excludes = [0, 1, 2, 3, 4, 5]
    labels = np.array(excludes, dtype=np.float)/15.0
    param_file_base = "figs/params/cfn/simet/mstar0/mean/a_#model#_cen#exclude#.param/calc_likelihood_bounds.py/grid_fit_param.txt"
    # param_files_mi = [param_file_base.replace("#model#", "mi").replace("#exclude#", str(exclude)) for exclude in excludes]
    param_files_rd = [param_file_base.replace("#model#", "rd").replace("#exclude#", str(exclude)) for exclude in excludes]
    param_files_rm = [param_file_base.replace("#model#", "rm").replace("#exclude#", str(exclude)) for exclude in excludes]
    param_files_rd_rm = [param_file_base.replace("#model#", "rd_rm").replace("#exclude#", str(exclude)) for exclude in excludes]
    # plot_radii_effects(param_files_mi, labels, ['mi', 'x2'])
    plot_radii_effects(param_files_rd, labels, ['mi', 'rd', 'x2'], xlabel='Central Exclusion Radius/R$_{200m}$', plot_reference=0)
    plot_radii_effects(param_files_rm, labels, ['mi', 'rm', 'x2'], xlabel='Central Exclusion Radius/R$_{200m}$', plot_reference=0)
    plot_radii_effects(param_files_rd_rm, labels, ['mi', 'rd', 'rm', 'x2'], xlabel='Central Exclusion Radius/R$_{200m}$', plot_reference=0)


if __name__ == "__main__":
    # default plot
    if len(sys.argv) != 2:
        plot_name = "radial_volume"
    else:
        plot_name = sys.argv[1]

    #  different plots
    if plot_name == "radial_volume":
        plot_cluster_radial_volume();
    elif plot_name == "exclude_volume":
        plot_exclude_central_region()
    else:
        raise KeyError("\"{}\" not a predefined plot".format(plot_name))
    dtk.save_figs("figs/"+__file__+"/"+plot_name+"/", extension='.pdf')
    plt.show()
    start,end = dtk.select_sorted(sbh_cat[step]['fof_halo_tag'],htag,sorter=sbh_srt)
    sbh_x = sbh_cat[step]['subhalo_mean_x'][sbh_srt[start:end]]/h-x
    sbh_y = sbh_cat[step]['subhalo_mean_y'][sbh_srt[start:end]]/h-y
    start,end = dtk.select_sorted(core_cat[step]['fof_halo_tag'],htag,sorter=core_srt)
    core_x = core_cat[step]['x'][core_srt[start:end]]/h-x
    core_y = core_cat[step]['y'][core_srt[start:end]]/h-y


    start,end = dtk.select_sorted(bhp_cat[step]['fof_halo_tag'],htag,sorter=bhp_srt)
    bhp_x = bhp_cat[step]['x'][bhp_srt[start:end]]/h-x
    bhp_y = bhp_cat[step]['y'][bhp_srt[start:end]]/h-y
    H,x_bins,y_bins = np.histogram2d(bhp_x,bhp_y,bins=(150,150))
    plt.figure()
    plt.pcolormesh(x_bins,y_bins,H.T,cmap='gray_r',norm = clrs.LogNorm())
    plt.plot(sbh_x,sbh_y,'x',mec='b',mfc='none',label=r'subhalos',mew=1.2,ms=8)
    plt.plot(core_x,core_y,'o',mec='r',mfc='none',label=r'cores',mew=1.0,ms=8)
    circle1 = plt.Circle((0,0),rad,facecolor='None',edgecolor='k')
    plt.gca().add_artist(circle1)
    plt.plot([],[],'k',label=r'R$_{200}$=%.2fMpc'%(rad))
    plt.axis('equal')
    plt.legend(loc='best')
    plt.xlabel(r'x [Mpc]')
    plt.ylabel(r'y [Mpc]')
    ax = plt.gca()
    ax.text(0.1,0.9,r'M$_{200c}$=%.2e M${_\odot}$'%mass,transform=ax.transAxes,fontsize=15)
    plt.grid()
    dtk.save_figs(path='figs/subhalos_cores/',extension='.png')
    plt.close()
    #plt.show()

Exemplo n.º 21
0
        # axs[1][1].set_yscale('log')
        plt.tight_layout(rect=[0, 0.03, 1, 0.95])
        # plt.show()
        dtk.save_figs('figs/'+__file__+'/individual_cores_random_rev4070_v2/')
        plt.close()
        



if __name__ == "__main__":
    
    if sys.argv[1] == 'histories' or sys.argv[1] == 'history':
        steps=[499, 487, 475, 464, 453, 442, 432, 421, 411, 401, 392, 382, 373, 365, 355, 347, 338, 331, 323, 315, 307, 300, 293, 286, 279, 272, 266, 259, 253, 247, 241, 235, 230, 224, 219, 213, 208, 203, 198, 194, 189, 184, 180, 176, 171, 163, 159, 155, 151, 148, 144, 141, 137, 134, 131, 127, 124, 121, 119, 116, 113, 110, 107, 105, 102, 100, 97, 95, 92, 90, 88, 84, 81, 79, 77, 76, 74, 72, 70, 68, 67, 65, 63, 62, 60, 59, 57, 56, 54, 53, 52, 50, 49, 48, 46, 45, 44, 43]
        # steps=[307, 300, 293, 286, 279, 272, 266, 259, 253, 247, 241, 235, 230, 224, 219, 213, 208, 203, 198, 194, 189, 184, 180, 176, 171, 163, 159, 155, 151, 148, 144, 141, 137, 134, 131, 127, 124, 121, 119, 116, 113, 110, 107, 105, 102, 100]
        # steps=[307, 300, 293, 286, 279, 272, 266, 259, 253, 247, 241, 235, 230, 224, 219, 213, 208]
        # steps=[307, 300, 293, 286, 279, 272, 266, 259]
        core_fname_pattern = '/data/a/cpac/dkorytov/data/AlphaQ/core_catalog10_rev4070/$step$.coreproperties'
        plot_core_trajectory(core_fname_pattern, steps)
    elif sys.argv[1] == 'aggregate' or sys.argv[1] == 'agg':
        
        core_fname_pattern = '/data/a/cpac/dkorytov/data/OuterRim/core_catalog/03_31_2018.OR.$step$.coreproperties'
        core_fname_pattern = '/data/a/cpac/dkorytov/data/AlphaQ/core_catalog10_rev4070/$step$.coreproperties'
        plot_core_properties(core_fname_pattern.replace('$step$', str(499)))
        dtk.save_figs('figs/'+__file__+'/AQ/', extension='.png')
        dtk.save_figs('figs/'+__file__+'/AQ/', extension='.pdf')
        plt.show()
    else:
        raise KeyError("{} not a plotting option".format(sys.argv[1]))


def load_all3(pattern,
              models,
              data_inputs,
              data_input_labels,
              data_clr,
              data_mfc,
              title=None):
    fig = plt.figure(figsize=(5, 3))
    if title is not None:
        plt.suptitle(title)
    gs = gridspec.GridSpec(1, 4, hspace=0.1)
    model_params_ax = {
        'mi': plt.subplot(gs[:, 0]),
        'rd': plt.subplot(gs[:, 1]),
        'rm': plt.subplot(gs[:, 2]),
        'x2': plt.subplot(gs[:, 3])
    }
    model_params = ['mi', 'rd', 'rm']
    for model_i, model in enumerate(models):
        for data_i in range(0, len(data_inputs)):
            model_param_fit = load_fit_limits(
                pattern.format(data_inputs[data_i][0], data_inputs[data_i][1],
                               model))
            print("\n\n", model, data_inputs[data_i])
            print(model_param_fit)

            if len(data_inputs) == 1:
                y = -model_i
            else:
                y = -(model_i - 0.15 + 0.3 / (len(data_inputs) - 1) * data_i)
            for model_param in model_params:
                if model_param in model_param_fit:
                    print(model_param)
                    ax = model_params_ax[model_param]
                    x = model_param_fit[model_param]
                    xerr = [[model_param_fit[model_param + "_lower_err"]],
                            [model_param_fit[model_param + "_upper_err"]]]
                    ax.errorbar(x,
                                y,
                                xerr=xerr,
                                fmt='o',
                                color=data_clr[data_i],
                                mfc=data_mfc[data_i],
                                mec=data_clr[data_i])
            # model_params_ax['x2'].errobar(model_param_fit['x2'], y, fmt='o', color=data_clr[data_i], mfc=data_mfc[data_i], mec=data_clr[data_i])
            model_params_ax['x2'].barh(y,
                                       model_param_fit['x2'],
                                       align='center',
                                       height=0.2,
                                       edgecolor='none',
                                       color=data_clr[data_i])
    model_params_ax['mi'].set_ylim([
        -3.2,
        0.2,
    ])
    model_params_ax['rd'].set_ylim(model_params_ax['mi'].set_ylim())
    model_params_ax['rm'].set_ylim(model_params_ax['mi'].set_ylim())
    model_params_ax['x2'].set_ylim(model_params_ax['mi'].set_ylim())
    model_params_ax['mi'].set_xlabel('$M_{infall}$')
    model_params_ax['rd'].set_xlabel('$R_{disrupt}$')
    model_params_ax['rm'].set_xlabel('$M_{merge}$')
    model_params_ax['x2'].set_xlabel(r'$\chi^{2}_{reduced}$')
    for (key, ax) in model_params_ax.items():
        # if key != 'x2':
        #     ax.xaxis.set_major_locator(ticker.MultipleLocator(0.1))
        # else:
        ax.xaxis.set_major_locator(plt.MaxNLocator(4))
        ax.yaxis.set_ticks([-0, -1, -2, -3])
        ax.yaxis.set_ticklabels(["Mi", "Rd", "Rm", "RdRm"])
        for tick in ax.xaxis.get_ticklabels():
            tick.set_rotation(45)

    model_params_ax['rd'].yaxis.set_ticklabels([])
    model_params_ax['rm'].yaxis.set_ticklabels([])
    model_params_ax['x2'].yaxis.set_ticklabels([])
    # model_params_ax['rd'].xaxis.set_major_locator(ticker.MultipleLocator(5))
    # ax = model_params_ax['rd']
    # ax.plot([],[], linewidth=5, color='b', label='$M_{200m}$')
    # ax.plot([],[], linewidth=5, color='r', label='$M_{200c}$')
    # ax.errorbar([],[],xerr=[], fmt='o', color='k', mec='k', mfc='k',
    #             label='profile only')
    # ax.errorbar([],[],xerr=[], fmt='o', color='k', mec='k', mfc='none',
    #             label='profile + abundance')
    # ax.legend(bbox_to_anchor=(-1., 1.02, 4, .102), loc='lower center',
    #        ncol=2, mode="expand", borderaxespad=0.)
    # plt.tight_layout()
    # gs.tight_layout(fig)

    plt.gcf().subplots_adjust(bottom=0.3, left=0.15)

    dtk.save_figs("figs/" + __file__ + "/", extension='.pdf')
Exemplo n.º 23
0
                                     a_max=max(rad_den)),
                             rad_den + rad_den_err,
                             alpha='0.5',
                             color=c)
            rad_den = zmr_sdss['rad_prof'][i, j]
            rad_den_err = zmr_sdss['rad_prof_err'][i, j]
            plt.plot(rad_bin_avg, rad_den, 'x--', color=c)
            plt.fill_between(rad_bin_avg,
                             np.clip(rad_den - rad_den_err,
                                     a_min=minimum,
                                     a_max=max(rad_den)),
                             rad_den + rad_den_err,
                             color=c,
                             alpha='0.5')
            plt.plot([], [],
                     color=c,
                     label='%.1e<M200<%.1e' %
                     (zmr_sdss['mass_bins'][j], zmr_sdss['mass_bins'][j + 1]))
    plt.plot([], [], 'kx--', label='RedMapper Gal. Profile')
    plt.plot([], [], 'ko-', label='Core Gal. Profile')
    plt.grid()
    plt.legend(loc='best', fancybox=True, framealpha=0.5)
    plt.xlabel(r'$R/R_{200}$')
    plt.ylabel(r'$\Sigma_{gal}$[$gal/R_{200}^{2}$]')
    plt.yscale('log')
    plt.gca().set_ylim(bottom=1)

dtk.save_figs("figs/" + param.file + "/core_fit2.py/")

plt.show()
Exemplo n.º 24
0
                   h_3d / r_bins_volume / cluster_m_cut_count,
                   '-',
                   label=label,
                   color=colors[i])
    for fig, ax in [(f_2d, ax_2d), (f_3d, ax_3d)]:
        ax.set_yscale('log')
        cb = fig.colorbar(sm)
        cb.set_label('R$_{merge}$')
        if ax == ax_2d:
            ax.set_ylabel('Galaxy Surface Density [R$_{200c}$$^{-2}$]')
        else:
            ax.set_ylabel('Galaxy Density [R$_{200c}$$^{-3}$]')
        ax.set_xlabel('r/R$_{200c}$')
        fig.tight_layout()


def plot_cluster_radial_core_prop(fname):
    clusters = ClusterData()
    clusters.load_file(fname, core_host_mass=True)
    clusters.set_core_radial_distance(write_cache=False)
    # plot_radial(clusters)
    plot_profile(clusters)


if __name__ == "__main__":
    # plot_cluster_radial_core_prop("tmp_hdf5/clusters_AQ_M200c.hdf5")
    plot_cluster_radial_core_prop("tmp_hdf5/clusters_OR_M200c.hdf5")
    dtk.save_figs("figs/" + __file__ + "/OR/", extension=".pdf")
    dtk.save_figs("figs/" + __file__ + "/OR/", extension=".png")
    plt.show()
Exemplo n.º 25
0
               dis_merg_collapse.T,
               norm=LogNorm(),
               cmap='PuBu')  #,norm=LogNorm(),
    plt.contour(dis_avg, merg_avg, dis_merg_collapse.T, lvls)

    plt.xlabel('R_disrupt [h^-1 Mpc]')
    #plt.xlabel('M_infall [h^-1 M_sun]')
    plt.ylabel('R_merger [h^-1 Mpc]')
    plt.xscale('log')

    merg_infall_collapse = np.sum(likelihood, axis=0)
    lvls = dtk.conf_interval(merg_infall_collapse, sigmas)
    plt.figure()
    plt.pcolor(merg_bins,
               infall_bins,
               merg_infall_collapse.T,
               norm=LogNorm(),
               cmap='PuBu')  #,norm=LogNorm(),
    plt.contour(merg_avg, infall_avg, merg_infall_collapse.T, lvls)
    #plt.xlabel('R_disrupt [h^-1 Mpc]')
    plt.ylabel('M_infall [h^-1 M_sun]')
    plt.xlabel('R_merger [h^-1 Mpc]')
    #plt.xscale('log')

total_end = time.time()

print "total time: ", total_end - total_start
dtk.save_figs("figs/" + param.file + "/plot_likelihood.py/", extension='.png')

plt.show()
Exemplo n.º 26
0
plt.pcolor(x_bins, y_bins, H.T, cmap='PuBu')
cb = plt.colorbar()
plt.ylabel('SDSS r-band abs. Mag.')
plt.xlabel('Log10(Stellar Mass [Msun/h])')
cb.set_label('Freq')
plt.tight_layout()
plt.grid()

H, x_bins = np.histogram(stellar_mass, bins=100)
x_bins_avg = dtk.bins_avg(x_bins)
plt.figure()
plt.plot(x_bins_avg, H)
plt.ylabel('Freq')
plt.xlabel('Log10(Stellar Mass [Msun/h])')
plt.grid()

H, x_bins = np.histogram(mag_r, bins=100)
x_bins_avg = dtk.bins_avg(x_bins)
plt.figure()
plt.plot(x_bins_avg, H)
plt.ylabel('Freq')
plt.xlabel('SDSS r-band abs. Mag.')

plt.grid()
# plt.figure()
# plt.pcolor(x_bins,y_bins,H.T,cmap='viridis',norm=clr.LogNorm())
# plt.colorbar()
dtk.save_figs('figs/' + param.file + '/' + __file__ + '/')

plt.show()
Exemplo n.º 27
0
plt.title("Fraction of Galaxies w/ Cores")
plt.pcolor(x_bins,
           y_bins,
           H3T_ma,
           cmap='jet',
           vmax=np.nanmax(H3),
           vmin=np.nanmin(H3))
cb = plt.colorbar()
cb.set_label('Fraction with Cores')
plt.xscale('log')
plt.xlabel('Host Halo FoF Mass [Msun/h]')
plt.ylabel('SDSS i-band Magnitude')
plt.tight_layout()
plt.grid()

dtk.save_figs(path='figs/' + param.file + '/plot/', extension='.png')
plt.show()

print "starting loop"
i = 0
for htag in htags:
    #h = 709670038
    #h = 1060195455
    #if(htag != h):
    #    continue
    i += 1
    print htag
    slct = halo_cat[step]["fof_halo_tag"] == htag
    if (np.sum(slct) == 0):
        continue
    fof_mass = halo_cat[step]["fof_halo_mass"][slct][0]
    # plot_mstar05()
    # plot_mstar1()
    # plot_mstar0_pc()
    # plot_mstar05_pc()
    # plot_mstar1_pc()
    # plot_mstar0_QC()
    # plot_mstar05_QC()
    # plot_mstar1_QC()
    # plot_mstar0_OR()
    if plot_name == 'RMvSP':
        plot_mstar0_AQ_RMvSP()
    elif plot_name == 'miscentering':
        plot_mstar0_AQ_miscentering()
        plot_mstar0_OR_miscentering()
    elif plot_name == "OR":
        plot_mstar0_OR()
    elif plot_name == 'mass_def':
        plot_mass_def('0')
    elif plot_name == 'ORvLJ':
        plot_OR_LJ('0')
    elif plot_name == 'high_richness':
        plot_high_richness('0')
    else:
        raise KeyError("\"{}\" not a list plot".format(plot_name))
    dtk.save_figs('figs/' + __file__ + '/' + plot_name + '/', '.pdf')
    plt.show()
    exit()
    a = [("D", [12.2, 12.1, 12.3]), ("M", [12.25, 12.12, 13.0]),
         ("D+M", [12.22, 12.17, 12.25])]
    plot(a)