Source code for lenstronomy.Util.simulation_util

import lenstronomy.Util.util as util
import lenstronomy.Util.image_util as image_util

import numpy as np

from lenstronomy.Util.package_util import exporter

export, __all__ = exporter()


[docs] @export def data_configure_simple( numPix, deltaPix, exposure_time=None, background_rms=None, center_ra=0, center_dec=0, inverse=False, ): """Configures the data keyword arguments with a coordinate grid centered at zero. :param numPix: number of pixel (numPix x numPix) :param deltaPix: pixel size (in angular units) :param exposure_time: exposure time :param background_rms: background noise (Gaussian sigma) :param center_ra: RA at the center of the image :param center_dec: DEC at the center of the image :param inverse: if True, coordinate system is ra to the left, if False, to the right :return: keyword arguments that can be used to construct a Data() class instance of lenstronomy """ # 1d list of coordinates (x,y) of a numPix x numPix square grid, centered to zero ( x_grid, y_grid, ra_at_xy_0, dec_at_xy_0, x_at_radec_0, y_at_radec_0, Mpix2coord, Mcoord2pix, ) = util.make_grid_with_coordtransform( numPix=numPix, deltapix=deltaPix, center_ra=center_ra, center_dec=center_dec, subgrid_res=1, inverse=inverse, ) # mask (1= model this pixel, 0= leave blanck) # exposure_map = np.ones((numPix, numPix)) * exposure_time # individual exposure time/weight per pixel kwargs_data = { "background_rms": background_rms, "exposure_time": exposure_time, "ra_at_xy_0": ra_at_xy_0, "dec_at_xy_0": dec_at_xy_0, "transform_pix2angle": Mpix2coord, "image_data": np.zeros((numPix, numPix)), } return kwargs_data
[docs] @export def simulate_simple( image_model_class, kwargs_lens=None, kwargs_source=None, kwargs_lens_light=None, kwargs_ps=None, no_noise=False, source_add=True, lens_light_add=True, point_source_add=True, ): """ :param image_model_class: :param kwargs_lens: :param kwargs_source: :param kwargs_lens_light: :param kwargs_ps: :param no_noise: :param source_add: :param lens_light_add: :param point_source_add: :return: """ image = image_model_class.image( kwargs_lens, kwargs_source, kwargs_lens_light, kwargs_ps, source_add=source_add, lens_light_add=lens_light_add, point_source_add=point_source_add, ) # add noise if no_noise: return image else: poisson = image_util.add_poisson( image, exp_time=image_model_class.Data.exposure_map ) bkg = image_util.add_background( image, sigma_bkd=image_model_class.Data.background_rms ) return image + bkg + poisson