physical_apertures.polygon

Polygon Aperture Module

This module contains the PolygonAperture class, which represents a polygonal aperture that clips rays based on a set of vertices. It also contains the FileAperture class, which reads an aperture definition from a file and creates a polygon-based aperture.

Kramer Harrison, 2025

Classes

FileAperture(filepath[, delimiter, skip_header])

Reads an aperture definition from a file and creates a polygon-based aperture.

PolygonAperture(x, y)

Represents a polygonal aperture that clips rays based on their position.

class FileAperture(filepath, delimiter=None, skip_header=0)[source]

Reads an aperture definition from a file and creates a polygon-based aperture.

The file should contain two columns representing the x and y coordinates, respectively. It supports various file formats (e.g. CSV, TXT) by allowing you to specify a delimiter and the number of header lines to skip. Comments can be added to the file by starting a line with ‘//’.

Parameters:
  • filepath (str) – Path to the aperture file.

  • delimiter (str or None) – Delimiter used to separate values in the file. If None, the class will attempt to auto-detect the delimiter.

  • skip_header (int) – Number of lines to skip at the start of the file.

Raises:

ValueError – If the file cannot be read or does not contain exactly two columns.

clip(rays: RealRays)

Clips the given rays based on the aperture’s shape.

Parameters:

rays (RealRays) – List of rays to be clipped.

Returns:

List of clipped rays.

Return type:

list

contains(x, y)

Checks if the given point is inside the aperture.

Parameters:
  • x (be.ndarray) – The x-coordinate of the point.

  • y (be.ndarray) – The y-coordinate of the point.

Returns:

Boolean array indicating if the point is inside the

aperture

Return type:

be.ndarray

property extent

Returns the extent of the aperture.

Returns:

The extent of the aperture in the x and y directions.

Return type:

tuple

classmethod from_dict(data)[source]

Create an aperture from a dictionary representation.

Parameters:

data (dict) – The dictionary representation of the aperture.

Returns:

The aperture object.

Return type:

FileAperture

scale(scale_factor)

Scales the aperture by the given factor.

Parameters:

scale_factor (float) – The factor by which to scale the aperture.

to_dict()[source]

Convert the aperture to a dictionary.

Returns:

The dictionary representation of the aperture.

Return type:

dict

view(nx: int = 256, ny: int = 256, ax: Axes | None = None, buffer: float = 1.1, **kwargs) tuple[Figure, Axes]

Visualize the aperture.

Parameters:
  • nx (int) – The number of points in the x-direction.

  • ny (int) – The number of points in the y-direction.

  • ax (Axes) – The axes to plot on.

  • buffer (float) – The buffer around the aperture.

  • **kwargs – Additional keyword arguments to pass to the plot function.

Returns:

A tuple containing the figure and axes objects.

Return type:

tuple

class PolygonAperture(x, y)[source]

Represents a polygonal aperture that clips rays based on their position.

x

x-coordinates of the polygon’s vertices.

Type:

list or be.ndarray

y

y-coordinates of the polygon’s vertices.

Type:

list or be.ndarray

vertices

Array-like of shape (n, 2) defining the polygon vertices.

Type:

be.ndarray

Note

The implementation of the point-in-polygon algorithm used in this class has slightly different behavior for each backend. FOr the NumPy backend, points on the edge of the polygon are considered to be inside the polygon, while for the PyTorch backend, they are considered to be outside.

clip(rays: RealRays)

Clips the given rays based on the aperture’s shape.

Parameters:

rays (RealRays) – List of rays to be clipped.

Returns:

List of clipped rays.

Return type:

list

contains(x, y)[source]

Checks if the given point is inside the aperture.

Parameters:
  • x (be.ndarray) – The x-coordinate of the point.

  • y (be.ndarray) – The y-coordinate of the point.

Returns:

Boolean array indicating if the point is inside the

aperture

Return type:

be.ndarray

property extent

Returns the extent of the aperture.

Returns:

The extent of the aperture in the x and y directions.

Return type:

tuple

classmethod from_dict(data)[source]

Create an aperture from a dictionary representation.

Parameters:

data (dict) – The dictionary representation of the aperture.

Returns:

The aperture object.

Return type:

PolygonAperture

scale(scale_factor)[source]

Scales the aperture by the given factor.

Parameters:

scale_factor (float) – The factor by which to scale the aperture.

to_dict()[source]

Convert the aperture to a dictionary.

Returns:

The dictionary representation of the aperture.

Return type:

dict

view(nx: int = 256, ny: int = 256, ax: Axes | None = None, buffer: float = 1.1, **kwargs) tuple[Figure, Axes]

Visualize the aperture.

Parameters:
  • nx (int) – The number of points in the x-direction.

  • ny (int) – The number of points in the y-direction.

  • ax (Axes) – The axes to plot on.

  • buffer (float) – The buffer around the aperture.

  • **kwargs – Additional keyword arguments to pass to the plot function.

Returns:

A tuple containing the figure and axes objects.

Return type:

tuple