hmf.mass_function.fitting_functions.FittingFunction

class hmf.mass_function.fitting_functions.FittingFunction[source]

Base-class for a halo mass function fit.

This class should not be called directly, rather use a subclass which is specific to a certain fitting formula. The only method necessary to define for any subclass is fsigma, as well as a dictionary of default parameters as a class variable _defaults. Model parameters defined here are accessed through the params instance attribute (and may be overridden at instantiation by the user). A subclass may optionally define a cutmask property, to override the default behaviour of returning True for the whole range.

In addition, several class attributes, req_*, identify the required arguments for a given subclass. These must be set accordingly.

Examples

The following would be an example of defining the Sheth-Tormen mass function (which is already included), showing the basic idea of subclassing this class:

>>> class SMT(FittingFunction):
>>>     # Subclass requirements
>>>     req_sigma = False
>>>     req_z     = False
>>>
>>>     # Default parameters
>>>     _defaults = {"a":0.707, "p":0.3, "A":0.3222}
>>>
>>>     @property
>>>     def fsigma(self):
>>>        A = self.params['A']
>>>        a = self.params["a"]
>>>        p = self.params['p']
>>>
>>>        return (A * np.sqrt(2.0 * a / np.pi) * self.nu * np.exp(-(a * self.nu2) / 2.0)
>>>               * (1 + (1.0 / (a * self.nu2)) ** p))

In that example, we did not specify cutmask.

Parameters
  • nu2 (array_like) – A vector of peak-heights, \(\delta_c^2/\sigma^2\) corresponding to m

  • m (array_like, optional) – A vector of halo masses [units M_sun/h]. Only necessary if req_mass is True. Typically provides limits of applicability. Must correspond to nu2.

  • z (float, optional) – The redshift. Only required if req_z is True, in which case the default is 0.

  • n_eff (array_like, optional) – The effective spectral index at m. Only required if req_neff is True.

  • mass_definition (hmf.halos.mass_definitions.MassDefinition instance, optional) – A halo mass definition. Only required for fits which explicitly include a parameterization for halo definition.

  • cosmo (astropy.cosmology.FLRW instance, optional) – A cosmology. Default is Planck15. Either omegam_z or cosmo is required if req_omz is True. If both are passed, omegam_z takes precedence.

  • **model_parameters (unpacked-dictionary) – These parameters are model-specific. For any model, list the available parameters (and their defaults) using <model>._defaults

Methods

__init__(nu2[, m, z, n_eff, …])

Initialize self.

get_measured_mdef()

get_models()

Get a dictionary of all implemented models for this component.

Attributes

cutmask

A logical mask array specifying which elements of fsigma are within the fitted range.

fsigma

The function \(f(\sigma)\equiv\nu f(\nu)\).

lnsigma

Negative log of sigma.

nu

The peak height, sigma/delta_c.

omegam_z

Normalised matter density at current redshift.

req_mass

Whether m is required for this subclass

req_neff

Whether n_eff is required for this subclass

sigma

The sqrt of mass variance as a function of mass.

sim_definition

Details of the defining simulation, subclass of SimDetails