Beispiel #1
0
        def test__pixel_scales_work_for_voronoi_mapper(self, grid_7x7, image_7x7):
            pixelization_grid = np.array(
                [[0.1, 0.1], [1.1, 0.1], [2.1, 0.1], [0.1, 1.1], [1.1, 1.1], [2.1, 1.1]]
            )

            nearest_pixelization_1d_index_for_mask_1d_index = np.array(
                [0, 0, 1, 0, 0, 1, 2, 2, 3]
            )

            pixelization_grid = aa.grid_voronoi(
                grid_1d=pixelization_grid,
                nearest_pixelization_1d_index_for_mask_1d_index=nearest_pixelization_1d_index_for_mask_1d_index,
            )

            mapper = aa.mapper(
                grid=grid_7x7,
                pixelization_grid=pixelization_grid,
                hyper_image=image_7x7,
            )

            pixel_signals = mapper.pixel_signals_from_signal_scale(signal_scale=2.0)

            pixel_signals_util = aa.util.mapper.adaptive_pixel_signals_from_images(
                pixels=6,
                signal_scale=2.0,
                pixelization_1d_index_for_sub_mask_1d_index=mapper.pixelization_1d_index_for_sub_mask_1d_index,
                mask_1d_index_for_sub_mask_1d_index=grid_7x7.regions._mask_1d_index_for_sub_mask_1d_index,
                hyper_image=image_7x7,
            )

            assert (pixel_signals == pixel_signals_util).all()
Beispiel #2
0
        def test__4x3_grid__non_symmetric_centre_shift(self):
            #   _ _ _
            #  |_|_|_|
            #  |_|_|_|
            #  |_|_|_|
            #  |_|_|_|

            grid = np.array(
                [[3.0, -0.5], [3.0, 0.51], [2.49, -0.5], [1.4, 1.0], [1.0, 2.5]]
            )

            pixelization_grid = aa.grid_rectangular.overlay_grid(
                shape_2d=(4, 3), grid=grid
            )

            mapper = aa.mapper(grid=grid, pixelization_grid=pixelization_grid)

            assert (
                mapper.pixelization_1d_index_for_sub_mask_1d_index
                == np.array([0, 1, 3, 10, 11])
            ).all()
            assert mapper.all_sub_mask_1d_indexes_for_pixelization_1d_index == [
                [0],
                [1],
                [],
                [2],
                [],
                [],
                [],
                [],
                [],
                [],
                [3],
                [4],
            ]
Beispiel #3
0
        def test__3x3_pixelization__solution_vector_ascending(self):
            grid = np.array(
                [
                    [2.0, -1.0],
                    [2.0, 0.0],
                    [2.0, 1.0],
                    [0.0, -1.0],
                    [0.0, 0.0],
                    [0.0, 1.0],
                    [-2.0, -1.0],
                    [-2.0, 0.0],
                    [-2.0, 1.0],
                ]
            )

            pixelization_grid = aa.grid_rectangular.overlay_grid(
                shape_2d=(3, 3), grid=grid
            )

            mapper = aa.mapper(grid=grid, pixelization_grid=pixelization_grid)

            recon_pix = mapper.reconstructed_pixelization_from_solution_vector(
                solution_vector=np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0])
            )

            assert (
                recon_pix.in_2d
                == np.array([[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]])
            ).all()
            assert recon_pix.pixel_scales == pytest.approx((4.0 / 3.0, 2.0 / 3.0), 1e-2)
            assert recon_pix.origin == (0.0, 0.0)
Beispiel #4
0
        def test__3x4_grid__change_arcsecond_dimensions__not_symmetric(self):
            #   _ _ _ _
            #  |_|_|_|_|
            #  |_|_|_|_|
            #  |_|_|_|_|

            grid = np.array(
                [[1.0, -1.5], [1.0, -0.49], [0.32, -1.5], [-0.34, 0.49], [-1.0, 1.5]]
            )

            pixelization_grid = aa.grid_rectangular.overlay_grid(
                shape_2d=(3, 4), grid=grid
            )

            mapper = aa.mapper(grid=grid, pixelization_grid=pixelization_grid)

            assert (
                mapper.pixelization_1d_index_for_sub_mask_1d_index
                == np.array([0, 1, 4, 10, 11])
            ).all()

            assert mapper.all_sub_mask_1d_indexes_for_pixelization_1d_index == [
                [0],
                [1],
                [],
                [],
                [2],
                [],
                [],
                [],
                [],
                [],
                [3],
                [4],
            ]
