Exemplo n.º 1
0
def plot_richness_mass_relation():
    background.set_cosmology("wmap7")
    richness = np.logspace(np.log10(20), np.log10(300), 100)
    m200m_rykoff, r200m_rykoff = background.lambda_to_m200_r200(
        richness, 0.25, richness_mass_author="Rykoff_mean")
    m200m_simet, r200m_simet = background.lambda_to_m200_r200(
        richness, 0.25, richness_mass_author="Simet_mean")
    m200m_baxter, r200m_baxter = background.lambda_to_m200_r200(
        richness, 0.25, richness_mass_author="Baxter_mean")
    m200c_rykoff, r200c_rykoff = background.lambda_to_m200_r200(
        richness, 0.25, richness_mass_author="Rykoff_crit")
    m200c_simet, r200c_simet = background.lambda_to_m200_r200(
        richness, 0.25, richness_mass_author="Simet_crit")
    m200c_baxter, r200c_baxter = background.lambda_to_m200_r200(
        richness, 0.25, richness_mass_author="Baxter_crit")
    plt.figure()
    plt.plot(richness, m200m_rykoff, '-r')
    plt.plot(richness, m200m_simet, '-b')
    plt.plot(richness, m200m_baxter, '-g')
    plt.plot(richness, m200c_rykoff, '--r')
    plt.plot(richness, m200c_simet, '--b')
    plt.plot(richness, m200c_baxter, '--g')
    plt.plot([], [], 'r', label='rykoff')
    plt.plot([], [], 'b', label='simet')
    plt.plot([], [], 'g', label='baxter')
    plt.plot([], [], '-k', label='M200m')
    plt.plot([], [], '--k', label='M200c')
    plt.legend(loc='best', framealpha=0.3)
    plt.yscale('log')
    plt.xscale('log')
    plt.xlabel('Richness')
    plt.ylabel(r'M$_{200}$')
    plt.grid()

    plt.figure()
    plt.plot(richness, r200m_rykoff, '-r')
    plt.plot(richness, r200m_simet, '-b')
    plt.plot(richness, r200m_baxter, '-g')
    plt.plot(richness, r200c_rykoff, '--r')
    plt.plot(richness, r200c_simet, '--b')
    plt.plot(richness, r200c_baxter, '--g')
    plt.plot([], [], 'r', label='rykoff')
    plt.plot([], [], 'b', label='simet')
    plt.plot([], [], 'g', label='baxter')
    plt.plot([], [], '-k', label='R200m')
    plt.plot([], [], '--k', label='R200c')
    plt.legend(loc='best', framealpha=0.3)
    plt.yscale('log')
    plt.xscale('log')
    plt.xlabel('Richness')
    plt.ylabel(r'R$_{200}$')
    plt.grid()

    plt.figure()
    plt.plot(richness, m200c_rykoff / m200m_rykoff, '-r', label='rykoff')
    plt.plot(richness, m200c_simet / m200m_simet, '-b', label='simet')
    plt.plot(richness, m200c_baxter / m200m_baxter, '-g', label='baxter')
    plt.legend(loc='best', framealpha=0.3)
    plt.xscale('log')
    plt.xlabel('Richness')
    plt.ylabel(r'M200c/M200m')
    plt.grid()

    plt.figure()
    plt.plot(richness, r200c_rykoff / r200m_rykoff, '-r', label='rykoff')
    plt.plot(richness, r200c_simet / r200m_simet, '-b', label='simet')
    plt.plot(richness, r200c_baxter / r200m_baxter, '-g', label='baxter')
    plt.legend(loc='best', framealpha=0.3)
    plt.xscale('log')
    plt.xlabel('Richness')
    plt.ylabel(r'R200c/R200m')
    plt.grid()

    plt.figure()
    a = 1.0 / (1.0 + 0.25)
    # plt.plot(m200m_simet, r200m_simet, '-b',  label='my simet mean')
    # plt.plot(m200c_simet, r200c_simet, '--b', label='my simet crit')
    plt.plot(m200m_simet, r200m_simet, '-b', label='my simet mean')
    plt.plot(m200c_simet, r200c_simet, '--b', label='my simet crit')

    nfw_200m = NFWProfile(mdef='200m', redshift=0.25)
    nfw_200c = NFWProfile(mdef='200c', redshift=0.25)
    plt.plot(m200m_simet,
             nfw_200m.halo_mass_to_halo_radius(m200m_simet) * 1000,
             '-r',
             label='ht simet mean')
    plt.plot(m200c_simet,
             nfw_200c.halo_mass_to_halo_radius(m200c_simet) * 1000,
             '--r',
             label='ht simet crit')

    plt.plot(m200m_simet,
             M_to_R(m200m_simet, 0.25, '200m'),
             '-g',
             label='cls simet mean')
    plt.plot(m200c_simet,
             M_to_R(m200c_simet, 0.25, '200c'),
             '--g',
             label='cls simet crit')

    plt.legend(loc='best', framealpha=0.3)
    plt.xscale('log')
    plt.yscale('log')
    plt.xlabel('M200 [Msun]')
    plt.ylabel('R200 [proper kpc]')
    plt.grid()

    plt.show()

    #header list can be found in http://arxiv.org/pdf/1303.3562v2.pdf
    hdulist = pyfits.open("redmapper_dr8_public_v6.3_catalog.fits")
    tdata = hdulist[1].data

    # red_ra = tdata.field('ra')
    # red_dec= tdata.field('dec')
    red_z = tdata.field('z_lambda')
    red_lambda = tdata.field('lambda')
    # red_pcen=tdata.field('p_cen')

    plt.figure()
    h, xbins = np.histogram(red_lambda, bins=256)
    plt.plot(dtk.bins_avg(xbins), h)
    plt.yscale('log')
    plt.xscale('log')
    plt.xlabel('Richness')
    plt.ylabel('count')

    m200m_rykoff = background.lambda_to_m200m_Rykoff(red_lambda, 0.25)
    m200m_simet = background.lambda_to_m200m_Simet(red_lambda, 0.25)
    m200m_baxter = background.lambda_to_m200m_Baxter(red_lambda, 0.25)
    m200c_rykoff = background.lambda_to_m200c_Rykoff(red_lambda, 0.25)
    m200c_simet = background.lambda_to_m200c_Simet(red_lambda, 0.25)
    m200c_baxter = background.lambda_to_m200c_Baxter(red_lambda, 0.25)

    xbins = np.logspace(13.5, 15.5, 100)
    xbins_avg = dtk.bins_avg(xbins)

    plt.figure()
    h, _ = np.histogram(m200m_rykoff, bins=xbins)
    plt.plot(xbins_avg, h, label='rykoff')
    h, _ = np.histogram(m200m_simet, bins=xbins)
    plt.plot(xbins_avg, h, label='simet')
    h, _ = np.histogram(m200m_baxter, bins=xbins)
    plt.plot(xbins_avg, h, label='baxter')
    plt.yscale('log')
    plt.xscale('log')
    plt.ylabel('Counts')
    plt.xlabel('M$_{200m}$ [h$^{-1}$ M$_\odot$]')
    plt.legend(loc='best', framealpha=1.0)
    plt.grid()

    plt.figure()
    h, _ = np.histogram(m200c_rykoff, bins=xbins)
    plt.plot(xbins_avg, h, label='rykoff')
    h, _ = np.histogram(m200c_simet, bins=xbins)
    plt.plot(xbins_avg, h, label='simet')
    h, _ = np.histogram(m200c_baxter, bins=xbins)
    plt.plot(xbins_avg, h, label='baxter')
    plt.yscale('log')
    plt.xscale('log')
    plt.ylabel('Counts')
    plt.xlabel('M$_{200c}$ [h$^{-1}$ M$_\odot$]')
    plt.legend(loc='best', framealpha=1.0)
    plt.grid()

    plt.show()
