Source code for lenstronomy.ImSim.differential_extinction

from lenstronomy.LightModel.light_model import LightModel
import numpy as np

__all__ = ["DifferentialExtinction"]


[docs] class DifferentialExtinction(object): """Class to compute an extinction (for a specific band/wavelength). This class uses the functionality available in the LightModel module to describe an optical depth tau_ext to compute the extinction on the sky/image. """
[docs] def __init__( self, optical_depth_model=None, profile_kwargs_list=None, tau0_index=0 ): """ :param optical_depth_model: list of strings naming the profiles (same convention as LightModel module) describing the optical depth of the extinction :param profile_kwargs_list: list of dicts, keyword arguments used to initialize light model profile classes in the same order of the optical_depth_model list. If any of the profile_kwargs, are None, then that profile will be initialized using default settings. """ if optical_depth_model is None: optical_depth_model = [] self._profile = LightModel( light_model_list=optical_depth_model, profile_kwargs_list=profile_kwargs_list, ) if len(optical_depth_model) == 0: self._compute_bool = False else: self._compute_bool = True self._tau0_index = tau0_index
@property def compute_bool(self): """ :return: True when a differential extinction is set, False otherwise """ return self._compute_bool
[docs] def extinction(self, x, y, kwargs_extinction=None, kwargs_special=None): """ :param x: coordinate in image plane of flux intensity :param y: coordinate in image plane of flux intensity :param kwargs_extinction: keyword argument list matching the extinction profile :param kwargs_special: keyword arguments hosting special parameters, here required 'tau0_list' :return: extinction corrected flux """ if self._compute_bool is False or kwargs_extinction is None: return 1 tau = self._profile.surface_brightness(x, y, kwargs_list=kwargs_extinction) tau0_list = kwargs_special.get("tau0_list", None) if tau0_list is not None: tau0 = tau0_list[self._tau0_index] else: tau0 = 1 return np.exp(-tau0 * tau)