Beispiel #5
0
        def test__3x3_grid__change_arcsecond_dimensions__not_symmetric(self):
            #   _ _ _
            #  |_|_|_| Boundaries for pixels x = 0 and y = 0  -1.5 to -0.5
            #  |_|_|_| Boundaries for pixels x = 1 and y = 1 -0.5 to 0.5
            #  |_|_|_| Boundaries for pixels x = 2 and y = 2  0.5 to 1.5

            grid = np.array(
                [[1.0, -1.5], [1.0, -0.49], [0.32, -1.5], [0.32, 0.51], [-1.0, 1.5]]
            )

            pixelization_grid = aa.grid_rectangular.overlay_grid(
                shape_2d=(3, 3), grid=grid
            )

            mapper = aa.mapper(grid=grid, pixelization_grid=pixelization_grid)

            assert (
                mapper.pixelization_1d_index_for_sub_mask_1d_index
                == np.array([0, 1, 3, 5, 8])
            ).all()

            assert mapper.all_sub_mask_1d_indexes_for_pixelization_1d_index == [
                [0],
                [1],
                [],
                [2],
                [],
                [3],
                [],
                [],
                [4],
            ]
Beispiel #6
0
        def test__3x3_grid__change_arcsecond_dimensions_size__grid_adapts_accordingly(
            self
        ):
            #   _ _ _
            #  |_|_|_| Boundaries for pixels x = 0 and y = 0  -1.5 to -0.5
            #  |_|_|_| Boundaries for pixels x = 1 and y = 1 -0.5 to 0.5
            #  |_|_|_| Boundaries for pixels x = 2 and y = 2  0.5 to 1.5

            grid = np.array(
                [[1.5, -1.5], [1.0, 0.0], [1.0, 0.6], [-1.4, 0.0], [-1.5, 1.5]]
            )

            pixelization_grid = aa.grid_rectangular.overlay_grid(
                shape_2d=(3, 3), grid=grid
            )

            mapper = aa.mapper(grid=grid, pixelization_grid=pixelization_grid)

            assert (
                mapper.pixelization_1d_index_for_sub_mask_1d_index
                == np.array([0, 1, 2, 7, 8])
            ).all()

            assert mapper.all_sub_mask_1d_indexes_for_pixelization_1d_index == [
                [0],
                [1],
                [2],
                [],
                [],
                [],
                [],
                [3],
                [4],
            ]
Beispiel #7
0
        def test__sub_to_pix_of_mapper_matches_nearest_neighbor_calculation(
            self, grid_7x7
        ):
            pixelization_grid = np.array(
                [[0.1, 0.1], [1.1, 0.1], [2.1, 0.1], [0.1, 1.1], [1.1, 1.1], [2.1, 1.1]]
            )

            sub_to_pix_nearest_neighbour = grid_to_pixel_pixels_via_nearest_neighbour(
                grid_7x7, pixelization_grid
            )

            nearest_pixelization_1d_index_for_mask_1d_index = np.array(
                [0, 0, 1, 0, 0, 1, 2, 2, 3]
            )

            pixelization_grid = aa.grid_voronoi(
                grid_1d=pixelization_grid,
                nearest_pixelization_1d_index_for_mask_1d_index=nearest_pixelization_1d_index_for_mask_1d_index,
            )

            mapper = aa.mapper(grid=grid_7x7, pixelization_grid=pixelization_grid)

            assert (
                mapper.pixelization_1d_index_for_sub_mask_1d_index
                == sub_to_pix_nearest_neighbour
            ).all()
