Tutorial: Recreating the ACT DR6 Cluster Search Data Products
Here we provide a guide to reproducing the ACT DR6 cluster search data products, as described in the ACT DR6 cluster catalog paper.
Note
The config files and scripts needed for this tutorial can be found in the examples/ACT-DR6-clusters directory of the Nemo source distribution.
Note
Fully up-to-date documentation might not be found in the Nemo source distribution corresponding to the latest stable release.
Downloading maps and other needed inputs
The first step is to download the co-added ACT+Planck maps used for the ACT DR6 cluster search. These are described in Naess et al. (2025), and available on LAMBDA. In addition to this, we require the beam transform files and some masks. These can be downloaded and extracted by running a script:
sh FETCH_MAPS.sh
Each map is 5 Gb in size, so this may take a while.
Extracting the cluster candidate list
Nemo breaks large maps into tiles, which can be processed
separately in parallel, before combining the output to make
the final catalogs and filtered maps. This requires the
nemo command to run with the -M switch as below:
mpiexec nemo DR6ClusterSearch.yml -M
The Nemo configuration for the ACT DR6 cluster search is
found in DR6ClusterSearch.yml. See Configuration File Parameters
for a description of the available options and parameters.
This particular configuration finds point sources and clusters
in the ACT maps using a multi-pass approach, as described in
Section 2 of the
ACT DR6 cluster catalog paper.
Point sources are subtracted from the maps before performing
the cluster search and affected pixels are flagged.
The file DR6ClusterSearch.pbs contains an example job script
for running Nemo on a compute cluster. The DR6 cluster search
takes 03h40m to complete, running on 144 CPU cores on Lengau at
the CHPC.
After this job is completed, the cluster candidate list,
filtered maps, and various other files will be found under the
DR6ClusterSearch directory. For more information on what
these are, see Output.
Post-processing runs (footprint and flagging adjustments)
Nemo can be run again on existing output without re-running the full map filtering and object detection pipeline, after adjusting some of the options in the configuration file.
To produce information related to completeness for
different footprints that overlap with the cluster search area, run
nemo with the -S switch as below:
nemo DR6ClusterSearch.yml -S
This does not currently benefit from being run in parallel, and
takes 1h12m to complete on one of the Lengau compute nodes at the
CHPC. The file
DR6ClusterSearch-S.pbs contains a job script for running
nemo in this way.
The selFnOptions and selFnFootprints keywords in the
DR6ClusterSearch.yml configuration file control which regions
completeness statistics are calculated for. The information on
mass limits depends upon the assumed scaling relation parameters
set in massOptions (see Configuration File Parameters).
After running nemo with the -S switch,
plots corresponding to Figures 8, 9 and 10 of the
ACT DR6 cluster catalog paper.
will be found
under the DR6ClusterSearch/diagnostics directory.
Post-processing flags can also be adjusted by re-running
nemo after editing the postFlags keyword in the
DR6ClusterSearch.yml configuration file. This allows masks
that are not related to object finding to be changed, such as the
dust mask, and regions flagged around extended objects (e.g. nearby
galaxies) and bright stars.
Estimating cluster masses
To infer cluster masses, a redshift catalog is needed. This is provided
for the ACT DR6 clusters in the file redshifts.fits,
which is included in the ACTDR6ClustersExtras.tar.gz archive downloaded
by the FETCH_MAPS.sh script.
The nemoMass tool can be used to estimate cluster masses:
mpiexec nemoMass DR6ClusterSearch.yml -M
This should take a few minutes to run, and will write a FITS-table
format catalog to DR6ClusterSearch/DR6ClusterSearch_mass.fits.
The inferred masses depend on the assumed scaling relation
parameters, which can be edited in the massOptions section of the
DR6ClusterSearch.yml config file.
Running nemoMass with the -I switch adds some additional columns
for inferred cluster SZ properties (e.g. inferred_y_c and
inferred_Y500Arcmin2; see Catalogs).
Making model cluster signal maps
To make the model cluster signal maps as provided with the DR6 cluster search data products, it is easiest to run:
mpiexec nemoMass DR6ClusterSearch.yml -M -I -m
This will produce cluster model maps for clusters with redshifts only,
writing them to the directory DR6ClusterSearch/clusterModelMaps/.
To produce model maps from the candidate list, you can do something like the following:
nemoModel DR6ClusterSearch/DR6ClusterSearch_optimalCatalog.fits masks/ExtendedSurveyMask_v3.fits beams/beam_f090_tform.txt candidatesModelMap_f090.fits -f 97.8 -m
nemoModel DR6ClusterSearch/DR6ClusterSearch_optimalCatalog.fits masks/ExtendedSurveyMask_v3.fits beams/beam_f150_tform.txt candidatesModelMap_f150.fits -f 149.6 -m
nemoModel DR6ClusterSearch/DR6ClusterSearch_optimalCatalog.fits masks/ExtendedSurveyMask_v3.fits beams/beam_f220_tform.txt candidatesModelMap_f220.fits -f 216.5 -m
These should take roughly 3 minutes to run per frequency map. The above
set-up will include objects that are flagged (flags > 0) in the
candidates list, as the whole candidate list is fed into
nemoModel in this example.
With the default settings, the output maps may look boxier than you may like,
as cluster model images are painted inside a region of size
\(10 \times \theta\)500c.
This can be eliminated by adding -x 40 to the list of arguments given
to nemoModel. This paints cluster model images out to
\(40 \times \theta\)500c, at the cost of additional run time.
Note that running nemoModel requires a minimum of 16 GB of memory for DR6-sized maps.
Forced photometry
To run forced photometry on eRASS1 cluster positions as described in Section 5.2 of the ACT DR6 cluster catalog paper, first download the appropriate eRASS1 cluster catalog from this page, and then run:
nemoMass DR6ClusterSearch.yml -c erass1cl_primary_v3.2.fits -F
This will create a catalog called erass1cl_primary_v3.2_mass.fits in
the current directory. This contains measurements extracted by forced
photometry at the positions given in the erass1cl_primary_v3.2.fits
catalog, found in the fixed_SNR and fixed_y_c columns, in
addition to SZ mass estimates inferred using the scaling relation
set-up specified in DR6ClusterSearch.yml.
A subset of the eRASS1 forced photometry catalog produced in the above way is plotted in Figure 18 of the ACT DR6 cluster catalog paper.
The forced photometry mode can be used to do stacking analyses of external catalogs by averaging the output SZ quantities in bins of some other observable (e.g., optical richness). Other tools are available for stacking in image space - see for example the DR6 y-map stacking notebook.
Running source injection simulations
Source injection simulations can be run using:
mpiexec nemo DR6ClusterSearch.yml -M -I
This was used to produce the results shown in Section 2.4 and Figure 7 of the ACT DR6 cluster catalog paper.
This takes 12h to complete, running on 144 CPU cores on Lengau at
the CHPC using the set-up given in
DR6ClusterSearch.yml. See Source Injection Simulations for documentation on
configuration file parameters that affect this mode.
Making random catalogs
The random catalogs included in the DR6 cluster search products were generated by running:
nemoMock DR6ClusterSearch/selFn mocks -N 100 -p 2.1 -C
This includes the optimization bias model as described in Appendix B of the ACT DR6 cluster catalog paper. See the documentation for nemoMock for more information on arguments for this command. Note that the output of nemoMock depends upon the assumed cosmology and scaling relation parameters set in the configuration file.