autolens.Grid2DIterate

class autolens.Grid2DIterate(shape, dtype=float, buffer=None, offset=0, strides=None, order=None)
__init__(*args, **kwargs)

Initialize self. See help(type(self)) for accurate signature.

Methods

all([axis, out, keepdims]) Returns True if all elements evaluate to True.
any([axis, out, keepdims]) Returns True if any of the elements of a evaluate to True.
argmax([axis, out]) Return indices of the maximum values along the given axis.
argmin([axis, out]) Return indices of the minimum values along the given axis of a.
argpartition(kth[, axis, kind, order]) Returns the indices that would partition this array.
argsort([axis, kind, order]) Returns the indices that would sort this array.
array_at_sub_size_from(func, cls, mask, sub_size)
astype(dtype[, order, casting, subok, copy]) Copy of the array, cast to a specified type.
blurring_grid_from(mask, …) 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.
blurring_grid_via_kernel_shape_from(…) Returns the blurring grid from a grid and create it as a Grid2DIterate, via an input 2D kernel shape.
byteswap([inplace]) Swap the bytes of the array elements
choose(choices[, out, mode]) Use an index array to construct a new array from a set of choices.
clip([min, max, out]) Return an array whose values are limited to [min, max].
compress(condition[, axis, out]) Return selected slices of this array along given axis.
conj() Complex-conjugate all elements.
conjugate() Return the complex conjugate, element-wise.
copy([order]) Return a copy of the array.
cumprod([axis, dtype, out]) Return the cumulative product of the elements along the given axis.
cumsum([axis, dtype, out]) Return the cumulative sum of the elements along the given axis.
diagonal([offset, axis1, axis2]) Return specified diagonals.
distances_to_coordinate(coordinate, …) Returns the distance of every coordinate on the grid from an input (y,x) coordinate.
dot(b[, out]) Dot product of two arrays.
dump(file) Dump a pickle of the array to the specified file.
dumps() Returns the pickle of the array as a string.
extent_with_buffer(buffer) 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..
fill(value) Fill the array with a scalar value.
flatten([order]) Return a copy of the array collapsed into one dimension.
fractional_mask_via_arrays_from(…) Returns a fractional mask from a result array, where the fractional mask describes whether the evaluated value in the result array is within the Grid2DIterate’s specified fractional accuracy.
fractional_mask_via_grids_from(…) Returns a fractional mask from a result array, where the fractional mask describes whether the evaluated value in the result array is within the Grid2DIterate’s specified fractional accuracy.
from_mask(mask, fractional_accuracy, sub_steps) Create a Grid2DIterate (see Grid2DIterate.__new__) from a mask, where only unmasked pixels are included in the grid (if the grid is represented in 2D masked values are (0.0, 0.0)).
getfield(dtype[, offset]) Returns a field of the given array as a certain type.
grid_2d_radial_projected_from(centre, …) 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.
grid_at_sub_size_from(func, cls, mask, sub_size)
grid_via_deflection_grid_from(deflection_grid) Returns a new Grid2DIterate 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.
item(*args) Copy an element of an array to a standard Python scalar and return it.
itemset(*args) Insert scalar into an array (scalar is cast to array’s dtype, if possible)
iterated_array_from(func, cls, …) Iterate over a function that returns an array of values until the it meets a specified fractional accuracy.
iterated_grid_from(func, cls, grid_lower_sub_2d) Iterate over a function that returns a grid of values until the it meets a specified fractional accuracy.
iterated_result_from(func, cls) Iterate over a function that returns an array or grid of values until the it meets a specified fractional accuracy.
load(file_path, filename)
manual_slim(grid, List[T]], shape_native, …) Create a Grid2DIterate (see Grid2DIterate.__new__) by inputting the grid coordinates in 1D, for example:
max([axis, out, keepdims, initial, where]) Return the maximum along a given axis.
mean([axis, dtype, out, keepdims]) Returns the average of the array elements along given axis.
min([axis, out, keepdims, initial, where]) Return the minimum along a given axis.
newbyteorder([new_order]) Return the array with the same data viewed with a different byte order.
nonzero() Return the indices of the elements that are non-zero.
output_to_fits(file_path, overwrite) Output the grid to a .fits file.
padded_before_convolution_from(kernel_shape)
padded_grid_from(kernel_shape_native, int]) 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.
partition(kth[, axis, kind, order]) Rearranges the elements in the array in such a way that the value of the element in kth position is in the position it would be in a sorted array.
prod([axis, dtype, out, keepdims, initial, …]) Return the product of the array elements over the given axis
ptp([axis, out, keepdims]) Peak to peak (maximum - minimum) value along a given axis.
put(indices, values[, mode]) Set a.flat[n] = values[n] for all n in indices.
ravel([order]) Return a flattened array.
relocated_grid_from(grid) Relocate the coordinates of a grid to the border of this grid if they are outside the border, where the border is defined as all pixels at the edge of the grid’s mask (see mask._border_1d_indexes).
relocated_pixelization_grid_from(…) Relocate the coordinates of a pixelization grid to the border of this grid, see the method relocated_grid_from for a full description of grid relocation.
repeat(repeats[, axis]) Repeat elements of an array.
reshape(shape[, order]) Returns an array containing the same data with a new shape.
resize(new_shape[, refcheck]) Change shape and size of array in-place.
resized_from(new_shape)
return_iterated_array_result(iterated_array) Returns the resulting iterated array, by mapping it to 1D and then passing it back as an Array2D structure.
round([decimals, out]) Return a with each element rounded to the given number of decimals.
save(file_path, filename) Save the tracer by serializing it with pickle.
searchsorted(v[, side, sorter]) Find indices where elements of v should be inserted in a to maintain order.
setfield(val, dtype[, offset]) Put a value into a specified place in a field defined by a data-type.
setflags([write, align, uic]) Set array flags WRITEABLE, ALIGNED, (WRITEBACKIFCOPY and UPDATEIFCOPY), respectively.
sort([axis, kind, order]) Sort an array in-place.
squared_distances_to_coordinate(coordinate, …) Returns the squared distance of every coordinate on the grid from an input coordinate.
squeeze([axis]) Remove single-dimensional entries from the shape of a.
std([axis, dtype, out, ddof, keepdims]) Returns the standard deviation of the array elements along given axis.
structure_2d_from(result)
structure_2d_list_from(result_list)
sum([axis, dtype, out, keepdims, initial, where]) Return the sum of the array elements over the given axis.
swapaxes(axis1, axis2) Return a view of the array with axis1 and axis2 interchanged.
take(indices[, axis, out, mode]) Return an array formed from the elements of a at the given indices.
tobytes([order]) Construct Python bytes containing the raw data bytes in the array.
tofile(fid[, sep, format]) Write array to a file as text or binary (default).
tolist() Return the array as an a.ndim-levels deep nested list of Python scalars.
tostring([order]) A compatibility alias for tobytes, with exactly the same behavior.
trace([offset, axis1, axis2, dtype, out]) Return the sum along diagonals of the array.
transpose(*axes) Returns a view of the array with axes transposed.
trimmed_after_convolution_from(kernel_shape)
uniform(shape_native, int], pixel_scales, …) Create a Grid2DIterate (see Grid2DIterate.__new__) as a uniform grid of (y,x) values given an input shape_native and pixel scale of the grid:
values_from(array_slim) Create a ValuesIrregular object from a 1D NumPy array of values of shape [total_coordinates].
var([axis, dtype, out, ddof, keepdims]) Returns the variance of the array elements, along given axis.
view([dtype][, type]) New view of array with the same data.

