Example #1
0
def test_make_subgrid():
    numPix = 101
    deltapix = 1
    x_grid, y_grid = util.make_grid(numPix, deltapix, subgrid_res=1)
    x_sub_grid, y_sub_grid = util.make_subgrid(x_grid, y_grid, subgrid_res=2)
    assert np.sum(x_grid) == 0
    assert x_sub_grid[0] == -50.25
    assert y_sub_grid[17] == -50.25

    x_sub_grid_new, y_sub_grid_new = util.make_subgrid(x_grid, y_grid, subgrid_res=4)
    assert x_sub_grid_new[0] == -50.375
Example #2
0
    def __init__(self, nx, ny, transform_pix2angle, ra_at_xy_0, dec_at_xy_0, supersampling_factor=1,
                 flux_evaluate_indexes=None):
        """

        :param nx: number of pixels in x-axis
        :param ny: number of pixels in y-axis
        :param transform_pix2angle: 2x2 matrix, mapping of pixel to coordinate
        :param ra_at_xy_0: ra coordinate at pixel (0,0)
        :param dec_at_xy_0: dec coordinate at pixel (0,0)
        :param supersampling_factor: int, factor (per axis) of super-sampling
        :param flux_evaluate_indexes: bool array of shape nx x ny, corresponding to pixels being evaluated
        (for both low and high res). Default is None, replaced by setting all pixels to being evaluated.
        """
        super(RegularGrid, self).__init__(transform_pix2angle, ra_at_xy_0, dec_at_xy_0)
        self._supersampling_factor = supersampling_factor
        self._nx = nx
        self._ny = ny
        self._x_grid, self._y_grid = self.coordinate_grid(nx, ny)
        if flux_evaluate_indexes is None:
            flux_evaluate_indexes = np.ones_like(self._x_grid, dtype=bool)
        else:
            flux_evaluate_indexes = util.image2array(flux_evaluate_indexes)
        self._compute_indexes = self._subgrid_index(flux_evaluate_indexes, self._supersampling_factor, self._nx, self._ny)

        x_grid_sub, y_grid_sub = util.make_subgrid(self._x_grid, self._y_grid, self._supersampling_factor)
        self._ra_subgrid = x_grid_sub[self._compute_indexes]
        self._dec_subgrid = y_grid_sub[self._compute_indexes]
 def __init__(self,
              image,
              sigma,
              poisson,
              sampling_option,
              deltaPix=1,
              mask=None,
              subgrid_res=1,
              x_grid=None,
              y_grid=None):
     """
     initializes all the classes needed for the chain
     """
     self.image = util.image2array(image)
     self.numPix = len(image)
     self.deltaPix = deltaPix
     self.subgrid_res = subgrid_res
     self.background = sigma
     self.poisson = poisson
     if x_grid is None or y_grid is None:
         self.x_grid, self.y_grid = util.make_grid(self.numPix, deltaPix,
                                                   subgrid_res)
     else:
         self.x_grid, self.y_grid = util.make_subgrid(
             x_grid, y_grid, subgrid_res)
     self.gaussian = Gaussian()
     self.moffat = Moffat()
     self.sampling_option = sampling_option
     if not mask is None:
         self.mask = util.image2array(mask)
     else:
         self.mask = np.ones((self.numPix, self.numPix))
 def _check_subgrid(self):
     if not hasattr(self, '_ra_subgrid') or not hasattr(
             self, '_dec_subgrid'):
         ra_grid, dec_grid = self._Data.coordinates
         ra_grid = util.image2array(ra_grid)
         dec_grid = util.image2array(dec_grid)
         x_grid_sub, y_grid_sub = util.make_subgrid(ra_grid, dec_grid,
                                                    self._subgrid_res)
         self._ra_subgrid = x_grid_sub[self._idex_mask_sub == 1]
         self._dec_subgrid = y_grid_sub[self._idex_mask_sub == 1]
