Geometry Module#
- class Geometry(additional_structure_list: ~typing.List[object] | None, background: ~FiberFusing.background.BackGround | None = None, fiber_list: ~typing.List[object] | None = [<FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>, <FiberFusing.fiber.generic_fiber.GenericFiber object>], x_bounds: ~typing.Tuple[float, float] | str | None = 'centering', y_bounds: ~typing.Tuple[float, float] | str | None = 'centering', resolution: int | None = 100, index_scrambling: float | None = 0.0, gaussian_filter: int | None = None, boundary_pad_factor: float | None = 1.3)[source]#
Bases:
object
Represents the refractive index (RI) geometric profile including background and fiber structures.
- Parameters:
background (object) – Geometric object representing the background (usually air).
additional_structure_list (List[object], optional) – List of geometric objects representing additional structures. Default is an empty list.
fiber_list (List[object], optional) – List of fiber structures. Default is an empty list.
x_bounds (Union[Tuple[float, float], str], optional) – X boundaries for rendering the structure. Can be a tuple of bounds or one of [‘auto’, ‘left’, ‘right’, ‘centering’]. Default is ‘centering’.
y_bounds (Union[Tuple[float, float], str], optional) – Y boundaries for rendering the structure. Can be a tuple of bounds or one of [‘auto’, ‘top’, ‘bottom’, ‘centering’]. Default is ‘centering’.
resolution (int, optional) – Number of points in x and y directions for evaluating the rendering. Default is 100.
index_scrambling (float, optional) – Index scrambling for degeneracy lifting. Default is 0.0.
gaussian_filter (Optional[int], optional) – Standard deviation of the Gaussian blurring for the mesh. Default is None.
boundary_pad_factor (float, optional) – Factor multiplying the boundary value to keep padding between mesh and boundary. Default is 1.3.
The Geometry class defines the geometric profiles, including background and fiber structures, used in the package. This class provides methods for configuring and visualizing these structures.
- update_coordinate_system() None [source]#
Generate the coordinate system for the mesh construction.
- Raises:
ValueError – If boundaries cannot be determined from the structures.
- add_fiber(*fibers: object) None [source]#
Add fiber structures to the geometry.
- Parameters:
fibers (object) – Fiber structures to be added.
- add_structure(*structures: object, update_coordinates: bool = True) None [source]#
Add custom structures to the geometry.
- Parameters:
structures (object) – Custom structures to be added.
- property structure_list: List[object]#
Get a list of all optical structures considered for the mesh construction.
- Returns:
List of the optical structures.
- Return type:
List[object]
- property x_bounds: Tuple[float, float]#
- property y_bounds: Tuple[float, float]#
- get_boundaries() Tuple[float, float, float, float] [source]#
Calculate the boundaries from the collection of defined structures.
- Returns:
The boundaries as (min_x, min_y, max_x, max_y).
- Return type:
Tuple[float, float, float, float]
- Raises:
ValueError – If no structures are provided for computing the mesh.
- property refractive_index_maximum: float#
Calculate the maximum refractive index across all structures.
- Returns:
Maximum refractive index.
- Return type:
float
- property refractive_index_minimum: float#
Calculate the minimum refractive index across all non-background structures.
- Returns:
Minimum refractive index.
- Return type:
float
- get_index_range() List[float] [source]#
Get a list of all refractive indices associated with the elements of the geometry.
- Returns:
List of refractive indices.
- Return type:
List[float]
- rotate(angle: float) None [source]#
Rotate all structures within the geometry by a given angle.
- Parameters:
angle (float) – Angle to rotate the geometry, in degrees.
- randomize_fiber_structures_index(random_factor: float) None [source]#
Randomize the refractive index of fiber structures by a specified factor.
- Parameters:
random_factor (float) – Factor to randomize the refractive index.
- rasterize_polygons() ndarray [source]#
Rasterize the polygons defined in the geometry onto a mesh.
- Parameters:
coordinates (numpy.ndarray) – The coordinates at which to evaluate the mesh.
- Returns:
The rasterized mesh.
- Return type:
numpy.ndarray
- add_background_to_mesh(mesh: ndarray) None [source]#
Add the rasterized background to the provided mesh.
- Parameters:
mesh (numpy.ndarray) – The mesh to which the background is added. Must match the shape of the coordinate system.
- Raises:
ValueError – If the mesh dimensions do not match the coordinate system.
- generate_mesh() ndarray [source]#
Generate the full mesh for the geometry using the defined coordinate system.
- Returns:
The fully generated mesh.
- Return type:
numpy.ndarray
- Raises:
AttributeError – If the coordinate system has not been generated before calling this method.
- plot_patch(ax: Axes = None, show: bool = True, **kwargs)#
- plot_raster(ax: Axes = None, show: bool = True, **kwargs)#
- plot(show_patch: bool = True, show_mesh: bool = True, show: bool = True, gamma: float = 5) Figure [source]#
Plot the different representations (patch and mesh) of the geometry.
- Parameters:
show_patch (bool, optional) – Whether to display the patch representation of the geometry. Default is True.
show_mesh (bool, optional) – Whether to display the mesh (rasterized) representation of the geometry. Default is True.
show (bool, optional) – Whether to immediately show the plot. Default is True.
gamma (float, optional) – The gamma correction value for the color normalization used in the mesh plot. Default is 5.
- Returns:
The matplotlib figure encompassing all the axes used in the plot.
- Return type:
plt.Figure