Luminosity function modeller (lumfunc_modeller)

Provide models of the redshift-dependent tracer luminosity function \(\varPhi(m, z)\) (for absolute magnitude \(m\)) or \(\varPhi(\lg{L}, z)\) (for base-10 logarithm of the intrinsic luminosity \(L\)), from which the comoving number density below/above some brightness threshold \(\bar{m}\) or \(\bar{L}\),

\[\bar{n}(z; <\!\bar{m}) = \int_{-\infty}^{\bar{m}} \operatorname{d}\!m\, \varPhi(m, z) \quad \mathrm{or} \quad \bar{n}(z; >\!\lg\bar{L}) = \int^{\infty}_{\lg\bar{L}} \operatorname{d}\!\lg{L}\, \varPhi(\lg{L}, z) \,,\]

can be predicted. The corresponding evolution bias is

\[b_\mathrm{e}(z) = - (1 + z) \frac{\partial \ln\bar{n}(z)}{\partial z}\]

and magnification bias is

\[s(z) = \frac{1}{\ln10} \frac{\varPhi(\bar{m},z)}{\bar{n}(z; <\!\bar{m})} \quad \mathrm{or} \quad s(z) = \frac{2}{5\ln10} \frac{\varPhi(\lg\bar{L},z)}{\bar{n}(z; >\!\lg\bar{L})} \,,\]

We also offer a simple \(K\)-correction formula taken from ref. 1.

1

Croom S. M. et al., 2009. MNRAS 399(4), 1755–1772. [arXiv: 0907.2727]

LumFuncModeller(model_lumfunc, ...[, ...])

Luminosity function modeller predicting the comoving number density, evolution bias and magnification bias for a given brightness threshold.

konstante_correction(redshift[, ...])

Subtractive Konstante correction (K-correction) to apparent magnitude for correcting bandpass redshifting.

Quasar (QSO) luminosity function

Pure luminosity evolution model (PLE)

The quasar luminosity function in the pure luminosity evolution (PLE) model is a double power law

\[\varPhi(m, z) = \frac{\varPhi_\ast}{ 10^{0.4 (\alpha + 1) [m - m_\ast(z)]} + 10^{0.4 (\beta + 1) [m - m_\ast(z)]} }\]

where \(m\) is the absolute magnitude, \(z\) is the redshift, and the slope parameters \(\alpha, \beta\) describe the power laws on the bright and faint ends respectively, but their values differ below and above the pivot redshift \(z_\mathrm{p}\). \(m_\ast\) is the break magnitude at which the luminosity function evaluates to \(\varPhi_\ast\),

\[m_\ast(z) = m_\ast(z_\mathrm{p}) - \frac{5}{2} \left[ k_1 (z - z_\mathrm{p}) + k_2 (z - z_\mathrm{p})^2 \right] \,,\]

where \(k_1, k_2\) are the redshift-evolution parameters whose values also differ below and above the pivot redshift 2.

This is a parametric model with 10 parameters: \(\lg\varPhi_\ast\), \(m_\ast(z_\mathrm{p})\), \((\alpha, \beta, k_1, k_2)_\mathrm{l}\) for \(z < z_\mathrm{p}\) and \((\alpha, \beta, k_1, k_2)_\mathrm{h}\) for \(z > z_\mathrm{p}\). Due to the exchange symmetry between \(\alpha\) and \(\beta\) in the double power law, the model constraint \(\alpha < \beta\) is imposed for both above and below the pivot redshift.

Hybrid evolution model (PLE+LEDE)

This model is the same as the PLE model below the pivot redshift, but above that the luminosity evolution–density evolution (LEDE) model is adopted where the luminosity function normalisation, break magnitude and bright-end power law index have different redshift evolutions

\[\begin{split}\begin{align*} \lg\varPhi_\ast &= \lg\varPhi_\ast(z_\mathrm{p}) \ + c_{1\mathrm{a}} (z - z_\mathrm{p}) + c_{1\mathrm{b}} (z - z_\mathrm{p})^2 \,, \\ m_\ast(z) &= m_\ast(z_\mathrm{p}) + c_2 (z - z_\mathrm{p}) \,, \\ \alpha(z) &= \alpha(z_\mathrm{p}) + c_3 (z - z_\mathrm{p}) \,, \end{align*}\end{split}\]

