Source code for hierarc.Sampling.ParamManager.source_param

_SNE_DISTRIBUTIONS = ["GAUSSIAN", "NONE"]


[docs] class SourceParam(object): """Manager for the source property parameters (currently particularly source magnitudes for SNe)""" def __init__( self, sne_apparent_m_sampling=False, sne_distribution="GAUSSIAN", kwargs_fixed=None, z_apparent_m_anchor=0.1, ): """ :param sne_apparent_m_sampling: boolean, if True, samples/queries SNe unlensed magnitude distribution (not intrinsic magnitudes but apparent!) (only adviced when evaluating supernova datasets that can constrain this parameter, or when providing priors) :param sne_distribution: string, apparent non-lensed brightness distribution (in linear space). Currently supports: 'GAUSSIAN': Gaussian distribution :param z_apparent_m_anchor: redshift of pivot/anchor at which the apparent SNe brightness is defined relative to :param kwargs_fixed: keyword arguments of fixed parameters (and values) """ self._sne_apparent_m_sampling = sne_apparent_m_sampling if sne_distribution not in _SNE_DISTRIBUTIONS: raise ValueError( "SNE distribution %s not supported. Please chose among %s." % (sne_distribution, _SNE_DISTRIBUTIONS) ) self._sne_distribution = sne_distribution if kwargs_fixed is None: kwargs_fixed = {} self._kwargs_fixed = kwargs_fixed self._z_apparent_m_anchor = z_apparent_m_anchor
[docs] def param_list(self, latex_style=False): """ :param latex_style: bool, if True returns strings in latex symbols, else in the convention of the sampler :param i: int, index of the parameter to start with :return: list of the free parameters being sampled in the same order as the sampling """ name_list = [] if self._sne_apparent_m_sampling is True: if "mu_sne" not in self._kwargs_fixed: if latex_style is True: name_list.append(r"$\overline{m}_{\rm p}$") else: name_list.append("mu_sne") if self._sne_distribution in ["GAUSSIAN"]: if "sigma_sne" not in self._kwargs_fixed: if latex_style is True: name_list.append(r"$\sigma(m_{\rm p})$") else: name_list.append("sigma_sne") return name_list
[docs] def args2kwargs(self, args, i=0): """ :param args: sampling argument list :param i: index of argument list to start reading out :return: keyword argument list with parameter names """ kwargs = {} if self._sne_apparent_m_sampling is True: if "mu_sne" in self._kwargs_fixed: kwargs["mu_sne"] = self._kwargs_fixed["mu_sne"] else: kwargs["mu_sne"] = args[i] i += 1 if self._sne_distribution in ["GAUSSIAN"]: if "sigma_sne" in self._kwargs_fixed: kwargs["sigma_sne"] = self._kwargs_fixed["sigma_sne"] else: kwargs["sigma_sne"] = args[i] i += 1 kwargs["z_apparent_m_anchor"] = self._z_apparent_m_anchor return kwargs, i
[docs] def kwargs2args(self, kwargs): """ :param kwargs: keyword argument list of parameters :return: sampling argument list in specified order """ args = [] if self._sne_apparent_m_sampling is True: if "mu_sne" not in self._kwargs_fixed: args.append(kwargs["mu_sne"]) if self._sne_distribution in ["GAUSSIAN"]: if "sigma_sne" not in self._kwargs_fixed: args.append(kwargs["sigma_sne"]) return args