DECADE redMaPPer public release

  1. Cluster Catalog
  2. Members
  3. Randoms
  4. Lensing

We have generated cluster catalogs for the DECADE and DES footprints, at richness thresholds λ > 20 (main sample) and λ > 5. This was produced using redMaPPer v0.8.7. For each footprint we provide clusters with halo mass estimates, member galaxies, randoms and per-cluster weak-lensing profiles.

All cluster products can be found at the same Globus endpoint used for the shear data. Please look in the cluster catalog folder.

Cluster Catalog

The catalog is provided under RedmapperCatalog.hdf5. It contains the clusters, their member galaxies, and the randoms catalog. Datasets are stored under the hdf5 groups <SURVEY>/<PRODUCT>/lambda<CUT>/<column>, with SURVEY = DECADE, DES; PRODUCT = catalog (clusters), catalog_members, randoms; CUT = 20, 5. Each column is its own dataset. Here are simple statistics for the number of objects per category:

SurveySampleClustersMembersRandoms
DECADEλ > 2026,9921,492,9423,424,509
DECADEλ > 5357,5308,121,76145,421,661
DESλ > 2017,970924,4373,243,928
DESλ > 5258,8805,469,88746,937,408

If you are interested in cosmology analyses, and require weak-lensing information, then keep only objects with FOREGROUND_FLAG == 0. Some clusters are available in regions without any WL, if the user requires them. In that case drop the flag. You must also apply your own redshift cut (the catalogs have none; randoms cover 0.10 < z < 0.95). We generally limit ourselves to 0.2 < z < 0.65. Here is an example script for reading the data:

import h5py

with h5py.File('RedmapperCatalog.hdf5', 'r') as f:
    g    = f['DECADE/catalog/lambda20']
    z    = g['z_lambda'][:]
    lam  = g['lambda'][:]
    mask = (g['FOREGROUND_FLAG'][:] == 0) & (z > 0.2) & (z < 0.65)

The λ > 20 catalog is what should be used for any precision applications, for either cosmology or astrophysics. Lower richness objects are available if the user desires them. The catalogs also contain a lambda_cyln variable, whose definition can be found in the catalog paper.

Masses. Each cluster has an M200c posterior [Msun/h]: log10M200c is its median, and log10M200c_err_lo / log10M200c_err_hi are the distances to the 16th / 84th percentiles. log10M200c_flag denotes the method used to obtain the mass and takes one of the values:

FlagMethodDECADE λ > 20DES λ > 20
1Posterior given (λ, z), from the richness–mass relation calibrated on DES×SPT25,41016,564
2Individual posterior, joint fit to ACT-matched clusters1,5311,143
3Individual posterior, joint fit to SPT-matched clusters (preferred over 2)51263

It is best to use Flag = 3 objects when available, then 2 and finally 1.

The following describes the most-used columns in the redMaPPer catalogs (all standard redMaPPer columns are included; see Rykoff et al. 2014):

ColumnDescription
mem_match_idCluster ID, shared with the member catalog
ra, decPosition of the most likely central galaxy [deg]
z_lambda, z_lambda_ePhotometric redshift and uncertainty
lambda, lambda_eRichness and uncertainty
r_lambdaRichness radius, (λ/100)^0.2 Mpc/h
maskfracMasked fraction of the cluster area
p_cen; ra_cent, dec_cent, id_centCentering probabilities, positions and IDs of the five candidate centrals
mag, mag_err; refmag, refmag_errCentral galaxy magnitudes (4 bands) and reference-band magnitude
zred, zred_e, zred_chisqRed-sequence photo-z of the central galaxy
cg_spec_zCentral galaxy spectroscopic redshift, −1 if none
ebv_meanMean E(B−V) over the cluster
lambda_cylnCylinder richness (λ > 20 only), −99 if not computed
log10M200c, _err_lo, _err_hi, _flagMass estimate [log10(Msun/h)], see above
FOREGROUND_FLAGArea mask, see above

Members

Members carry their host’s mem_match_id. The membership weight p * pfree * theta_i * theta_r summed over a cluster recovers its richness:

import numpy as np, h5py

with h5py.File('RedmapperCatalog.hdf5', 'r') as f:
    c   = f['DES/catalog/lambda20']
    m   = f['DES/catalog_members/lambda20']
    cid = c['mem_match_id'][np.argmax(c['lambda'][:])]
    sel = m['mem_match_id'][:] == cid
    wt  = (m['p'][:][sel] * m['pfree'][:][sel] * 
           m['theta_i'][:][sel] * m['theta_r'][:][sel])