and continuity across redshift is imposed by requiring the same \(\lg\varPhi_\ast(z_\mathrm{p})\) and \(m_\ast(z_\mathrm{p})\) for two models 2.

The hybrid model still has 10 overall parameters: the PLE model retains 6 low-redshift parameters and the high-redshift LEDE model has 8 parameters, with the substitutions of \(\lg\varPhi_\ast(0)\) for \(\lg\varPhi_\ast\), \(m_\ast(0)\) for \(m_\ast(z_\mathrm{p})\), \(c_2\) for \(k_1, k_2\) and the addition of \(c_{1\mathrm{a}}, c_{1\mathrm{b}}\) and \(c_3\). As before, due to the exchange symmetry between \(\alpha\) and \(\beta\), the low-redshift PLE model constraint \(\alpha < \beta\) is imposed.

2(1,2)

Palanque-Delabrouille N. et al., 2016. A&A 587, A41. [arXiv: 1509.05607]

quasar_PLE_lumfunc(magnitude, redshift, *[, ...])

Evaluate the pure luminosity evolution (PLE) model for the quasar luminosity function at the given absolute magnitude and redshift.

quasar_PLE_model_constraint(**model_parameters)

Check whether the pure luminosity evolution (PLE) model constraint is satisfied.

quasar_hybrid_lumfunc(magnitude, redshift, *)

Evaluate the hybrid model (pure luminosity evolution and luminosity evolution--density evolution, 'PLE+LEDE') for the quasar luminosity function at the given absolute magnitude and redshift.

quasar_hybrid_model_constraint(...)

Check whether the hybrid model constraint is satisfied.

Hα-emitter luminosity function

Schechter function model

The Hα-emitter luminosity function in the Schechter function model takes the form of a gamma function

\[\varPhi(L, z) \operatorname{d}\!L = \underbrace{ \ln10 \, \varPhi_\ast(z) y(z)^{\alpha+1} \mathrm{e}^{-y(z)} }_{\varPhi(\lg{L}, z)} \operatorname{d}\!\lg{L}\]

where \(\alpha\) is the faint-end slope parameter,

\[\begin{split}\begin{align*} \varPhi_\ast(z) &= \begin{cases} \varPhi_{\ast0} (1 + z)^\epsilon \,, \quad z \leqslant z_\mathrm{b} \,; \\ \varPhi_{\ast0} (1 + z_\mathrm{b})^{2\epsilon} (1 + z)^{-\epsilon} \,, \quad z > z_\mathrm{b} \,, \end{cases} \\ y(z) &= \frac{L}{L_{\ast0}} (1 + z)^{-\delta} \,, \end{align*}\end{split}\]

are the redshift-dependent characteristic comoving number density and relative luminosity of the Hα-emitters, \(\epsilon, \delta\) are the redshift-evolution indices, and \(z_\mathrm{b}\) is the break magnitude 3.

This is a parametric model with 6 parameters: \(\alpha, \epsilon, \delta\), \(z_\mathrm{b}\), \(m_{\ast0}\) and \(\varPhi_{\ast0}\).

3

Pozzetti L. et al., 2016. A&A 590, A3. [arXiv: 1603.01453]

alpha_emitter_schechter_lumfunc(luminosity, ...)

Evaluate the Schechter model for the Hα-emitter luminosity function at the given intrinsic luminosity and redshift.


horizonground.lumfunc_modeller.konstante_correction(redshift, normalisation_redshift=2.0, index=-0.5)[source]

Subtractive Konstante correction (K-correction) to apparent magnitude for correcting bandpass redshifting.

Notes

This implements the subtractive K-correction \(K(z) - K(z_\ast)\) normalised to redshift \(z_\ast\), where

\[K(z) = - \frac{5}{2} (1 + \alpha_\nu) \lg(1 + z)\]

and \(\alpha_\nu\) is the power-law index.

Parameters
  • redshift (float) – Redshift.

  • normalisation_redshift (float, optional) – Normalisation redshift (default is 2.).

  • index (float, optional) – \(K\)-correction power-law index (default is -0.5).

Returns