Example #5
0
 def make_image_fixed_source(self,
                             param,
                             kwargs_options,
                             kwargs_data,
                             kwargs_lens,
                             kwargs_source,
                             kwargs_psf,
                             kwargs_lens_light,
                             kwargs_else,
                             add_noise=False):
     """
     make an image with fixed source parameters
     :param kwargs_lens:
     :param kwargs_source:
     :param kwargs_psf:
     :param kwargs_lens_light:
     :param kwargs_else:
     :return:
     """
     subgrid_res = kwargs_options['subgrid_res']
     num_order = kwargs_options.get('shapelet_order', 0)
     image = []
     residuals = []
     for i in range(self.num_bands(kwargs_data)):
         kwargs_data_i = kwargs_data[i]
         kwargs_psf_i = kwargs_psf["image" + str(i + 1)]
         param_i = param[i]
         deltaPix = kwargs_data_i['deltaPix']
         x_grid, y_grid = kwargs_data_i['x_coords'], kwargs_data_i[
             'y_coords']
         x_grid_sub, y_grid_sub = util.make_subgrid(x_grid, y_grid,
                                                    subgrid_res)
         numPix = len(kwargs_data_i['image_data'])
         makeImage = ImageModel(kwargs_options, kwargs_data_i)
         image_i, error_map = makeImage.make_image_with_params(
             x_grid_sub, y_grid_sub, kwargs_lens, kwargs_source,
             kwargs_psf_i, kwargs_lens_light, kwargs_else, numPix, deltaPix,
             subgrid_res, param_i, num_order)
         residuals_i = util.image2array(
             makeImage.reduced_residuals(image_i, error_map))
         residuals.append(residuals_i)
         if add_noise:
             image_i = makeImage.add_noise2image(image_i)
         image.append(image_i)
     return image, residuals
    def test_rescaled_grid(self):
        import lenstronomy.Util.util as util
        numPix = 10
        theta = 0.5
        deltaPix = 0.05
        subgrid_res = 3
        Mpix2a = np.array([[np.cos(theta), -np.sin(theta)],
                           [np.sin(theta), np.cos(theta)]]) * deltaPix
        x_grid, y_grid = util.make_grid_transformed(numPix, Mpix2a)
        coords = Coordinates(Mpix2a,
                             ra_at_xy_0=x_grid[0],
                             dec_at_xy_0=y_grid[0])
        x_grid_high_res, y_grid_high_res = util.make_subgrid(
            x_grid, y_grid, subgrid_res=subgrid_res)
        coords_sub = Coordinates(Mpix2a / subgrid_res,
                                 ra_at_xy_0=x_grid_high_res[0],
                                 dec_at_xy_0=y_grid_high_res[0])

        x, y = coords_sub.map_coord2pix(x_grid[1], y_grid[1])
        npt.assert_almost_equal(x, 4, decimal=10)
        npt.assert_almost_equal(y, 1, decimal=10)
        x, y = coords_sub.map_coord2pix(x_grid[0], y_grid[0])
        npt.assert_almost_equal(x, 1, decimal=10)
        npt.assert_almost_equal(y, 1, decimal=10)

        ra, dec = coords_sub.map_pix2coord(1, 1)
        npt.assert_almost_equal(ra, x_grid[0], decimal=10)
        npt.assert_almost_equal(dec, y_grid[0], decimal=10)

        ra, dec = coords_sub.map_pix2coord(1 + 2 * subgrid_res, 1)
        npt.assert_almost_equal(ra, x_grid[2], decimal=10)
        npt.assert_almost_equal(dec, y_grid[2], decimal=10)

        x_2d = util.array2image(x_grid)
        y_2d = util.array2image(y_grid)

        ra, dec = coords_sub.map_pix2coord(1 + 2 * subgrid_res,
                                           1 + 3 * subgrid_res)
        npt.assert_almost_equal(ra, x_2d[3, 2], decimal=10)
        npt.assert_almost_equal(dec, y_2d[3, 2], decimal=10)

        ra, dec = coords.map_pix2coord(2, 3)
        npt.assert_almost_equal(ra, x_2d[3, 2], decimal=10)
        npt.assert_almost_equal(dec, y_2d[3, 2], decimal=10)
Example #7
0
    def make_mock_image(self,
                        kwargs_options,
                        kwargs_data,
                        kwargs_lens,
                        kwargs_source,
                        kwargs_psf,
                        kwargs_lens_light,
                        kwargs_else,
                        add_noise=False,
                        noMask=True):
        """

        :return: mock image, without substructure
        """
        subgrid_res = kwargs_options['subgrid_res']
        image = []
        param = []
        residuals = []
        for i in range(self.num_bands(kwargs_data)):
            kwargs_data_i = kwargs_data[i]
            kwargs_psf_i = kwargs_psf["image" + str(i + 1)]
            deltaPix = kwargs_data_i['deltaPix']
            x_grid, y_grid = kwargs_data_i['x_coords'], kwargs_data_i[
                'y_coords']
            x_grid_sub, y_grid_sub = util.make_subgrid(x_grid, y_grid,
                                                       subgrid_res)
            numPix = len(kwargs_data_i['image_data'])
            makeImage = ImageModel(kwargs_options, kwargs_data_i)
            if noMask:
                image_i, param_i, error_map = makeImage.make_image_ideal_noMask(
                    x_grid_sub,
                    y_grid_sub,
                    kwargs_lens,
                    kwargs_source,
                    kwargs_psf_i,
                    kwargs_lens_light,
                    kwargs_else,
                    numPix,
                    deltaPix,
                    subgrid_res,
                    inv_bool=False)
            else:
                image_i, error_map, cov_param, param_i = makeImage.make_image_ideal(
                    x_grid_sub,
                    y_grid_sub,
                    kwargs_lens,
                    kwargs_source,
                    kwargs_psf_i,
                    kwargs_lens_light,
                    kwargs_else,
                    numPix,
                    deltaPix,
                    subgrid_res,
                    inv_bool=False)
            residuals_i = util.image2array(
                makeImage.reduced_residuals(image_i, error_map))
            residuals.append(residuals_i)
            if add_noise:
                image_i = makeImage.add_noise2image(image_i)
            image.append(image_i)
            param.append(param_i)
        return image, param, residuals