ConcentrationModel

class hmf.core.concentration.ConcentrationModel[source]

The kind of concentration-mass relations: \(c(M, z)\).

Subclasses implement _ln_concentration_and_slope() (on checked plain arrays) and mass_definition, and declare both domains. The domains bound m (in Msun/h, in the relation’s own definition) and z.

Attributes

alias: ClassVar[str | None] = None

The short name the model is registered under, if any. Set by the alias class keyword; never inherited.

calibration

Where this model was calibrated, with its source (None if it was not).

The class’s calibration_domain, unless it depends on the instance’s parameters.

calibration_domain: ClassVar[Domain | None] = None

The calibration domain of the class, with its source (None if it was not calibrated): that of its default parameters. Ask an instance for calibration.

mass_definition

The mass definition the relation’s masses and concentrations are in.

parameter_source: ClassVar[str] = ''

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, ...]] = ()

References to cite when the model is used, each a formatted citation.

valid_domain: ClassVar[Domain] = Domain(bounds=(('m', Interval(lower=0.0, upper=inf, unit=Unit("solMass / littleh"), lower_open=True, upper_open=True)), ('z', Interval(lower=0.0, upper=inf, unit=None, lower_open=False, upper_open=True))), source='m > 0, z >= 0.')

ln_concentration_and_slope_kernel() raises a DomainError outside it.

Type:

Where the relation can be evaluated

Methods

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 that get() accepts, which is looked up and instantiated with its default parameters.

Returns:

An instance of cls.

Return type:

Model

Raises:
  • ModelNotFoundError – If value is a name that no model of this kind is known by.

  • TypeError – If value is of any other type, or names a class that is not a concrete subclass of cls.

Examples

>>> from hmf.core.filters import Filter, TopHat
>>> Filter.coerce("TopHat") == TopHat()
True
concentration(*, m: Any, z: ArrayLike) → ndarray[tuple[Any, ...], dtype[float64]][source]

The median concentration c(M, z), in mass_definition.

Parameters:
  • m (Quantity) – Masses in Msun/h, in mass_definition.

  • z (float or array_like) – Redshifts, broadcast with m.

Returns:

Dimensionless, with the broadcast shape.

Return type:

numpy.float64 or numpy.ndarray

Raises:

DomainError – Outside valid_domain.

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

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:

type

Raises:
  • ModelNotFoundError – If no model of this kind is known by name, even after loading the hmf.models entry points and trying name as an import path.

  • TypeError – If name resolves to something that is not a concrete subclass of cls.

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.models entry-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_kernel(*, m: ArrayLike, z: ArrayLike) → ndarray[tuple[Any, ...], dtype[bool]][source]

Whether (m, z) is inside calibration, at kernel level.

Parameters:
  • m – Masses in Msun/h, in mass_definition.

  • z – Redshifts, broadcast with m.

Returns:

With the broadcast shape; True everywhere without a calibration domain.

Return type:

numpy.ndarray of bool

Raises:

DomainError – If a mass or redshift is outside valid_domain (from their extent).

ln_concentration_and_slope_kernel(*, m: ArrayLike, z: ArrayLike) → tuple[ndarray[tuple[Any, ...], dtype[float64]], ndarray[tuple[Any, ...], dtype[float64]]][source]

Ln c(M, z) and its slope \(d\ln c/d\ln M\), at kernel level.

Parameters:
  • m – Masses in Msun/h, in mass_definition: a plain array.

  • z – Redshifts, broadcast with m.

Returns:

ln_c, dln_c_dln_m – Dimensionless, with the broadcast shape.

Return type:

numpy.ndarray

Raises:

DomainError – If a mass or redshift is outside valid_domain (from their extent).

classmethod qualified_name() → str

Return this class’s qualified name, package.module:Class.