autogalaxy.Grid2D#
- class Grid2D[source]#
Bases:
StructureA grid of 2D (y,x) coordinates, which are paired to a uniform 2D mask of pixels. Each entry on the grid corresponds to the (y,x) coordinates at the centre of a pixel of an unmasked pixel.
A Grid2D is ordered such that pixels begin from the top-row (e.g. index [0, 0]) of the corresponding mask and go right and down. The positive y-axis is upwards and positive x-axis to the right.
The grid can be stored in two formats:
slimmed: all masked entries are removed so the ndarray is shape [total_unmasked_coordinates**2, 2]
native: it retains the original shape of the grid so the ndarray is shape [total_y_coordinates, total_x_coordinates, 2].
__Slim__
The Grid2D is an ndarray of shape [total_unmasked_coordinates, 2], therefore when slim the shape of the grid is 2, not 1.
The first element of the ndarray corresponds to the pixel index and second element the y or x coordinate value.
For example:
grid[3,0] = the 4th unmasked pixel’s y-coordinate.
grid[6,1] = the 7th unmasked pixel’s x-coordinate.
Below is a visual illustration of a grid, where a total of 10 pixels are unmasked and are included in the grid.
x x x x x x x x x x x x x x x x x x x x This is an example mask.Mask2D, where: x x x x x x x x x x x x x x O O x x x x x = `True` (Pixel is masked and excluded from the grid) x x x O O O O x x x O = `False` (Pixel is not masked and included in the grid) x x x O O O O x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
The mask pixel index’s will come out like this (and the direction of scaled coordinates is highlighted around the mask.
pixel_scales = 1.0" <--- -ve x +ve --> y x x x x x x x x x x x ^ grid[0] = [ 1.5, -0.5] x x x x x x x x x x I grid[1] = [ 1.5, 0.5] x x x x x x x x x x I grid[2] = [ 0.5, -1.5] x x x x 0 1 x x x x +ve grid[3] = [ 0.5, -0.5] x x x 2 3 4 5 x x x y grid[4] = [ 0.5, 0.5] x x x 6 7 8 9 x x x -ve grid[5] = [ 0.5, 1.5] x x x x x x x x x x I grid[6] = [-0.5, -1.5] x x x x x x x x x x I grid[7] = [-0.5, -0.5] x x x x x x x x x x \/ grid[8] = [-0.5, 0.5] x x x x x x x x x x grid[9] = [-0.5, 1.5]
__native__
The Grid2D has the same properties as Case 1, but is stored as an an ndarray of shape [total_y_coordinates, total_x_coordinates, 2]. Therefore when native the shape of the grid is 3, not 2.
All masked entries on the grid has (y,x) values of (0.0, 0.0).
For the following example mask:
x x x x x x x x x x x x x x x x x x x x This is an example mask.Mask2D, where: x x x x x x x x x x x x x x O O x x x x x = `True` (Pixel is masked and excluded from the grid) x x x O O O O x x x O = `False` (Pixel is not masked and included in the grid) x x x O O O O x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x
In the above grid:
grid[0,0,0] = 0.0 (it is masked, thus zero)
grid[0,0,1] = 0.0 (it is masked, thus zero)
grid[3,3,0] = 0.0 (it is masked, thus zero)
grid[3,3,1] = 0.0 (it is masked, thus zero)
grid[3,4,0] = 1.5
grid[3,4,1] = -0.5
Grid2D Mapping:
Every set of (y,x) coordinates in a pixel of the grid maps to an unmasked pixel in the mask. For a uniform grid, every (y,x) coordinate directly corresponds to the location of its paired unmasked pixel.
It is not a requirement that grid is uniform and that their coordinates align with the mask. The input grid could be an irregular set of (y,x) coordinates where the indexing signifies that the (y,x) coordinate originates or is paired with the mask’s pixels but has had its value change by some aspect of the calculation.
This is important for the child project PyAutoLens, where grids in the image-plane are ray-traced and deflected to perform lensing calculations. The grid indexing is used to map pixels between the image-plane and source-plane.
- Parameters:
values (
Union[ndarray,List]) – The (y,x) coordinates of the grid.mask (
Mask2D) – The 2D mask associated with the grid, defining the pixels each grid coordinate is paired with and originates from.store_native (
bool) – If True, the ndarray is stored in its native format [total_y_pixels, total_x_pixels, 2]. This avoids mapping large data arrays to and from the slim / native formats, which can be a computational bottleneck.over_sample_size (
Union[int,Array2D]) – The over sampling scheme size, which divides the grid into a sub grid of smaller pixels when computing values (e.g. images) from the grid to approximate the 2D line integral of the amount of light that falls into each pixel.over_sampled (
Optional[Grid2D]) – The over sampled grid of (y,x) coordinates, which can be passed in manually because if the grid is not uniform (e.g. due to gravitational lensing) is cannot be computed internally in this function. If the over sampled grid is not passed in it is computed assuming uniformity.
Methods
allApply new over sampling to the grid.
astypeSetup a blurring-grid from a mask, where a blurring grid consists of all pixels that are masked (and therefore have their values set to (0.0, 0.0)), but are close enough to the unmasked pixels that their values will be convolved into the unmasked those pixels.
Returns the blurring grid from a grid, via an input 2D kernel shape.
Create a Grid2D (see Grid2D.__new__) from an input bounding box with coordinates [y_min, y_max, x_min, x_max], where the shape_native is used to compute the (y,x) grid values within this bounding box.
copyReturns the distance of every coordinate on the grid from an input (y,x) coordinate.
The extent of the grid in scaled units returned as a list [x_min, x_max, y_min, y_max], where all values are buffed such that their extent is further than the grid's extent..
Create a Grid2D (see Grid2D.__new__) by inputting the extent of the (y,x) grid coordinates as an input (x0, x1, y0, y1) tuple.
Create a Grid2D (see Grid2D.__new__) from a mask, where only unmasked pixels are included in the grid (if the grid is represented in its native 2D masked values are (0.0, 0.0)).
Create a Grid2D (see Grid2D.__new__) from a mask, where only unmasked pixels are included in the grid (if the grid is represented in its native 2D masked values are (0.0, 0.0)).
Create a Grid2D (see Grid2D.__new__) by inputting the grid coordinates as 1D y and x values.
Create a Grid2D (see Grid2D.__new__) by inputting the grid coordinates as 2D y and x values.
Determine a projected radial grid of points from a 2D region of coordinates defined by an extent [xmin, xmax, ymin, ymax] and with a (y,x) centre.
The function grid_scaled_2d_slim_radial_projected_from() determines a projected radial grid of points from a 2D region of coordinates defined by an extent [xmin, xmax, ymin, ymax] and with a (y,x) centre.
Returns a new Grid2D from this grid, where the (y,x) coordinates of this grid have a grid of (y,x) values, termed the deflection grid, subtracted from them to determine the new grid of (y,x) values.
Remove all coordinates from this Grid2D which are within a certain distance of an input list of coordinates.
instance_flattenFlatten an instance of an autoarray class into a tuple of its attributes (i.e.. a pytree).
instance_unflattenUnflatten a tuple of attributes (i.e. a pytree) into an instance of an autoarray class.
invertmaxminCreate a Grid2D (see Grid2D.__new__) by inputting the grid coordinates in 1D or 2D, automatically determining whether to use the 'manual_slim' or 'manual_native' methods.
When the edge pixels of a mask are unmasked and a convolution is to occur, the signal of edge pixels will be 'missing' if the grid is used to evaluate the signal via an analytic function.
reshapesqrtReturns the squared distance of every coordinate on the grid from an input coordinate.
Return a new Grid2D where the (y, x) coordinates of this grid have an offset subtracted and are then rotated counter-clockwise by
angle(in degrees) about the offset point.sumtrimmed_after_convolution_fromTrim the data structure back to its original shape after PSF convolution has been performed on a padded version of it.
Create a Grid2D (see Grid2D.__new__) as a uniform grid of (y,x) values given an input shape_native and pixel_scales of the grid:
with_new_arrayCopy this object but give it a new array.
Attributes
arrayderive_gridThe
DeriveGrid2Dobject of the mask, used to compute derived grids of (y,x) coordinates such as the edge grid, border grid, and full unmasked grid.derive_indexesThe
DeriveIndexes2Dobject of the mask, used to compute index arrays that map data between theslim(1D unmasked) andnative(2D full-shape) representations.derive_maskThe
DeriveMask2Dobject of the mask, used to compute derived masks such as the edge mask, border mask, and blurring mask.dtypeReturn the grid as an ndarray of shape [total_unmasked_pixels, 2] with flipped values such that coordinates are given as (x,y) values.
geometryThe geometry object of the mask associated with this structure, which defines coordinate conversions between pixel units and scaled units.
header_dictThe FITS header dictionary of the mask associated with this structure, containing pixel scale and origin entries.
imagReturn the grid as an ndarray where all (y,x) values are converted to Radians.
is_transformedReturns if the grid is uniform, where a uniform grid is defined as a grid where all pixels are separated by the same pixel-scale in both the y and x directions.
Return a Grid2D where the data is stored in its native representation, which has shape [total_y_pixels, total_x_pixels, 2].
ndimoriginThe (y,x) scaled units origin of the mask's coordinate system.
pixel_areaThe area of a single pixel in scaled units squared (
pixel_scales[0] * pixel_scales[1]).pixel_scaleThe pixel scale as a single float value.
pixel_scalesThe (y,x) scaled units to pixel units conversion factors of every pixel, as a tuple of floats.
realThe (y,x) maximum values of the grid in scaled units, buffed such that their extent is further than the grid's extent.
The (y,x) minimum values of the grid in scaled units, buffed such that their extent is further than the grid's extent.
shapeshape_nativeThe shape of the data structure in its
nativerepresentation (e.g.(total_y_pixels, total_x_pixels)for a 2D structure).The (y,x) interior 2D shape of the grid in scaled units, computed from the minimum and maximum y and x values of the grid.
shape_slimThe 1D shape of the data structure in its
slimrepresentation, equal to the number of unmasked pixels.sizeReturn a Grid2D where the data is stored its slim representation, which is an ndarray of shape [total_unmasked_pixels, 2].
total_areaThe total area of all unmasked pixels in scaled units squared (
total_pixels * pixel_area).total_pixelsThe total number of unmasked pixels in the data structure (its
slimlength).unmasked_gridA grid of (y,x) coordinates of every pixel in the full mask shape (including masked pixels), using the mask's geometry to compute each pixel's scaled coordinate.
- property over_sample_size#
- property over_sampler#
- property over_sampled#
- classmethod no_mask(values, pixel_scales, shape_native=None, origin=(0.0, 0.0), over_sample_size=4)[source]#
Create a Grid2D (see Grid2D.__new__) by inputting the grid coordinates in 1D or 2D, automatically determining whether to use the ‘manual_slim’ or ‘manual_native’ methods.
From 1D input the method cannot determine the 2D shape of the grid and its mask, thus the shape_native must be input into this method. The mask is setup as a unmasked Mask2D of shape_native.
The 2D shape of the grid and its mask are determined from the input grid and the mask is setup as an unmasked Mask2D of shape_native.
- Parameters:
values (
Union[ndarray,List]) – The (y,x) coordinates of the grid input as an ndarray of shape [total_unmasked_pixels, 2] or a list of lists.shape_native (
Tuple[int,int]) – The 2D shape of the mask the grid is paired with.pixel_scales (
Union[Tuple[float],Tuple[float,float],float]) – The (y,x) arcsecond-to-pixel units conversion factor of every pixel. If this is input as a float, it is converted to a (float, float).origin (
Tuple[float,float]) – The origin of the grid’s mask.
- classmethod from_yx_1d(y, x, shape_native, pixel_scales, origin=(0.0, 0.0), over_sample_size=4)[source]#
Create a Grid2D (see Grid2D.__new__) by inputting the grid coordinates as 1D y and x values.
From 1D input the method cannot determine the 2D shape of the grid and its mask, thus the shape_native must be input into this method. The mask is setup as a unmasked Mask2D of shape_native.
- Parameters:
list (x or) – The y coordinates of the grid input as an ndarray of shape [total_coordinates] or list.
list – The x coordinates of the grid input as an ndarray of shape [total_coordinates] or list.
shape_native (
Tuple[int,int]) – The 2D shape of the mask the grid is paired with.pixel_scales (
Union[Tuple[float],Tuple[float,float],float]) – The (y,x) arcsecond-to-pixel units conversion factor of every pixel. If this is input as a float, it is converted to a (float, float).origin (
Tuple[float,float]) – The origin of the grid’s mask.
Examples
import autoarray as aa # Make Grid2D from input np.ndarray. grid_2d = aa.Grid2D.from_yx_1d( y=np.array([1.0, 3.0, 5.0, 7.0]), x=np.array([2.0, 4.0, 6.0, 8.0]), shape_native=(2, 2), pixel_scales=1.0, ) # Make Grid2D from input list. grid_2d = aa.Grid2D.from_yx_1d( y=[1.0, 3.0, 5.0, 7.0], x=[2.0, 4.0, 6.0, 8.0], shape_native=(2, 2), pixel_scales=1.0, ) # Print grid's slim (masked 1D data representation) and # native (masked 2D data representation) print(grid_2d.slim) print(grid_2d.native)
- classmethod from_yx_2d(y, x, pixel_scales, origin=(0.0, 0.0), over_sample_size=4)[source]#
Create a Grid2D (see Grid2D.__new__) by inputting the grid coordinates as 2D y and x values.
The 2D shape of the grid and its mask are determined from the input grid and the mask is setup as an unmasked Mask2D of shape_native.
- Parameters:
list (x or) – The y coordinates of the grid input as an ndarray of shape [total_coordinates] or list.
list – The x coordinates of the grid input as an ndarray of shape [total_coordinates] or list.
pixel_scales (
Union[Tuple[float],Tuple[float,float],float]) – The (y,x) arcsecond-to-pixel units conversion factor of every pixel. If this is input as a float, it is converted to a (float, float).origin (
Tuple[float,float]) – The origin of the grid’s mask.
Examples
import autoarray as aa # Make Grid2D from input list(s). grid_2d = aa.Grid2D.from_yx_2d( y=[[1.0], [3.0]], x=[[2.0], [4.0]], pixel_scales=1.0 )
- classmethod from_extent(extent, shape_native, over_sample_size=4)[source]#
Create a Grid2D (see Grid2D.__new__) by inputting the extent of the (y,x) grid coordinates as an input (x0, x1, y0, y1) tuple.
The (y,x) shape_native in pixels is also input which determines the resolution of the Grid2D.
(The PyAutoArray API typically uses a (y,x) notation, however extent variables begin with x currently. This will be updated in a future release):
extent = (x0, x1, y0, y1) = (2.0, 4.0, -2.0, 6.0) shape_native = (y,x) = (10, 20)
- Parameters:
extent (
Tuple[float,float,float,float]) – The (x0, x1, y0, y1) extent of the grid in scaled coordinates over which the grid is created.shape_native (
Tuple[int,int]) – The 2D shape of the grid that is created within this extent.pixel_scales – The (y,x) arcsecond-to-pixel units conversion factor of every pixel. If this is input as a float, it is converted to a (float, float).
origin – The origin of the grid’s mask.
- classmethod uniform(shape_native, pixel_scales, origin=(0.0, 0.0), over_sample_size=4, respect_small_datasets=True)[source]#
Create a Grid2D (see Grid2D.__new__) as a uniform grid of (y,x) values given an input shape_native and pixel_scales of the grid:
- Parameters:
shape_native (
Tuple[int,int]) – The 2D shape of the uniform grid and the mask that it is paired with.pixel_scales (
Union[Tuple[float],Tuple[float,float],float]) – The (y,x) scaled units to pixel units conversion factors of every pixel. If this is input as a float, it is converted to a (float, float) tuple.origin (
Tuple[float,float]) – The origin of the grid’s mask.respect_small_datasets (
bool) – WhenPYAUTO_SMALL_DATASETS=1is set, grids larger than 15x15 are silently shrunk to(15, 15)atpixel_scales=0.6to keep smoke runs fast. PassFalseto opt out of that shrink for grids whose spatial extent is load-bearing for the script (e.g. a visualization asserting cluster-scale critical curves at ~30-50”).
- classmethod bounding_box(bounding_box, shape_native, buffer_around_corners=False, over_sample_size=4)[source]#
Create a Grid2D (see Grid2D.__new__) from an input bounding box with coordinates [y_min, y_max, x_min, x_max], where the shape_native is used to compute the (y,x) grid values within this bounding box.
If buffer_around_corners=True, the grid’s (y,x) values fully align with the input bounding box values. This means the mask’s edge pixels extend beyond the bounding box by pixel_scale/2.0. If buffer_around_corners=False, the grid (y,x) coordinates are defined within the bounding box such that the mask’s edge pixels align with the bouning box.
- Parameters:
shape_native (
Tuple[int,int]) – The 2D shape of the uniform grid and the mask that it is paired with.pixel_scales – The (y,x) arcsecond-to-pixel units conversion factor of every pixel. If this is input as a float, it is converted to a (float, float).
origin – The origin of the grid’s mask.
buffer_around_corners (
bool) – Whether the grid is buffered such that the (y,x) values in the centre of its masks’ edge pixels align with the input bounding box values.
- classmethod from_mask(mask, over_sample_size=4, xp=<module 'numpy' from '/home/docs/checkouts/readthedocs.org/user_builds/pyautogalaxy/envs/latest/lib/python3.11/site-packages/numpy/__init__.py'>)[source]#
Create a Grid2D (see Grid2D.__new__) from a mask, where only unmasked pixels are included in the grid (if the grid is represented in its native 2D masked values are (0.0, 0.0)).
The mask’s pixel_scales and origin properties are used to compute the grid (y,x) coordinates.
- Parameters:
mask (
Mask2D) – The mask whose masked pixels are used to setup the grid.
- classmethod from_fits(file_path, pixel_scales, origin=(0.0, 0.0), over_sample_size=4)[source]#
Create a Grid2D (see Grid2D.__new__) from a mask, where only unmasked pixels are included in the grid (if the grid is represented in its native 2D masked values are (0.0, 0.0)).
The mask’s pixel_scales and origin properties are used to compute the grid (y,x) coordinates.
- Parameters:
mask – The mask whose masked pixels are used to setup the grid.
- classmethod blurring_grid_from(mask, kernel_shape_native, over_sample_size=4)[source]#
Setup a blurring-grid from a mask, where a blurring grid consists of all pixels that are masked (and therefore have their values set to (0.0, 0.0)), but are close enough to the unmasked pixels that their values will be convolved into the unmasked those pixels. This when computing images from light profile objects.
The mask’s pixel_scales and origin properties are used to compute the blurring grid’s (y,x) coordinates.
For example, if our mask is as follows:
x x x x x x x x x xI x x x x x x x x x xI This is an imaging.Mask2D, where x x x x x x x x x xI x x x x x x x x x xI x = `True` (Pixel is masked and excluded from lens) x x x O O O x x x xI O = `False` (Pixel is not masked and included in lens) x x x O O O x x x xI x x x O O O x x x xI x x x x x x x x x xI x x x x x x x x x xI x x x x x x x x x xI
For a PSF of shape (3,3), the following blurring mask is computed (noting that only pixels that are direct neighbors of the unmasked pixels above will blur light into an unmasked pixel)
x x x x x x x x xI This is an example grid.Mask2D, where x x x x x x x x xI x x O O O O O x xI x = `True` (Pixel is masked and excluded from lens) x x O x x x O x xI O = `False` (Pixel is not masked and included in lens) x x O x x x O x xI x x O x x x O x xI x x O O O O O x xI x x x x x x x x xI x x x x x x x x xI
Thus, the blurring grid coordinates and indexes will be as follows
pixel_scales = 1.0" positive negative y x y x x x x x x x x x xI I blurring_grid[0] = [2.0, -2.0] blurring_grid[9] = [-1.0, -2.0] x x x x x x x x xI I blurring_grid[1] = [2.0, -1.0] blurring_grid[10] = [-1.0, 2.0] x xI0 I1 I2 I3 I4 x xI pos blurring_grid[2] = [2.0, 0.0] blurring_grid[11] = [-2.0, -2.0] x xI5 x x x I6 x xI y blurring_grid[3] = [2.0, 1.0] blurring_grid[12] = [-2.0, -1.0] x xI7 x x x I8 x xI I blurring_grid[4] = [2.0, 2.0] blurring_grid[13] = [-2.0, 0.0] x xI9 x x x I10 x xI neg blurring_grid[5] = [1.0, -2.0] blurring_grid[14] = [-2.0, 1.0] x xI11I12I13I14I15 x xI I blurring_grid[6] = [1.0, 2.0] blurring_grid[15] = [-2.0, 2.0] x x x x x x x x xI I blurring_grid[7] = [0.0, -2.0] x x x x x x x x xI I blurring_grid[8] = [0.0, 2.0]
For a PSF of shape (5,5), the following blurring mask is computed (noting that pixels are 2 pixels from a direct unmasked pixels now blur light into an unmasked pixel)
x x x x x x x x xI This is an example grid.Mask2D, where xIoIoIoIoIoIoIo xI xIoIoIoIoIoIoIo xI x = `True` (Pixel is masked and excluded from lens) xIoIo x x xIoIo xI O = `False` (Pixel is not masked and included in lens) xIoIo x x xIoIo xI xIoIo x x xIoIo xI xIoIoIoIoIoIoIo xI xIoIoIoIoIoIoIo xI x x x x x x x x xI
- subtracted_from(offset, xp=<module 'numpy' from '/home/docs/checkouts/readthedocs.org/user_builds/pyautogalaxy/envs/latest/lib/python3.11/site-packages/numpy/__init__.py'>)[source]#
- subtracted_and_rotated_from(offset, angle, xp=<module 'numpy' from '/home/docs/checkouts/readthedocs.org/user_builds/pyautogalaxy/envs/latest/lib/python3.11/site-packages/numpy/__init__.py'>)[source]#
Return a new Grid2D where the (y, x) coordinates of this grid have an offset subtracted and are then rotated counter-clockwise by
angle(in degrees) about the offset point.Order: shift first, then rotate. With
offset = (oy, ox)andangle = theta(degrees):(y’, x’) = (y - oy, x - ox) y’’ = y’ cos(theta) + x’ sin(theta) x’’ = x’ cos(theta) - y’ sin(theta)
- property slim: Grid2D#
Return a Grid2D where the data is stored its slim representation, which is an ndarray of shape [total_unmasked_pixels, 2].
If it is already stored in its slim representation it is returned as it is. If not, it is mapped from native to slim and returned as a new Grid2D.
- property native: Grid2D#
Return a Grid2D where the data is stored in its native representation, which has shape [total_y_pixels, total_x_pixels, 2].
If it is already stored in its native representation it is return as it is. If not, it is mapped from slim to native and returned as a new Grid2D.
This method is used in the child Grid2D classes to create their native properties.
- property flipped: Grid2D#
Return the grid as an ndarray of shape [total_unmasked_pixels, 2] with flipped values such that coordinates are given as (x,y) values.
This is used to interface with Python libraries that require the grid in (x,y) format.
- property in_radians: Grid2D#
Return the grid as an ndarray where all (y,x) values are converted to Radians.
This grid is used by the interferometer module.
- grid_2d_via_deflection_grid_from(deflection_grid)[source]#
Returns a new Grid2D from this grid, where the (y,x) coordinates of this grid have a grid of (y,x) values, termed the deflection grid, subtracted from them to determine the new grid of (y,x) values.
This is used by PyAutoLens to perform grid ray-tracing.
- Parameters:
deflection_grid (
Grid2D) – The grid of (y,x) coordinates which is subtracted from this grid.
- blurring_grid_via_kernel_shape_from(kernel_shape_native)[source]#
Returns the blurring grid from a grid, via an input 2D kernel shape.
For a full description of blurring grids, checkout blurring_grid_from.
- grid_with_coordinates_within_distance_removed_from(coordinates, distance)[source]#
Remove all coordinates from this Grid2D which are within a certain distance of an input list of coordinates.
For example, if the grid has the coordinate (0.0, 0.0) and coordinates=[(0.0, 0.0)], distance=0.1 is input into this function, a new Grid2D will be created which removes the coordinate (0.0, 0.0).
- squared_distances_to_coordinate_from(coordinate=(0.0, 0.0))[source]#
Returns the squared distance of every coordinate on the grid from an input coordinate.
- distances_to_coordinate_from(coordinate=(0.0, 0.0))[source]#
Returns the distance of every coordinate on the grid from an input (y,x) coordinate.
- grid_2d_radial_projected_shape_slim_from(centre=(0.0, 0.0))[source]#
The function grid_scaled_2d_slim_radial_projected_from() determines a projected radial grid of points from a 2D region of coordinates defined by an extent [xmin, xmax, ymin, ymax] and with a (y,x) centre.
To do this, the function first performs these 3 steps:
Given the region defined by the extent [xmin, xmax, ymin, ymax], the algorithm finds the longest 1D distance of the 4 paths from the (y,x) centre to the edge of the region (e.g. following the positive / negative y and x axes).
Use the pixel-scale corresponding to the direction chosen (e.g. if the positive x-axis was the longest, the pixel_scale in the x dimension is used).
Determine the number of pixels between the centre and the edge of the region using the longest path between the two chosen above.
A schematic is shown below:
------------------- | | |<- - - - ->x | x = centre | | <-> = longest radial path from centre to extent edge | | -------------------
Using the centre x above, this function finds the longest radial path to the edge of the extent window.
This function returns the integer number of pixels given by this radial grid, which is then used to create the radial grid.
- Parameters:
extent – The extent of the grid the radii grid is computed using, with format [xmin, xmax, ymin, ymax]
centre ((float, flloat)) – The (y,x) central coordinate which the radial grid is traced outwards from.
pixel_scales – The (y,x) scaled units to pixel units conversion factor of the 2D mask array.
- Returns:
The 1D integer shape of a radial set of points sampling the longest distance from the centre to the edge of the extent in along the positive x-axis.
- Return type:
- grid_2d_radial_projected_from(centre=(0.0, 0.0), angle=0.0, shape_slim=0, remove_projected_centre=False)[source]#
Determine a projected radial grid of points from a 2D region of coordinates defined by an extent [xmin, xmax, ymin, ymax] and with a (y,x) centre.
This functions operates as follows:
Given the region defined by the extent [xmin, xmax, ymin, ymax], the algorithm finds the longest 1D distance of the 4 paths from the (y,x) centre to the edge of the region e.g. following the positive / negative y and x axes.
Use the pixel-scale corresponding to the direction chosen e.g. if the positive x-axis was the longest, the pixel_scale in the x dimension is used.
Determine the number of pixels between the centre and the edge of the region using the longest path between the two chosen above.
Create a (y,x) grid of radial points where all points are at the centre’s y value = 0.0 and the x values iterate from the centre in increasing steps of the pixel-scale.
Rotate these radial coordinates by the input angle clockwise.
A schematic is shown below:
------------------- | | |<- - - - ->x | x = centre | | <-> = longest radial path from centre to extent edge | | -------------------
- Parameters:
- Returns:
A radial set of points sampling the longest distance from the centre to the edge of the extent in along the positive x-axis.
- Return type:
- property shape_native_scaled_interior: Tuple[float, float]#
The (y,x) interior 2D shape of the grid in scaled units, computed from the minimum and maximum y and x values of the grid.
This differs from the shape_native_scaled because the edges of the shape are at the maxima and minima of the grid’s (y,x) values, whereas the shape_native_scaled uses the uniform geometry of the grid and its
pixel_scales, which means it has a buffer at each edge of half apixel_scale.
- property scaled_minima: Tuple#
The (y,x) minimum values of the grid in scaled units, buffed such that their extent is further than the grid’s extent.
- property scaled_maxima: Tuple#
The (y,x) maximum values of the grid in scaled units, buffed such that their extent is further than the grid’s extent.
- extent_with_buffer_from(buffer=1e-08)[source]#
The extent of the grid in scaled units returned as a list [x_min, x_max, y_min, y_max], where all values are buffed such that their extent is further than the grid’s extent..
This follows the format of the extent input parameter in the matplotlib method imshow (and other methods) and is used for visualization in the plot module.
- padded_grid_from(kernel_shape_native)[source]#
When the edge pixels of a mask are unmasked and a convolution is to occur, the signal of edge pixels will be ‘missing’ if the grid is used to evaluate the signal via an analytic function.
To ensure this signal is included the padded grid is used, which is ‘buffed’ such that it includes all pixels whose signal will be convolved into the unmasked pixels given the 2D kernel shape.
- property is_uniform: bool#
Returns if the grid is uniform, where a uniform grid is defined as a grid where all pixels are separated by the same pixel-scale in both the y and x directions.
The method does not check if the x coordinates are uniformly spaced, only the y coordinates, under the assumption that no calculation will be performed on a grid where the y coordinates are uniformly spaced but the x coordinates are not. If such a case arises, the method should be updated to check both the y and x coordinates.
- Return type:
Whether the grid is uniform.
- apply_over_sampling(over_sample_size)[source]#
Apply new over sampling to the grid.
This method is used to change the over sampling of the grid, for example when the user wishes to perform over sampling with a higher sub grid size.
- Parameters:
over_sample_size (Union[int, np.ndarray]) – The over sampling scheme size, which divides the grid into a sub grid of smaller pixels when computing values (e.g. images) from the grid to approximate the 2D line integral of the amount of light that falls into each pixel.