예제 #1
0
        def test__points_in_x_cross_shape__sets_up_pairs_of_voronoi_cells(
                self):
            # 5 points in the shape of the face of a 5 on a die - makes a diamond Voronoi diagram

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

            pix = pixelizations.Voronoi()
            voronoi = pix.voronoi_from_pixel_centers(points)

            # ridge points is a numpy array for speed, but convert to list for the comparisons below so we can use in
            # to look for each list

            voronoi.ridge_points = list(
                map(lambda x: list(x), voronoi.ridge_points))

            assert len(voronoi.ridge_points) == 8

            assert [2, 0] in voronoi.ridge_points or [0, 2
                                                      ] in voronoi.ridge_points
            assert [2, 1] in voronoi.ridge_points or [1, 2
                                                      ] in voronoi.ridge_points
            assert [2, 3] in voronoi.ridge_points or [3, 2
                                                      ] in voronoi.ridge_points
            assert [2, 4] in voronoi.ridge_points or [4, 2
                                                      ] in voronoi.ridge_points
            assert [0, 1] in voronoi.ridge_points or [1, 0
                                                      ] in voronoi.ridge_points
            assert [0.3] in voronoi.ridge_points or [3, 0
                                                     ] in voronoi.ridge_points
            assert [3, 4] in voronoi.ridge_points or [4, 3
                                                      ] in voronoi.ridge_points
            assert [4, 1] in voronoi.ridge_points or [1, 4
                                                      ] in voronoi.ridge_points
예제 #2
0
    def test_fixed_regularization(self):
        galaxy_prior = gp.GalaxyModel(variable_redshift=True,
                                      pixelization=pixelizations.Voronoi(),
                                      regularization=regularization.Constant())

        arguments = {galaxy_prior.redshift.redshift: 2.0}

        galaxy = galaxy_prior.instance_for_arguments(arguments)

        assert galaxy.regularization.coefficients == (1., )
예제 #3
0
        def test__sub_to_pix_of_mapper_matches_nearest_neighbor_calculation(
                self):

            pixel_centers = 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]])

            pixelization_sub_grid = np.array([[0.05, 0.15], [0.15, 0.15],
                                              [0.05, 0.05], [0.15, 0.05],
                                              [1.05, 0.15], [1.15, 0.15],
                                              [1.05, 0.05], [1.15, 0.05],
                                              [2.05, 0.15], [2.15, 0.15],
                                              [2.05, 0.05], [2.15, 0.05],
                                              [0.05, 1.15], [0.15, 1.15],
                                              [0.05, 1.05], [0.15, 1.05],
                                              [1.05, 1.15], [1.15, 1.15],
                                              [1.05, 1.05], [1.15, 1.05],
                                              [2.05, 1.15], [2.15, 1.15],
                                              [2.05, 1.05], [2.15, 1.05]])

            sub_to_pix_nearest_neighbour = grid_to_pixel_pixels_via_nearest_neighbour(
                pixelization_sub_grid, pixel_centers)

            sub_to_regular = np.array([
                0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5,
                5, 5, 5
            ])
            regular_to_nearest_pix = np.array([0, 0, 1, 0, 0, 1, 2, 2, 3])
            grids = MockGridStack(
                regular=np.array([]),
                sub=MockSubGrid(pixelization_sub_grid,
                                sub_to_regular,
                                sub_grid_size=1),
                pix=pixelization_sub_grid,
                regular_to_nearest_pix=regular_to_nearest_pix)

            pix = pixelizations.Voronoi()
            voronoi = pix.voronoi_from_pixel_centers(pixel_centers)
            pixel_neighbors, pixel_neighbors_size = pix.neighbors_from_pixelization(
                pixels=6, ridge_points=voronoi.ridge_points)

            mapper = mappers.VoronoiMapper(
                pixels=6,
                grid_stack=grids,
                border=None,
                voronoi=voronoi,
                geometry=MockGeometry(
                    pixel_centres=pixel_centers,
                    pixel_neighbors=pixel_neighbors,
                    pixel_neighbors_size=pixel_neighbors_size))

            assert (mapper.sub_to_pix == sub_to_pix_nearest_neighbour).all()
예제 #4
0
        def test__9_points___check_voronoi_swaps_axis_from_y_x__to_x_y(self):
            # 9 points in a square - makes a square (this is the example int he scipy documentaiton page)

            points = 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]])

            pix = pixelizations.Voronoi()
            voronoi = pix.voronoi_from_pixel_centers(points)

            assert (voronoi.points == np.array([[0.0, 2.0], [1.0, 2.0],
                                                [2.0, 2.0], [0.0, 1.0],
                                                [1.0, 1.0], [2.0, 1.0],
                                                [0.0, 0.0], [1.0, 0.0],
                                                [2.0, 0.0]])).all()