Exemplo n.º 2
0
def query_mask(param_fname):
    global num_pass
    global num_fail

    param = dtk.Param(param_fname)
    query_data_folder = param.get_string("query_data_folder")
    cosmology_name = param.get_string("cosmology_name")
    cluster_size_max = param.get_bool("cluster_size_max")
    cluster_size = param.get_int("cluster_size")
    cluster_start = param.get_int("cluster_start")
    random_size_max = param.get_bool("random_size_max")
    random_size = param.get_int("random_size")
    random_start = param.get_int("random_start")

    query_galaxy_only = param.get_bool("query_galaxy_only")
    r200_factor = param.get_float("r200_factor")

    if "richness_mass_author" in param:
        richness_mass_author = param.get_string("richness_mass_author")
    else:
        richness_mass_author = "Rykoff"
    print "Richness mass author: ", richness_mass_author

    if "clusters_query" in param:
        clusters_query = param.get_bool("clusters_query")
    else:
        clusters_query = True

    if "randoms_query" in param:
        randoms_query = param.get_bool("randoms_query")
    else:
        randoms_query = True
    if "spider_clusters" in param:
        spider_clusters = param.get_bool("spider_clusters")
    else:
        spider_clusters = False
    if "spider_mean" in param:
        spider_mean = param.get_bool("spider_mean")
    else:
        spider_mean = False
    if "spider_bcg_center" in param:
        spider_bcg_center = param.get_bool("spider_bcg_center")
    else:
        spider_bcg_center = False
    if "spider_mass_from_richness" in param:
        spider_mass_from_richness = param.get_bool("spider_mass_from_richness")
    else:
        spider_mass_from_richness = False

    dtk.ensure_dir(query_data_folder)
    background.set_cosmology(cosmology_name)

    num_pass = 0
    num_fail = 0

    if clusters_query:
        print "Querying redmapper clusters..."
        if not spider_clusters:
            cluster_cat = load_redmapper_cluster_fits(
                "redmapper_dr8_public_v6.3_catalog.fits")
            spider_rad = None
        else:
            cluster_cat = load_spider_fits(
                "/media/luna1/dkorytov/data/spider_xray/catCluster-SPIDERS_RASS_CLUS-v2.0.fits"
            )
            if spider_bcg_center:
                print "spider bcg center"
                spider_bcg_center = load_spiders_bcg_fits(
                    "./SpidersXclusterBCGs-v2.0.fits")
                cluster_cat = combine_spiders_bcg(cluster_cat,
                                                  spider_bcg_center)
                cluster_cat['ra'] = cluster_cat['ra_bcg']
                cluster_cat['dec'] = cluster_cat['dec_bcg']

            if spider_mass_from_richness:
                spider_rad = None  # use the default richness -> mass conversion.
                print "spider mass from richness"
            else:
                spider_rad = cluster_cat['r200c_deg']

        if (cluster_size_max):
            cluster_size = cluster_cat['ra'].size
        query_sdss_mask(query_data_folder,
                        cluster_cat['ra'],
                        cluster_cat['dec'],
                        cluster_cat['z'],
                        cluster_cat['lambda'],
                        "gal",
                        cluster_size,
                        r200_factor=r200_factor,
                        start=cluster_start,
                        plot=False,
                        save_data=True,
                        spider_rad=spider_rad,
                        richness_mass_author=richness_mass_author)

    if randoms_query:
        print "Querying random fields..."
        rand_cat = load_redmapper_randoms_fits(
            "redmapper_dr8_public_v6.3_randoms.fits")
        if (random_size_max):
            random_size = rand_cat['ra'].size
        query_sdss_mask(query_data_folder,
                        rand_cat['ra'],
                        rand_cat['dec'],
                        rand_cat['z'],
                        rand_cat['lambda'],
                        "rnd",
                        random_size,
                        r200_factor=r200_factor,
                        start=random_start,
                        plot=False,
                        save_data=True,
                        richness_mass_author=richness_mass_author)
        "/data/a/cpac/dkorytov/data/spiders/catCluster-SPIDERS_RASS_CLUS-v2.0.fits"
    )
    spider_bcg_cat = load_spiders_bcg_fits(
        "/data/a/cpac/dkorytov/data/spiders/SpidersXclusterBCGs-v2.0.fits")
    redmapper_cat = load_redmapper_cluster_fits(
        "/data/a/cpac/dkorytov/data/redmapper/redmapper_dr8_public_v6.3_catalog.fits.gz"
    )
    redmapper_des_cat = load_redmapper_cluster_fits(
        "/data/a/cpac/dkorytov/data/redmapper/redmapper_sva1_public_v6.3_catalog.fits.gz"
    )
    combine_spiders_bcg(spider_cat, spider_bcg_cat)

    # plt.figure()
    # plt.plot(spider_cat['ra_bcg'], spider_cat['dec_bcg'])
    # plt.show()
    spider_cat['ra'] = spider_cat['ra_bcg']
    spider_cat['dec'] = spider_cat['dec_bcg']
    # plt.figure()
    # plt.plot(redmapper_cat['ra'], redmapper_cat['dec'], '.', alpha=0.3)
    # plt.plot(spider_cat['ra'], spider_cat['dec'], '.r')
    # spider_cat = xcs_cat
    # redmapper_cat = xcs_cat
    find_match(redmapper_des_cat, redmapper_cat)