Beispiel #8
0
        def test__compare_to_imaging_util(self):

            pixelization_grid = aa.grid_rectangular.overlay_grid(
                shape_2d=(4, 3), grid=np.ones((2, 2))
            )

            mapper = aa.mapper(grid=None, pixelization_grid=pixelization_grid)

            solution = np.array(
                [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 1.0, 2.0, 3.0]
            )
            recon_pix = mapper.reconstructed_pixelization_from_solution_vector(
                solution_vector=solution
            )
            recon_pix_util = aa.util.array.sub_array_2d_from_sub_array_1d(
                sub_array_1d=solution,
                mask=np.full(fill_value=False, shape=(4, 3)),
                sub_size=1,
            )
            assert (recon_pix.in_2d == recon_pix_util).all()
            assert recon_pix.shape_2d == (4, 3)

            pixelization_grid = aa.grid_rectangular.overlay_grid(
                shape_2d=(3, 4), grid=np.ones((2, 2))
            )

            mapper = aa.mapper(grid=None, pixelization_grid=pixelization_grid)

            solution = np.array(
                [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 1.0, 2.0, 3.0]
            )
            recon_pix = mapper.reconstructed_pixelization_from_solution_vector(
                solution_vector=solution
            )
            recon_pix_util = aa.util.array.sub_array_2d_from_sub_array_1d(
                sub_array_1d=solution,
                mask=np.full(fill_value=False, shape=(3, 4)),
                sub_size=1,
            )
            assert (recon_pix.in_2d == recon_pix_util).all()
            assert recon_pix.shape_2d == (3, 4)
Beispiel #9
0
        def test__4x3_grid_of_pixel_grid__1_coordinate_in_each_pixel(self):
            #   _ _ _
            #  |_|_|_|
            #  |_|_|_|
            #  |_|_|_|
            #  |_|_|_|

            # Boundaries for column pixel 0 -1.0 to -(1/3)
            # Boundaries for column pixel 1 -(1/3) to (1/3)
            # Boundaries for column pixel 2  (1/3) to 1.0

            # Bounadries for row pixel 0 -1.0 to -0.5
            # Bounadries for row pixel 1 -0.5 to 0.0
            # Bounadries for row pixel 2  0.0 to 0.5
            # Bounadries for row pixel 3  0.5 to 1.0

            grid = np.array(
                [
                    [1.0, -1.0],
                    [1.0, 0.0],
                    [1.0, 1.0],
                    [0.5, -1.0],
                    [-0.5, 1.0],
                    [-1.0, 1.0],
                ]
            )

            pixelization_grid = aa.grid_rectangular.overlay_grid(
                shape_2d=(4, 3), grid=grid
            )

            mapper = aa.mapper(grid=grid, pixelization_grid=pixelization_grid)

            assert (
                mapper.pixelization_1d_index_for_sub_mask_1d_index
                == np.array([0, 1, 2, 3, 8, 11])
            ).all()

            assert mapper.all_sub_mask_1d_indexes_for_pixelization_1d_index == [
                [0],
                [1],
                [2],
                [3],
                [],
                [],
                [],
                [],
                [4],
                [],
                [],
                [5],
            ]
Beispiel #10
0
        def test__3x3_grid_of_pixel_grid__1_coordinate_per_square_pixel__near_edges_of_pixels(
            self
        ):
            #   _ _ _
            #  |_|_|_| Boundaries for pixels x = 0 and y = 0  -1.0 to -(1/3)
            #  |_|_|_| Boundaries for pixels x = 1 and y = 1 - (1/3) to (1/3)
            #  |_|_|_| Boundaries for pixels x = 2 and y = 2 - (1/3)" to 1.0"

            grid = np.array(
                [
                    [1.0, -1.0],
                    [1.0, 0.0],
                    [1.0, 1.0],
                    [-0.32, -1.0],
                    [-0.32, 0.32],
                    [0.0, 1.0],
                    [-0.34, -0.34],
                    [-0.34, 0.325],
                    [-1.0, 1.0],
                ]
            )

            pixelization_grid = aa.grid_rectangular.overlay_grid(
                shape_2d=(3, 3), grid=grid
            )

            mapper = aa.mapper(grid=grid, pixelization_grid=pixelization_grid)

            assert (
                mapper.pixelization_1d_index_for_sub_mask_1d_index
                == np.array([0, 1, 2, 3, 4, 5, 6, 7, 8])
            ).all()

            assert mapper.all_sub_mask_1d_indexes_for_pixelization_1d_index == [
                [0],
                [1],
                [2],
                [3],
                [4],
                [5],
                [6],
                [7],
                [8],
            ]
