DOI: 10.5281/zenodo.17540511
title: Data Release: Probing the peak of star formation with the stochastic background of binary black hole mergers

description: This is a data release containing the parameter estimation inputs and hyper-parameter estimation results for "Probing the peak of star formation with the stochastic background of binary black hole mergers" (https://arxiv.org/abs/2506.21868). 



bilby_pe_results.tar.gz: This is a compressed tar file that unzips into a folder with 21600 .hdf5 format Bilby result files—one result file for each 4-second segment in the simulated population at O4 sensitivity. All files are under the folder bilby_pe_results_merged, and contain the combined posteriors of two nested sampling runs per segment.



The naming convention is o3_MDredshift_sims_*_merged__result.hdf5, where * is an index in [0, 21600).



[0, 500) and [10000, 10580) contain binary black hole signal injections.

[500, 10000) and [10580, 21600) contain only simulated noise.



To read the result files, you can load them in with the bilby (or h5py) Python packages as follows: (note the use of the custom luminosity distance prior requires the class definition present or imported for the results to be readable by bilby)




import bilby
class MadauDickinson(bilby.gw.prior.Cosmological):
    def _get_redshift_arrays(self):
        gamma = 2.7
        kappa = 5.6
        z_peak = 1.9
        zs = np.linspace(self._minimum['redshift'] * 0.99,
                         self._maximum['redshift'] * 1.01, 1000)
        p_dz = self.cosmology.differential_comoving_volume(zs).value / (1 + zs)
        psi_of_z = (1 + zs) ** gamma / (
            1 + ((1 + zs) / (1 + z_peak)) ** kappa
        )
        psi_of_z *= 1 + (1 + z_peak) ** (-kappa)
        return zs, p_dz * psi_of_z
results = []
for i in range(21600):
    results.append(bilby.result.read_in_result(f"o3_MDredshift_sims_{i}_merged__result.hdf5"))

For example:

>>> result = bilby.result.read_in_result("bilby_pe_results_merged/o3_MDredshift_sims_0_merged__result.hdf5")
>>> result.posterior.keys()
Index(['H1_log_likelihood', 'H1_matched_filter_snr', 'H1_optimal_snr',
       'L1_log_likelihood', 'L1_matched_filter_snr', 'L1_optimal_snr', 'a_1',
       'a_2', 'azimuth', 'chi_1_in_plane', 'chi_2_in_plane', 'chi_eff',
       'chi_p', 'chirp_mass', 'chirp_mass_source', 'comoving_distance',
       'cos_tilt_1', 'cos_tilt_2', 'dec', 'geocent_time', 'iota',
       'log_likelihood', 'log_prior', 'luminosity_distance', 'mass_1',
       'mass_1_source', 'mass_2', 'mass_2_source', 'mass_ratio',
       'minimum_frequency', 'phase', 'phi_1', 'phi_12', 'phi_2', 'phi_jl',
       'psi', 'ra', 'redshift', 'reference_frequency', 'spin_1x', 'spin_1y',
       'spin_1z', 'spin_2x', 'spin_2y', 'spin_2z', 'symmetric_mass_ratio',
       'theta_jn', 'tilt_1', 'tilt_2', 'total_mass', 'total_mass_source',
       'waveform_approximant', 'zenith'],
      dtype='object')



hyper_pe_results.tar.gz: This is a compressed tar file that unzips into a folder hyper_pe_results with 3 .pkl format hyper-parameter estimation result files.



hyper_redshift_all_segs_merged_reweighted_result.pkl contains the results of hyper PE with the full population of 21600 segments.

hyper_redshift_all_signal_only_reweighted_result.pkl contains the results of hyper PE with only the 1080 signal segments.

hyper_redshift_all_noise_only_reweighted_result.pkl contains the results of hyper PE with only the 20520 noise segments.

To read any of these, you can use the same `bilby.result.read_in_result(filename)` method shown above.




>>>import bilby

>>>hyper_pe_all = bilby.result.read_in_result("hyper_redshift_all_segs_merged_reweighted_result.pkl")
>>>hyper_pe_all.posterior.keys()
Index(['gamma', 'kappa', 'z_peak', 'log_likelihood', 'log_prior', 'xi'], dtype='object')