correction_magnitude – The magnitude correction that needs to be subtracted from the observed magnitude.

Return type

float

horizonground.lumfunc_modeller.quasar_PLE_lumfunc(magnitude, redshift, *, base10_log=True, redshift_pivot=2.2, **model_parameters)[source]

Evaluate the pure luminosity evolution (PLE) model for the quasar luminosity function at the given absolute magnitude and redshift.

Parameters
  • magnitude (float) – Quasar absolute magnitude.

  • redshift (float) – Quasar redshift.

  • base10_log (bool, optional) – If True (default), return the base-10 logarithmic value.

  • redshift_pivot (float, optional) – Pivot redshift.

  • **model_parameters – PLE model parameters. Must be passed with the following parameter names: r'\lg\Phi_\ast', r'm_\ast(z_\mathrm{p})', r'\alpha_\mathrm{{l}}', r'\beta_\mathrm{{l}}', r'k_{{1\mathrm{{l}}}}', r'k_{{2\mathrm{{l}}}}', r'\alpha_\mathrm{{h}}', r'\beta_\mathrm{{h}}', r'k_{{1\mathrm{{h}}}}', r'k_{{2\mathrm{{h}}}}'.

Returns

lumfunc_value – Predicted qausar luminosity function value (in inverse cubic Mpc per unit magnitude). Base-10 logarithmic value is returned if base10_log is True.

Return type

float

Notes

This function is not vectorised. Please use numpy.vectorize or functools if you need vectorisation.

horizonground.lumfunc_modeller.quasar_PLE_model_constraint(**model_parameters)[source]

Check whether the pure luminosity evolution (PLE) model constraint is satisfied.

Parameters

**model_parameters – PLE model parameters. See quasar_PLE_lumfunc() for required parameters.

Returns

Whether or not the model constraint is satisfied.

Return type

bool

horizonground.lumfunc_modeller.quasar_hybrid_lumfunc(magnitude, redshift, *, base10_log=True, redshift_pivot=2.2, **model_parameters)[source]

Evaluate the hybrid model (pure luminosity evolution and luminosity evolution–density evolution, ‘PLE+LEDE’) for the quasar luminosity function at the given absolute magnitude and redshift.

Parameters
  • magnitude (float) – Quasar absolute magnitude.

  • redshift (float) – Quasar redshift.

  • base10_log (bool, optional) – If True (default), return the base-10 logarithmic value.

  • redshift_pivot (float, optional) – Pivot redshift.

  • **model_parameters – Hybrid model parameters. Must be passed with the following parameter names: r'\lg\Phi_\ast(0)', r'm_\ast(0)', r'\alpha', r'\beta', r'k_1', r'k_2', r'c_{{1\mathrm{{a}}}}', r'c_{{1\mathrm{{b}}}}', r'c_2', r'k_3'.

Returns

lumfunc_value – Predicted qausar luminosity function value (in inverse cubic Mpc per unit magnitude). Base-10 logarithmic value is returned if base10_log is True.

Return type

float

Notes

This function is not vectorised. Please use numpy.vectorize or functools if you need vectorisation.

horizonground.lumfunc_modeller.quasar_hybrid_model_constraint(**model_parameters)[source]

Check whether the hybrid model constraint is satisfied.

Parameters

**model_parameters – Hybrid model parameters. See quasar_hybrid_lumfunc() for required parameters.

Returns

Whether or not the model constraint is satisfied.

Return type

bool

horizonground.lumfunc_modeller.alpha_emitter_schechter_lumfunc(luminosity, redshift, *, base10_log=True, **model_parameters)[source]

Evaluate the Schechter model for the Hα-emitter luminosity function at the given intrinsic luminosity and redshift.

Parameters
  • luminosity (float) – Hα-emitter luminosity in dex (base-10 logarithm).

  • redshift (float) – Hα-emitter redshift.

  • base10_log (bool, optional) – If True (default), return the base-10 logarithmic value.

  • **model_parameters – Schechter model parameters. Must be passed with the following parameter names: r'\lg\Phi_{\ast0}', r'\lg{L_{\ast0}}', r'z_\mathrm{b}', r'\alpha', r'\delta', r'\epsilon'.

Returns

