def ellipticity_lens_light(self, kwargs_lens_light, center_x=0, center_y=0, model_bool_list=None, deltaPix=None, numPix=None): """ make sure that the window covers all the light, otherwise the moments may give to low answers. :param kwargs_lens_light: :param center_x: :param center_y: :param model_bool_list: :param deltaPix: :param numPix: :return: """ if model_bool_list is None: model_bool_list = [True] * len(kwargs_lens_light) if numPix is None: numPix = 100 if deltaPix is None: deltaPix = 0.05 x_grid, y_grid = util.make_grid(numPix=numPix, deltapix=deltaPix) x_grid += center_x y_grid += center_y I_xy = self._lens_light_internal(x_grid, y_grid, kwargs_lens_light, model_bool_list=model_bool_list) e1, e2 = analysis_util.ellipticities(I_xy, x_grid, y_grid) return e1, e2
def ellipticity(self, kwargs_light, grid_spacing, grid_num, center_x=None, center_y=None, model_bool_list=None): """ make sure that the window covers all the light, otherwise the moments may give a too low answers. :param kwargs_light: keyword argument list of profiles :param center_x: center of profile, if None takes it from the first profile in kwargs_light :param center_y: center of profile, if None takes it from the first profile in kwargs_light :param model_bool_list: list of booleans to select subsets of the profile :param grid_spacing: grid spacing over which the moments are computed :param grid_num: grid size over which the moments are computed :return: eccentricities e1, e2 """ center_x, center_y = analysis_util.profile_center( kwargs_light, center_x, center_y) if model_bool_list is None: model_bool_list = [True] * len(kwargs_light) x_grid, y_grid = util.make_grid(numPix=grid_num, deltapix=grid_spacing) x_grid += center_x y_grid += center_y I_xy = self._light_model.surface_brightness(x_grid, y_grid, kwargs_light, k=model_bool_list) e1, e2 = analysis_util.ellipticities(I_xy, x_grid - center_x, y_grid - center_y) return e1, e2
def test_ellipticities(self): x_grid, y_grid = util.make_grid(numPix=200, deltapix=1) e1, e2 = 0., 0.1 profile = GaussianEllipse() I_xy = profile.function(x_grid, y_grid, amp=1, sigma=10, e1=e1, e2=e2) e1_out, e2_out = analysis_util.ellipticities(I_xy, x_grid, y_grid) print(e1_out, e2_out) npt.assert_almost_equal(e1_out, e1, decimal=3) npt.assert_almost_equal(e2_out, e2, decimal=3) e1, e2 = 0.1, 0. profile = GaussianEllipse() I_xy = profile.function(x_grid, y_grid, amp=1, sigma=10, e1=e1, e2=e2) e1_out, e2_out = analysis_util.ellipticities(I_xy, x_grid, y_grid) print(e1_out, e2_out) npt.assert_almost_equal(e1_out, e1, decimal=3) npt.assert_almost_equal(e2_out, e2, decimal=3)