def test__same_as_above__multiple_galaxies(self, grid_stack_0, grid_stack_1): # Overwrite one value so intensity in each pixel is different grid_stack_0.blurring[1] = np.array([2.0, 2.0]) grid_stack_1.blurring[1] = np.array([2.0, 2.0]) g0 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=1.0)) g1 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=2.0)) g0_image_grid_0 = galaxy_util.intensities_of_galaxies_from_grid( grid_stack_0.blurring, galaxies=[g0]) g1_image_grid_0 = galaxy_util.intensities_of_galaxies_from_grid( grid_stack_0.blurring, galaxies=[g1]) plane_stack = pl_stack.PlaneStack( galaxies=[g0, g1], grid_stacks=[grid_stack_0, grid_stack_1]) assert (plane_stack.image_plane_blurring_images_1d[0] == g0_image_grid_0 + g1_image_grid_0).all() g0_image_grid_1 = galaxy_util.intensities_of_galaxies_from_grid( grid_stack_1.blurring, galaxies=[g0]) g1_image_grid_1 = galaxy_util.intensities_of_galaxies_from_grid( grid_stack_1.blurring, galaxies=[g1]) plane_stack = pl_stack.PlaneStack( galaxies=[g0, g1], grid_stacks=[grid_stack_0, grid_stack_1]) assert (plane_stack.image_plane_blurring_images_1d[1] == g0_image_grid_1 + g1_image_grid_1).all()
def phase(): pixel_scale = 0.1 image_shape = (150, 150) tools.reset_paths(test_name=test_name, output_path=output_path) grid_stack = grids.GridStack.from_shape_pixel_scale_and_sub_grid_size( shape=image_shape, pixel_scale=pixel_scale, sub_grid_size=4) galaxy = g.Galaxy(mass=lp.SphericalExponential( centre=(0.0, 0.0), intensity=1.0, effective_radius=0.5)) intensities = galaxy_util.intensities_of_galaxies_from_grid( galaxies=[galaxy], grid=grid_stack.sub) intensities = grid_stack.regular.scaled_array_from_array_1d( array_1d=intensities) noise_map = scaled_array.ScaledSquarePixelArray(array=np.ones( intensities.shape), pixel_scale=pixel_scale) data = gd.GalaxyData(image=intensities, noise_map=noise_map, pixel_scale=pixel_scale) phase = ph.GalaxyFitPhase( galaxies=dict(gal=gm.GalaxyModel(light=lp.SphericalExponential)), use_intensities=True, sub_grid_size=4, optimizer_class=nl.MultiNest, phase_name=test_name + '/') phase.run(galaxy_data=[data])
def plane_image_of_galaxies_from_grid(shape, grid, galaxies, buffer=1.0e-2): y_min = np.min(grid[:, 0]) - buffer y_max = np.max(grid[:, 0]) + buffer x_min = np.min(grid[:, 1]) - buffer x_max = np.max(grid[:, 1]) + buffer pixel_scales = (float( (y_max - y_min) / shape[0]), float((x_max - x_min) / shape[1])) origin = ((y_max + y_min) / 2.0, (x_max + x_min) / 2.0) uniform_grid = grid_util.regular_grid_1d_masked_from_mask_pixel_scales_and_origin( mask=np.full(shape=shape, fill_value=False), pixel_scales=pixel_scales, origin=origin) image_1d = sum([ galaxy_util.intensities_of_galaxies_from_grid(grid=uniform_grid, galaxies=[galaxy]) for galaxy in galaxies ]) image_2d = mapping_util.map_unmasked_1d_array_to_2d_array_from_array_1d_and_shape( array_1d=image_1d, shape=shape) return pl.PlaneImage(array=image_2d, pixel_scales=pixel_scales, grid=grid, origin=origin)
def test__same_as_above_but_for_galaxies(self, grid_stack_0, grid_stack_1, galaxy_light): # Overwrite one value so intensity in each pixel is different grid_stack_0.blurring[1] = np.array([2.0, 2.0]) galaxy_image = galaxy_util.intensities_of_galaxies_from_grid( grid_stack_0.blurring, galaxies=[galaxy_light]) galaxy_image_1 = galaxy_util.intensities_of_galaxies_from_grid( grid_stack_1.blurring, galaxies=[galaxy_light]) plane_stack = pl_stack.PlaneStack( galaxies=[galaxy_light], grid_stacks=[grid_stack_0, grid_stack_1]) assert (plane_stack.image_plane_blurring_images_1d[0] == galaxy_image).all() assert (plane_stack.image_plane_blurring_images_1d[1] == galaxy_image_1).all()
def test__image_plane_image_of_galaxies__use_multiple_grids__get_multiple_images( self, grid_stack_0, grid_stack_1): # Overwrite one value so intensity in each pixel is different grid_stack_0.sub[5] = np.array([2.0, 2.0]) g0 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=1.0)) g1 = g.Galaxy(light_profile=lp.EllipticalSersic(intensity=2.0)) plane_stack = pl_stack.PlaneStack( galaxies=[g0, g1], grid_stacks=[grid_stack_0, grid_stack_1]) g0_image_grid_0 = galaxy_util.intensities_of_galaxies_from_grid( grid_stack_0.sub, galaxies=[g0]) g1_image_grid_0 = galaxy_util.intensities_of_galaxies_from_grid( grid_stack_0.sub, galaxies=[g1]) assert plane_stack.image_plane_images_1d[0] == pytest.approx( g0_image_grid_0 + g1_image_grid_0, 1.0e-4) assert (plane_stack.image_plane_images[0] == grid_stack_0.regular.scaled_array_from_array_1d( plane_stack.image_plane_images_1d[0])).all() assert (plane_stack.image_plane_images_1d_of_galaxies[0][0] == g0_image_grid_0).all() assert (plane_stack.image_plane_images_1d_of_galaxies[0][1] == g1_image_grid_0).all() g0_image_grid_1 = galaxy_util.intensities_of_galaxies_from_grid( grid_stack_1.sub, galaxies=[g0]) g1_image_grid_1 = galaxy_util.intensities_of_galaxies_from_grid( grid_stack_1.sub, galaxies=[g1]) assert plane_stack.image_plane_images_1d[1] == pytest.approx( g0_image_grid_1 + g1_image_grid_1, 1.0e-4) assert (plane_stack.image_plane_images[1] == grid_stack_0.regular.scaled_array_from_array_1d( plane_stack.image_plane_images_1d[1])).all() assert (plane_stack.image_plane_images_1d_of_galaxies[1][0] == g0_image_grid_1).all() assert (plane_stack.image_plane_images_1d_of_galaxies[1][1] == g1_image_grid_1).all()
def test__galaxy_light__intensities_returned_as_correct_values( self, grid_stack, galaxy_light): grid_stack.regular = np.array([[1.0, 1.0], [1.0, 0.0], [-1.0, 0.0]]) galaxy_intensities = galaxy_light.intensities_from_grid( grid_stack.regular) util_intensities = galaxy_util.intensities_of_galaxies_from_grid( grid=grid_stack.regular, galaxies=[galaxy_light]) assert (galaxy_intensities == util_intensities).all()
def test__no_galaxies__intensities_returned_as_0s(self, grid_stack, galaxy_non): grid_stack.regular = np.array([[1.0, 1.0], [2.0, 2.0], [3.0, 3.0]]) intensities = galaxy_util.intensities_of_galaxies_from_grid( grid=grid_stack.regular, galaxies=[galaxy_non]) assert (intensities[0] == np.array([0.0, 0.0])).all() assert (intensities[1] == np.array([0.0, 0.0])).all() assert (intensities[2] == np.array([0.0, 0.0])).all()
def test__sub_grid_in__grid_is_mapped_to_image_grid_by_wrapper( self, grid_stack, galaxy_light): galaxy_image = galaxy_light.intensities_from_grid(grid_stack.sub) galaxy_image = (galaxy_image[0] + galaxy_image[1] + galaxy_image[2] + galaxy_image[3]) / 4.0 util_intensities = galaxy_util.intensities_of_galaxies_from_grid( grid=grid_stack.sub, galaxies=[galaxy_light]) assert util_intensities[0] == galaxy_image
def test__galaxy_light_x2__intensities_double_from_above( self, grid_stack, galaxy_light): grid_stack.regular = np.array([[1.0, 1.0], [1.0, 0.0], [-1.0, 0.0]]) galaxy_intensities = galaxy_light.intensities_from_grid( grid_stack.regular) util_intensities = galaxy_util.intensities_of_galaxies_from_grid( grid=grid_stack.regular, galaxies=[galaxy_light, galaxy_light]) assert (2.0 * galaxy_intensities == util_intensities).all()
def profile_quantity_from_galaxy_and_sub_grid(self, galaxies, sub_grid): if self.use_intensities: return galaxy_util.intensities_of_galaxies_from_grid(galaxies=galaxies, grid=sub_grid) elif self.use_surface_density: return galaxy_util.surface_density_of_galaxies_from_grid(galaxies=galaxies, grid=sub_grid) elif self.use_potential: return galaxy_util.potential_of_galaxies_from_grid(galaxies=galaxies, grid=sub_grid) elif self.use_deflections_y: return galaxy_util.deflections_of_galaxies_from_grid(galaxies=galaxies, grid=sub_grid)[:, 0] elif self.use_deflections_x: return galaxy_util.deflections_of_galaxies_from_grid(galaxies=galaxies, grid=sub_grid)[:, 1]
def test__image_from_plane__same_as_galaxy_images( self, grid_stack_0, galaxy_light): # Overwrite one value so intensity in each pixel is different grid_stack_0.sub[5] = np.array([2.0, 2.0]) galaxy_image = galaxy_util.intensities_of_galaxies_from_grid( grid_stack_0.sub, galaxies=[galaxy_light]) plane_stack = pl_stack.PlaneStack( galaxies=[galaxy_light], grid_stacks=[grid_stack_0, grid_stack_0]) assert (plane_stack.image_plane_images_1d[0] == galaxy_image).all() assert (plane_stack.image_plane_images[0] == grid_stack_0.regular.scaled_array_from_array_1d( plane_stack.image_plane_images_1d[0])).all() assert (plane_stack.image_plane_images_1d[1] == galaxy_image).all() assert (plane_stack.image_plane_images[1] == grid_stack_0.regular.scaled_array_from_array_1d( plane_stack.image_plane_images_1d[1])).all()
def image_plane_blurring_image_1d(self): return galaxy_util.intensities_of_galaxies_from_grid(grid=self.primary_grid_stack.blurring, galaxies=self.galaxies)
def image_plane_image_1d_of_galaxies(self): return [galaxy_util.intensities_of_galaxies_from_grid(grid=self.grid_stack.sub, galaxies=[galaxy]) for galaxy in self.galaxies]
def image_plane_blurring_images_1d(self): return list(map(lambda grid_stack : galaxy_util.intensities_of_galaxies_from_grid(grid=grid_stack.blurring, galaxies=self.galaxies), self.grid_stacks))
def image_plane_images_1d_of_galaxies(self): return list(map(lambda grid_stack : [galaxy_util.intensities_of_galaxies_from_grid(grid=grid_stack.sub, galaxies=[galaxy]) for galaxy in self.galaxies], self.grid_stacks))