Source code for hierarc.LensPosterior.anisotropy_config

import numpy as np


[docs] class AnisotropyConfig(object): """Class to manage the anisotropy model and parameters for the Posterior processing.""" def __init__(self, anisotropy_model, r_eff): """ :param anisotropy_model: type of stellar anisotropy model. Supported are 'OM' and 'GOM' or 'const', see details in lenstronomy.Galkin module :param r_eff: half-light radius of the deflector galaxy """ self._r_eff = r_eff self._anisotropy_model = anisotropy_model if self._anisotropy_model == "OM": self._ani_param_array = np.array( [0.1, 0.2, 0.5, 1, 2, 5] ) # used for r_ani OsipkovMerritt anisotropy description elif self._anisotropy_model == "GOM": self._ani_param_array = [ np.array([0.1, 0.2, 0.5, 1, 2, 5]), np.array([0, 0.5, 0.8, 1]), ] elif self._anisotropy_model == "const": self._ani_param_array = np.linspace( -0.49, 1, 7 ) # used for constant anisotropy description else: raise ValueError( "anisotropy model %s not supported." % self._anisotropy_model ) @property def kwargs_anisotropy_base(self): """ :return: keyword arguments of base anisotropy model configuration """ if self._anisotropy_model == "OM": a_ani_0 = 1 r_ani = a_ani_0 * self._r_eff kwargs_anisotropy_0 = {"r_ani": r_ani} elif self._anisotropy_model == "GOM": a_ani_0 = 1 r_ani = a_ani_0 * self._r_eff beta_inf_0 = 1 kwargs_anisotropy_0 = {"r_ani": r_ani, "beta_inf": beta_inf_0} elif self._anisotropy_model == "const": a_ani_0 = 0.1 kwargs_anisotropy_0 = {"beta": a_ani_0} else: raise ValueError( "anisotropy model %s not supported." % self._anisotropy_model ) return kwargs_anisotropy_0 @property def ani_param_array(self): """ :return: numpy array of anisotropy parameter values to be explored """ return self._ani_param_array
[docs] def anisotropy_kwargs(self, a_ani, beta_inf=None): """ :param a_ani: anisotropy parameter :param beta_inf: anisotropy at infinity (only used for 'GOM' model) :return: list of anisotropy keyword arguments, value of anisotropy parameter list """ if self._anisotropy_model == "OM": r_ani = a_ani * self._r_eff kwargs_anisotropy = {"r_ani": r_ani} elif self._anisotropy_model == "GOM": r_ani = a_ani * self._r_eff kwargs_anisotropy = {"r_ani": r_ani, "beta_inf": beta_inf} elif self._anisotropy_model == "const": kwargs_anisotropy = {"beta": a_ani} else: raise ValueError( "anisotropy model %s not supported." % self._anisotropy_model ) return kwargs_anisotropy