PS¶
- class hmf.core.fits.PS[source]¶
The Press & Schechter (1974) mass function.
\[f(\sigma) = \sqrt{2/\pi}\,\nu\exp(-\nu^2/2).\]It follows from spherical collapse with the “fudge factor” of 2, which makes it normalised: all mass is in haloes. It has no free parameters.
Model metadata
- alias: ClassVar[str | None] = 'PS'¶
The short name the model is registered under, if any. Set by the
aliasclass keyword; never inherited.
- calibration_domain: ClassVar[Domain | None] = None¶
not calibrated on simulations.
- Type:
Analytic (spherical collapse)
- measured_mass_definition: ClassVar[MeasuredMassDefinition] = MeasuredMassDefinition(kind='so_virial', linking_length=None, overdensity=None, preferred=None, note='Analytic: spherical collapse, i.e. virialised haloes.')¶
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] = 'Press & Schechter 1974: analytic, no free parameters.'¶
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, ...]] = ('Press, W. H., Schechter, P., 1974. ApJ 187, 425. https://doi.org/10.1086/152650',)¶
References to cite when the model is used, each a formatted citation.
- requires: ClassVar[frozenset[str]] = frozenset({'delta_c'})¶
The inputs (from
INPUTS) thatfsigma()needs, besides sigma.
- simulations: ClassVar[SimulationDetails | None] = None¶
The simulations the fit was calibrated on (None for a fit to no simulations).
- valid_domain: ClassVar[Domain] = Domain(bounds=(('delta_c', Interval(lower=0.0, upper=inf, unit=None, lower_open=True, upper_open=True)), ('sigma', Interval(lower=0.0, upper=inf, unit=None, lower_open=True, upper_open=True))), source='sigma > 0 and delta_c > 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.