Пример #1
0
        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()
Пример #2
0
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])
Пример #3
0
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)
Пример #4
0
        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()
Пример #5
0
        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()
Пример #6
0
    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()
Пример #7
0
    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()
Пример #8
0
    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
Пример #9
0
    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()
Пример #10
0
    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]
Пример #11
0
        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()
Пример #12
0
 def image_plane_blurring_image_1d(self):
     return galaxy_util.intensities_of_galaxies_from_grid(grid=self.primary_grid_stack.blurring, galaxies=self.galaxies)
Пример #13
0
 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]
Пример #14
0
 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))
Пример #15
0
 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))