Attributes

T The transposed array.
base Base object if memory is from some other object.
binned Convenience method to access the binned-up grid in its 1D representation, which is a Grid2D stored as an ndarray of shape [total_unmasked_pixels, 2].
ctypes An object to simplify the interaction of the array with the ctypes module.
data Python buffer object pointing to the start of the array’s data.
dtype Data-type of the array’s elements.
extent The extent of the grid in scaled units returned as an ndarray of the form [x_min, x_max, y_min, y_max].
flags Information about the memory layout of the array.
flat A 1-D iterator over the array.
flipped Return the grid as an ndarray of shape [total_unmasked_pixels, 2] with flipped values such that coordinates are given as (x,y) values.
fractional_mask_via_arrays_jit_from
  • True entries signify the function has been evaluated in that pixel to desired fractional accuracy and
fractional_mask_via_grids_jit_from
  • True entries signify the function has been evaluated in that pixel to desired fractional accuracy and
imag The imaginary part of the array.
in_radians Return the grid as an ndarray where all (y,x) values are converted to Radians.
itemsize Length of one array element in bytes.
iterated_array_jit_from Create the iterated array from a result array that is computed at a higher sub size leel than the previous grid.
iterated_grid_jit_from Create the iterated grid from a result grid that is computed at a higher sub size level than the previous grid.
native Return a Grid2D where the data is stored in its native representation, which is an ndarray of shape [sub_size*total_y_pixels, sub_size*total_x_pixels, 2].
nbytes Total bytes consumed by the elements of the array.
ndim Number of array dimensions.
origin
pixel_scale
pixel_scales
real The real part of the array.
scaled_maxima The maximum values of the grid in scaled coordinates returned as a tuple (y_max, x_max).
scaled_minima The minium values of the grid in scaled coordinates returned as a tuple (y_min, x_min).
shape Tuple of array dimensions.
shape_native
shape_native_scaled The two dimensional shape of the grid in scaled units, computed by taking the minimum and maximum values of the grid.
shape_slim
size Number of elements in the array.
slim Return a Grid2D where the data is stored its slim representation, which is an ndarray of shape [total_unmasked_pixels * sub_size**2, 2].
strides Tuple of bytes to step in each dimension when traversing an array.
sub_border_grid A property that is only computed once per instance and then replaces itself with an ordinary attribute.
sub_shape_native
sub_shape_slim
sub_size
total_pixels
unmasked_grid
classmethod manual_slim(grid: Union[numpy.ndarray, List[T]], shape_native: Tuple[int, int], pixel_scales: Union[Tuple[float, float], float], origin: Tuple[float, float] = (0.0, 0.0), fractional_accuracy: float = 0.9999, sub_steps: Optional[List[int]] = None) → autoarray.structures.grids.two_d.grid_2d_iterate.Grid2DIterate