Beispiel #11
0
        def test__3x3_grid_of_pixel_grid___shift_coordinates_to_new_centre__centre_adjusts_based_on_grid(
            self
        ):
            #   _ _ _
            #  |_|_|_| Boundaries for pixels x = 0 and y = 0  -1.0 to -(1/3)
            #  |_|_|_| Boundaries for pixels x = 1 and y = 1 - (1/3) to (1/3)
            #  |_|_|_| Boundaries for pixels x = 2 and y = 2 - (1/3)" to 1.0"

            grid = np.array(
                [
                    [2.0, 0.0],
                    [2.0, 1.0],
                    [2.0, 2.0],
                    [1.0, 0.0],
                    [1.0, 1.0],
                    [1.0, 2.0],
                    [0.0, 0.0],
                    [0.0, 1.0],
                    [0.0, 2.0],
                ]
            )

            pixelization_grid = aa.grid_rectangular.overlay_grid(
                shape_2d=(3, 3), grid=grid
            )

            mapper = aa.mapper(grid=grid, pixelization_grid=pixelization_grid)

            assert (
                mapper.pixelization_1d_index_for_sub_mask_1d_index
                == np.array([0, 1, 2, 3, 4, 5, 6, 7, 8])
            ).all()

            assert mapper.all_sub_mask_1d_indexes_for_pixelization_1d_index == [
                [0],
                [1],
                [2],
                [3],
                [4],
                [5],
                [6],
                [7],
                [8],
            ]
Beispiel #12
0
        def test__different_image_and_sub_grids(self):
            #                  _ _ _
            # -1.0 to -(1/3)  |_|_|_|
            # -(1/3) to (1/3) |_|_|_|
            #  (1/3) to 1.0   |_|_|_|

            grid = np.array(
                [
                    [1.0, -1.0],
                    [1.0, 0.0],
                    [1.0, 1.0],
                    [0.0, -1.0],
                    [0.0, 0.0],
                    [0.0, 1.0],
                    [-1.0, -1.0],
                    [-1.0, 0.0],
                    [-1.0, 1.0],
                ]
            )

            pixelization_grid = aa.grid_rectangular.overlay_grid(
                shape_2d=(3, 3), grid=grid
            )

            mapper = aa.mapper(grid=grid, pixelization_grid=pixelization_grid)

            assert (
                mapper.pixelization_1d_index_for_sub_mask_1d_index
                == np.array([0, 1, 2, 3, 4, 5, 6, 7, 8])
            ).all()

            assert mapper.all_sub_mask_1d_indexes_for_pixelization_1d_index == [
                [0],
                [1],
                [2],
                [3],
                [4],
                [5],
                [6],
                [7],
                [8],
            ]
Beispiel #13
0
        def test__3x3_grid_of_pixel_grid__add_multiple_grid_to_1_pixel_pixel(self):
            #                  _ _ _
            # -1.0 to -(1/3)  |_|_|_|
            # -(1/3) to (1/3) |_|_|_|
            #  (1/3) to 1.0   |_|_|_|

            grid = np.array(
                [
                    [1.0, -1.0],
                    [0.0, 0.0],
                    [1.0, 1.0],
                    [0.0, 0.0],
                    [0.0, 0.0],
                    [0.0, 0.0],
                    [-1.0, -1.0],
                    [0.0, 0.0],
                    [-1.0, 1.0],
                ]
            )

            pixelization_grid = aa.grid_rectangular.overlay_grid(
                shape_2d=(3, 3), grid=grid
            )

            mapper = aa.mapper(grid=grid, pixelization_grid=pixelization_grid)

            assert (
                mapper.pixelization_1d_index_for_sub_mask_1d_index
                == np.array([0, 4, 2, 4, 4, 4, 6, 4, 8])
            ).all()

            assert mapper.all_sub_mask_1d_indexes_for_pixelization_1d_index == [
                [0],
                [],
                [2],
                [],
                [1, 3, 4, 5, 7],
                [],
                [6],
                [],
                [8],
            ]
