ler.gw_source_population.prior_functions
Module for JIT-compiled functions used in GW source population simulations.
This module provides Numba JIT-compiled functions for efficient sampling and computation of merger rate densities, star formation rates, and mass distributions for various gravitational wave source populations including BBH, BNS, and NSBH.
Key Features:
Merger rate density functions for PopI/II, PopIII, and Primordial BBH
Star formation rate models (Madau & Dickinson 2014, Madau & Fragos 2017)
Mass distribution samplers (power-law Gaussian, broken power-law, bimodal)
JIT-compiled for high performance with Numba
Copyright (C) 2026 Hemanta Ph. Distributed under MIT License.
Module Contents
Functions
|
Compute the merger rate density for PopI/II BBH. |
Compute the unnormalized merger rate density for PopIII BBH. |
|
Compute the merger rate density for BBH using Madau & Dickinson (2014) model. |
|
|
Compute BBH merger rate density following Ng et al. (2021). |
Compute the merger rate density for Primordial BBH. |
|
|
Compute the merger rate density for BBH. This is computed from star formation rate, Madau & Fragos (2017), with an additional time delay. This function is relies on pre-generated data points. |
|
Compute the merger rate density for BBH. This is computed from star formation rate, Madau & Dickinson (2014), with an additional time delay. This function is relies on pre-generated data points. |
|
Compute the merger rate density for BNS. This is computed from star formation rate, Madau & Fragos (2017), with an additional time delay. This function is relies on pre-generated data points. |
|
Compute the merger rate density for BNS. This is computed from star formation rate, Madau & Dickinson (2014), with an additional time delay. This function is relies on pre-generated data points. |
|
Compute star formation rate using Madau & Fragos (2017) model. |
|
Compute star formation rate using Madau & Dickinson (2014) model. |
|
Sample from a lognormal distribution in 2D mass space. |
|
Sample from a lognormal distribution in 2D mass space. |
|
Sample BNS masses from bimodal Gaussian distribution. |
|
Generate NSBH mass samples from broken power-law (BH) and power-law (NS). |
|
Generate BBH mass samples from power-law + Gaussian model with mass ratio. |
Returns a list of available priors. |
- ler.gw_source_population.prior_functions.merger_rate_density_bbh_oguri2018_function(zs, R0=19 * 1e-09, b2=1.6, b3=2.1, b4=30)[source]
Compute the merger rate density for PopI/II BBH.
Reference: Oguri et al. (2018). The output is in detector frame and is unnormalized.
- Parameters:
- zs
floatornumpy.ndarray Source redshifts.
- R0
float Local merger rate density at low redshift (Mpc^-3 yr^-1).
default: 19e-9 (GWTC-4)
- b2
float Fitting parameter.
default: 1.6
- b3
float Fitting parameter.
default: 2.1
- b4
float Fitting parameter.
default: 30
- zs
- Returns:
- rate_density
floatornumpy.ndarray Merger rate density.
- rate_density
Examples
>>> from ler.gw_source_population import merger_rate_density_bbh_oguri2018 >>> rate_density = merger_rate_density_bbh_oguri2018(zs=np.array([0.1]))
- ler.gw_source_population.prior_functions.merger_rate_density_bbh_popIII_ken2022_function(zs, n0=19.2 * 1e-09, aIII=0.66, bIII=0.3, zIII=11.6)[source]
Compute the unnormalized merger rate density for PopIII BBH.
Reference: Ng et al. (2022). The output is in detector frame and is unnormalized.
- Parameters:
- zs
floatornumpy.ndarray Source redshifts.
- n0
float Normalization constant.
default: 19.2e-9
- aIII
float Fitting parameter.
default: 0.66
- bIII
float Fitting parameter.
default: 0.3
- zIII
float Characteristic redshift.
default: 11.6
- zs
- Returns:
- rate_density
floatornumpy.ndarray Merger rate density.
- rate_density
Examples
>>> from ler.gw_source_population import merger_rate_density_bbh_popIII_ken2022 >>> rate_density = merger_rate_density_bbh_popIII_ken2022(zs=np.array([0.1]))
- ler.gw_source_population.prior_functions.merger_rate_density_madau_dickinson2014_function(zs, R0=19 * 1e-09, a=0.015, b=2.7, c=2.9, d=5.6)[source]
Compute the merger rate density for BBH using Madau & Dickinson (2014) model.
density(zs) ∝ (1 + zs) ** b / (1 + ((1 + zs) / c) ** d)
Reference: Eqn. 15 of https://arxiv.org/pdf/1403.0007
- Parameters:
- zs
floatornumpy.ndarray Source redshifts.
- R0
float Local merger rate density (Mpc^-3 yr^-1).
default: 19e-9
- a
float Normalization parameter.
default: 0.015
- b
float Low-redshift power-law slope.
default: 2.7
- c
float Turnover redshift parameter.
default: 2.9
- d
float High-redshift power-law slope.
default: 5.6
- zs
- Returns:
- rate_density
floatornumpy.ndarray Merger rate density (Mpc^-3 yr^-1).
- rate_density
Examples
>>> from ler.gw_source_population import merger_rate_density_madau_dickinson2014 >>> rate_density = merger_rate_density_madau_dickinson2014(zs=np.array([0.1]))
- ler.gw_source_population.prior_functions.merger_rate_density_madau_dickinson_belczynski_ng_function(zs, R0=19 * 1e-09, alpha_F=2.57, beta_F=5.83, c_F=3.36)[source]
Compute BBH merger rate density following Ng et al. (2021).
This model uses a Madau-Dickinson-like functional form to fit the merger rate density of field BHs, accounting for time delays and metallicity effects. Coefficients from Madau & Dickinson (2014) are translated as: B-> alpha_F, D-> beta_F, C-> c_F.
density(zs) ∝ (1 + zs) ** alpha_F / (1 + ((1 + zs) / c_F) ** beta_F)
- Parameters:
- zs
floatornumpy.ndarray Source redshifts.
- R0
float Local merger rate density (Mpc^-3 yr^-1).
default: 19e-9
- alpha_F
float Low-redshift power-law slope.
default: 2.57
- beta_F
float High-redshift power-law slope.
default: 5.83
- c_F
float Turnover redshift parameter.
default: 3.36
- zs
- Returns:
- rate_density
floatornumpy.ndarray Merger rate density (Mpc^-3 yr^-1).
- rate_density
Examples
>>> from ler.gw_source_population import merger_rate_density_madau_dickinson_belczynski_ng >>> rate_density = merger_rate_density_madau_dickinson_belczynski_ng(zs=np.array([0.1]))
- ler.gw_source_population.prior_functions.merger_rate_density_bbh_primordial_ken2022_function(zs, cosmology=None, n0=0.044 * 1e-09, t0=13.786885302009708)[source]
Compute the merger rate density for Primordial BBH.
Reference: Ng et al. (2022). The output is in detector frame and is unnormalized.
- Parameters:
- zs
floatornumpy.ndarray Source redshifts.
- cosmology
astropy.cosmologyorNone Cosmology object for age calculations.
default: LambdaCDM(H0=70, Om0=0.3, Ode0=0.7, Tcmb0=0.0, Neff=3.04, m_nu=None, Ob0=0.0)
- n0
float Normalization constant.
default: 0.044e-9
- t0
float Present age of the Universe (Gyr).
default: 13.786885302009708
- zs
- Returns:
- rate_density
floatornumpy.ndarray Merger rate density.
- rate_density
Examples
>>> from ler.gw_source_population import merger_rate_density_bbh_primordial_ken2022 >>> rate_density = merger_rate_density_bbh_primordial_ken2022(zs=np.array([0.1]))
- ler.gw_source_population.prior_functions.sfr_madau_fragos2017_with_bbh_td(zs, R0=19 * 1e-09)[source]
Compute the merger rate density for BBH. This is computed from star formation rate, Madau & Fragos (2017), with an additional time delay. This function is relies on pre-generated data points.
- Parameters:
- zs
floatornumpy.ndarray Source redshifts.
- R0
float Local merger rate density (Mpc^-3 yr^-1).
default: 19e-9
- zs
- Returns:
- SFR
floatornumpy.ndarray Star formation rate (Mpc^-3 yr^-1).
- SFR
- ler.gw_source_population.prior_functions.sfr_madau_dickinson2014_with_bbh_td(zs, R0=19 * 1e-09)[source]
Compute the merger rate density for BBH. This is computed from star formation rate, Madau & Dickinson (2014), with an additional time delay. This function is relies on pre-generated data points.
- Parameters:
- zs
floatornumpy.ndarray Source redshifts.
- R0
float Local merger rate density (Mpc^-3 yr^-1).
default: 19e-9
- zs
- Returns:
- SFR
floatornumpy.ndarray Star formation rate (Mpc^-3 yr^-1).
- SFR
- ler.gw_source_population.prior_functions.sfr_madau_fragos2017_with_bns_td(zs, R0=89 * 1e-09)[source]
Compute the merger rate density for BNS. This is computed from star formation rate, Madau & Fragos (2017), with an additional time delay. This function is relies on pre-generated data points.
- Parameters:
- zs
floatornumpy.ndarray Source redshifts.
- R0
float Local merger rate density (Mpc^-3 yr^-1).
default: 89e-9
- zs
- Returns:
- SFR
floatornumpy.ndarray Star formation rate (Mpc^-3 yr^-1).
- SFR
- ler.gw_source_population.prior_functions.sfr_madau_dickinson2014_with_bns_td(zs, R0=89 * 1e-09)[source]
Compute the merger rate density for BNS. This is computed from star formation rate, Madau & Dickinson (2014), with an additional time delay. This function is relies on pre-generated data points.
- Parameters:
- zs
floatornumpy.ndarray Source redshifts.
- R0
float Local merger rate density (Mpc^-3 yr^-1).
default: 89e-9
- zs
- Returns:
- SFR
floatornumpy.ndarray Star formation rate (Mpc^-3 yr^-1).
- SFR
- ler.gw_source_population.prior_functions.sfr_madau_fragos2017(zs, a=0.01, b=2.6, c=3.2, d=6.2)[source]
Compute star formation rate using Madau & Fragos (2017) model.
Reference: https://arxiv.org/pdf/1606.07887.pdf
- Parameters:
- zs
floatornumpy.ndarray Source redshifts.
- a
float Normalization parameter.
default: 0.01
- b
float Low-redshift power-law slope.
default: 2.6
- c
float Turnover redshift parameter.
default: 3.2
- d
float High-redshift power-law slope.
default: 6.2
- zs
- Returns:
- SFR
floatornumpy.ndarray Star formation rate (Msun yr^-1 Mpc^-3).
- SFR
- ler.gw_source_population.prior_functions.sfr_madau_dickinson2014(zs, a=0.015, b=2.7, c=2.9, d=5.6)[source]
Compute star formation rate using Madau & Dickinson (2014) model.
Reference: Eqn. 15 of https://arxiv.org/pdf/1403.0007
- Parameters:
- zs
floatornumpy.ndarray Source redshifts.
- a
float Normalization parameter.
default: 0.015
- b
float Low-redshift power-law slope.
default: 2.7
- c
float Turnover redshift parameter.
default: 2.9
- d
float High-redshift power-law slope.
default: 5.6
- zs
- Returns:
- SFR
floatornumpy.ndarray Star formation rate (Msun yr^-1 Mpc^-3).
- SFR
Examples
>>> from ler.gw_source_population import sfr_madau_dickinson2014 >>> sfr = sfr_madau_dickinson2014(zs=np.array([0.1]))
- ler.gw_source_population.prior_functions.binary_masses_BBH_popIII_lognormal_rvs(size, m_min=1.0, m_max=100.0, Mc=20.0, sigma=0.3, chunk_size=10000)[source]
Sample from a lognormal distribution in 2D mass space.
Reference: Ng et al. (2022). This is a helper function for PopIII BBH and primordial BBH merger rate density distribution functions.
- Parameters:
- size
int Number of samples to draw.
- m_min
float Minimum mass (Msun).
default: 1.0
- m_max
float Maximum mass (Msun).
default: 100.0
- Mc
float Characteristic mass scale (Msun).
default: 20.0
- sigma
float Width of the distribution.
default: 0.3
- chunk_size
int Number of samples per rejection sampling chunk.
default: 10000
- size
- Returns:
- m1_sample
numpy.ndarray Primary mass samples (Msun).
- m2_sample
numpy.ndarray Secondary mass samples (Msun).
- m1_sample
Examples
>>> from ler.gw_source_population import binary_masses_BBH_popIII_lognormal >>> m1, m2 = binary_masses_BBH_popIII_lognormal(size=1000)
- ler.gw_source_population.prior_functions.binary_masses_BBH_primordial_lognormal_rvs(size, m_min=1.0, m_max=100.0, Mc=20.0, sigma=0.3, chunk_size=10000)[source]
Sample from a lognormal distribution in 2D mass space.
Based on Eqn. 1 and 4 of Ng et al. 2022 for primordial black holes.
- Parameters:
- size
int Number of samples to draw.
- m_min
float Minimum mass (Msun).
default: 1.0
- m_max
float Maximum mass (Msun).
default: 100.0
- Mc
float Characteristic mass scale (Msun).
default: 20.0
- sigma
float Width of the distribution.
default: 0.3
- chunk_size
int Number of samples per rejection sampling chunk.
default: 10000
- size
- Returns:
- m1_sample
numpy.ndarray Primary mass samples (Msun).
- m2_sample
numpy.ndarray Secondary mass samples (Msun).
- m1_sample
Examples
>>> from ler.gw_source_population import binary_masses_BBH_primordial_lognormal >>> m1, m2 = binary_masses_BBH_primordial_lognormal(size=1000)
- ler.gw_source_population.prior_functions.binary_masses_BNS_bimodal_rvs(size, w=0.643, muL=1.352, sigmaL=0.08, muR=1.88, sigmaR=0.3, mmin=1.0, mmax=2.3, resolution=500)[source]
Sample BNS masses from bimodal Gaussian distribution.
Based on Will M. Farr et al. 2020 Eqn. 6 for neutron star mass distribution combining two Gaussian peaks.
- Parameters:
- size
int Number of samples to draw.
- w
float Weight of the left (low-mass) peak.
default: 0.643
- muL
float Mean of the left peak (Msun).
default: 1.352
- sigmaL
float Standard deviation of the left peak (Msun).
default: 0.08
- muR
float Mean of the right peak (Msun).
default: 1.88
- sigmaR
float Standard deviation of the right peak (Msun).
default: 0.3
- mmin
float Minimum mass (Msun).
default: 1.0
- mmax
float Maximum mass (Msun).
default: 2.3
- resolution
int Number of points to use for the CDF.
default: 500
- size
- Returns:
- m1
numpy.ndarray Primary mass samples (Msun).
- m2
numpy.ndarray Secondary mass samples (Msun).
- m1
- ler.gw_source_population.prior_functions.binary_masses_NSBH_broken_powerlaw_rvs(size=1000, mminbh=26.0, mmaxbh=125.0, alpha_1=6.75, alpha_2=0.0, b=0.5, delta_m=5.0, mminns=1.0, mmaxns=3.0, alphans=0.0, normalization_size=1000)[source]
Generate NSBH mass samples from broken power-law (BH) and power-law (NS).
- Parameters:
- size
int Number of samples to draw.
default: 1000
- mminbh
float Minimum BH mass (Msun).
default: 26.0
- mmaxbh
float Maximum BH mass (Msun).
default: 125.0
- alpha_1
float BH power-law index below break.
default: 6.75
- alpha_2
float BH power-law index above break.
default: 0.0
- b
float Break location parameter (0-1).
default: 0.5
- delta_m
float Smoothing width (Msun).
default: 5.0
- mminns
float Minimum NS mass (Msun).
default: 1.0
- mmaxns
float Maximum NS mass (Msun).
default: 3.0
- alphans
float NS power-law index.
default: 0.0
- normalization_size
int Grid size for CDF computation.
default: 1000
- size
- Returns:
- m1_samples
numpy.ndarray BH mass samples (Msun).
- m2_samples
numpy.ndarray NS mass samples (Msun).
- m1_samples
- ler.gw_source_population.prior_functions.binary_masses_BBH_powerlaw_gaussian_rvs(size, mminbh, mmaxbh, alpha, mu_g, sigma_g, lambda_peak, delta_m, beta, normalization_size=1000)[source]
Generate BBH mass samples from power-law + Gaussian model with mass ratio.
- Parameters:
- size
int Number of samples to draw.
- mminbh
float Minimum BH mass (Msun).
- mmaxbh
float Maximum BH mass (Msun).
- alpha
float Power-law spectral index for m1.
- mu_g
float Mean of the Gaussian peak (Msun).
- sigma_g
float Standard deviation of the Gaussian peak (Msun).
- lambda_peak
float Fraction in Gaussian component (0-1).
- delta_m
float Low-mass smoothing width (Msun).
- beta
float Power-law index for mass ratio distribution.
- normalization_size
int Grid size for CDF computation.
default: 1000
- size
- Returns:
- m1
numpy.ndarray Primary mass samples (Msun).
- m2
numpy.ndarray Secondary mass samples (Msun).
- m1