Create a Grid2DIterate (see Grid2DIterate.__new__) by inputting the grid coordinates in 1D, for example:

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

grid=[[1.0, 1.0], [2.0, 2.0], [3.0, 3.0], [4.0, 4.0]]

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:
  • or list (grid) – The (y,x) coordinates of the grid input as an ndarray of shape [total_unmasked_pixells*(sub_size**2), 2] or a list of lists.
  • shape_native – The 2D shape of the mask the grid is paired with.
  • pixel_scales – 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) structure.
  • fractional_accuracy – The fractional accuracy the function evaluated must meet to be accepted, where this accuracy is the ratio of the value at a higher sub_size to othe value computed using the previous sub_size.
  • sub_steps ([int] or None) – The sub-size values used to iteratively evaluated the function at high levels of sub-gridding. If None, they are setup as the default values [2, 4, 8, 16].
  • origin – The origin of the grid’s mask.
classmethod uniform(shape_native: Tuple[int, int], pixel_scales: Union[Tuple[float, float], float], origin: Tuple[float, float] = (0.0, 0.0), fractional_accuracy: float = 0.9999, sub_steps: Optional[List[int]] = None) → autoarray.structures.grids.two_d.grid_2d_iterate.Grid2DIterate

Create a Grid2DIterate (see Grid2DIterate.__new__) as a uniform grid of (y,x) values given an input shape_native and pixel scale of the grid:

Parameters:
  • shape_native – The 2D shape of the uniform grid and the mask that it is paired with.
  • pixel_scales – 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) structure.
  • fractional_accuracy – The fractional accuracy the function evaluated must meet to be accepted, where this accuracy is the ratio of the value at a higher sub_size to othe value computed using the previous sub_size.
  • sub_steps ([int] or None) – The sub-size values used to iteratively evaluated the function at high levels of sub-gridding. If None, they are setup as the default values [2, 4, 8, 16].
  • origin – The origin of the grid’s mask.
classmethod from_mask(mask: autoarray.mask.mask_2d.Mask2D, fractional_accuracy: float = 0.9999, sub_steps: Optional[List[int]] = None) → autoarray.structures.grids.two_d.grid_2d_iterate.Grid2DIterate

