Luminosity and stellar mass functions
The stellar mass function (SMF) estimators are production-ready and validated. The luminosity function (LF) estimators share the same underlying code but have not yet been validated against reference datasets; they are marked as development below.
Stable: SMF estimators
1/Vmax (SMF)
Note
The 1/Vmax module contains both SMF and LF functions. Only the SMF
functions (stellar_mass_function_vmax()) are stable.
LF functions in this module are in development.
1/Vmax estimator for the luminosity function and stellar mass function.
Reference
Schmidt (1968), ApJ 151, 393. Condon (1989), ApJ 338, 13 — Poisson error formula. Johnston (2011), arXiv:1106.2039v3, §3, Eq. 51–53.
- sum_stat.lf_smf.vmax.luminosity_function_vmax(cat, z_min, z_max, mag_bins, area_sr, cosmo, z_max_individual=None)[source]
1/Vmax luminosity function estimator.
Non-parametric estimator using the maximum-volume method of Schmidt (1968). Each galaxy contributes w_i / V_{max,i} to its magnitude bin (Johnston 2011 §3, Eq. 51–53).
- Parameters:
cat (GalaxyCatalogue) – Galaxy catalogue with abs_mag populated.
z_min, z_max (float) – Redshift limits of the survey volume.
mag_bins (ndarray, shape (n_bins+1,)) – Absolute magnitude bin edges [mag].
area_sr (float) – Survey solid angle [sr].
cosmo (FlatLambdaCDM) – Cosmology for V_max computation.
z_max_individual (ndarray, optional) – Per-galaxy maximum observable redshift. Defaults to z_max.
- Returns:
mag_centres (ndarray, shape (n_bins,)) – Absolute magnitude bin centres [mag].
phi (ndarray, shape (n_bins,)) – Luminosity function [Mpc^-3 mag^-1].
phi_err (ndarray, shape (n_bins,)) – Poisson-like uncertainty [Mpc^-3 mag^-1] (Condon 1989).
- Parameters:
cat (GalaxyCatalogue)
z_min (float)
z_max (float)
mag_bins (ndarray)
area_sr (float)
cosmo (FlatLambdaCDM)
z_max_individual (ndarray | None)
- Return type:
References
Schmidt (1968), ApJ 151, 393. Condon (1989), ApJ 338, 13. Johnston (2011), arXiv:1106.2039v3, §3, Eq. 51–53.
- sum_stat.lf_smf.vmax.stellar_mass_function_vmax(cat, z_min, z_max, mstar_bins, area_sr, cosmo, z_max_individual=None)[source]
1/Vmax stellar mass function estimator.
Non-parametric estimator using the maximum-volume method of Schmidt (1968), applied to stellar mass (Johnston 2011 §3, Eq. 51–53).
- Parameters:
cat (GalaxyCatalogue) – Galaxy catalogue with log10_mstar populated.
z_min, z_max (float) – Redshift limits of the survey volume.
mstar_bins (ndarray, shape (n_bins+1,)) – log10(M_*/M_sun) bin edges [dex].
area_sr (float) – Survey solid angle [sr].
cosmo (FlatLambdaCDM) – Cosmology for V_max computation.
z_max_individual (ndarray, optional) – Per-galaxy maximum observable redshift. Defaults to z_max.
- Returns:
mstar_centres (ndarray, shape (n_bins,)) – log10(M_*/M_sun) bin centres [dex].
phi (ndarray, shape (n_bins,)) – Stellar mass function [Mpc^-3 dex^-1].
phi_err (ndarray, shape (n_bins,)) – Poisson-like uncertainty [Mpc^-3 dex^-1] (Condon 1989).
- Parameters:
cat (GalaxyCatalogue)
z_min (float)
z_max (float)
mstar_bins (ndarray)
area_sr (float)
cosmo (FlatLambdaCDM)
z_max_individual (ndarray | None)
- Return type:
References
Schmidt (1968), ApJ 151, 393. Condon (1989), ApJ 338, 13. Johnston (2011), arXiv:1106.2039v3, §3, Eq. 51–53.
SWML (SMF)
Note
The SWML module contains both SMF and LF functions. Only the SMF
functions (stellar_mass_function_swml())
are stable. LF functions in this module are in development.
Step-wise maximum likelihood (SWML) estimator for the luminosity function and stellar mass function.
Reference
Efstathiou, Ellis & Peterson (1988), MNRAS 232, 431. Johnston (2011), arXiv:1106.2039v3, §5.5, Eq. 87–91.
- sum_stat.lf_smf.swml.luminosity_function_swml(cat, z_min, z_max, mag_limit, mag_bins, area_sr, cosmo, z_max_individual=None, max_iter=500, tol=1e-08)[source]
Step-wise maximum likelihood (SWML) luminosity function estimator.
Non-parametric estimator. The LF is modelled as a step function; its shape is found by maximising the normalisation-free likelihood (Johnston 2011 Eq. 87):
ln L = Σ_j n_j ln φ_j − Σ_i w_i ln[Σ_j φ_j H_{ij}]where H_{ij} = ΔM_j if absolute-magnitude bin j is accessible to galaxy i (M_centre_j < M_faint(z_i)) and 0 otherwise. The fixed-point iteration (Johnston 2011 Eq. 88) is run until convergence. Absolute normalisation is set by matching the integral of φ to the total 1/V_max density.
Error bars are the Poisson approximation σ_k = φ_k / sqrt(n_k) (Johnston 2011 Eq. 90).
- Parameters:
cat (GalaxyCatalogue) – Catalogue with abs_mag, redshift, and weight populated.
z_min, z_max (float) – Redshift limits of the survey.
mag_limit (float) – Survey apparent-magnitude limit [mag].
mag_bins (ndarray, shape (n_bins+1,)) – Absolute-magnitude bin edges [mag].
area_sr (float) – Survey solid angle [sr].
cosmo (FlatLambdaCDM) – Cosmology for distance modulus and V_max.
z_max_individual (ndarray, optional) – Per-galaxy maximum observable redshift. Defaults to z_max.
max_iter (int) – Maximum SWML iterations.
tol (float) – Convergence tolerance on relative change in φ.
- Returns:
mag_centres (ndarray, shape (n_bins,)) – Absolute-magnitude bin centres [mag].
phi (ndarray, shape (n_bins,)) – Luminosity function [Mpc^-3 mag^-1].
phi_err (ndarray, shape (n_bins,)) – Poisson uncertainty φ_k / sqrt(n_k) [Mpc^-3 mag^-1].
- Parameters:
cat (GalaxyCatalogue)
z_min (float)
z_max (float)
mag_limit (float)
mag_bins (ndarray)
area_sr (float)
cosmo (FlatLambdaCDM)
z_max_individual (ndarray | None)
max_iter (int)
tol (float)
- Return type:
References
Efstathiou, Ellis & Peterson (1988), MNRAS 232, 431. Johnston (2011), arXiv:1106.2039v3, §5.5, Eq. 87–91.
- sum_stat.lf_smf.swml.stellar_mass_function_swml(cat, z_min, z_max, log10_mstar_limit, mstar_bins, area_sr, cosmo, z_max_individual=None, max_iter=500, tol=1e-08)[source]
Step-wise maximum likelihood (SWML) stellar mass function estimator.
Non-parametric estimator. The SMF is modelled as a step function; its shape is found by maximising the normalisation-free likelihood (Johnston 2011 Eq. 87):
ln L = Σ_j n_j ln φ_j − Σ_i w_i ln[Σ_j φ_j H_{ij}]where H_{ij} = Δm_j if stellar-mass bin j is accessible to galaxy i (mstar_centre_j > log10_M_lim_i) and 0 otherwise. The fixed-point iteration (Johnston 2011 Eq. 88) is run until convergence. Absolute normalisation is set by matching the integral of φ to the total 1/V_max density.
Error bars are the Poisson approximation σ_k = φ_k / sqrt(n_k) (Johnston 2011 Eq. 90).
- Parameters:
cat (GalaxyCatalogue) – Catalogue with log10_mstar, redshift, and weight populated.
z_min, z_max (float) – Redshift limits of the survey.
log10_mstar_limit (ndarray, shape (N,), or float) – Per-galaxy log10(M_*/M_sun) completeness limit — the minimum stellar mass observable by the survey at each galaxy’s redshift. A scalar applies a uniform limit to all galaxies.
mstar_bins (ndarray, shape (n_bins+1,)) – log10(M_*/M_sun) bin edges [dex].
area_sr (float) – Survey solid angle [sr].
cosmo (FlatLambdaCDM) – Cosmology for V_max computation (used for absolute normalisation).
z_max_individual (ndarray, optional) – Per-galaxy maximum observable redshift. Defaults to z_max.
max_iter (int) – Maximum SWML iterations.
tol (float) – Convergence tolerance on relative change in φ.
- Returns:
mstar_centres (ndarray, shape (n_bins,)) – log10(M_*/M_sun) bin centres [dex].
phi (ndarray, shape (n_bins,)) – Stellar mass function [Mpc^-3 dex^-1].
phi_err (ndarray, shape (n_bins,)) – Poisson uncertainty φ_k / sqrt(n_k) [Mpc^-3 dex^-1].
- Parameters:
- Return type:
References
Efstathiou, Ellis & Peterson (1988), MNRAS 232, 431. Johnston (2011), arXiv:1106.2039v3, §5.5, Eq. 87–91.
C⁻ cumulative (SMF)
Note
The C⁻ module contains both SMF and LF functions. Only the SMF
function (cumulative_stellar_mass_function_cminus())
is stable. LF functions in this module are in development.
C⁻ (Lynden-Bell 1971) non-parametric cumulative LF and SMF estimators.
Reference
Lynden-Bell (1971), MNRAS 155, 95. Johnston (2011), arXiv:1106.2039v3, §5.3, Eq. 74–77.
- sum_stat.lf_smf.cminus.cumulative_luminosity_function_cminus(cat, z_min, z_max, mag_limit, area_sr, cosmo, z_max_individual=None)[source]
C⁻ (Lynden-Bell 1971) cumulative luminosity function estimator.
Non-parametric, density-independent estimator of the cumulative LF Φ(< M) — the number density of galaxies brighter than M — based on the product formula of Lynden-Bell (1971) as described in Johnston (2011) §5.3, Eq. 74–77:
Φ(M_{(k+1)}) / Φ(M_{(k)}) = (c_k + w_k) / c_k
where c_k = Σ_{j≤k : M_faint(z_j) > M_{(k+1)}} w_j is the weighted count of brighter galaxies at positions where M_{(k+1)} is still observable.
Absolute normalisation is set by matching Φ(M_faintest) to the total 1/V_max number density.
- Parameters:
cat (GalaxyCatalogue) – Catalogue with abs_mag, redshift, and weight populated.
z_min, z_max (float) – Redshift limits.
mag_limit (float) – Survey apparent-magnitude limit [mag].
area_sr (float) – Survey solid angle [sr].
cosmo (FlatLambdaCDM) – Cosmology for distance modulus and V_max.
z_max_individual (ndarray, optional) – Per-galaxy maximum observable redshift. Defaults to z_max.
- Returns:
M (ndarray, shape (N,)) – Sorted absolute magnitudes, brightest → faintest [mag].
Phi (ndarray, shape (N,)) – Cumulative LF Φ(< M) [Mpc^-3].
Phi_err (ndarray, shape (N,)) – Uncertainty on Φ [Mpc^-3].
- Parameters:
cat (GalaxyCatalogue)
z_min (float)
z_max (float)
mag_limit (float)
area_sr (float)
cosmo (FlatLambdaCDM)
z_max_individual (ndarray | None)
- Return type:
References
Lynden-Bell (1971), MNRAS 155, 95. Johnston (2011), arXiv:1106.2039v3, §5.3, Eq. 74–77.
- sum_stat.lf_smf.cminus.cumulative_stellar_mass_function_cminus(cat, z_min, z_max, log10_mstar_limit, area_sr, cosmo, z_max_individual=None)[source]
C⁻ (Lynden-Bell 1971) cumulative stellar mass function estimator.
Non-parametric, density-independent estimator of the cumulative SMF Φ(> m) — the number density of galaxies more massive than m — based on the product formula of Lynden-Bell (1971) as described in Johnston (2011) §5.3, Eq. 74–77:
Φ(m_{(k+1)}) / Φ(m_{(k)}) = (c_k + w_k) / c_k
where c_k = Σ_{j≤k : log10_M_lim(z_j) < m_{(k+1)}} w_j is the weighted count of more-massive galaxies whose survey is complete at m_{(k+1)}. Galaxies are sorted massive → light (descending log10_M).
Absolute normalisation is set by matching Φ(m_lightest) to the total 1/V_max number density.
- Parameters:
cat (GalaxyCatalogue) – Catalogue with log10_mstar, redshift, and weight populated.
z_min, z_max (float) – Redshift limits.
log10_mstar_limit (ndarray, shape (N,), or float) – Per-galaxy log10(M_*/M_sun) completeness limit — the minimum stellar mass observable by the survey at each galaxy’s redshift. A scalar applies a uniform limit to all galaxies.
area_sr (float) – Survey solid angle [sr].
cosmo (FlatLambdaCDM) – Cosmology for V_max computation.
z_max_individual (ndarray, optional) – Per-galaxy maximum observable redshift. Defaults to z_max.
- Returns:
m (ndarray, shape (N,)) – log10(M_*/M_sun) sorted massive → light [dex].
Phi (ndarray, shape (N,)) – Cumulative SMF Φ(> m) [Mpc^-3].
Phi_err (ndarray, shape (N,)) – Uncertainty on Φ [Mpc^-3].
- Parameters:
cat (GalaxyCatalogue)
z_min (float)
z_max (float)
area_sr (float)
cosmo (FlatLambdaCDM)
z_max_individual (ndarray | None)
- Return type:
References
Lynden-Bell (1971), MNRAS 155, 95. Johnston (2011), arXiv:1106.2039v3, §5.3, Eq. 74–77.
Completeness scan
Completeness scan estimator following Johnston, Teodoro & Hendry (2007–2012).
Scans a completeness threshold m* from bright to the survey faint limit and returns the Tc(m*) and Tv(m*) statistics as arrays, implementing all three contributions from the companion paper series:
Paper I — bright-limit extension of the associated sets and the full magnitude scan (Johnston, Teodoro & Hendry 2007, MNRAS 376, 1757).
Paper II — adaptive S/N smoothing so that each scan point rests on an equal information content regardless of local galaxy density (Teodoro, Johnston & Hendry 2010, MNRAS 405, 1187).
Paper III — error propagation for Tc and Tv; characterisation of incompleteness signatures (Johnston, Teodoro & Hendry 2012, MNRAS 421, 270).
The underlying rank variable is the Rauzy (2001) ζ statistic (MNRAS 324, 51), normalised so that under the null hypothesis of completeness ζ_i ~ Uniform(0,1) and both Tc, Tv ~ N(0, 1).
References
Johnston, Teodoro & Hendry (2007), MNRAS 376, 1757. Teodoro, Johnston & Hendry (2010), MNRAS 405, 1187. Johnston, Teodoro & Hendry (2012), MNRAS 421, 270. Rauzy (2001), MNRAS 324, 51. Johnston (2011), arXiv:1106.2039v3, §10.2, Eq. 160–166.
- sum_stat.lf_smf.completeness_scan.completeness_scan(app_mag, abs_mag, redshift, m_lim_faint, cosmo, *, m_lim_bright=None, n_test=50, sn_target=None)[source]
Johnston-Teodoro-Hendry (2007–2012) completeness scan.
Scans a completeness threshold m* across the apparent-magnitude range of the sample and returns the Tc(m*) and Tv(m*) completeness statistics as functions of m*.
Under the null hypothesis that the sample is complete down to m*, both Tc and Tv are drawn from N(0, 1). Significant negative excursions (Tc or Tv ≪ 0) indicate that the sample is incomplete at that magnitude.
Two scan modes are available:
- Fixed-grid (
sn_target=None, Paper I): n_testequally-spaced thresholds frommin(app_mag)tom_lim_faint. At each threshold m*, ALL galaxies withapp_mag ≤ m*(andapp_mag ≥ m_lim_brightif given) are used — a cumulative test.- Adaptive S/N (
sn_targetgiven, Paper II): Galaxies are sorted by
app_magand grouped into sliding windows ofN_target = max(int(sn_target**2), 10)galaxies. Each window provides one scan point atm* = max(app_mag in window), maintaining a constant signal-to-noise ratio per point regardless of the local galaxy density (Teodoro et al. 2010 §3).
The associated sets used in both modes account for an optional bright apparent-magnitude limit
m_lim_brightfollowing the extension in Johnston et al. (2007) §3.- Parameters:
app_mag (ndarray, shape (N,)) – Observed apparent magnitudes.
abs_mag (ndarray, shape (N,)) – Absolute magnitudes (must satisfy
abs_mag ≈ app_mag − distmod(z)).redshift (ndarray, shape (N,)) – Spectroscopic redshifts.
m_lim_faint (float) – Survey faint apparent-magnitude limit [mag].
cosmo (FlatLambdaCDM) – Cosmology used to compute distance moduli.
m_lim_bright (float, optional) – Survey bright apparent-magnitude limit [mag]. When given, the associated sets are clipped on both sides (Paper I §3).
n_test (int, optional) – Number of threshold values in fixed-grid mode. Default 50. Ignored when
sn_targetis provided.sn_target (float, optional) – Target signal-to-noise ratio per scan point in adaptive mode (Paper II §3). Each window contains
max(int(sn_target**2), 10)galaxies. WhenNone(default), fixed-grid mode is used.
- Returns:
dict with the following keys, all
np.ndarrayof the same lengthm_star (ndarray) – Scan threshold values m* [mag].
Tc (ndarray) – Completeness statistic based on mean(ζ). N(0,1) under H₀. NaN where fewer than 3 galaxies contribute.
Tv (ndarray) – Completeness statistic based on var(ζ). N(0,1) under H₀. NaN where fewer than 3 galaxies contribute.
Tc_err (ndarray) – Formal uncertainty on Tc (Paper III §4). Equals 1.0 for fixed-grid mode; scales as
1 / sqrt(n_galaxies / N_target)in adaptive mode.Tv_err (ndarray) – Formal uncertainty on Tv (Paper III §4). Same scaling as Tc_err.
n_galaxies (ndarray, dtype int) – Number of galaxies contributing to each scan point.
- Parameters:
- Return type:
Notes
An incompleteness signature appears as a drop in Tc (and/or Tv) as m* moves through the missing region, sometimes followed by a peak at slightly fainter magnitudes (Johnston et al. 2012 §3).
The statistic Tc is more sensitive to a deficit in the number of faint galaxies; Tv detects changes in the spread of the rank distribution and can flag over-completeness (excess objects) as well.
References
Johnston, Teodoro & Hendry (2007), MNRAS 376, 1757. Teodoro, Johnston & Hendry (2010), MNRAS 405, 1187. Johnston, Teodoro & Hendry (2012), MNRAS 421, 270. Rauzy (2001), MNRAS 324, 51. Johnston (2011), arXiv:1106.2039v3, §10.2, Eq. 160–166.
- Fixed-grid (
Statistical independence tests
Statistical tests for magnitude–redshift independence in truncated samples.
Implements the Efron & Petrosian (1992) τ test and the Rauzy (2001) Tc/Tv completeness tests as described in Johnston (2011).
Reference
Efron & Petrosian (1992), ApJ 399, 345. Rauzy (2001), MNRAS 324, 51. Johnston, Teodoro & Hendry (2007), MNRAS 376, 1757. Johnston (2011), arXiv:1106.2039v3, §10.1–10.2, Eq. 155–166.
- sum_stat.lf_smf.independence.efron_petrosian_tau(abs_mag, redshift, mag_limit, cosmo, weight=None)[source]
Efron–Petrosian τ statistic for testing LF/redshift independence.
Tests the null hypothesis H₀ that absolute magnitude M is statistically independent of redshift z given the flux-limited selection truncation. Under H₀, τ ~ N(0, 1) (Johnston 2011 §10.1, Eq. 158–159):
τ = Σ_i (R_i − E_i) / sqrt(Σ_i V_i)
For each galaxy i the associated set is (Johnston 2011 Eq. 156):
J_i = {j : z_j ≤ z_i AND M_j < M_faint(z_i)}i.e. galaxies at redshifts no greater than z_i whose magnitude is observable at z_i. R_i is the rank of M_i within {M_j : j ∈ J_i} ordered by brightness, E_i = (|J_i| + 1)/2 is the expected rank under H₀, and V_i = (|J_i|² − 1)/12 is its variance.
A positive τ means brighter galaxies are found preferentially at higher redshift (positive luminosity evolution).
- Parameters:
abs_mag (ndarray, shape (N,)) – Absolute magnitudes.
redshift (ndarray, shape (N,)) – Redshifts.
mag_limit (float) – Survey apparent-magnitude limit [mag].
cosmo (FlatLambdaCDM) – Cosmology for distance modulus.
weight (ndarray, optional) – Per-galaxy weights (currently unused in the rank computation but reserved for future weighted extensions).
- Returns:
dict with keys
tau (float) – τ statistic; τ ~ N(0,1) under H₀.
p_value (float) – Two-tailed p-value P(|Z| ≥ |τ|) under H₀.
numerator (float) – Σ_i (R_i − E_i).
denominator (float) – sqrt(Σ_i V_i).
n_used (int) – Number of galaxies with |J_i| ≥ 2 contributing to τ.
- Parameters:
abs_mag (ndarray)
redshift (ndarray)
mag_limit (float)
cosmo (FlatLambdaCDM)
weight (ndarray | None)
- Return type:
References
Efron & Petrosian (1992), ApJ 399, 345. Johnston (2011), arXiv:1106.2039v3, §10.1, Eq. 155–159.
- sum_stat.lf_smf.independence.rauzy_completeness(abs_mag, redshift, mag_limit, cosmo)[source]
Rauzy (2001) Tc and Tv completeness statistics.
The Tc and Tv tests check whether the distribution of magnitudes within the associated sets J_i is consistent with a complete, flux-limited sample (Johnston 2011 §10.2, Eq. 160–166). The ζ_i variables are uniform on [0, 1] under the null hypothesis of completeness; deviations indicate incompleteness.
Two statistics are returned:
Tc (completeness in count): based on the mean of ζ_i, which should equal 0.5 under H₀.
Tv (completeness in variance): based on the variance of ζ_i, which should equal 1/12 under H₀.
- Parameters:
abs_mag (ndarray, shape (N,)) – Absolute magnitudes.
redshift (ndarray, shape (N,)) – Redshifts.
mag_limit (float) – Survey apparent-magnitude limit [mag].
cosmo (FlatLambdaCDM) – Cosmology for distance modulus.
- Returns:
dict with keys
Tc (float) – Completeness statistic based on ranks (N(0,1) under H₀).
Tv (float) – Completeness statistic based on rank variance (N(0,1) under H₀).
zeta_mean (float) – Sample mean of ζ_i (should be 0.5 under H₀).
zeta_var (float) – Sample variance of ζ_i (should be 1/12 ≈ 0.0833 under H₀).
n_used (int) – Number of galaxies contributing.
- Parameters:
abs_mag (ndarray)
redshift (ndarray)
mag_limit (float)
cosmo (FlatLambdaCDM)
- Return type:
References
Rauzy (2001), MNRAS 324, 51. Johnston, Teodoro & Hendry (2007), MNRAS 376, 1757. Johnston (2011), arXiv:1106.2039v3, §10.2, Eq. 160–166.
Note
The luminosity function (LF) counterparts of the estimators above
(luminosity_function_vmax, luminosity_function_swml,
cumulative_luminosity_function_cminus) share the same modules but are
in active development — validation against COSMOS and GAMA is not yet
complete. See Estimators in development for the full status.
Deprecated: Schechter model functions
Deprecated since version 0.1: The modules below are deprecated and will be removed in a future release. Schechter model evaluation functions and reference data have moved to the gga_model package.
Zalesky et al. (2025) galaxy stellar mass function: models and digitized data.
Implements the single and double Schechter SMF in log10-mass units (Eqs. 9–10) with the Eddington bias convolution kernel (Eq. 11) from the Euclid Cosmic Dawn Survey stellar mass function paper. Digitized Tables 1, A.1–A.3 are provided.
Reference
Zalesky, L. et al. (Euclid Collaboration) 2025, A&A (submitted), arXiv:2504.17867.
Cosmology used in the paper
H0 = 70 km/s/Mpc, Ωm = 0.3, ΩΛ = 0.7, Chabrier (2003) IMF.
- sum_stat.lf_smf.zalesky25.ZALESKY2025: dict[str, ndarray] = {'quiescent': array([[ 2.000e-01, 5.000e-01, 1.087e+01, 5.000e-02, 5.000e-02, 1.091e+01, -1.850e+00, 2.900e-01, 3.200e-01, -2.340e+00, -4.880e+00, 1.180e+00, 3.300e-01, -5.870e+00, -4.800e-01, 1.400e-01, 1.100e-01, -5.900e-01, -2.860e+00, 5.000e-02, 5.000e-02, -2.880e+00], [ 5.000e-01, 8.000e-01, 1.083e+01, 3.000e-02, 3.000e-02, 1.084e+01, -1.660e+00, 4.500e-01, 4.600e-01, -2.480e+00, -5.000e+00, 2.280e+00, 3.700e-01, -6.390e+00, -3.900e-01, 9.000e-02, 0.000e+00, -4.400e-01, -2.870e+00, 1.000e-02, 1.000e-02, -2.860e+00], [ 8.000e-01, 1.100e+00, 1.074e+01, 2.000e-02, 2.000e-02, 1.074e+01, nan, nan, nan, nan, nan, nan, nan, nan, -1.700e-01, 4.000e-02, 4.000e-02, -1.800e-01, -3.090e+00, 2.000e-02, 2.000e-02, -3.090e+00], [ 1.100e+00, 1.500e+00, 1.062e+01, 2.000e-02, 3.000e-02, 1.062e+01, nan, nan, nan, nan, nan, nan, nan, nan, 4.600e-01, 7.000e-02, 7.000e-02, 4.500e-01, -3.310e+00, 1.000e-02, 1.000e-02, -3.300e+00], [ 1.500e+00, 2.000e+00, 1.082e+01, 2.000e-02, 2.000e-02, 1.084e+01, nan, nan, nan, nan, nan, nan, nan, nan, 1.000e-01, 1.100e-01, 1.100e-01, 2.000e-02, -3.880e+00, 1.000e-02, 1.000e-02, -3.890e+00], [ 2.000e+00, 2.500e+00, 1.095e+01, 4.000e-02, 5.000e-02, 1.098e+01, nan, nan, nan, nan, nan, nan, nan, nan, 5.000e-02, 1.800e-01, 5.000e-02, 0.000e+00, -4.620e+00, 4.000e-02, 4.000e-02, -4.620e+00], [ 2.500e+00, 3.000e+00, 1.093e+01, 1.700e-01, 2.300e-01, 1.112e+01, nan, nan, nan, nan, nan, nan, nan, nan, 4.500e-01, 8.500e-01, 4.000e-01, 0.000e+00, -5.470e+00, 9.000e-01, 2.300e-01, -5.490e+00]]), 'star_forming': array([[ 2.000e-01, 5.000e-01, 1.079e+01, 1.100e-01, 1.300e-01, 1.084e+01, -1.420e+00, 6.000e-02, 6.000e-02, -1.540e+00, -3.080e+00, 1.400e-01, 1.400e-01, -3.340e+00, -4.900e-01, 6.200e-01, 6.300e-01, -9.400e-01, -3.260e+00, 2.900e-01, 2.900e-01, -3.120e+00], [ 5.000e-01, 8.000e-01, 1.081e+01, 6.000e-02, 5.000e-02, 1.080e+01, -1.410e+00, 4.000e-02, 4.000e-02, -1.460e+00, -3.080e+00, 9.000e-02, 1.200e-01, -3.160e+00, -5.100e-01, 3.100e-01, 3.200e-01, -5.600e-01, -3.050e+00, 7.000e-02, 7.000e-02, -2.970e+00], [ 8.000e-01, 1.100e+00, 1.079e+01, 6.000e-02, 6.000e-02, 1.081e+01, -1.490e+00, 5.000e-02, 5.000e-02, -1.510e+00, -3.290e+00, 9.000e-02, 9.000e-02, -3.330e+00, 1.000e-02, 3.200e-01, 2.700e-01, -1.000e-01, -3.250e+00, 8.000e-02, 8.000e-02, -3.210e+00], [ 1.100e+00, 1.500e+00, 1.108e+01, 4.000e-02, 6.000e-02, 1.107e+01, -1.370e+00, 9.000e-02, 6.000e-02, -1.330e+00, -3.470e+00, 9.000e-02, 1.500e-01, -3.380e+00, -8.200e-01, 1.000e+00, 4.600e-01, 9.700e-01, -4.120e+00, 1.000e+00, 3.300e-01, -5.020e+00], [ 1.500e+00, 2.000e+00, 1.113e+01, 4.000e-02, 4.000e-02, 1.109e+01, -1.360e+00, 3.000e-02, 5.000e-02, -1.330e+00, -3.580e+00, 8.000e-02, 1.300e-01, -3.500e+00, -4.400e-01, 1.110e+00, 7.900e-01, 1.000e+00, -4.470e+00, 9.000e-01, 2.800e-01, -4.870e+00], [ 2.000e+00, 2.500e+00, 1.108e+01, 3.000e-02, 2.000e-02, 1.109e+01, -1.550e+00, 0.000e+00, 0.000e+00, -1.550e+00, -3.790e+00, 2.000e-02, 2.000e-02, -3.800e+00, nan, nan, nan, nan, nan, nan, nan, nan], [ 2.500e+00, 3.000e+00, 1.101e+01, 2.000e-02, 2.000e-02, 1.102e+01, -1.700e+00, 1.000e-02, 0.000e+00, -1.700e+00, -3.900e+00, 3.000e-02, 2.000e-02, -3.920e+00, nan, nan, nan, nan, nan, nan, nan, nan]]), 'total': array([[ 2.000e-01, 5.000e-01, 1.092e+01, 9.000e-02, 9.000e-02, 1.094e+01, -1.420e+00, 7.000e-02, 8.000e-02, -1.550e+00, -3.100e+00, 1.900e-01, 1.600e-01, -3.380e+00, -6.100e-01, 3.700e-01, 3.200e-01, -8.400e-01, -2.880e+00, 1.700e-01, 1.700e-01, -2.790e+00], [ 5.000e-01, 8.000e-01, 1.088e+01, 4.000e-02, 4.000e-02, 1.087e+01, -1.370e+00, 5.000e-02, 5.000e-02, -1.400e+00, -3.030e+00, 1.200e-01, 1.200e-01, -3.090e+00, -5.400e-01, 2.700e-01, 2.200e-01, -5.600e-01, -2.780e+00, 6.000e-02, 4.000e-02, -2.740e+00], [ 8.000e-01, 1.100e+00, 1.086e+01, 4.000e-02, 5.000e-02, 1.089e+01, -1.460e+00, 7.000e-02, 8.000e-02, -1.540e+00, -3.300e+00, 1.400e-01, 1.000e-01, -3.460e+00, -3.500e-01, 2.600e-01, 2.000e-01, -5.500e-01, -2.980e+00, 7.000e-02, 7.000e-02, -2.930e+00], [ 1.100e+00, 1.500e+00, 1.098e+01, 4.000e-02, 4.000e-02, 1.099e+01, -1.440e+00, 9.000e-02, 8.000e-02, -1.550e+00, -3.620e+00, 2.200e-01, 1.400e-01, -3.840e+00, -7.700e-01, 1.900e-01, 1.600e-01, -8.600e-01, -3.180e+00, 8.000e-02, 9.000e-02, -3.120e+00], [ 1.500e+00, 2.000e+00, 1.115e+01, 4.000e-02, 4.000e-02, 1.114e+01, -1.390e+00, 6.000e-02, 1.000e-01, -1.550e+00, -3.700e+00, 2.100e-01, 2.100e-01, -4.050e+00, -1.010e+00, 4.100e-01, 2.500e-01, -1.100e+00, -3.770e+00, 2.400e-01, 6.000e-02, -3.560e+00], [ 2.000e+00, 2.500e+00, 1.115e+01, 2.000e-02, 2.000e-02, 1.115e+01, -1.550e+00, 0.000e+00, 1.000e-02, -1.550e+00, -3.830e+00, 3.000e-02, 2.000e-02, -3.840e+00, nan, nan, nan, nan, nan, nan, nan, nan], [ 2.500e+00, 3.000e+00, 1.104e+01, 2.000e-02, 2.000e-02, 1.105e+01, -1.700e+00, 0.000e+00, 1.000e-02, -1.700e+00, -3.930e+00, 3.000e-02, 2.000e-02, -3.940e+00, nan, nan, nan, nan, nan, nan, nan, nan], [ 3.000e+00, 3.500e+00, 1.104e+01, 2.000e-02, 2.000e-02, 1.105e+01, -1.690e+00, 1.000e-02, 1.000e-02, -1.700e+00, -4.070e+00, 3.000e-02, 3.000e-02, -4.090e+00, nan, nan, nan, nan, nan, nan, nan, nan], [ 3.500e+00, 4.500e+00, 1.087e+01, 5.000e-02, 6.000e-02, 1.093e+01, -2.010e+00, 6.000e-02, 3.000e-02, -2.050e+00, -4.480e+00, 1.200e-01, 7.000e-02, -4.570e+00, nan, nan, nan, nan, nan, nan, nan, nan], [ 4.500e+00, 5.500e+00, 1.068e+01, 2.400e-01, 1.800e-01, 1.095e+01, -2.140e+00, 1.000e-01, 4.000e-02, -2.200e+00, -4.990e+00, 4.900e-01, 2.600e-01, -5.460e+00, nan, nan, nan, nan, nan, nan, nan, nan], [ 5.500e+00, 6.500e+00, 1.103e+01, 1.200e-01, 1.600e-01, 1.120e+01, -2.050e+00, 1.000e-01, 1.600e-01, -2.200e+00, -5.750e+00, 3.200e-01, 1.500e-01, -6.090e+00, nan, nan, nan, nan, nan, nan, nan, nan]])}
Digitized Tables A.1–A.3 of Zalesky et al. (2025).
Keys are
'total','star_forming', and'quiescent'. Each value is a numpy array of shape (n_zbins, 22). UseZALESKY2025_COLUMNSto map column names to indices. For quiescent at z > 0.8 the single Schechter component occupies thealpha2/log10_phi2columns (alpha1/log10_phi1are NaN).
- sum_stat.lf_smf.zalesky25.ZALESKY2025_COLUMNS: dict[str, int] = {'alpha1_ehi': 7, 'alpha1_elo': 8, 'alpha1_map': 9, 'alpha1_med': 6, 'alpha2_ehi': 15, 'alpha2_elo': 16, 'alpha2_map': 17, 'alpha2_med': 14, 'log10_mstar_ehi': 3, 'log10_mstar_elo': 4, 'log10_mstar_map': 5, 'log10_mstar_med': 2, 'log10_phi1_ehi': 11, 'log10_phi1_elo': 12, 'log10_phi1_map': 13, 'log10_phi1_med': 10, 'log10_phi2_ehi': 19, 'log10_phi2_elo': 20, 'log10_phi2_map': 21, 'log10_phi2_med': 18, 'z_hi': 1, 'z_lo': 0}
Column name → column index in the
ZALESKY2025parameter arrays.
- sum_stat.lf_smf.zalesky25.ZALESKY2025_TABLE1_COLUMNS: dict[str, int] = {'log10_mstar_lim': 3, 'n_gal': 4, 'volume_1e6_Mpc3': 2, 'z_hi': 1, 'z_lo': 0}
Column name → column index in
ZALESKY2025_TABLE1.
- sum_stat.lf_smf.zalesky25.convolve_smf_eddington(phi_fn, log10_mstar, z, sigma_edd=0.6, tau_c=0.05, n_kernel=201, kernel_range=3.0)[source]
Forward-model: convolve intrinsic SMF with the Eddington bias kernel.
Computes the observed (Eddington-broadened) SMF via:
φ_obs(m) = ∫ φ_true(m − δm) D(δm, z) dδm
using a uniform grid over δm ∈ [−kernel_range, +kernel_range].
- Parameters:
phi_fn (callable) – Intrinsic SMF:
phi_fn(log10_mstar) → jnp.ndarray. Must accept a 1-D JAX array and return φ [Mpc^-3 dex^-1].log10_mstar (jnp.ndarray, shape (N,)) – log10(M / M_sun) grid at which to evaluate φ_obs.
z (float) – Effective redshift (for Lorentzian width τ_Edd = τ_c (1+z)).
sigma_edd (float) – Eddington kernel Gaussian width [dex]. Default 0.6.
tau_c (float) – Eddington kernel Lorentzian width parameter [dex]. Default 0.05.
n_kernel (int) – Number of quadrature points in δm. Default 201.
kernel_range (float) – Half-width of δm integration range [dex]. Default 3.0 (±5σ_Edd).
- Returns:
phi_obs (jnp.ndarray, shape (N,)) – Observed SMF [Mpc^-3 dex^-1].
- Parameters:
- Return type:
Array
- sum_stat.lf_smf.zalesky25.double_schechter_mass(log10_mstar, log10_mstar_char, log10_phi1, alpha1, log10_phi2, alpha2)[source]
Double Schechter SMF with shared characteristic mass.
Evaluates (Zalesky et al. 2025 Eq. 10):
φ(m) = ln(10) exp(−x) [Φ1* x^{α1+1} + Φ2* x^{α2+1}]where x = 10^{m − m*}.
- Parameters:
log10_mstar (jnp.ndarray) – log10(M / M_sun) at which to evaluate φ.
log10_mstar_char (float) – log10(M* / M_sun) — shared characteristic stellar mass.
log10_phi1 (float) – log10(Φ1* / [Mpc^-3 dex^-1]).
alpha1 (float) – Slope of the first component.
log10_phi2 (float) – log10(Φ2* / [Mpc^-3 dex^-1]).
alpha2 (float) – Slope of the second component.
- Returns:
phi (jnp.ndarray) – φ(log10 M) [Mpc^-3 dex^-1], same shape as
log10_mstar.- Parameters:
- Return type:
Array
References
Zalesky et al. (2025), arXiv:2504.17867, Eq. (10).
- sum_stat.lf_smf.zalesky25.eddington_kernel(delta_m, z, sigma_edd=0.6, tau_c=0.05)[source]
Eddington bias convolution kernel.
Product of a Gaussian (photometric scatter) and a Lorentzian (redshift uncertainty) as defined in Zalesky et al. (2025) Eq. (11):
D(δm, z) = exp(−δm² / 2σ²_Edd) × [τ_Edd / (2π)] / [(τ_Edd/2)² + δm²]
where τ_Edd = τ_c (1 + z). The kernel is unnormalised; the overall normalisation is absorbed by Φ* during fitting.
- Parameters:
delta_m (jnp.ndarray) – Mass offset δm = m_obs − m_true [dex].
z (float) – Redshift used to compute τ_Edd = τ_c (1 + z).
sigma_edd (float) – Gaussian standard deviation [dex]. Default 0.6.
tau_c (float) – Lorentzian width parameter [dex]. Default 0.05.
- Returns:
kernel (jnp.ndarray) – Unnormalised kernel values, same shape as
delta_m.- Parameters:
- Return type:
Array
References
Zalesky et al. (2025), arXiv:2504.17867, Eq. (11).
- sum_stat.lf_smf.zalesky25.schechter_mass(log10_mstar, log10_phi_star, log10_mstar_char, alpha)[source]
Single Schechter SMF in log10-mass (per-dex) units.
Evaluates (Zalesky et al. 2025 Eq. 9):
φ(m) = ln(10) Φ* 10^{(α+1)(m−m*)} exp(−10^{m−m*})- Parameters:
log10_mstar (jnp.ndarray) – log10(M / M_sun) at which to evaluate φ.
log10_phi_star (float) – log10(Φ* / [Mpc^-3 dex^-1]).
log10_mstar_char (float) – log10(M* / M_sun) — characteristic stellar mass.
alpha (float) – Faint-end slope.
- Returns:
phi (jnp.ndarray) – φ(log10 M) [Mpc^-3 dex^-1], same shape as
log10_mstar.- Parameters:
- Return type:
Array
References
Schechter (1976), ApJ 203, 297. Zalesky et al. (2025), arXiv:2504.17867, Eq. (9).
- sum_stat.lf_smf.zalesky25.zalesky2025_smf(log10_mstar, z_bin, population='total', use_map=False)[source]
Evaluate the Zalesky et al. (2025) best-fit SMF for a redshift bin.
Looks up the Schechter parameters from Tables A.1–A.3 and evaluates the appropriate single or double Schechter model via
schechter_mass()ordouble_schechter_mass().- Parameters:
log10_mstar (array-like) – log10(M / M_sun) values at which to evaluate φ.
z_bin (int) – Zero-based index into the redshift bins for the chosen population. See
ZALESKY2025for the bin ordering (Table A.1–A.3).population ({‘total’, ‘star_forming’, ‘quiescent’}) – Galaxy population.
use_map (bool) – If True use MAP (maximum a posteriori) values; otherwise median.
- Returns:
phi (jnp.ndarray) – φ(log10 M) [Mpc^-3 dex^-1].
- Parameters:
- Return type:
Array
Examples
Evaluate the total SMF in the 0.2 < z ≤ 0.5 bin:
>>> import numpy as np >>> log_m = np.linspace(9.0, 12.5, 200) >>> phi = zalesky2025_smf(log_m, z_bin=0, population='total')
Ilbert et al. (2013) galaxy stellar mass function: model and digitized data.
Implements the double Schechter stellar mass function (Eq. 2) and provides the best-fit parameters digitized from Table 2 of Ilbert et al. (2013), covering the full, quiescent, and star-forming galaxy populations over 0.2 < z < 4.
Reference
Ilbert, O. et al. 2013, A&A, 556, A55. DOI: 10.1051/0004-6361/201321100
Cosmology used in the paper
Ωm = 0.3, ΩΛ = 0.7, H0 = 70 km/s/Mpc, Chabrier (2003) IMF.
- sum_stat.lf_smf.ilbert2013.ILBERT2013: dict[str, ndarray] = {'full': array([[ 2.000e-01, 5.000e-01, 7.930e+00, 1.088e+01, 1.000e-01, 1.000e-01, 1.680e-03, 6.100e-04, 6.100e-04, -6.900e-01, 4.000e-01, 3.600e-01, 7.700e-04, 4.000e-04, 5.300e-04, -1.420e+00, 7.000e-02, 1.400e-01, 8.308e+00, 8.000e-02, 9.500e-02], [ 5.000e-01, 8.000e-01, 8.700e+00, 1.103e+01, 8.000e-02, 1.000e-01, 1.220e-03, 3.100e-04, 3.900e-04, -1.000e+00, 3.100e-01, 3.100e-01, 1.600e-04, 3.200e-04, 3.200e-04, -1.640e+00, 2.000e-01, 5.000e-01, 8.226e+00, 6.500e-02, 7.300e-02], [ 8.000e-01, 1.100e+00, 9.130e+00, 1.087e+01, 6.000e-02, 6.000e-02, 2.030e-03, 2.700e-04, 3.200e-04, -5.200e-01, 3.500e-01, 2.700e-01, 2.900e-04, 3.000e-04, 3.000e-04, -1.620e+00, 1.900e-01, 3.200e-01, 8.251e+00, 6.900e-02, 7.300e-02], [ 1.100e+00, 1.500e+00, 9.420e+00, 1.071e+01, 8.000e-02, 8.000e-02, 1.350e-03, 3.400e-04, 3.500e-04, -8.000e-02, 5.500e-01, 5.200e-01, 6.700e-04, 4.100e-04, 4.400e-04, -1.460e+00, 1.600e-01, 2.900e-01, 8.086e+00, 6.900e-02, 7.100e-02], [ 1.500e+00, 2.000e+00, 9.670e+00, 1.074e+01, 7.000e-02, 6.000e-02, 8.800e-04, 1.000e-04, 1.200e-04, -2.400e-01, 2.700e-01, 2.800e-01, 3.300e-04, 6.000e-05, 7.000e-05, -1.600e+00, nan, nan, 7.909e+00, 9.000e-02, 7.200e-02], [ 2.000e+00, 2.500e+00, 1.004e+01, 1.074e+01, 7.000e-02, 7.000e-02, 6.200e-04, 7.000e-05, 7.000e-05, -2.200e-01, 2.900e-01, 2.900e-01, 1.500e-04, 4.000e-05, 4.000e-05, -1.600e+00, nan, nan, 7.682e+00, 1.100e-01, 8.100e-02], [ 2.500e+00, 3.000e+00, 1.024e+01, 1.076e+01, 1.600e-01, 1.500e-01, 2.600e-04, 5.000e-05, 8.000e-05, -1.500e-01, 8.600e-01, 6.800e-01, 1.400e-04, 1.100e-04, 6.000e-05, -1.600e+00, nan, nan, 7.489e+00, 2.300e-01, 1.230e-01], [ 3.000e+00, 4.000e+00, 1.027e+01, 1.074e+01, 4.400e-01, 2.000e-01, 3.000e-05, 2.000e-05, 2.000e-05, 9.500e-01, 1.050e+00, 1.210e+00, 9.000e-05, 7.000e-05, 7.000e-05, -1.600e+00, nan, nan, 7.120e+00, 2.340e-01, 1.680e-01]]), 'quiescent': array([[ 2.000e-01, 5.000e-01, 8.240e+00, 1.091e+01, 7.000e-02, 8.000e-02, 1.270e-03, 2.100e-04, 1.900e-04, -6.800e-01, 2.200e-01, 1.300e-01, 3.000e-05, 7.000e-05, 7.000e-05, -1.520e+00, 2.700e-01, 4.400e-01, 7.986e+00, 8.700e-02, 1.020e-01], [ 5.000e-01, 8.000e-01, 8.960e+00, 1.093e+01, 4.000e-02, 4.000e-02, 1.110e-03, 1.000e-04, 9.000e-05, -4.600e-01, 5.000e-02, 5.000e-02, nan, nan, nan, nan, nan, nan, 7.920e+00, 5.400e-02, 5.800e-02], [ 8.000e-01, 1.100e+00, 9.370e+00, 1.081e+01, 3.000e-02, 3.000e-02, 1.570e-03, 9.000e-05, 9.000e-05, -1.100e-01, 5.000e-02, 5.000e-02, nan, nan, nan, nan, nan, nan, 7.985e+00, 4.400e-02, 4.900e-02], [ 1.100e+00, 1.500e+00, 9.600e+00, 1.072e+01, 3.000e-02, 3.000e-02, 7.000e-04, 3.000e-05, 3.000e-05, 4.000e-02, 6.000e-02, 6.000e-02, nan, nan, nan, nan, nan, nan, 7.576e+00, 4.100e-02, 4.600e-02], [ 1.500e+00, 2.000e+00, 9.870e+00, 1.073e+01, 3.000e-02, 4.000e-02, 2.200e-04, 1.000e-05, 1.000e-05, 1.000e-01, 9.000e-02, 9.000e-02, nan, nan, nan, nan, nan, nan, 7.093e+00, 4.900e-02, 5.300e-02], [ 2.000e+00, 2.500e+00, 1.011e+01, 1.059e+01, 6.000e-02, 6.000e-02, 1.000e-04, 1.000e-05, 1.000e-05, 8.800e-01, 2.300e-01, 2.100e-01, nan, nan, nan, nan, nan, nan, 6.834e+00, 7.600e-02, 8.400e-02], [ 2.500e+00, 3.000e+00, 1.039e+01, 1.027e+01, 1.000e-01, 8.000e-02, 3.000e-06, 6.000e-06, 2.000e-06, 3.260e+00, 9.300e-01, 9.300e-01, nan, nan, nan, nan, nan, nan, 6.340e+00, 7.900e-02, 1.210e-01]]), 'star_forming': array([[ 2.000e-01, 5.000e-01, 7.860e+00, 1.060e+01, 1.600e-01, 1.100e-01, 1.160e-03, 3.100e-04, 4.100e-04, 1.700e-01, 5.700e-01, 6.500e-01, 1.080e-03, 2.900e-04, 3.100e-04, -1.400e+00, 4.000e-02, 4.000e-02, 8.051e+00, 9.100e-02, 1.010e-01], [ 5.000e-01, 8.000e-01, 8.640e+00, 1.062e+01, 1.700e-01, 1.000e-01, 7.700e-04, 2.200e-04, 3.000e-04, 3.000e-02, 5.800e-01, 7.900e-01, 8.400e-04, 2.800e-04, 3.500e-04, -1.430e+00, 6.000e-02, 9.000e-02, 7.933e+00, 6.900e-02, 7.300e-02], [ 8.000e-01, 1.100e+00, 9.040e+00, 1.080e+01, 1.100e-01, 1.200e-01, 5.000e-04, 3.300e-04, 3.100e-04, -6.700e-01, 7.500e-01, 6.700e-01, 4.800e-04, 4.100e-04, 4.100e-04, -1.510e+00, 1.100e-01, 6.700e-01, 7.908e+00, 6.500e-02, 6.700e-02], [ 1.100e+00, 1.500e+00, 9.290e+00, 1.067e+01, 1.100e-01, 9.000e-02, 5.300e-04, 2.300e-04, 1.800e-04, 1.100e-01, 6.100e-01, 7.800e-01, 8.700e-04, 2.900e-04, 4.000e-04, -1.370e+00, 8.000e-02, 1.500e-01, 7.916e+00, 5.900e-02, 6.100e-02], [ 1.500e+00, 2.000e+00, 9.650e+00, 1.066e+01, 7.000e-02, 6.000e-02, 7.500e-04, 8.000e-05, 1.000e-04, -8.000e-02, 2.800e-01, 3.100e-01, 3.900e-04, 7.000e-05, 7.000e-05, -1.600e+00, nan, nan, 7.841e+00, 9.700e-02, 7.100e-02], [ 2.000e+00, 2.500e+00, 1.001e+01, 1.073e+01, 8.000e-02, 8.000e-02, 5.000e-04, 7.000e-05, 7.000e-05, -3.300e-01, 3.300e-01, 3.300e-01, 1.500e-04, 5.000e-05, 5.000e-05, -1.600e+00, nan, nan, 7.614e+00, 1.230e-01, 8.400e-02], [ 2.500e+00, 3.000e+00, 1.020e+01, 1.090e+01, 2.000e-01, 2.100e-01, 1.500e-04, 8.000e-05, 8.000e-05, -6.200e-01, 1.040e+00, 8.400e-01, 1.100e-04, 7.000e-05, 7.000e-05, -1.600e+00, nan, nan, 7.453e+00, 1.930e-01, 1.280e-01], [ 3.000e+00, 4.000e+00, 1.026e+01, 1.074e+01, 2.900e-01, 1.700e-01, 2.000e-05, 1.000e-05, 1.000e-05, 1.310e+00, 8.700e-01, 8.700e-01, 1.000e-04, 6.000e-05, 4.000e-05, -1.600e+00, nan, nan, 7.105e+00, 2.450e-01, 1.700e-01]])}
Digitized Table 2 of Ilbert et al. (2013).
Keys are
'full','quiescent', and'star_forming'. Each value is a numpy array of shape (n_zbins, 21). UseILBERT2013_COLUMNSto map column names to indices.
- sum_stat.lf_smf.ilbert2013.ILBERT2013_COLUMNS: dict[str, int] = {'alpha1': 9, 'alpha1_err_hi': 10, 'alpha1_err_lo': 11, 'alpha2': 15, 'alpha2_err_hi': 16, 'alpha2_err_lo': 17, 'log_m_complete': 2, 'log_m_star': 3, 'log_m_star_err_hi': 4, 'log_m_star_err_lo': 5, 'log_rho_star': 18, 'log_rho_star_err_hi': 19, 'log_rho_star_err_lo': 20, 'phi1_star': 6, 'phi1_star_err_hi': 7, 'phi1_star_err_lo': 8, 'phi2_star': 12, 'phi2_star_err_hi': 13, 'phi2_star_err_lo': 14, 'z_hi': 1, 'z_lo': 0}
Column name → column index in the
ILBERT2013arrays.
- sum_stat.lf_smf.ilbert2013.double_schechter(log10_mstar, log10_mstar_char, phi1_star, alpha1, phi2_star, alpha2)[source]
Double Schechter stellar mass function in log10-mass units.
Evaluates the double Schechter function of Ilbert et al. (2013) Eq. (2), converting to per-dex units:
φ(log10 M) = ln(10) exp(−x) [φ1* x^(α1+1) + φ2* x^(α2+1)]
where x = M / M* = 10^(log10_M − log10_M*). For a single Schechter function set
phi2_star = 0.0.- Parameters:
log10_mstar (jnp.ndarray) – log10(M / M_sun) at which to evaluate φ.
log10_mstar_char (float) – log10(M* / M_sun) — characteristic stellar mass.
phi1_star (float) – φ1* [Mpc^-3] — normalisation of the first Schechter component.
alpha1 (float) – α1 — slope of the first Schechter component.
phi2_star (float) – φ2* [Mpc^-3] — normalisation of the second Schechter component. Set to 0.0 for a single Schechter function.
alpha2 (float) – α2 — slope of the second Schechter component. Ignored when
phi2_star = 0.0.
- Returns:
phi (jnp.ndarray) – φ(log10 M) [Mpc^-3 dex^-1], same shape as
log10_mstar.- Parameters:
- Return type:
Array
References
Ilbert et al. (2013), A&A 556, A55, Eq. (2).
- sum_stat.lf_smf.ilbert2013.ilbert2013_smf(log10_mstar, z_bin, population='full')[source]
Evaluate the Ilbert et al. (2013) SMF for a given redshift bin.
Looks up the best-fit double Schechter parameters from Table 2 and evaluates the model via
double_schechter().- Parameters:
log10_mstar (array-like) – log10(M / M_sun) values at which to evaluate φ.
z_bin (int) – Zero-based index into the redshift bins for the chosen population. See
ILBERT2013for the bin ordering.population ({‘full’, ‘quiescent’, ‘star_forming’}) – Galaxy population.
- Returns:
phi (jnp.ndarray) – φ(log10 M) [Mpc^-3 dex^-1].
- Parameters:
- Return type:
Array
Examples
Evaluate the full SMF in the 0.2 < z < 0.5 bin:
>>> import numpy as np >>> log_m = np.linspace(9.0, 12.5, 200) >>> phi = ilbert2013_smf(log_m, z_bin=0, population='full')