Source code for lenstronomy.ImSim.MultiBand.multi_data_base

__all__ = ["MultiDataBase"]


[docs] class MultiDataBase(object): """Base class with definitions that are shared among all variations of modelling multiple data sets."""
[docs] def __init__(self, image_model_list, compute_bool=None): """ :param image_model_list: list of ImageModel instances (supporting linear inversions) :param compute_bool: list of booleans for each imaging band indicating whether to model it or not. """ self._num_bands = len(image_model_list) if compute_bool is None: compute_bool = [True] * self._num_bands else: if not len(compute_bool) == self._num_bands: raise ValueError( "compute_bool statement has not the same range as number of bands available!" ) self._compute_bool = compute_bool self._imageModel_list = image_model_list self._num_response_list = [] for imageModel in image_model_list: self._num_response_list.append(imageModel.num_data_evaluate)
@property def num_bands(self): return self._num_bands @property def num_response_list(self): """List of number of data elements that are used in the minimization. :return: list of integers """ return self._num_response_list
[docs] def reset_point_source_cache(self, cache=True): """Deletes all the cache in the point source class and saves it from then on. :return: """ for imageModel in self._imageModel_list: imageModel.reset_point_source_cache(cache=cache)
@property def num_data_evaluate(self): num = 0 for i in range(self._num_bands): if self._compute_bool[i] is True: num += self._imageModel_list[i].num_data_evaluate return num
[docs] def num_param_linear( self, kwargs_lens, kwargs_source, kwargs_lens_light, kwargs_ps ): """ :return: number of linear coefficients to be solved for in the linear inversion """ num = 0 for i in range(self._num_bands): if self._compute_bool[i] is True: num += self._imageModel_list[i].num_param_linear( kwargs_lens, kwargs_source, kwargs_lens_light, kwargs_ps ) return num
[docs] def reduced_residuals(self, model_list, error_map_list=None): """ :param model_list: list of models :param error_map_list: list of error maps :return: """ residual_list = [] if error_map_list is None: error_map_list = [[] for _ in range(self._num_bands)] index = 0 for i in range(self._num_bands): if self._compute_bool[i] is True: residual_list.append( self._imageModel_list[i].reduced_residuals( model_list[index], error_map=error_map_list[index] ) ) index += 1 return residual_list