Dark Energy Survey Year 3:
Blue shear
Credit: NASA, ESA, and The Hubble Heritage Team (STScI/AURA)

Star-forming spiral galaxies have less crowded extragalactic neighborhoods, making them excellent candidates for mapping cosmic structure.

McCullough, Amon, Legnani, Gruen et al. 2024

Abstract

Modeling the intrinsic alignment (IA) of galaxies poses a challenge to weak lensing analyses. The Dark Energy Survey, limited to pure blue, star-forming galaxies is expected to be less impacted by IA. The cosmological parameter constraints from this blue sample are stable to IA model choice, unlike the passive galaxies in the full DES Y3 sample, the goodness-of-fit is improved and the \(\Omega_{\rm m}\) and \(S_8\) better agree with Planck Cosmic Microwave Background observations. Mitigating intrinsic alignments via sample selection, instead of flexible model choices, can reduce uncertainty in \(S_8\) by a factor of 1.5, with less uncertain IA on small scales.

Available data products

data vector (a .fits file with redshift distributions and 2-point measurements)
Download FITS
fiducial Polychord chain(.txt)
modeled with no intrinsic alignment, flexible baryon feedback, and analyzed at all scales
Download Chain
source selection dictionary(.pkl)
see instructions below to implement
Download Source Selection Dictionary

Calibration for the blue sample

These galaxies have different redshift distributions and shear calibration than the fiducial Y3 analysis. When running chains, take care to incorporate the relevant systematic calibrations updated here.

Redshift
Bin
$$\bar{z}$$$$\Delta \bar{z}$$$$m$$$$\Delta m$$
10.35560.018-0.01290.0091
20.51750.015-0.01800.0078
30.69940.011-0.02030.0076
40.89940.017-0.03560.0076
For more information, see Table I in the paper.

Source selection of the blue sample

The provided dictionary has keys 0, 1, 2, 3 for each tomographic bin with a list of photometric cell identifiers that meet the pure, blue, star-forming criteria we set in the paper, see Myles & Alarcon et al. 2021 for more information on the cell definitions. For the Y3 data products, you can find the most up-to-date cell assignment for the public source catalogs here, under /catalog/sompz/unsheared with column name CELL_WIDE. The dictionary can be read in with the following python snippet:

    import pickle
    import numpy
    
    with open('blue_tomo_bins_wide_cell_dictionary.pkl','rb') as f:
        tomodict = pickle.load(f) #with different python versions, you may need to specify encoding=bytes or latin1

    # to produce a selection for e.g. blue tomographic bin 1 given CELL_IDs in 'cat'
    mask = np.in1d(cat['CELL_WIDE'], tomodict[0])
    cat_bin_1_blue = cat[mask]

Major Collaborators

Using the cosmology results: an example

For an example of ingesting the chain and running a plot, using custom class chain.py, downloadable here.

#some imports, including the custom chain class
from getdist import plots, MCSamples
import getdist
from chain import chain #place in same directory
import numpy as np
import matplotlib.pyplot as plt
#format the chain into something getdist can read
bluenoia = chain('../data_release/chain_blue_noia_hm20tagn76_83.txt')
bluenoia.add_s8()
sample = np.array([bluenoia.samples['cosmological_parameters--omega_m'], 
                   bluenoia.samples['cosmological_parameters--s8']])
bluenoia_chain = MCSamples(samples=sample.T,names=['om', 'S8'], labels=['\Omega_m', 'S_8'], 
                                   ranges = {'om':[0.1,0.9],'S8':[0.3,1.0]}, label= r'DES Y3 Blue Cosmic Shear', 
                                   weights=bluenoia.weight, settings={'boundary_correction_order':0, 
                                   'mult_bias_correction_order':1})
#generate an S8 - Om contour plot!
plt.rcParams['font.family'] = 'serif' 
g = plots.get_subplot_plotter(width_inch=4)
g.plot_2d([bluenoia_chain], ['om', 'S8'], filled=[True], 
           contour_args=[{'alpha':0.5,'lw':1.2, 'ls':'-','color':'blue'}], 
           diag1d_kwargs={'normalized':True})

g.add_legend(['DES Y3\nBlue Cosmic Shear'],fontsize=10,legend_ncol=1, legend_loc='upper right',framealpha=0)
plt.ylabel(r'S$_8 \equiv \sigma_8(\Omega_{\rm m}/0.3)^{1/2}$',fontsize=15)
plt.xlabel(r'$\Omega_{\rm m}$',fontsize=15)
plt.show()

This will generate a contour plot from the chain that can be combined with other results: