Source code for lenstronomy.ImSim.Numerics.partial_image

import numpy as np
import lenstronomy.Util.util as util

__all__ = ["PartialImage"]


[docs] class PartialImage(object): """Class to deal with the use of partial slicing of a 2d data array, to be used for various computations where only a subset of pixels need to be know."""
[docs] def __init__(self, partial_read_bools): """ :param partial_read_bools: 2d numpy array of bools indicating which indexes to be processed """ self._partial_read_bools = np.array(partial_read_bools, dtype=bool) self._nx, self._ny = np.shape(partial_read_bools) self._partial_read_bools_array = util.image2array(partial_read_bools) self._num_partial = int(np.sum(self._partial_read_bools_array))
[docs] def partial_array(self, image): """ :param image: 2d array :return: 1d array of partial list """ array = util.image2array(image) return array[self._partial_read_bools_array]
@property def index_array(self): """ :return: 2d array with indexes (integers) corresponding to the 1d array, -1 when masked """ if not hasattr(self, "_index_array"): full_array = -1 * np.ones(len(self._partial_read_bools_array)) num_array = np.linspace( start=0, stop=self.num_partial - 1, num=self.num_partial ) full_array[self._partial_read_bools_array] = num_array self._index_array = util.array2image(full_array, nx=self._nx, ny=self._ny) return self._index_array
[docs] def array_from_partial(self, partial_array): """ :param partial_array: 1d array of the partial indexes :return: full 1d array """ full_array = np.zeros(len(self._partial_read_bools_array)) full_array[self._partial_read_bools_array] = partial_array return full_array
[docs] def image_from_partial(self, partial_array): """ :param partial_array: 1d array corresponding to the indexes of the partial read :return: full image with zeros elsewhere """ array = self.array_from_partial(partial_array) return util.array2image(array, nx=self._nx, ny=self._ny)
@property def num_partial(self): """ :return: number of indexes handled in the partial section """ return self._num_partial