Beispiel #14
0
        def test__image_from_source__different_types_of_lists_input(self, sub_grid_7x7):

            rectangular_pixelization_grid = aa.grid_rectangular.overlay_grid(
                grid=sub_grid_7x7, shape_2d=(3, 3)
            )
            rectangular_mapper = aa.mapper(
                grid=sub_grid_7x7, pixelization_grid=rectangular_pixelization_grid
            )

            image_pixel_indexes = rectangular_mapper.image_pixel_indexes_from_source_pixel_indexes(
                source_pixel_indexes=[0, 1]
            )

            assert image_pixel_indexes == [0, 1, 2, 3, 4, 5, 6, 7]

            image_pixel_indexes = rectangular_mapper.image_pixel_indexes_from_source_pixel_indexes(
                source_pixel_indexes=[[0], [4]]
            )

            assert image_pixel_indexes == [[0, 1, 2, 3], [16, 17, 18, 19]]
Beispiel #15
0
        def test__pixel_signals__compare_to_mapper_util(self, grid_7x7, image_7x7):
            pixelization_grid = aa.grid_rectangular.overlay_grid(
                shape_2d=(3, 3), grid=grid_7x7
            )

            mapper = aa.mapper(
                grid=grid_7x7,
                pixelization_grid=pixelization_grid,
                hyper_image=image_7x7,
            )

            pixel_signals = mapper.pixel_signals_from_signal_scale(signal_scale=2.0)

            pixel_signals_util = aa.util.mapper.adaptive_pixel_signals_from_images(
                pixels=9,
                signal_scale=2.0,
                pixelization_1d_index_for_sub_mask_1d_index=mapper.pixelization_1d_index_for_sub_mask_1d_index,
                mask_1d_index_for_sub_mask_1d_index=grid_7x7.regions._mask_1d_index_for_sub_mask_1d_index,
                hyper_image=image_7x7,
            )

            assert (pixel_signals == pixel_signals_util).all()
Beispiel #16
0
        [-0.6, -0.5],
        [-0.4, -1.1],
        [-1.2, 0.8],
        [-1.5, 0.9],
    ],
    shape_2d=(3, 3),
    pixel_scales=1.0,
)
voronoi_grid = aa.grid_voronoi(
    grid_1d=grid_9,
    nearest_pixelization_1d_index_for_mask_1d_index=np.zeros(
        shape=grid_7x7.shape_1d, dtype="int"
    ),
)

voronoi_mapper = aa.mapper(grid=grid_7x7, pixelization_grid=voronoi_grid)

regularization = aa.reg.Constant(coefficient=1.0)

inversion = aa.inversion(
    masked_dataset=masked_imaging, mapper=voronoi_mapper, regularization=regularization
)

aplt.inversion.subplot_inversion(
    inversion=inversion,
    image_positions=[(0.05, 0.05)],
    lines=[(0.0, 0.0), (0.1, 0.1)],
    image_pixel_indexes=[0],
    source_pixel_indexes=[5],
)
Beispiel #17
0
import autoarray as aa
import autoarray.plot as aplt

grid_7x7 = aa.grid.uniform(shape_2d=(7, 7), pixel_scales=0.3)
grid_3x3 = aa.grid.uniform(shape_2d=(3, 3), pixel_scales=1.0)
rectangular_grid = aa.grid_rectangular.overlay_grid(grid=grid_3x3, shape_2d=(3, 3))
rectangular_mapper = aa.mapper(grid=grid_7x7, pixelization_grid=rectangular_grid)

aplt.mapper_obj(mapper=rectangular_mapper, include_pixelization_grid=True)
Beispiel #18
0
def make_voronoi_mapper_9_3x3(grid_7x7, voronoi_pixelization_grid_9):
    return aa.mapper(grid=grid_7x7,
                     pixelization_grid=voronoi_pixelization_grid_9)
Beispiel #19
0
def make_rectangular_mapper_7x7_3x3(grid_7x7,
                                    rectangular_pixelization_grid_3x3):
    return aa.mapper(grid=grid_7x7,
                     pixelization_grid=rectangular_pixelization_grid_3x3)