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
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., )
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()
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()
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
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
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
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()