예제 #5
0
        def test__points_in_x_cross_shape__sets_up_diamond_voronoi_vertices(
                self):
            # 5 points in the shape of the face of a 5 on a die - makes a diamond Voronoi diagram

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

            pix = pixelizations.Voronoi()
            voronoi = pix.voronoi_from_pixel_centers(points)

            voronoi.vertices = list(map(lambda x: list(x), voronoi.vertices))

            assert [0, 1.] in voronoi.vertices
            assert [-1., 0.] in voronoi.vertices
            assert [1., 0.] in voronoi.vertices
            assert [0., -1.] in voronoi.vertices
예제 #6
0
        def test__9_points_in_square___sets_up_pairs_of_voronoi_cells(self):
            # 9 points in a square - makes a square (this is the example int he scipy documentaiton page)

            points = 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]])

            pix = pixelizations.Voronoi()
            voronoi = pix.voronoi_from_pixel_centers(points)

            # ridge points is a numpy array for speed, but convert to list for the comparisons below so we can use in
            # to look for each list

            voronoi.ridge_points = list(
                map(lambda x: list(x), voronoi.ridge_points))

            assert len(voronoi.ridge_points) == 12

            assert [0, 1] in voronoi.ridge_points or [1, 0
                                                      ] in voronoi.ridge_points
            assert [1, 2] in voronoi.ridge_points or [2, 1
                                                      ] in voronoi.ridge_points
            assert [3, 4] in voronoi.ridge_points or [4, 3
                                                      ] in voronoi.ridge_points
            assert [4, 5] in voronoi.ridge_points or [5, 4
                                                      ] in voronoi.ridge_points
            assert [6, 7] in voronoi.ridge_points or [7, 6
                                                      ] in voronoi.ridge_points
            assert [7, 8] in voronoi.ridge_points or [8, 7
                                                      ] in voronoi.ridge_points

            assert [0, 3] in voronoi.ridge_points or [3, 0
                                                      ] in voronoi.ridge_points
            assert [1, 4] in voronoi.ridge_points or [4, 1
                                                      ] in voronoi.ridge_points
            assert [4, 7] in voronoi.ridge_points or [7, 4
                                                      ] in voronoi.ridge_points
            assert [2, 5] in voronoi.ridge_points or [5, 2
                                                      ] in voronoi.ridge_points
            assert [5, 8] in voronoi.ridge_points or [8, 5
                                                      ] in voronoi.ridge_points
            assert [3, 6] in voronoi.ridge_points or [6, 3
                                                      ] in voronoi.ridge_points
예제 #7
0
        def test__9_points_in_square___sets_up_square_of_voronoi_vertices(
                self):
            # 9 points in a square - makes a square (this is the example int he scipy documentaiton page)

            points = 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]])

            pix = pixelizations.Voronoi()
            voronoi = pix.voronoi_from_pixel_centers(points)

            # ridge points is a numpy array for speed, but convert to list for the comparisons below so we can use in
            # to look for each list

            voronoi.vertices = list(map(lambda x: list(x), voronoi.vertices))

            assert [0.5, 1.5] in voronoi.vertices
            assert [1.5, 0.5] in voronoi.vertices
            assert [0.5, 0.5] in voronoi.vertices
            assert [1.5, 1.5] in voronoi.vertices
예제 #8
0
        def test__compare_to_pixelization_util(self):
            # 9 points in a square - makes a square (this is the example int he scipy documentaiton page)

            points = np.array([[3.0, 0.0], [2.0, 1.0], [2.0, 2.0], [8.0, 3.0],
                               [1.0, 3.0], [1.0, 9.0], [6.0, 31.0], [0.0, 2.0],
                               [3.0, 5.0]])

            pix = pixelizations.Voronoi()
            voronoi = pix.voronoi_from_pixel_centers(points)
            pixel_neighbors, pixel_neighbors_size = pix.neighbors_from_pixelization(
                pixels=9, ridge_points=voronoi.ridge_points)

            voronoi = scipy.spatial.Voronoi(np.asarray(
                [points[:, 1], points[:, 0]]).T,
                                            qhull_options='Qbb Qc Qx Qm')
            pixel_neighbors_util, pixel_neighbors_size_util = \
                pixelization_util.voronoi_neighbors_from_pixels_and_ridge_points(pixels=9,
                                              ridge_points=np.array(voronoi.ridge_points))

            assert (pixel_neighbors == pixel_neighbors_util).all()
            assert (pixel_neighbors_size == pixel_neighbors_size_util).all()