Measuring the correlations#
First we set up the configuration for the correlation measurements. Here we want to measure correlations corresponding to a transverse angular diameter distances between 0.5 and 1.5 kpc. Additionally, we instruct the code to compute the correlation functions in 22 linearly spaced bins of redshift in a range of 0.1 to 1.2:
config = yaw.Configuration.create(
rmin=500.0, # can also be a list of lower scale limits
rmax=1500.0, # can also be a list of upper scale limits
# unit="kpc" # defaults to angular diameter distance, but angles and
# comoving transverse distance are supported
# rweight=None, # if you want to weight pairs by scales
# resolution=None, # resolution of weights in no. of log-scale bins
zmin=0.1,
zmax=1.2,
num_bins=22,
# method="linear",
# edges=None, # provide your custom bin edges
)
Next we measure the autocorrelation amplitude, which is a measure for the galaxy bias of the reference sample. Afterwards we measure the cross-correlation amplitude, which is the biased measure of the unknown redshift distribution. Typically, this is the most expensive operation in the workflow:
cts_ss_list = yaw.autocorrelate(
config,
cat_reference,
cat_ref_rand,
progress=True, # shows a progress bar, default: False
)
cts_sp_list = yaw.crosscorrelate(
config,
cat_reference,
cat_unknown,
ref_rand=cat_ref_rand,
unk_rand=cat_unk_rand,
progress=True, # shows a progress bar, default: False
)
The measurement functions above always return a list of correlation pair counts. Since we configured a single measurement scale, the lists contain just a single item, which are the pair counts that we are interested in. We can save them to a HDF5 file for later inspection or avoiding to recompute the pair counts every time.
cts_ss = cts_ss_list[0]
cts_ss.to_file("w_ss.hdf5")
cts_sp = cts_sp_list[0]
cts_sp.to_file("w_sp.hdf5")
# restored = yaw.CorrFunc.from_file("w_sp.hdf5")
Correlation pair counts are stored as yaw.CorrFunc objects and are
very flexible. They can be sampled to an actual correlation function using a
correlation estimator,
w_ss = cts_ss.sample() # creates a CorrFunc object
w_ss.plot() # automatic plot
or inspected (e.g. by indexing along the redshift bin or patch axis) to investigate individual pair counts:
cts_sp.patches[3:6] # subset with all pair counts involving patches 4 to 6
cts_sp.bins[:5] # subset with all pair counts of the first 5 redshift bins
dd = cts_sp.dd # access stored reference-unknown pair counts
dd.get_array() # array with shape (num_bins, num_patches, num_patches)