def mapper_from_grid_and_sparse_grid(self, grid, sparse_grid, inversion_uses_border=False): galaxies_with_pixelization = list( filter(lambda galaxy: galaxy.pixelization is not None, self.galaxies)) if len(galaxies_with_pixelization) == 0: return None if len(galaxies_with_pixelization) == 1: pixelization = galaxies_with_pixelization[0].pixelization return pixelization.mapper_from_grid_and_sparse_grid( grid=grid, sparse_grid=sparse_grid, inversion_uses_border=inversion_uses_border, hyper_image=galaxies_with_pixelization[0].hyper_galaxy_image, ) elif len(galaxies_with_pixelization) > 1: raise exc.PixelizationException( "The number of galaxies with pixelizations in one plane is above 1" )
def regularization(self): galaxies_with_regularization = list(filter(lambda galaxy: galaxy.has_regularization, self.galaxies)) if len(galaxies_with_regularization) == 0: return None if len(galaxies_with_regularization) == 1: return galaxies_with_regularization[0].regularization elif len(galaxies_with_regularization) > 1: raise exc.PixelizationException('The number of galaxies with regularizations in one plane is above 1')
def pixelization(self): if len(self.galaxies_with_pixelization) == 0: return None if len(self.galaxies_with_pixelization) == 1: return self.galaxies_with_pixelization[0].pixelization elif len(self.galaxies_with_pixelization) > 1: raise exc.PixelizationException( "The number of galaxies with pixelizations in one plane is above 1" )
def mapper(self): galaxies_with_pixelization = list(filter(lambda galaxy: galaxy.has_pixelization, self.galaxies)) if len(galaxies_with_pixelization) == 0: return None if len(galaxies_with_pixelization) == 1: pixelization = galaxies_with_pixelization[0].pixelization return pixelization.mapper_from_grid_stack_and_border(grid_stack=self.grid_stack, border=self.border) elif len(galaxies_with_pixelization) > 1: raise exc.PixelizationException('The number of galaxies with pixelizations in one plane is above 1')
def voronoi_from_pixel_centers(pixel_centers): """Compute the Voronoi grid of the pixelization, using the pixel centers. Parameters ---------- pixel_centers : ndarray The (y,x) centre of every Voronoi pixel. """ try: return scipy.spatial.Voronoi( np.asarray([pixel_centers[:, 1], pixel_centers[:, 0]]).T, qhull_options="Qbb Qc Qx Qm", ) except OverflowError or scipy.spatial.qhull.QhullError: raise exc.PixelizationException()
def __init__(self, shape=(3, 3)): """A rectangular pixelization, where pixels are defined on a Cartesian and uniform grid of shape \ (rows, columns). Like arrays, the indexing of the rectangular grid begins in the top-left corner and goes right and down. Parameters ----------- shape : (int, int) The dimensions of the rectangular grid of pixels (y_pixels, x_pixel) """ if shape[0] <= 2 or shape[1] <= 2: raise exc.PixelizationException( "The rectangular pixelization must be at least dimensions 3x3") self.shape = (int(shape[0]), int(shape[1])) self.pixels = self.shape[0] * self.shape[1] super(Rectangular, self).__init__()