Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def make_fit(lens_data):
lens_galaxy = g.Galaxy(mass=mp.SphericalIsothermal(einstein_radius=1.0), redshift=1.0)
lens_subhalo = g.Galaxy(mass=mp.SphericalIsothermal(einstein_radius=0.1), redshift=1.0)
source_galaxy = g.Galaxy(light=lp.EllipticalSersic(intensity=1.0), redshift=2.0)
tracer_normal = ray_tracing.TracerImageSourcePlanes(lens_galaxies=[lens_galaxy], source_galaxies=[source_galaxy],
image_plane_grid_stack=lens_data.grid_stack,
cosmology=cosmo.Planck15)
tracer_sensitivity = ray_tracing.TracerImageSourcePlanes(lens_galaxies=[lens_galaxy, lens_subhalo],
source_galaxies=[source_galaxy],
image_plane_grid_stack=lens_data.grid_stack,
cosmology=cosmo.Planck15)
return sensitivity_fit.SensitivityProfileFit(lens_data=lens_data, tracer_normal=tracer_normal,
tracer_sensitive=tracer_sensitivity)
)
hyper_galaxy = al.HyperGalaxy(
contribution_factor=1.0, noise_factor=1.0, noise_power=1.0
)
instance.galaxies.lens.hyper_galaxy = hyper_galaxy
fit_likelihood = analysis.fit(instance=instance)
lens_hyper_image = result.image_galaxy_dict[("galaxies", "lens")]
source_hyper_image = result.image_galaxy_dict[("galaxies", "source")]
hyper_model_image = lens_hyper_image + source_hyper_image
g0 = al.Galaxy(
redshift=0.5,
light_profile=instance.galaxies.lens.light,
mass_profile=instance.galaxies.lens.mass,
hyper_galaxy=hyper_galaxy,
hyper_model_image=hyper_model_image,
hyper_galaxy_image=lens_hyper_image,
hyper_minimum_value=0.0,
)
g1 = al.Galaxy(redshift=1.0, light_profile=instance.galaxies.source.light)
tracer = al.Tracer.from_galaxies(galaxies=[g0, g1])
fit = FitImaging(masked_imaging=masked_imaging_7x7, tracer=tracer)
assert (fit_likelihood == fit.likelihood).all()
def test__fit_figure_of_merit__matches_correct_fit_given_galaxy_profiles(self, ccd_data):
lens_galaxy = g.Galaxy(light=lp.EllipticalSersic(intensity=0.1))
source_galaxy = g.Galaxy(pixelization=pix.Rectangular(shape=(4, 4)),
regularization=reg.Constant(coefficients=(1.0,)))
phase = ph.LensPlanePhase(lens_galaxies=[lens_galaxy], mask_function=ph.default_mask_function,
cosmology=cosmo.FLRW, phase_name='test_phase')
analysis = phase.make_analysis(data=ccd_data)
instance = phase.constant
fit_figure_of_merit = analysis.fit(instance=instance)
mask = phase.mask_function(image=ccd_data.image)
lens_data = li.LensData(ccd_data=ccd_data, mask=mask)
tracer = analysis.tracer_for_instance(instance=instance)
fit = lens_fit.LensProfileFit(lens_data=lens_data, tracer=tracer)
assert fit.likelihood == fit_figure_of_merit
def test__image_all_1s__direct_image_to_source_mapping__perfect_fit_even_with_regularization(self):
im = np.array([[0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 1.0, 1.0, 1.0, 0.0],
[0.0, 1.0, 1.0, 1.0, 0.0],
[0.0, 1.0, 1.0, 1.0, 0.0],
[0.0, 0.0, 0.0, 0.0, 0.0]]).view(image.Image)
ma = np.array([[True, True, True, True, True],
[True, False, False, False, True],
[True, False, False, False, True],
[True, False, False, False, True],
[True, True, True, True, True]])
ma = mask.Mask(ma, pixel_scale=1.0)
psf = image.PSF(array=np.array([[0.0, 0.0, 0.0],
[0.0, 1.0, 0.0],
[0.0, 0.0, 0.0]]), pixel_scale=1.0)
im = image.Image(im, pixel_scale=1.0, psf=psf, noise_map=np.ones((5, 5)))
li = lensing_image.LensingImage(im, ma, sub_grid_size=2)
galaxy_pix = g.Galaxy(pixelization=pixelizations.Rectangular(shape=(3, 3)),
regularization=regularization.Constant(coefficients=(1.0,)))
tracer = ray_tracing.TracerImageSourcePlanes(lens_galaxies=[g.Galaxy()], source_galaxies=[galaxy_pix],
image_plane_grids=[li.grids], border=None)
fit = lensing_fitting.LensingInversionFit(lensing_images=[li], tracer=tracer)
cov_matrix = np.array([[1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
image_plane_grids=[li.grids])
fit = lensing_fitting.LensingProfileFit(lensing_images=[li], tracer=tracer)
assert (fit.model_images_of_planes[0][0] == g0_model_image).all()
assert (fit.model_images_of_planes[0][1] == g0_model_image).all()
tracer = ray_tracing.TracerImageSourcePlanes(lens_galaxies=[g0], source_galaxies=[g.Galaxy()],
image_plane_grids=[li.grids])
fit = lensing_fitting.LensingProfileFit(lensing_images=[li], tracer=tracer)
assert (fit.model_images_of_planes[0][0] == g0_model_image).all()
assert fit.model_images_of_planes[0][1] == None
tracer = ray_tracing.TracerImageSourcePlanes(lens_galaxies=[g.Galaxy()], source_galaxies=[g0],
image_plane_grids=[li.grids])
fit = lensing_fitting.LensingProfileFit(lensing_images=[li], tracer=tracer)
assert fit.model_images_of_planes[0][0] == None
assert (fit.model_images_of_planes[0][1] == g0_model_image).all()
tracer = ray_tracing.TracerImageSourcePlanes(lens_galaxies=[g.Galaxy()], source_galaxies=[g.Galaxy()],
image_plane_grids=[li.grids])
fit = lensing_fitting.LensingProfileFit(lensing_images=[li], tracer=tracer)
assert fit.model_images_of_planes[0][0] == None
assert fit.model_images_of_planes[0][1] == None
def test__within_circle_different_luminosity_units__same_as_galaxy_luminosities(
self
):
g0 = g.Galaxy(redshift=0.5, luminosity=lp.SphericalSersic(intensity=1.0))
g1 = g.Galaxy(redshift=0.5, luminosity=lp.SphericalSersic(intensity=2.0))
radius = dim.Length(1.0, "arcsec")
g0_luminosity = g0.luminosity_within_circle_in_units(
radius=radius, unit_luminosity="eps"
)
g1_luminosity = g1.luminosity_within_circle_in_units(
radius=radius, unit_luminosity="eps"
)
plane = pl.Plane(galaxies=[g0, g1], redshift=0.5)
plane_luminosities = plane.luminosities_of_galaxies_within_circles_in_units(
radius=radius, unit_luminosity="eps"
)
assert plane_luminosities[0] == g0_luminosity
assert plane_luminosities[1] == g1_luminosity
def test__2_planes__z01_and_z1(self):
g0 = g.Galaxy(redshift=0.1)
g1 = g.Galaxy(redshift=1.0)
tracer = ray_tracing.Tracer.from_galaxies(galaxies=[g0, g1])
assert tracer.cosmology == cosmo.Planck15
assert tracer.image_plane.arcsec_per_kpc == pytest.approx(0.525060, 1e-5)
assert tracer.image_plane.kpc_per_arcsec == pytest.approx(1.904544, 1e-5)
assert tracer.image_plane.angular_diameter_distance_to_earth_in_units(
unit_length="kpc"
) == pytest.approx(392840, 1e-5)
assert tracer.source_plane.arcsec_per_kpc == pytest.approx(0.1214785, 1e-5)
assert tracer.source_plane.kpc_per_arcsec == pytest.approx(8.231907, 1e-5)
assert tracer.source_plane.angular_diameter_distance_to_earth_in_units(
unit_length="kpc"
def test__4_planes_after_slicing(self, sub_grid_7x7):
lens_g0 = g.Galaxy(redshift=0.5)
source_g0 = g.Galaxy(redshift=2.0)
los_g0 = g.Galaxy(redshift=1.0)
tracer = ray_tracing.Tracer.sliced_tracer_from_lens_line_of_sight_and_source_galaxies(
lens_galaxies=[lens_g0],
line_of_sight_galaxies=[los_g0],
source_galaxies=[source_g0],
planes_between_lenses=[1, 1],
cosmology=cosmo.Planck15,
)
assert (
tracer.arcsec_per_kpc_proper_of_plane(i=0)
== tracer.cosmology.arcsec_per_kpc_proper(z=0.25).value
)
assert (
def test__has_galaxy_with_pixelization(self, grid_stack):
gal = g.Galaxy()
gal_lp = g.Galaxy(light_profile=lp.LightProfile())
gal_pix = g.Galaxy(pixelization=pixelizations.Pixelization(), regularization=regularization.Constant())
assert ray_tracing.TracerImageSourcePlanes \
([gal], [gal], image_plane_grid_stack=grid_stack).has_pixelization == False
assert ray_tracing.TracerImageSourcePlanes \
([gal_lp], [gal_lp], image_plane_grid_stack=grid_stack).has_pixelization == False
assert ray_tracing.TracerImageSourcePlanes \
([gal_pix], [gal_pix], image_plane_grid_stack=grid_stack).has_pixelization == True
assert ray_tracing.TracerImageSourcePlanes \
([gal_pix], [gal], image_plane_grid_stack=grid_stack).has_pixelization == True
assert ray_tracing.TracerImageSourcePlanes \
([gal_pix], [gal_lp], image_plane_grid_stack=grid_stack).has_pixelization == True
def test__6_galaxies_producing_4_planes(self):
g0 = g.Galaxy(redshift=1.0)
g1 = g.Galaxy(redshift=1.0)
g2 = g.Galaxy(redshift=0.1)
g3 = g.Galaxy(redshift=1.05)
g4 = g.Galaxy(redshift=0.95)
g5 = g.Galaxy(redshift=1.05)
galaxies = [g0, g1, g2, g3, g4, g5]
ordered_plane_redshifts = lens_util.ordered_plane_redshifts_from_galaxies(galaxies=galaxies)
assert ordered_plane_redshifts == [0.1, 0.95, 1.0, 1.05]
ordered_galaxies = lens_util.galaxies_in_redshift_ordered_planes_from_galaxies(galaxies=galaxies,
plane_redshifts=ordered_plane_redshifts)
assert ordered_galaxies[0][0].redshift == 0.1
assert ordered_galaxies[1][0].redshift == 0.95