if __name__ == "__main__":
    background.set_cosmology('wmap7')
    compare_redmapper_spider()
    dtk.save_figs("figs/" + __file__ + "/", extension='.pdf')
    plt.show()
    cluster_use_random_positions = param.get_bool(
        "cluster_use_random_positions")
else:
    cluster_use_random_positions = False

if "query_random" in param:
    query_random = param.get_bool("query_random")
else:
    query_random = True

if "query_cluster" in param:
    query_cluster = param.get_bool("query_cluster")
else:
    query_cluster = True

cosmo = background.set_cosmology(cosmology_name)
dtk.ensure_dir(query_data_folder)

hdulist = pyfits.open("redmapper_dr8_public_v6.3_catalog.fits")
hdurnd = pyfits.open("redmapper_dr8_public_v6.3_randoms.fits")

#header list can be found in http://arxiv.org/pdf/1303.3562v2.pdf

tdata = hdulist[1].data
rdata = hdurnd[1].data

red_ra = tdata.field('ra')
red_dec = tdata.field('dec')
red_z = tdata.field('z_lambda')
red_lambda = tdata.field('lambda')
red_pcen = tdata.field('p_cen')
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.º 6
0
def query(param_fname):
    param = dtk.Param(param_fname)
    query_data_folder = param.get_string("query_data_folder")
    cluster_size_max  = param.get_bool("cluster_size_max")
    cluster_size      = param.get_int("cluster_size")
    cluster_start     = param.get_int("cluster_start")
    random_size_max   = param.get_bool("random_size_max")
    random_size       = param.get_int("random_size")
    random_start      = param.get_int("random_start")
    query_galaxy_only = param.get_bool("query_galaxy_only")
    r200_factor       = param.get_float("r200_factor") 
    cosmology_name    = param.get_string("cosmology_name")

    if "richness_mass_author" in param:
        richness_mass_author = param.get_string("richness_mass_author")
    else:
        richness_mass_author = "Rykoff_crit"
    if "mass_type" in param:
        mass_type = param.get_string("mass_type")
        assert (mass_type in ['critical', 'crit', 'mean']), "Mass type ("+mass_type+") not understood"
    else:
        mass_type = "critical"

    if "cluster_use_random_positions" in param:
        cluster_use_random_positions = param.get_bool("cluster_use_random_positions")
    else:
        cluster_use_random_positions = False

    if "query_random" in param:
        query_random = param.get_bool("query_random")
    else:
        query_random = True

    if "query_cluster" in param:
        query_cluster = param.get_bool("query_cluster")
    else:
        query_cluster = True

    if "spider_clusters" in param:
        spider_clusters = param.get_bool("spider_clusters")
    else:
        spider_clusters = False
    if "spider_mean" in param:
        spider_mean = param.get_bool("spider_mean")
    else:
        spider_mean = False
    if "spider_bcg_center" in param:
        spider_bcg_center = param.get_bool("spider_bcg_center")
    else:
        spider_bcg_center = False
    if "spider_mass_from_richness" in param:
        spider_mass_from_richness = param.get_bool("spider_mass_from_richness")
    else:
        spider_mass_from_richness = False

    cosmo = background.set_cosmology(cosmology_name)
    dtk.ensure_dir(query_data_folder)


    if query_random:
        print("Querying random fields...")
        rand_cat = load_redmapper_randoms_fits("redmapper_dr8_public_v6.3_randoms.fits")
        if(random_size_max):
            random_size = cat['ra'].size
        query_sdss_culster(query_data_folder, rand_cat['ra'],
                           rand_cat['dec'], rand_cat['z'],
                           rand_cat['lambda'], "rnd", random_size,
                           start=random_start, plot=False,
                           query_galaxy_only=query_galaxy_only,
                           r200_factor=r200_factor,
                           richness_mass_author=richness_mass_author)
    else:
        print ("Not quering random fields...")
    
    if query_cluster:
        print( "Querying redmapper clusters...")
        print(spider_clusters)
        if not spider_clusters:
            cluster_cat = load_redmapper_cluster_fits("redmapper_dr8_public_v6.3_catalog.fits")
            spider_rad = None
        else:
            cluster_cat = load_spider_fits("/media/luna1/dkorytov/data/spider_xray/catCluster-SPIDERS_RASS_CLUS-v2.0.fits")
            if spider_bcg_center:
                spider_bcg_center = load_spiders_bcg_fits("./SpidersXclusterBCGs-v2.0.fits")
                cluster_cat = combine_spiders_bcg(cluster_cat, spider_bcg_center)
                cluster_cat['ra'] = cluster_cat['ra_bcg']
                cluster_cat['dec'] = cluster_cat['dec_bcg']
            if spider_mass_from_richness:
                spider_rad = None # use the default richness -> mass conversion. 
                print("spider mass from richness")
            else:
                spider_rad = cluster_cat['r200c_deg']
        if(cluster_size_max):
            cluster_size = cluster_cat['ra'].size
        if(cluster_use_random_positions ):
            raise
            cluster_cat['ra'][:cluster_size]  = rand_cat['ra'][:cluster_size]
            cluster_cat['dec'][:cluster_size] = rand_cat['dec'][:cluster_size]
        # query_cat(cat, 
        query_sdss_culster(query_data_folder, cluster_cat['ra'],
                           cluster_cat['dec'], cluster_cat['z'],
                           cluster_cat['lambda'], "gal", cluster_size,
                           start=cluster_start, plot=False,
                           spider_rad=spider_rad,
                           spider_mean=spider_mean,
                           r200_factor=r200_factor,
                           richness_mass_author=richness_mass_author,
        )
    else:
        print("Not querying redmapper clusters...")