Create a Grid2DIterate (see Grid2DIterate.__new__) from a mask, where only unmasked pixels are included in the grid (if the grid is represented in 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 sub-pixel grid.
  • fractional_accuracy – The fractional accuracy the function evaluated must meet to be accepted, where this accuracy is the ratio of the value at a higher sub_size to othe value computed using the previous sub_size.
  • sub_steps ([int] or None) – The sub-size values used to iteratively evaluated the function at high levels of sub-gridding. If None, they are setup as the default values [2, 4, 8, 16].
classmethod blurring_grid_from(mask: autoarray.mask.mask_2d.Mask2D, kernel_shape_native: Tuple[int, int], fractional_accuracy: float = 0.9999, sub_steps: Optional[List[int]] = None) → autoarray.structures.grids.two_d.grid_2d_iterate.Grid2DIterate

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.

See Grid2D.blurring_grid_from for a full description of a blurring grid. This method creates the blurring grid as a Grid2DIterate.

Parameters:
  • mask (Mask2D) – The mask whose masked pixels are used to setup the blurring grid.
  • kernel_shape_native – The 2D shape of the kernel which convolves signal from masked pixels to unmasked pixels.
  • fractional_accuracy – The fractional accuracy the function evaluated must meet to be accepted, where this accuracy is the ratio of the value at a higher sub_size to othe value computed using the previous sub_size.
  • sub_steps ([int] or None) – The sub-size values used to iteratively evaluated the function at high levels of sub-gridding. If None, they are setup as the default values [2, 4, 8, 16].
grid_via_deflection_grid_from(deflection_grid: numpy.ndarray) → autoarray.structures.grids.two_d.grid_2d_iterate.Grid2DIterate

Returns a new Grid2DIterate 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 – The grid of (y,x) coordinates which is subtracted from this grid.
blurring_grid_via_kernel_shape_from(kernel_shape_native: Tuple[int, int]) → autoarray.structures.grids.two_d.grid_2d_iterate.Grid2DIterate

Returns the blurring grid from a grid and create it as a Grid2DIterate, via an input 2D kernel shape.

For a full description of blurring grids, checkout blurring_grid_from.
Parameters:
kernel_shape_native

The 2D shape of the kernel which convolves signal from masked pixels to unmasked pixels.

padded_grid_from(kernel_shape_native: Tuple[int, int]) → autoarray.structures.grids.two_d.grid_2d_iterate.Grid2DIterate

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.

Parameters:kernel_shape_native – The 2D shape of the kernel which convolves signal from masked pixels to unmasked pixels.
fractional_mask_via_arrays_from(array_lower_sub_2d: autoarray.structures.arrays.two_d.array_2d.Array2D, array_higher_sub_2d: autoarray.structures.arrays.two_d.array_2d.Array2D) → autoarray.mask.mask_2d.Mask2D

Returns a fractional mask from a result array, where the fractional mask describes whether the evaluated value in the result array is within the Grid2DIterate’s specified fractional accuracy. The fractional mask thus determines whether a pixel on the grid needs to be reevaluated at a higher level of sub-gridding to meet the specified fractional accuracy. If it must be re-evaluated, the fractional masks’s entry is False.

The fractional mask is computed by comparing the results evaluated at one level of sub-gridding to another at a higher level of sub-griding. Thus, the sub-grid size in chosen on a per-pixel basis until the function is evaluated at the specified fractional accuracy.

Parameters:
  • array_lower_sub_2d (Array2D) – The results computed by a function using a lower sub-grid size
  • array_higher_sub_2d (Array2D) – The results computed by a function using a higher sub-grid size.
fractional_mask_via_arrays_jit_from
  • True entries signify the function has been evaluated in that pixel to desired fractional accuracy and
    therefore does not need to be iteratively computed at higher levels of sub-gridding.
  • False entries signify the function has not been evaluated in that pixel to desired fractional accuracy and
    therefore must be iterative computed at higher levels of sub-gridding to meet this accuracy.
Type:Jitted functioon to determine the fractional mask, which is a mask where
iterated_array_from(func: Callable, cls: object, array_lower_sub_2d: autoarray.structures.arrays.two_d.array_2d.Array2D) → autoarray.structures.arrays.two_d.array_2d.Array2D

Iterate over a function that returns an array of values until the it meets a specified fractional accuracy. The function returns a result on a pixel-grid where evaluating it on more points on a higher resolution sub-grid followed by binning lead to a more precise evaluation of the function. The function is assumed to belong to a class, which is input into tthe method.

The function is first called for a sub-grid size of 1 and a higher resolution grid. The ratio of values give the fractional accuracy of each function evaluation. Pixels which do not meet the fractional accuracy are iteratively revaluated on higher resolution sub-grids. This is repeated until all pixels meet the fractional accuracy or the highest sub-size specified in the sub_steps attribute is computed.

If the function return all zeros, the iteration is terminated early given that all levels of sub-gridding will return zeros. This occurs when a function is missing optional objects that contribute to the calculation.

An example use case of this function is when a “image_2d_from” methods in PyAutoGalaxy’s LightProfile module is comomputed, which by evaluating the function on a higher resolution sub-grids sample the analytic light profile at more points and thus more precisely.

Parameters:
  • func (func) – The function which is iterated over to compute a more precise evaluation.
  • cls (cls) – The class the function belongs to.
  • grid_lower_sub_2d (Array2D) – The results computed by the function using a lower sub-grid size
return_iterated_array_result(iterated_array: autoarray.structures.arrays.two_d.array_2d.Array2D) → autoarray.structures.arrays.two_d.array_2d.Array2D

Returns the resulting iterated array, by mapping it to 1D and then passing it back as an Array2D structure.

Parameters:iterated_array
Returns:The resulting array computed via iteration.
Return type:iterated_array
iterated_array_jit_from

Create the iterated array from a result array that is computed at a higher sub size leel than the previous grid.

The iterated array is only updated for pixels where the fractional accuracy is met.

fractional_mask_via_grids_from(grid_lower_sub_2d: autoarray.structures.grids.two_d.grid_2d.Grid2D, grid_higher_sub_2d: autoarray.structures.grids.two_d.grid_2d.Grid2D) → autoarray.mask.mask_2d.Mask2D

Returns a fractional mask from a result array, where the fractional mask describes whether the evaluated value in the result array is within the Grid2DIterate’s specified fractional accuracy. The fractional mask thus determines whether a pixel on the grid needs to be reevaluated at a higher level of sub-gridding to meet the specified fractional accuracy. If it must be re-evaluated, the fractional masks’s entry is False.

The fractional mask is computed by comparing the results evaluated at one level of sub-gridding to another at a higher level of sub-griding. Thus, the sub-grid size in chosen on a per-pixel basis until the function is evaluated at the specified fractional accuracy.

Parameters:
  • grid_lower_sub_2d (Array2D) – The results computed by a function using a lower sub-grid size
  • grid_higher_sub_2d (grids.Array2D) – The results computed by a function using a higher sub-grid size.
fractional_mask_via_grids_jit_from
  • True entries signify the function has been evaluated in that pixel to desired fractional accuracy and
    therefore does not need to be iteratively computed at higher levels of sub-gridding.
  • False entries signify the function has not been evaluated in that pixel to desired fractional accuracy and
    therefore must be iterative computed at higher levels of sub-gridding to meet this accuracy.
Type:Jitted function to determine the fractional mask, which is a mask where
iterated_grid_from(func: Callable, cls: object, grid_lower_sub_2d: autoarray.structures.grids.two_d.grid_2d.Grid2D) → autoarray.structures.grids.two_d.grid_2d.Grid2D

Iterate over a function that returns a grid of values until the it meets a specified fractional accuracy. The function returns a result on a pixel-grid where evaluating it on more points on a higher resolution sub-grid followed by binning lead to a more precise evaluation of the function. For the fractional accuracy of the grid to be met, both the y and x values must meet it.

The function is first called for a sub-grid size of 1 and a higher resolution grid. The ratio of values give the fractional accuracy of each function evaluation. Pixels which do not meet the fractional accuracy are iteratively revaulated on higher resolution sub-grids. This is repeated until all pixels meet the fractional accuracy or the highest sub-size specified in the sub_steps attribute is computed.

If the function return all zeros, the iteration is terminated early given that all levels of sub-gridding will return zeros. This occurs when a function is missing optional objects that contribute to the calculation.

An example use case of this function is when a “deflections_2d_from” methods in PyAutoLens’s MassProfile module is computed, which by evaluating the function on a higher resolution sub-grid samples the analytic mass profile at more points and thus more precisely.

Parameters:
  • func – The function which is iterated over to compute a more precise evaluation.
  • cls – The class the function belongs to.
  • grid_lower_sub_2d – The results computed by the function using a lower sub-grid size
iterated_grid_jit_from

Create the iterated grid from a result grid that is computed at a higher sub size level than the previous grid.

The iterated grid is only updated for pixels where the fractional accuracy is met in both the (y,x) coodinates.

iterated_result_from(func: Callable, cls: object) → Union[autoarray.structures.arrays.two_d.array_2d.Array2D, autoarray.structures.grids.two_d.grid_2d.Grid2D]

Iterate over a function that returns an array or grid of values until the it meets a specified fractional accuracy. The function returns a result on a pixel-grid where evaluating it on more points on a higher resolution sub-grid followed by binning lead to a more precise evaluation of the function.

A full description of the iteration method can be found in the functions iterated_array_from and iterated_grid_from. This function computes the result on a grid with a sub-size of 1, and uses its shape to call the correct function.

Parameters:
  • func (func) – The function which is iterated over to compute a more precise evaluation.
  • cls (object) – The class the function belongs to.