Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_init(self):
model_list = ['CORE_SERSIC', 'DOUBLE_CORE_SERSIC', 'BULDGE_DISK', 'SHAPELETS', 'UNIFORM']
lightModel = LightModel(light_model_list=model_list)
assert len(lightModel.profile_type_list) == len(model_list)
def test_error_map_source(self):
sourceModel = LightModel(light_model_list=['UNIFORM', 'UNIFORM'])
kwargs_data = sim_util.data_configure_simple(numPix=10, deltaPix=1, exposure_time=1, background_rms=1)
data_class = ImageData(**kwargs_data)
psf_type = "GAUSSIAN"
fwhm = 0.9
kwargs_psf = {'psf_type': psf_type, 'fwhm': fwhm}
psf_class = PSF(**kwargs_psf)
imageModel = ImageLinearFit(data_class=data_class, psf_class=psf_class, lens_model_class=None,
point_source_class=None, source_model_class=sourceModel)
x_grid, y_grid = util.make_grid(numPix=10, deltapix=1)
error_map = imageModel.error_map_source(kwargs_source=[{'amp': 1}, {'amp': 1}], x_grid=x_grid, y_grid=y_grid, cov_param=np.array([[1, 0], [0, 1]]))
assert error_map[0] == 2
e1, e2 = param_util.phi_q2_ellipticity(phi, q)
kwargs_sersic_ellipse = {'amp': 1., 'R_sersic': .6, 'n_sersic': 7, 'center_x': 0, 'center_y': 0,
'e1': e1, 'e2': e2}
lens_light_model_list = ['SERSIC']
self.kwargs_lens_light = [kwargs_sersic]
lens_light_model_class = LightModel(light_model_list=lens_light_model_list)
source_model_list = ['SERSIC_ELLIPSE']
self.kwargs_source = [kwargs_sersic_ellipse]
source_model_class = LightModel(light_model_list=source_model_list)
self.kwargs_ps = [{'ra_source': 0.01, 'dec_source': 0.0,
'source_amp': 1.}] # quasar point source position in the source plane and intrinsic brightness
point_source_class = PointSource(point_source_type_list=['SOURCE_POSITION'], fixed_magnification_list=[True])
kwargs_numerics = {'supersampling_factor': 2, 'supersampling_convolution': False}
imageModel = ImageModel(data_class, psf_class, lens_model_class, source_model_class, lens_light_model_class, point_source_class, kwargs_numerics=kwargs_numerics)
image_sim = sim_util.simulate_simple(imageModel, self.kwargs_lens, self.kwargs_source,
self.kwargs_lens_light, self.kwargs_ps)
data_class.update_data(image_sim)
self.imageModel = ImageLinearFit(data_class, psf_class, lens_model_class, source_model_class, lens_light_model_class, point_source_class, kwargs_numerics=kwargs_numerics)
self.solver = LensEquationSolver(lensModel=self.imageModel.LensModel)
def test_error_map_source(self):
sourceModel = LightModel(light_model_list=['UNIFORM', 'UNIFORM'])
kwargs_data = sim_util.data_configure_simple(numPix=10, deltaPix=1, exposure_time=1, background_rms=1)
data_class = ImageData(**kwargs_data)
psf_type = "GAUSSIAN"
fwhm = 0.9
kwargs_psf = {'psf_type': psf_type, 'fwhm': fwhm}
psf_class = PSF(**kwargs_psf)
imageModel = ImageLinearFit(data_class=data_class, psf_class=psf_class, lens_model_class=None,
point_source_class=None, source_model_class=sourceModel)
x_grid, y_grid = util.make_grid(numPix=10, deltapix=1)
error_map = imageModel.error_map_source(kwargs_source=[{'amp': 1}, {'amp': 1}], x_grid=x_grid, y_grid=y_grid, cov_param=np.array([[1, 0], [0, 1]]))
assert error_map[0] == 2
def test_delete_interpol_caches(self):
x, y = util.make_grid(numPix=20, deltapix=1.)
gauss = Gaussian()
flux = gauss.function(x, y, amp=1., center_x=0., center_y=0., sigma=1.)
image = util.array2image(flux)
light_model_list = ['INTERPOL', 'INTERPOL']
kwargs_list = [
{'image': image, 'scale': 1, 'phi_G': 0, 'center_x': 0, 'center_y': 0},
{'image': image, 'scale': 1, 'phi_G': 0, 'center_x': 0, 'center_y': 0}
]
lightModel = LightModel(light_model_list=light_model_list)
output = lightModel.surface_brightness(x, y, kwargs_list)
for func in lightModel.func_list:
assert hasattr(func, '_image_interp')
lightModel.delete_interpol_caches()
for func in lightModel.func_list:
assert not hasattr(func, '_image_interp')
def setup(self):
self.supersampling_factor = 3
lightModel = LightModel(light_model_list=['GAUSSIAN'])
self.delta_pix = 1.
x, y = util.make_grid(20, deltapix=self.delta_pix)
x_sub, y_sub = util.make_grid(20*self.supersampling_factor, deltapix=self.delta_pix/self.supersampling_factor)
kwargs = [{'amp': 1, 'sigma': 2, 'center_x': 0, 'center_y': 0}]
flux = lightModel.surface_brightness(x, y, kwargs)
self.model = util.array2image(flux)
flux_sub = lightModel.surface_brightness(x_sub, y_sub, kwargs)
self.model_sub = util.array2image(flux_sub)
x, y = util.make_grid(5, deltapix=self.delta_pix)
kwargs_kernel = [{'amp': 1, 'sigma': 1, 'center_x': 0, 'center_y': 0}]
kernel = lightModel.surface_brightness(x, y, kwargs_kernel)
self.kernel = util.array2image(kernel) / np.sum(kernel)
x_sub, y_sub = util.make_grid(5*self.supersampling_factor, deltapix=self.delta_pix/self.supersampling_factor)
kernel_sub = lightModel.surface_brightness(x_sub, y_sub, kwargs_kernel)
self.kernel_sub = util.array2image(kernel_sub) / np.sum(kernel_sub)
x, y = util.make_grid(20, deltapix=self.delta_pix)
x_sub, y_sub = util.make_grid(20*self.supersampling_factor, deltapix=self.delta_pix/self.supersampling_factor)
kwargs = [{'amp': 1, 'sigma': 2, 'center_x': 0, 'center_y': 0}]
flux = lightModel.surface_brightness(x, y, kwargs)
self.model = util.array2image(flux)
flux_sub = lightModel.surface_brightness(x_sub, y_sub, kwargs)
self.model_sub = util.array2image(flux_sub)
x, y = util.make_grid(5, deltapix=self.delta_pix)
kwargs_kernel = [{'amp': 1, 'sigma': 1, 'center_x': 0, 'center_y': 0}]
kernel = lightModel.surface_brightness(x, y, kwargs_kernel)
self.kernel = util.array2image(kernel) / np.sum(kernel)
x_sub, y_sub = util.make_grid(5*self.supersampling_factor, deltapix=self.delta_pix/self.supersampling_factor)
kernel_sub = lightModel.surface_brightness(x_sub, y_sub, kwargs_kernel)
self.kernel_sub = util.array2image(kernel_sub) / np.sum(kernel_sub)
def test_interp_func_scaled(self):
numPix = 101
deltaPix = 0.1
x_grid_interp, y_grid_interp = util.make_grid(numPix,deltaPix)
sis = SIS()
kwargs_SIS = {'theta_E':1., 'center_x': 0.5, 'center_y': -0.5}
f_sis = sis.function(x_grid_interp, y_grid_interp, **kwargs_SIS)
f_x_sis, f_y_sis = sis.derivatives(x_grid_interp, y_grid_interp, **kwargs_SIS)
f_xx_sis, f_yy_sis, f_xy_sis = sis.hessian(x_grid_interp, y_grid_interp, **kwargs_SIS)
x_axes, y_axes = util.get_axes(x_grid_interp, y_grid_interp)
kwargs_interp = {'grid_interp_x': x_axes, 'grid_interp_y': y_axes, 'f_': util.array2image(f_sis), 'f_x': util.array2image(f_x_sis), 'f_y': util.array2image(f_y_sis), 'f_xx': util.array2image(f_xx_sis), 'f_yy': util.array2image(f_yy_sis), 'f_xy': util.array2image(f_xy_sis)}
interp_func = InterpolScaled(grid=False)
x, y = 1., 1.
alpha_x, alpha_y = interp_func.derivatives(x, y, scale_factor=1, **kwargs_interp)
assert alpha_x == 0.31622776601683794
f_ = interp_func.function(x, y, scale_factor=1., **kwargs_interp)
npt.assert_almost_equal(f_, 1.5811388300841898)
f_xx, f_yy, f_xy = interp_func.hessian(x, y, scale_factor=1., **kwargs_interp)
npt.assert_almost_equal(f_xx, 0.56920997883030822, decimal=8)
npt.assert_almost_equal(f_yy, 0.063245553203367583, decimal=8)
npt.assert_almost_equal(f_xy, -0.18973665961010275, decimal=8)
x_grid, y_grid = util.make_grid(10, deltaPix)
f_xx, f_yy, f_xy = interp_func.hessian(x_grid, y_grid, scale_factor=1., **kwargs_interp)
npt.assert_almost_equal(f_xx[0], 0, decimal=2)
def test_sis_ray_tracing(self):
z_source = 1.5
lens_model_list = ['SIS']
redshift_list = [0.5]
lensModelMutli = MultiPlane(z_source=z_source, lens_model_list=lens_model_list, lens_redshift_list=redshift_list)
lensModel = LensModel(lens_model_list=lens_model_list)
kwargs_lens = [{'theta_E': 1, 'center_x': 0, 'center_y': 0}]
beta_x_simple, beta_y_simple = lensModel.ray_shooting(1, 0, kwargs_lens)
beta_x_multi, beta_y_multi = lensModelMutli.ray_shooting(1, 0, kwargs_lens)
npt.assert_almost_equal(beta_x_simple, beta_x_multi, decimal=10)
npt.assert_almost_equal(beta_y_simple, beta_y_multi, decimal=10)
npt.assert_almost_equal(beta_x_simple, 0, decimal=10)
npt.assert_almost_equal(beta_y_simple, 0, decimal=10)
def test_radial_tangential_distortions(self):
lens_model_list = ['CURVED_ARC', 'SHEAR', 'FLEXION']
center_x, center_y = 0, 0
curvature = 1./2
lens = LensModel(lens_model_list=lens_model_list)
kwargs_lens = [{'tangential_stretch': 10, 'radial_stretch': 1., 'curvature': curvature,
'direction': -10, 'center_x': center_x, 'center_y': center_y},
{'gamma1': -0., 'gamma2': -0.0},
{'g1': 0., 'g2': 0., 'g3': -0., 'g4': 0}]
extensions = LensModelExtensions(lensModel=lens)
lambda_rad, lambda_tan, orientation_angle, dlambda_tan_dtan, dlambda_tan_drad, dlambda_rad_drad, dlambda_rad_dtan, dphi_tan_dtan, dphi_tan_drad, dphi_rad_drad, dphi_rad_dtan = extensions.radial_tangential_differentials(
x=center_x, y=center_y, kwargs_lens=kwargs_lens, smoothing_3rd=0.0001)
l = 1. / dphi_tan_dtan
npt.assert_almost_equal(l, 1./curvature)