Beispiel #1
0
 def test_light2mass_conversion(self):
     numPix = 100
     deltaPix = 0.05
     kwargs_options = {
         'lens_light_model_internal_bool': [True, True],
         'lens_light_model_list': ['SERSIC_ELLIPSE', 'SERSIC']
     }
     kwargs_lens_light = [{
         'R_sersic': 0.5,
         'n_sersic': 4,
         'amp': 2,
         'e1': 0,
         'e2': 0.05
     }, {
         'R_sersic': 1.5,
         'n_sersic': 1,
         'amp': 2
     }]
     lensAnalysis = LensAnalysis(kwargs_options)
     kwargs_interpol = lensAnalysis.light2mass_interpol(
         lens_light_model_list=['SERSIC_ELLIPSE', 'SERSIC'],
         kwargs_lens_light=kwargs_lens_light,
         numPix=numPix,
         deltaPix=deltaPix,
         subgrid_res=1)
     from lenstronomy.LensModel.lens_model import LensModel
     lensModel = LensModel(lens_model_list=['INTERPOL_SCALED'])
     kwargs_lens = [kwargs_interpol]
     import lenstronomy.Util.util as util
     x_grid, y_grid = util.make_grid(numPix, deltapix=deltaPix)
     kappa = lensModel.kappa(x_grid, y_grid, kwargs=kwargs_lens)
     kappa = util.array2image(kappa)
     kappa /= np.mean(kappa)
     flux = lensAnalysis.LensLightModel.surface_brightness(
         x_grid, y_grid, kwargs_lens_light)
     flux = util.array2image(flux)
     flux /= np.mean(flux)
     #import matplotlib.pyplot as plt
     #plt.matshow(flux-kappa)
     #plt.colorbar()
     #plt.show()
     delta_kappa = (kappa - flux) / flux
     max_delta = np.max(np.abs(delta_kappa))
     assert max_delta < 1
     #assert max_diff < 0.01
     npt.assert_almost_equal(flux[0, 0], kappa[0, 0], decimal=2)
    def test_interpolated_sersic(self):
        from lenstronomy.Analysis.lens_analysis import LensAnalysis
        kwargs_light = [{'n_sersic': 2, 'R_sersic': 0.5, 'amp': 1, 'center_x': 0.01, 'center_y': 0.01}]
        kwargs_lens = [{'n_sersic': 2, 'R_sersic': 0.5, 'k_eff': 1, 'center_x': 0.01, 'center_y': 0.01}]
        deltaPix = 0.1
        numPix = 100

        kwargs_interp = LensAnalysis.light2mass_interpol(['SERSIC'], kwargs_lens_light=kwargs_light, numPix=numPix,
                                                                                          deltaPix=deltaPix, subgrid_res=5)
        kwargs_lens_interp = [kwargs_interp]
        from lenstronomy.Analysis.lens_properties import LensProp
        z_lens = 0.5
        z_source = 1.5
        r_ani = 0.62
        kwargs_anisotropy = {'r_ani': r_ani}
        R_slit = 3.8
        dR_slit = 1.
        kwargs_aperture = {'center_ra': 0, 'width': dR_slit, 'length': R_slit, 'angle': 0, 'center_dec': 0}
        aperture_type = 'slit'
        psf_fwhm = 0.7
        anisotropy_model = 'OsipkovMerritt'
        r_eff = 0.5
        kwargs_options = {'lens_model_list': ['SERSIC'],
                          'lens_light_model_list': ['SERSIC']}
        lensProp = LensProp(z_lens, z_source, kwargs_options)

        v_sigma = lensProp.velocity_dispersion_numerical(kwargs_lens, kwargs_light, kwargs_anisotropy,
                                                         kwargs_aperture, psf_fwhm, aperture_type, anisotropy_model,
                                                         MGE_light=True, MGE_mass=True, r_eff=r_eff)
        kwargs_options_interp = {'lens_model_list': ['INTERPOL'],
                                 'lens_light_model_list': ['SERSIC']}
        lensProp_interp = LensProp(z_lens, z_source, kwargs_options_interp)
        v_sigma_interp = lensProp_interp.velocity_dispersion_numerical(kwargs_lens_interp, kwargs_light, kwargs_anisotropy,
                                                         kwargs_aperture, psf_fwhm, aperture_type, anisotropy_model,
                                                         kwargs_numerics={}, MGE_light=True, MGE_mass=True, r_eff=r_eff)
        npt.assert_almost_equal(v_sigma / v_sigma_interp, 1, 1)