lumfunc_value – Predicted Hα-emitter luminosity function value (in inverse cubic Mpc per flux dex). Base-10 logarithmic value is returned if base10_log is True.

Return type

float

Notes

This function is not vectorised. Please use numpy.vectorize or functools if you need vectorisation.

class horizonground.lumfunc_modeller.LumFuncModeller(model_lumfunc, model_parameters, brightness_variable, threshold_value, normalise_threshold=False, normalisation_redshift=None, cosmology=None, exponentiation=False)[source]

Bases: object

Luminosity function modeller predicting the comoving number density, evolution bias and magnification bias for a given brightness threshold.

Parameters
  • model_lumfunc (callable) – A parametric luminosity function model as a function of brightness and redshift (in that order) in units of inverse cubic Mpc. If it returns the luminosity function value in base-10 logarithm, exponentiation should be set to True; if it accepts a boolean parameter ‘base10_log’, this will be overriden to False.

  • model_parameters (dict) – Model parameters passed to model_lumfunc as keyword arguments.

  • brightness_variable ({‘luminosity’, ‘magnitude’}, str) – Brightness variable of model_lumfunc, either ‘luminosity’ (in dex) or ‘magnitude’.

  • threshold_value (float) – Brightness threshold value for brightness_variable. If brightness_variable is ‘luminosity’, this is interpreted as a flux limit and converted to an intrinsic luminosity value at the tracer redshift using the luminosity distance.

  • normalise_threshold (bool, optional) – If True (default is False), threshold_value is converted from a flux limit to a luminosity value at normalisation_redshift using the luminosity distance if brightness_variable is ‘luminosity’, or converted from an apparent magnitude limit to an absolute magnitude value at normalisation_redshift using the distance modulus if brightness_variable is ‘magnitude’.

  • normalisation_redshift (float or None, optional) – If not None (default) and normalise_threshold is True, this redshift is used convert flux or apparent magnitude limit to an intrinsic luminosity or absolute magnitude threshold.

  • cosmology (astropy.cosmology.core.Cosmology or None, optional) – Background cosmological model used to calculate the luminosity distance or distance modulus (default is None).

  • exponentiation (bool, optional) – If True (default is False), this assumes model_lumfunc only returns the base-10 logarithmic luminosity function and exponentiate its returned value to a power of 10.

Variables
  • luminosity_function (callable) – Luminosity function of brightness and redshift variables only (in that order) (in inverse cubic \(\mathrm{Mpc}/h\) per unit luminosity).

  • brightness_threshold (callable) – Intrinsic luminosity or absoloute magnitude threshold, depending on the input argument of brightness_variable, as a function of redshift.

  • cosmology (astropy.cosmology.core.Cosmology) – Background cosmological model.

  • attrs (dict) – Model parameters and luminosity variables stored in a dictionary.

Notes

luminosity_function is a vectorised function.

luminosity_bound = {'luminosity': 100.0, 'magnitude': -50.0}

Finite luminosity upper bound for numerical integration.

If brightness_variable is ‘luminosity’, the bound is given as a base-10 logarithmic flux value in erg/s; else if ‘magnitude’, the bound is dimensionless.

Type

float

redshift_stepsize = 0.001

Redshift step size for numerical differentiation.

Type

float

classmethod from_parameter_file(parameter_file, **kwargs)[source]

Instantiate the modeller class with model parameter values loaded from a file.

Parameters
  • parameter_file (str or pathlib.Path) – Path of the model parameter file.

  • **kwargs – Parameters other than model_parameters passed to the modeller class as keyword arguments.

comoving_number_density(redshift)[source]

Return the comoving number density \(\bar{n}(z)\) above the luminosity threshold at a given redshift.

Parameters

redshift (float) – Redshift.

Returns

Comoving number density (in inverse cubic \(\mathrm{Mpc}/h\)).

Return type

float

evolution_bias(redshift)[source]

Return the evolution bias \(b_\mathrm{e}(z)\) at a given redshift.

Parameters

redshift (float) – Redshift.

Returns

Evolution bias.

Return type

float

magnification_bias(redshift)[source]

Return the magnification bias \(s(z)\) at a given redshift.

Parameters

redshift (float) – Redshift.

Returns

Magnification bias.

Return type

float