ColumnDescription
mem_match_id, idHost cluster ID; galaxy ID in the input photometry
ra, decPosition [deg]
zCluster redshift used for membership (close to, not equal to, the host’s z_lambda)
rProjected distance from the center [Mpc/h]
p, pfree, pcolMembership probability; probability of not belonging to a higher-ranked cluster; color-only probability
theta_i, theta_rLuminosity and radial weights
mag, mag_err; refmag, refmag_errMagnitudes (4 bands) and reference-band magnitude
zred, zred_e, zred_chisq; chisqRed-sequence photo-z; red-sequence χ² at the cluster redshift
zspecSpectroscopic redshift, −1 if none
ebvE(B−V)

Randoms

Match randoms to a cluster sample by applying the redshift cut to ztrue and the richness cut to avg_lambdaout, using the randoms of the same sample (lambda20 or lambda5). The columns are:

ColumnDescription
ra, decPosition [deg]
ztrueRedshift
lambda_inAssigned richness
avg_lambdaoutRecovered richness
weightredMaPPer random weight, to ensure the distribution of λ and z matches the data
FOREGROUND_FLAGArea mask, see above

Lensing

We provide lensing measurements for all clusters with λ > 20. These are in the RedmapperShear.hdf5 file, which has groups <SURVEY>/{catalog,randoms}/lambda20 (no λ > 5). Row i of each group is row i of the same group in RedmapperCatalog.hdf5; take positions, redshifts, richnesses and FOREGROUND_FLAG from there. Rows with has_shear = False have no measurement and zero sums. Only ~5% of randoms have a measurement, so always select on has_shear.

SurveyClusters with shearRandoms with shear
DECADE26,665 of 26,992176,716 of 3,424,509
DES17,884 of 17,970178,356 of 3,243,928

The columns are dsigma pair sums over 29 log-spaced radial bins from 0.01 to 10 comoving Mpc, plus a few per-row quantities:

ColumnShapeDescription
sum 1(N, 29)Number of lens–source pairs
sum w_ls(N, 29)Sum of w_ls
sum w_ls e_t(N, 29)Weighted tangential ellipticity
sum w_ls e_t sigma_crit(N, 29)Weighted tangential ellipticity × Σ_crit
sum w_ls sigma_crit(N, 29)Weighted Σ_crit
sum w_ls R_T(N, 29)Weighted tangential shear response
sum w_ls z_s(N, 29)Weighted source redshift
sum w_ls z_l(N, 29)Weighted lens redshift
sum_pzbf(N, 29, 899)Weighted sum of source-redshift PDFs on the zbins_pdf grid, for boost factors (see below)
w_sys Lens weight, 1 for every row
has_shear Whether the row has a measurement
lensing source decade_N, decade_S or des
weight Random weight (randoms only)

Here w_ls = w_s Σ_crit⁻², e_t is the tangential ellipticity, R_T the tangential shear response and Σ_crit is in Msun/pc². Each group’s attributes hold:

AttributeDescription
binsRadial bin edges
H0, Om0Cosmology (flat ΛCDM, H0 = 67.74, Om0 = 0.3075)
zbins_pdfSource-redshift grid for sum_pzbf

The compute_deltasigma.py file computes ΔΣ for one richness–redshift bin, with the response correction, random subtraction, boost factors and jackknife errors. Installation and usage are at the top of the script:

python compute_deltasigma.py --survey DES --z 0.2 0.35 --lam 20 30 --out ds.txt

It applies the area mask unless --no-mask is given. The core ΔΣ needs only numpy:

import numpy as np, h5py

def stack(g, sel):
    w   = g['w_sys'][:][sel][:, None]
    if 'weight' in g: w = w * g['weight'][:][sel][:, None]  # randoms only
    num = np.sum(w * g['sum w_ls e_t sigma_crit'][:][sel], 0)
    den = np.sum(w * g['sum w_ls'][:][sel], 0)
    R   = np.sum(w * g['sum w_ls R_T'][:][sel], 0) / den
    return num / den / R

with h5py.File('RedmapperCatalog.hdf5', 'r') as cat, h5py.File('RedmapperShear.hdf5', 'r') as sh:

    c, r   = cat['DES/catalog/lambda20'], cat['DES/randoms/lambda20']
    gc, gr = sh['DES/catalog/lambda20'],  sh['DES/randoms/lambda20']

    zc, lc = c['z_lambda'][:], c['lambda'][:]
    zr, lr = r['ztrue'][:],    r['avg_lambdaout'][:]

    sel_c  = gc['has_shear'][:] & (c['FOREGROUND_FLAG'][:] == 0) & (zc > 0.2) & (zc < 0.35) & (lc > 20) & (lc < 30)
    sel_r  = gr['has_shear'][:] & (r['FOREGROUND_FLAG'][:] == 0) & (zr > 0.2) & (zr < 0.35) & (lr > 20) & (lr < 30)

    ds     = stack(gc, sel_c) - stack(gr, sel_r)

Boost factors use sum_pzbf, the weighted sum of source redshift PDFs per radial bin, with shape (N, 29, 899) on the zbins_pdf grid. Read it by row (g['sum_pzbf'][rows], with rows increasing).


© 2026. All rights reserved.