4. Tutorial: Using the Selection Function for Cluster Cosmology¶
Nemo stores outputs related to cluster selection in the output/selFn
directory
(see Output). Here we show how to use the selection function outputs produced
after running Nemo on the Simons Observatory Simulations (see Tutorial: Cluster Finding in Simulated Simons Observatory Maps).
You can find the files referred to here in the
examples/SOSims
directory in the source code distribution.
4.1. Small Maps¶
If you have not already run Nemo using the MFMF_SOSim_3freq_small.yml
config
file (see Tutorial: Cluster Finding in Simulated Simons Observatory Maps), you can download the catalogs and selection function
files using:
wget https://acru.ukzn.ac.za/~mjh/SO/releases/MFMF_SOSim_3freq_small.tar.gz --user=user --password=password
Note
You can find the needed username and password on the SO Wiki.
Unpacking this archive will create a directory called MFMF_SOSim_3freq_small
that
contains the selFn
directory within it, as well as the catalog files.
The selFnExample.py
script shows how to use the selection function files with
Nemo routines to calculate the completeness as a function of mass and redshift, given
a set of cosmological and scaling relation parameters. You can run it like this:
python selFnExample.py MFMF_SOSim_3freq_small/selFn
This will output the number of clusters that are expected to be found in the 600
square degrees simulated map used here, for various parameter combinations. It also
produces .pdf
plots of the completeness level as a function of mass and redshift
(these are named test0_Mz.pdf
etc.). The script accepts a number of other
command-line arguments; use python selFnExample.py -h
to see them.
The selFn
directory contains all that you need to perform completeness calculations
and generate mock catalogs. For example, you can generate 20 mocks from the small SO
sim maps using:
nemoMock MFMF_SOSim_3freq_small/selFn mocks_small -N 20
The nemoCosmo script
shows how the selection function information can be used in a cosmological likelihood
code. Note that this script is not an attempt at writing a full-blown publication-ready
likelihood code - it is used for testing/sanity checking the completeness calculations
and mock catalogs produced by Nemo. You will need to install
Cobaya to use nemoCosmo
.
The nemoCosmo
script requires a catalog to run - you can obtain an archive full of mock
catalogs generated from the MFMF_SOSim_3freq_small.yml
configuration from
here
(again, you will need the username and password from the wiki).
These mock catalogs were generated using the nemoMock
script, as described above.
You can run nemoCosmo
like this:
nemoCosmo mocks_small/mockCatalog_1.fits MFMF_SOSim_3freq_small/selFn -m 10
The -m
switch is used to set the maximum number of samples (per process; set to 10 in this
case for testing; the default value is 3000). You can use nemoCosmo -h
to see the other available
options. For this example, you will find output (chains) under the cosmo_mockCatalog_1_5.00/
directory
after nemoCosmo
completes its run. You can analyse the chains with
GetDist (although that is pointless with only 10 samples).
The parameters to be estimated using Cobaya
can be controlled using a .yml
configuration file. You
can dump the default settings to a file named default.yml
in the current working directory using the
-d
switch:
nemoCosmo mocks_small/mockCatalog_1.fits MFMF_SOSim_3freq_small/selFn -d
The contents of default.yml
should look something like this:
params:
Ob0: 0.05
tenToA0: 4.95e-05
B0: 0.08
Mpivot: 300000000000000.0
sigma_int: 0.2
H0:
latex: H_0
prior:
dist: norm
loc: 70.0
scale: 4.0
proposal: 5.0
Om0:
latex: \Omega_{\rm m0}
prior:
max: 0.5
min: 0.1
proposal: 0.05
ref:
dist: norm
loc: 0.3
scale: 0.1
sigma8:
latex: \sigma_8
prior:
max: 0.9
min: 0.6
proposal: 0.02
ref:
dist: norm
loc: 0.8
scale: 0.1
sampler:
mcmc:
burn_in: 50
max_samples: 3000
max_tries: .inf
You can pass nemoCosmo
your own Cobaya configuration file by using the -c
switch.
Since Cobaya
is used as the sampler, you can easily run nemoCosmo
using MPI by doing, e.g.,:
mpiexec nemoCosmo mocks_small/mockCatalog_1.fits MFMF_SOSim_3freq_small/selFn
The examples/SOSims/slurm_cosmo.sh
file shows how to run nemoCosmo
using the Slurm job scheduler. Running on 80 processors,
it should take approximately two hours for the MCMC run to converge, when using the small mock catalogs
made from the SO sims.
If you want to run on a “real” rather than mock catalog, the nemoCosmo
script understands the
format made by the nemoMass
script. Note that although these catalogs contain mass estimates computed by
Nemo for a fixed set of cosmological and scaling relation parameters, these are
not used by nemoCosmo
itself (it just needs the cluster positions, SZ-signal measurements, and
the redshifts). For this example, you can find the catalog here:
MFMF_SOSim_3freq_small/MFMF_SOSim_3freq_small_M500.fits
.
4.2. Tiled Maps¶
Nemo breaks up large maps into tiles. At the moment, the time needed to run the selection
function routines scales with the number of tiles - 540 in the case of the
MFMF_SOSim_3freq_tiles.yml
configuration. So, while you can run the selFnExample.py
and nemoCosmo
scripts on the MFMF_SOSim_3freq_tiles.yml
configuration, it will be
slower - this is being worked on.
You can find an archive containing the catalogs and selection function files for a full run on the nominal SO survey area (~17,000 square degrees) here.
Note that the SO simulations have a different mass-scaling relation to the default Arnaud et al. (2010) / Universal Pressure Profile derived scaling relation assumed in the example Nemo config files.