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_radial_profile(self):
x_grid, y_grid = util.make_grid(numPix=20, deltapix=1)
profile = Gaussian()
light_grid = profile.function(x_grid, y_grid, amp=1., sigma=5)
I_r, r = analysis_util.radial_profile(light_grid, x_grid, y_grid, center_x=0, center_y=0, n=None)
assert I_r[0] == 0
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)
def test_make_grid():
numPix = 11
deltapix = 1.
grid = util.make_grid(numPix, deltapix)
assert grid[0][0] == -5
assert np.sum(grid[0]) == 0
x_grid, y_grid = util.make_grid(numPix, deltapix, subgrid_res=2.)
print(np.sum(x_grid))
assert np.sum(x_grid) == 0
assert x_grid[0] == -5.25
x_grid, y_grid = util.make_grid(numPix, deltapix, subgrid_res=1, left_lower=True)
assert x_grid[0] == 0
assert y_grid[0] == 0
def test_half_light_radius(self):
x_grid, y_grid = util.make_grid(numPix=10, deltapix=1)
lens_light = np.zeros_like(x_grid)
r_half = analysis_util.half_light_radius(lens_light, x_grid, y_grid, center_x=0, center_y=0)
assert r_half == -1
def test_averaging_even_kernel():
subgrid_res = 4
x_grid, y_gird = Util.make_grid(19, 1., 1)
sigma = 1.5
flux = gaussian.function(x_grid, y_gird, amp=1, sigma=sigma)
kernel_super = Util.array2image(flux)
kernel_pixel = kernel_util.averaging_even_kernel(kernel_super, subgrid_res)
npt.assert_almost_equal(np.sum(kernel_pixel), 1, decimal=5)
assert len(kernel_pixel) == 5
x_grid, y_gird = Util.make_grid(17, 1., 1)
sigma = 1.5
flux = gaussian.function(x_grid, y_gird, amp=1, sigma=sigma)
kernel_super = Util.array2image(flux)
kernel_pixel = kernel_util.averaging_even_kernel(kernel_super, subgrid_res)
npt.assert_almost_equal(np.sum(kernel_pixel), 1, decimal=5)
assert len(kernel_pixel) == 5
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)
def test_delete_cache(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)
interp = Interpol()
kwargs_interp = {'image': image, 'scale': 1., 'phi_G': 0., 'center_x': 0., 'center_y': 0.}
output = interp.function(x, y, **kwargs_interp)
assert hasattr(interp, '_image_interp')
interp.delete_cache()
assert not hasattr(interp, '_image_interp')
def test_light2mass_mge(self):
from lenstronomy.LightModel.Profiles.gaussian import MultiGaussianEllipse
multiGaussianEllipse = MultiGaussianEllipse()
x_grid, y_grid = util.make_grid(numPix=100, deltapix=0.05)
kwargs_light = [{'amp': [2, 1], 'sigma': [0.1, 1], 'center_x': 0, 'center_y': 0, 'e1': 0.1, 'e2': 0}]
light_model_list = ['MULTI_GAUSSIAN_ELLIPSE']
lensAnalysis = LensAnalysis(kwargs_model={'lens_light_model_list': light_model_list})
kwargs_mge = lensAnalysis.light2mass_mge(kwargs_lens_light=kwargs_light, numPix=100, deltaPix=0.05, elliptical=True)
npt.assert_almost_equal(kwargs_mge['e1'], kwargs_light[0]['e1'], decimal=2)
del kwargs_light[0]['center_x']
del kwargs_light[0]['center_y']
kwargs_mge = lensAnalysis.light2mass_mge(kwargs_lens_light=kwargs_light, numPix=100, deltaPix=0.05,
elliptical=False)
npt.assert_almost_equal(kwargs_mge['center_x'], 0, decimal=2)
def critical_curve_tiling(self, kwargs_lens, compute_window=5, start_scale=0.5, max_order=10):
"""
:param kwargs_lens: lens model keyword argument list
:param compute_window: total window in the image plane where to search for critical curves
:param start_scale: float, angular scale on which to start the tiling from (if there are two distinct curves in
a region, it might only find one.
:param max_order: int, maximum order in the tiling to compute critical curve triangles
:return: list of positions representing coordinates of the critical curve (in RA and DEC)
"""
numPix = int(compute_window / start_scale)
x_grid_init, y_grid_init = util.make_grid(numPix, deltapix=start_scale, subgrid_res=1)
mag_init = util.array2image(self._lensModel.magnification(x_grid_init, y_grid_init, kwargs_lens))
x_grid_init = util.array2image(x_grid_init)
y_grid_init = util.array2image(y_grid_init)
ra_crit_list = []
dec_crit_list = []
# iterate through original triangles and return ra_crit, dec_crit list
for i in range(numPix-1):
for j in range(numPix-1):
edge1 = [x_grid_init[i, j], y_grid_init[i, j], mag_init[i, j]]
edge2 = [x_grid_init[i+1, j+1], y_grid_init[i+1, j+1], mag_init[i+1, j+1]]
edge_90_1 = [x_grid_init[i, j+1], y_grid_init[i, j+1], mag_init[i, j+1]]
edge_90_2 = [x_grid_init[i+1, j], y_grid_init[i+1, j], mag_init[i+1, j]]
ra_crit, dec_crit = self._tiling_crit(edge1, edge2, edge_90_1, max_order=max_order,
kwargs_lens=kwargs_lens)
ra_crit_list += ra_crit # list addition
def convergence_peak(self, kwargs_lens, model_bool_list=None, grid_num=200, grid_spacing=0.01, center_x_init=0,
center_y_init=0):
"""
computes the maximal convergence position on a grid and returns its coordinate
:param kwargs_lens: lens model keyword argument list
:param model_bool_list: bool list (optional) to include certain models or not
:return: center_x, center_y
"""
x_grid, y_grid = util.make_grid(numPix=grid_num, deltapix=grid_spacing)
x_grid += center_x_init
y_grid += center_y_init
kappa = self._lens_model.kappa(x_grid, y_grid, kwargs_lens, k=model_bool_list)
center_x = x_grid[kappa == np.max(kappa)]
center_y = y_grid[kappa == np.max(kappa)]
return center_x, center_y