Dark siren example

We provide here the complete command line for the dark siren analysis of the 42 BBHs detected and selected during O1-O2-O3. The information used for this analysis is the mass distribution of the set of black holes together with their 3D location on the sky (right ascension, declination and luminosity distance). We will assume you have a login at the CIT cluster of the form albert.einstein. All paths are relative to this cluster. The analysis runs the code gwcosmo_dark_siren_posterior and it assumes that gwcosmo was installed inside a conda environment in /home/albert.einstein/.conda/envs/gwcosmo/.

The script job.sub below must be given to condor with the command condor_submit job.sub. In the script we define the variable environment: careful, its definition can vary according to the cluster on which you are running the analysis. The version here runs well on CIT as of 20231010.

# contents of the file job.sub:

environment = "HOME='/home/albert.einstein/' OMP_NUM_THREADS=1 PATH='/home/albert.einstein/.conda/envs/gwcosmo/bin'"

executable = gwcosmo_dark_siren_posterior # should be in your PATH!!!
arguments = --method sampling
--posterior_samples /home/albert.einstein/posterior_samples.json
--skymap /home/albert.einstein/skymaps_dict.json
--LOS_catalog /home/albert.einstein/GLADE+_LOS_redshift_prior_K_band_luminosity_weighted_nside_32_pixel_index_None.hdf5
--injections /home/albert.einstein/inj_SNR9_det_frame_2e6.h5
--parameter_dict /home/albert.einstein/parameter_dict_BBH_powerlaw_peak.json
--redshift_evolution Madau
--mass_model BBH-powerlaw-gaussian
--snr 10
--sampler dynesty
--nlive 1000
--dlogz 0.1
--npool 24
--outputfile MyAnalysis
--min_pixels 30 

output = /home/albert.einstein/out.txt
error = /home/albert.einstein/err.txt
log = /home/albert.einstein/log.txt

accounting_group = ligo.dev.o4.cbc.hubble.gwcosmo
request_cpus   = 24
request_memory = 16 gb
request_disk   = 8 gb

queue

Several input files are needed for the analysis.

The posteriors of the GW events

The file /home/albert.einstein/posterior_samples.json contains the paths to the posteriors of all events you want to include in your analysis. A posterior file contains the arrays of the reconstructed parameters of the binary system ($m_1, m_2, \text{luminosity_distance}…$). The format of this json file is of the form:

{"GW150914_095045": "/full/path/IGWN-GWTC2p1-v2-GW150914_095045_PEDataRelease_mixed_nocosmo.h5",
"GW151226_033853": "/full/path/IGWN-GWTC2p1-v2-GW151226_033853_PEDataRelease_mixed_nocosmo.h5",
"GW170104_101158": "/full/path/IGWN-GWTC2p1-v2-GW170104_101158_PEDataRelease_mixed_nocosmo.h5"
...
}

The skymaps of the GW events

The file /home/albert.einstein/skymaps_dict.json contains the paths to the skymaps of the same events you specified in the posterior files. The format of this file is of the form:

{"GW150914_095045": "/full/path/IGWN-GWTC2p1-v2-GW150914_095045_PEDataRelease_cosmo_reweight_C01:Mixed.fits",
"GW151226_033853": "/full/path/IGWN-GWTC2p1-v2-GW151226_033853_PEDataRelease_cosmo_reweight_C01:Mixed.fits",
"GW170104_101158": "/full/path/IGWN-GWTC2p1-v2-GW170104_101158_PEDataRelease_cosmo_reweight_C01:Mixed.fits",
...
}

The Line-of-Sight (LOS) redshift prior

The file: /home/albert.einstein/GLADE+_LOS_redshift_prior_K_band_luminosity_weighted_nside_32_pixel_index_None.hdf5 contains the line-of-sight redshift prior. The data stored in this hdf5 file are the values of $p(z|Ωi, \Lambda, I)$ (see Eq. 2.22 of arXiv:2308.02281) for each pixel and the summation over all pixels.

The injection file for the selection effect

The denominator of Eq. 2.2 (see arXiv:2308.02281) take properly into account the selection effects, i.e. the bias due to the fact that our detectors only detect GW above a SNR threshold. For details on the computation of the selection effect, refer to section 2.3 of arXiv:2308.02281. We compute this effect using a large set of ‘injections’ i.e. simulated compact binaries signals that would be detected in the same instrumental configuration than the one existing to create your actual dataset. For more details, please refer to the dedicated documentation page for Injections.

The parameters you want to estimate

The file: /home/albert.einstein/parameter_dict_BBH_powerlaw_peak.json contains the configuration of the parameters to estimate in the analysis. It is a json file and the expected format is:

{

    "H0": {
        "value" : [10, 200, 100],
        "description" : "The Hubble constant (km s-1 Mpc-1). [start, stop [, bins]] or single value",
        "prior" : "Uniform",
        "label" : "$H_0$"
    },
    "gamma": {
        "value" : [0, 12, 100],
        "description" : "Powerlaw slope (PowerLaw), or low-z slope (Madau) for merger rate evolution with redshift.",
        "prior" : "Uniform",
        "label" : "$\\gamma$"
    },
    "Madau_zp": {
        "value": [0, 4, 100],
        "description" : "Break-point for merger rate evolution with redshift (Madau).",
        ...

In case you want to fix some parameters, you simply have to write in the json file:

    "mu_g": {
        "value": 32.27,
        "description" : "Mean of the gaussian peak of the primary powerlaw-gaussian BH mass distribution.",
        "prior" : "Uniform",
        "label" : "$\\mu_g$"
    },