Warren¶
- class hmf.core.fits.Warren(*, A=0.7234, b=1.625, c=0.2538, d=1.1982, e=1.0)[source]¶
The Warren et al. (2006) mass function.
\[f(\sigma) = A\left[\left(\frac{e}{\sigma}\right)^b + c\right] \exp\left(-\frac{d}{\sigma^2}\right).\]The paper’s (A, a, b, c) are hmf’s (A, b, c, d), with e = 1.
- Parameters:
Model metadata
- alias: ClassVar[str | None] = 'Warren'¶
The short name the model is registered under, if any. Set by the
aliasclass keyword; never inherited.
- calibration_domain: ClassVar[Domain | None] = Domain(bounds=(('m', Interval(lower=10000000000.0, upper=1000000000000000.0, unit=Unit("solMass / littleh"), lower_open=False, upper_open=False)), ('z', Interval(lower=0.0, upper=0.0, unit=None, lower_open=False, upper_open=False))), source="Warren et al. 2006 state only 'over five orders of magnitude' in mass (Sec. 2); the range 1e10-1e15 Msun/h is Bhattacharya et al. 2011, Table 3. z: not stated, a single epoch, presumably z = 0. One cosmology: (Omega_m, Omega_b, n, h, sigma_8) = (0.3, 0.04, 1, 0.7, 0.9) (eq. 1).")¶
Where the fit was calibrated against simulations, with its source;
Nonefor a fit that was not calibrated (e.g. an analytic one).
- measured_mass_definition: ClassVar[MeasuredMassDefinition] = MeasuredMassDefinition(kind='fof', linking_length=0.2, overdensity=None, preferred=None, note='Warren et al. 2006, Sec. 2, with the N(1 - N^-0.6) correction (eq. 3).')¶
The halo mass definition the fit was measured in.
- modifies_dndm: ClassVar[bool] = False¶
Whether
modify_dndm_kernel()changes the mass function (see “Post-processing the mass function” in themodule documentation); if False, it is the identity.
- normalized¶
Whether \(f\) integrates to 1 over \(\ln\sigma^{-1}\) (all mass in haloes).
- parameter_source: ClassVar[str] = 'Warren et al. 2006 (arXiv v1), eq. 8.'¶
The exact source (paper, version, table or equation) of the parameter defaults, e.g. “Tinker et al. 2008, ApJ 688, 709 (published), Table 2”.
- references: ClassVar[tuple[str, ...]] = ('Warren, M. S., et al., 2006. ApJ 646, 881. https://doi.org/10.1086/504962',)¶
References to cite when the model is used, each a formatted citation.
- requires: ClassVar[frozenset[str]] = frozenset({})¶
The inputs (from
INPUTS) thatfsigma()needs, besides sigma.
- simulations: ClassVar[SimulationDetails | None] = SimulationDetails(box_size=<Quantity [ 96., 135., 192., 272., 384., 543., 768., 1086., 1536., 2172., 2583., 3072.] Mpc / littleh>, n_particles=(1073741824, 1073741824, 1073741824, 1073741824, 1073741824, 1073741824, 1073741824, 1073741824, 1073741824, 1073741824, 1073741824, 1073741824), omega_m=(0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3), omega_b=(0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04), sigma_8=(0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9, 0.9), h=(0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7, 0.7), n_s=(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0), softening=None, transfer=('CMBFAST', 'CMBFAST', 'CMBFAST', 'CMBFAST', 'CMBFAST', 'CMBFAST', 'CMBFAST', 'CMBFAST', 'CMBFAST', 'CMBFAST', 'CMBFAST', 'CMBFAST'), z_start=None, initial_conditions=None, halo_finder=None, n_min=400, z_range=None, names=None, notes='16 runs in all (three 384, two 272 and two 3072 Mpc/h boxes). Softening: 2.1 kpc/h (physical) in the highest-resolution run to 98 kpc/h (comoving) in the largest; not stated for the others. Redshift: not stated (a single epoch, presumably z = 0). FoF masses corrected by N(1 - N^-0.6) (eq. 3); fit by maximum likelihood on Poisson counts.', source='Warren et al. 2006 (arXiv v1), Sec. 2 and eq. 1.')¶
The simulations the fit was calibrated on (None for a fit to no simulations).
- valid_domain: ClassVar[Domain] = Domain(bounds=(('sigma', Interval(lower=0.0, upper=inf, unit=None, lower_open=True, upper_open=True)),), source='sigma > 0.')¶
fsigma()raises outside it.- Type:
Where the formula is defined or sensible
Methods
- check_required(x: FitInputs) None¶
Raise if an input needed to evaluate the fit is missing from
x.- Raises:
ValueError – If an input in
requires(or needed to checkvalid_domain) is missing.
- check_valid(x: FitInputs) None¶
Raise if any input is outside
valid_domain.- Raises:
DomainError – Always, if any value is outside the valid domain: this does not depend on any policy.
- classmethod coerce(value: object) Self¶
Convert a value to a model of this kind: the converter of a model field.
- Parameters:
value – An instance of
cls, which is returned as it is; or a name, import path or class thatget()accepts, which is looked up and instantiated with its default parameters.- Returns:
An instance of
cls.- Return type:
- Raises:
ModelNotFoundError – If
valueis a name that no model of this kind is known by.TypeError – If
valueis of any other type, or names a class that is not a concrete subclass ofcls.
Examples
>>> from hmf.core.filters import Filter, TopHat >>> Filter.coerce("TopHat") == TopHat() True
- classmethod domain_inputs() frozenset[str]¶
The inputs (besides sigma) needed to evaluate the fit and check both domains.
- classmethod fields_info() tuple[FieldInfo, ...]¶
Describe this class’s fields, without creating an instance.
- Returns:
The name, type, default and documentation of each field.
- Return type:
tuple of FieldInfo
- fsigma(sigma: ArrayLike, *, z: ArrayLike | None = None, omega_m_z: ArrayLike | None = None, delta_halo: ArrayLike | None = None, delta_c: ArrayLike | None = None, n_eff: ArrayLike | None = None, m: ArrayLike | None = None) ndarray[tuple[Any, ...], dtype[float64]]¶
The multiplicity function, \(f(\sigma) = \nu f(\nu)\).
mmust be a Quantity (seehmf.core.units); every other input is dimensionless. Code that already has plain arrays in canonical units callsfsigma_kernel()orevaluate_fsigma()instead (see “Evaluating a fit” in themodule documentation). It applies no calibration policy (seeevaluate_fsigma()for that), but always checksvalid_domain.- Parameters:
sigma – \(\sigma(m, z)\).
z – Redshift.
omega_m_z – \(\Omega_m(z)\).
delta_halo – The halo overdensity relative to the mean density.
delta_c – The critical overdensity for collapse.
n_eff – The effective spectral index.
m – The halo mass, a Quantity (e.g. in
Msun_h).
- Returns:
\(f(\sigma)\) (dimensionless), broadcast over the inputs.
- Return type:
- Raises:
ValueError – If an input the fit requires is not given.
UnitBoundaryError – If
mis not a Quantity.DomainError – If any input is outside
valid_domain, or makes the fit’s parameters unphysical.
- fsigma_kernel(x: FitInputs) ndarray[tuple[Any, ...], dtype[float64]]¶
fsigma()at kernel level, from inputs that are plain arrays.The inputs are in canonical units (the mass in Msun/h); see
hmf.core._kernels. It checks the valid domain, asfsigma()does, and applies no calibration policy (seeevaluate_fsigma()).- Parameters:
x – The inputs.
- Return type:
- Raises:
ValueError – If an input the fit requires is not in
x.DomainError – As for
fsigma().
- classmethod get(name: str | type[Model]) type[Self]¶
Look up a model of this kind.
- Parameters:
name – An alias (
"Tinker08"), a qualified name ("hmf.core.fits:Tinker08"), an import path to a class not yet imported ("pkg.mod:Cls"or"pkg.mod.Cls"), or a class.- Returns:
The model class (not an instance). It is always a subclass of
cls.- Return type:
- Raises:
ModelNotFoundError – If no model of this kind is known by
name, even after loading thehmf.modelsentry points and tryingnameas an import path.TypeError – If
nameresolves to something that is not a concrete subclass ofcls.
- classmethod get_aliases() Mapping[str, str]¶
Return a read-only mapping from alias to qualified name, for this kind.
- classmethod get_models() Mapping[str, type[Self]]¶
Return the registered models of this kind, by qualified name.
Plugins advertised in the
hmf.modelsentry-point group are loaded first.- Returns:
A read-only mapping from qualified name to class. Called on a kind, it is a live view of the registry. Called on a non-kind subclass, it holds only the models that subclass it.
- Return type:
Mapping
- in_calibration_domain(x: FitInputs) bool | ndarray[tuple[Any, ...], dtype[bool]]¶
Whether each input is inside
calibration_domain.- Parameters:
x – The inputs, from
inputs().- Returns:
A bool if every input is a scalar, else the broadcast array.
Trueif the fit has no calibration domain (it isNone).- Return type:
bool or numpy.ndarray of bool
- Raises:
ValueError – If an input needed to check the domain was not given.
- inputs(sigma: ArrayLike, *, z: ArrayLike | None = None, omega_m_z: ArrayLike | None = None, delta_halo: ArrayLike | None = None, delta_c: ArrayLike | None = None, n_eff: ArrayLike | None = None, m: ArrayLike | None = None) FitInputs¶
Collect the inputs, checking that the required ones are given.
Parameters are as for
fsigma()(mis a Quantity). Code that already has plain arrays in canonical units buildsFitInputsdirectly (see “Evaluating a fit” in themodule documentation).- Returns:
The inputs as plain arrays, in canonical units.
- Return type:
- Raises:
ValueError – If an input in
requires(or needed to checkvalid_domain) is missing.
- modify_dndm(m: Any, dndm: Any, *, z: ArrayLike, ngtm: Any, H0: Any, omega_m0: ArrayLike) Any¶
Map the mass function computed from
fsigma()to the fit’s.The identity unless
modifies_dndm(see “Post-processing the mass function” in themodule documentation). Every fit takes the same arguments, whether it uses them or not. This method converts them and callsmodify_dndm_kernel(), which a mass-functionStagecalls directly.- Parameters:
m – Halo masses, a Quantity: in h-units, or physical units (converted with
H0).dndm – The mass function from
fsigma(), a Quantity (number density per mass).z – Redshift.
ngtm – The cumulative mass function n(>m) from
fsigma(), a Quantity.H0 – The Hubble constant, a scalar Quantity (e.g.
70 * H0_unit). It converts physical units, and gives h to fits whose formula is in physical units.omega_m0 – The density parameter of CDM + baryons today.
- Returns:
The fit’s mass function, in
dndm_unit.- Return type:
Quantity
- modify_dndm_kernel(m: ArrayLike, dndm: ArrayLike, *, z: ArrayLike, ngtm: ArrayLike, h: ArrayLike, omega_m0: ArrayLike) ndarray[tuple[Any, ...], dtype[float64]]¶
modify_dndm()at kernel level, on plain arrays.A pure kernel in canonical units (see
hmf.core._kernels): the identity, unless the fit setsmodifies_dndm(its class documentation describes the correction). All arguments broadcast. It checks the arguments that say where the mass function is evaluated (m,z,h,omega_m0), from their extent;dndmandngtmare values it maps, and may be NaN (e.g. masked by a domain policy).- Parameters:
- Returns:
The fit’s mass function, in h^4 / (Msun Mpc^3).
- Return type:
- Raises:
DomainError – If an
m,horomega_m0is not finite and > 0, or azis not finite and >= 0.