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__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__x1_plane__single_plane_tracer(self, sub_grid_7x7):
g0 = g.Galaxy(
redshift=0.5, light_profile=lp.EllipticalSersic(intensity=1.0)
)
g1 = g.Galaxy(
redshift=0.5, light_profile=lp.EllipticalSersic(intensity=2.0)
)
g2 = g.Galaxy(
redshift=0.5, light_profile=lp.EllipticalSersic(intensity=3.0)
)
image_plane = pl.Plane(galaxies=[g0, g1, g2])
tracer = ray_tracing.Tracer.from_galaxies(galaxies=[g0, g1, g2])
image_plane_profile_image = image_plane.profile_image_from_grid(
grid=sub_grid_7x7, return_in_2d=True, return_binned=True
)
tracer_profile_image = tracer.profile_image_from_grid(
grid=sub_grid_7x7, return_in_2d=True, return_binned=True
)
assert tracer_profile_image.shape == (7, 7)
assert (tracer_profile_image == image_plane_profile_image).all()
psf = im.PSF(array=(np.array([[0.0, 3.0, 0.0],
[0.0, 1.0, 2.0],
[0.0, 0.0, 0.0]])), pixel_scale=1.0)
mask = msk.Mask(array=np.array([[True, True, True],
[True, False, True],
[True, True, True]]), pixel_scale=1.0)
padded_grid_stack = grids.GridStack.padded_grid_stack_from_mask_sub_grid_size_and_psf_shape(mask=mask,
sub_grid_size=1,
psf_shape=(3, 3))
g0 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=0.1))
g1 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=0.2))
g2 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=0.3))
g3 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=0.4))
tracer = ray_tracing.TracerImageSourcePlanes(lens_galaxies=[g0, g1], source_galaxies=[g2, g3],
image_plane_grid_stack=padded_grid_stack)
manual_blurred_image_0 = tracer.image_plane.image_plane_image_1d_of_galaxies[0]
manual_blurred_image_0 = padded_grid_stack.regular.map_to_2d_keep_padded(padded_array_1d=manual_blurred_image_0)
manual_blurred_image_0 = psf.convolve(array=manual_blurred_image_0)
manual_blurred_image_1 = tracer.image_plane.image_plane_image_1d_of_galaxies[1]
manual_blurred_image_1 = padded_grid_stack.regular.map_to_2d_keep_padded(padded_array_1d=manual_blurred_image_1)
manual_blurred_image_1 = psf.convolve(array=manual_blurred_image_1)
manual_blurred_image_2 = tracer.source_plane.image_plane_image_1d_of_galaxies[0]
manual_blurred_image_2 = padded_grid_stack.regular.map_to_2d_keep_padded(padded_array_1d=manual_blurred_image_2)
manual_blurred_image_2 = psf.convolve(array=manual_blurred_image_2)
def simulate_lens_with_light_profile():
from autolens.data.array import grids
from autolens.model.galaxy import galaxy as g
from autolens.lens import ray_tracing
psf = ccd.PSF.simulate_as_gaussian(shape=(11, 11), sigma=0.05, pixel_scale=0.05)
image_plane_grid_stack = grids.GridStack.grid_stack_for_simulation(shape=(180, 180), pixel_scale=0.05, psf_shape=(11, 11))
lens_galaxy = g.Galaxy(light=lp.SphericalSersic(centre=(0.0, 0.0), intensity=0.2, effective_radius=0.8,
sersic_index=4.0),
mass=mp.EllipticalIsothermal(centre=(0.0, 0.0), axis_ratio=0.8, phi=135.0,
einstein_radius=1.6))
source_galaxy = g.Galaxy(light=lp.EllipticalSersic(centre=(0.1, 0.1), axis_ratio=0.8, phi=90.0, intensity=0.2,
effective_radius=0.3, sersic_index=1.0))
tracer = ray_tracing.TracerImageSourcePlanes(lens_galaxies=[lens_galaxy], source_galaxies=[source_galaxy],
image_plane_grid_stack=image_plane_grid_stack)
return ccd.CCDData.simulate(array=tracer.image_plane_image_for_simulation, pixel_scale=0.05,
exposure_time=300.0, psf=psf, background_sky_level=0.1, add_noise=True)
def make():
from autolens.pipeline import phase
from autolens.pipeline import pipeline
from autofit.core import non_linear as nl
from autolens.model.galaxy import galaxy_model as gp
from autolens.model.profiles import light_profiles as lp
from autolens.model.profiles import mass_profiles as mp
phase1 = phase.LensSourcePlanePhase(lens_galaxies=[gp.GalaxyModel(light=lp.EllipticalSersic,
mass=mp.EllipticalIsothermal)],
source_galaxies=[gp.GalaxyModel(light=lp.EllipticalSersic)],
optimizer_class=nl.MultiNest, phase_name='ph1_fit_all')
phase1.optimizer.n_live_points = 80
phase1.optimizer.sampling_efficiency = 0.6
return pipeline.PipelineImaging(pipeline_name, phase1)
def simulate():
from autolens.data.array import grids
from autolens.model.galaxy import galaxy as g
from autolens.lens import ray_tracing
psf = ccd.PSF.simulate_as_gaussian(shape=(11, 11), sigma=0.05, pixel_scale=0.05)
image_plane_grid_stack = grids.GridStack.grid_stack_for_simulation(shape=(180, 180), pixel_scale=0.05,
psf_shape=(11, 11))
lens_galaxy = g.Galaxy(mass=mp.EllipticalIsothermal( centre=(0.0, 0.0), axis_ratio=0.8, phi=135.0,
einstein_radius=1.6))
source_galaxy_0 = g.Galaxy(light=lp.EllipticalSersic(centre=(0.1, 0.1), axis_ratio=0.8, phi=90.0, intensity=0.2,
effective_radius=1.0, sersic_index=1.5))
source_galaxy_1 = g.Galaxy(light=lp.EllipticalSersic(centre=(-0.25, 0.25), axis_ratio=0.7, phi=45.0, intensity=0.1,
effective_radius=0.2, sersic_index=3.0))
source_galaxy_2 = g.Galaxy(light=lp.EllipticalSersic(centre=(0.45, -0.35), axis_ratio=0.6, phi=90.0, intensity=0.03,
effective_radius=0.3, sersic_index=3.5))
source_galaxy_3 = g.Galaxy(light=lp.EllipticalSersic(centre=(-0.05, -0.0), axis_ratio=0.9, phi=140.0, intensity=0.03,
effective_radius=0.1, sersic_index=4.0))
tracer = ray_tracing.TracerImageSourcePlanes(lens_galaxies=[lens_galaxy],
source_galaxies=[source_galaxy_0, source_galaxy_1,
source_galaxy_2, source_galaxy_3],
image_plane_grid_stack=image_plane_grid_stack)
return ccd.CCDData.simulate(array=tracer.image_plane_image_for_simulation, pixel_scale=0.05,
exposure_time=300.0, psf=psf, background_sky_level=0.1, add_noise=True)
@geometry_profiles.transform_grid
@geometry_profiles.move_grid_to_radial_minimum
def profile_image_from_grid(self, grid, grid_radial_minimum=None):
""" Calculate the intensity of the light profile on a grid of Cartesian (y,x) coordinates.
If the coordinates have not been transformed to the profile's geometry, this is performed automatically.
Parameters
----------
grid : ndarray
The (y, x) coordinates in the original reference frame of the grid.
"""
return self.profile_image_from_grid_radii(self.grid_to_eccentric_radii(grid))
class SphericalSersic(EllipticalSersic):
@af.map_types
def __init__(
self,
centre: dim.Position = (0.0, 0.0),
intensity: dim.Luminosity = 0.1,
effective_radius: dim.Length = 0.6,
sersic_index: float = 4.0,
):
""" The spherical Sersic light profile.
Parameters
----------
centre : (float, float)
The (y,x) arc-second coordinates of the profile centre.
intensity : float
Overall intensity normalisation of the light profiles (electrons per second).
def simulate():
from autolens.data.array import grids
from autolens.model.galaxy import galaxy as g
from autolens.lens import ray_tracing
psf = ccd.PSF.simulate_as_gaussian(shape=(11, 11), sigma=0.05, pixel_scale=0.05)
image_plane_grid_stack = grids.GridStack.grid_stack_for_simulation(shape=(130, 130), pixel_scale=0.1, psf_shape=(11, 11))
lens_galaxy = g.Galaxy(light=lp.EllipticalSersic(centre=(0.0, 0.0), axis_ratio=0.9, phi=45.0, intensity=0.04,
effective_radius=0.5, sersic_index=3.5),
mass=mp.EllipticalIsothermal(centre=(0.0, 0.0), axis_ratio=0.8, phi=45.0, einstein_radius=0.8))
source_galaxy = g.Galaxy(light=lp.EllipticalSersic(centre=(0.0, 0.0), axis_ratio=0.5, phi=90.0, intensity=0.03,
effective_radius=0.3, sersic_index=3.0))
tracer = ray_tracing.TracerImageSourcePlanes(lens_galaxies=[lens_galaxy], source_galaxies=[source_galaxy],
image_plane_grid_stack=image_plane_grid_stack)
image_simulated = ccd.CCDData.simulate(array=tracer.image_plane_image_for_simulation, pixel_scale=0.1,
exposure_time=300.0, psf=psf, background_sky_level=0.1, add_noise=True)
return image_simulated
def simulate():
from autolens.data.array import grids
from autolens.model.galaxy import galaxy as g
from autolens.lensing import ray_tracing
psf = im.PSF.simulate_as_gaussian(shape=(11, 11), sigma=0.05, pixel_scale=0.05)
image_plane_grids = grids.DataGrids.grids_for_simulation(shape=(180, 180), pixel_scale=0.05, psf_shape=(11, 11))
lens_galaxy = g.Galaxy(mass=mp.EllipticalIsothermal( centre=(0.0, 0.0), axis_ratio=0.8, phi=135.0,
einstein_radius=1.6))
source_galaxy_0 = g.Galaxy(light=lp.EllipticalSersic(centre=(0.1, 0.1), axis_ratio=0.8, phi=90.0, intensity=0.2,
effective_radius=1.0, sersic_index=1.5))
source_galaxy_1 = g.Galaxy(light=lp.EllipticalSersic(centre=(-0.25, 0.25), axis_ratio=0.7, phi=45.0, intensity=0.1,
effective_radius=0.2, sersic_index=3.0))
source_galaxy_2 = g.Galaxy(light=lp.EllipticalSersic(centre=(0.45, -0.35), axis_ratio=0.6, phi=90.0, intensity=0.03,
effective_radius=0.3, sersic_index=3.5))
source_galaxy_3 = g.Galaxy(light=lp.EllipticalSersic(centre=(-0.05, -0.0), axis_ratio=0.9, phi=140.0, intensity=0.03,
effective_radius=0.1, sersic_index=4.0))
tracer = ray_tracing.TracerImageSourcePlanes(lens_galaxies=[lens_galaxy],
source_galaxies=[source_galaxy_0, source_galaxy_1,
source_galaxy_2, source_galaxy_3],
image_plane_grids=[image_plane_grids])
return im.Image.simulate(array=tracer.image_plane_image_for_simulation, pixel_scale=0.05,
exposure_time=300.0, psf=psf, background_sky_level=0.1, add_noise=True)