structured-optics
A Python library for generating, propagating, and analyzing structured light beams (Hermite-Gaussian, Laguerre-Gaussian, Bessel, Ince-Gaussian, fiber LP modes, and more) on a discretized transverse grid.
Features
- Mode generation: Hermite-Gaussian, Laguerre-Gaussian, Bessel, Gaussian-Bessel, Ince-Gaussian (even/odd/helical), fractional OAM, fiber LP modes, and geometric apertures (circle, square, triangle).
- Propagation: Fresnel, Fraunhofer, and incoherent propagation methods.
- Polarization: vector beams with Ex/Ey/Ez components, Jones-matrix optics (waveplates, polarizers).
- Optical elements: lenses (spherical, astigmatic, tilted), slits, irises, and other amplitude/phase masks.
- Analysis: power, intensity and phase profiles, centroid, beam size (std), angular sections, and modal decomposition (HG/LG/Bessel basis projections).
- Holography: SLM and DMD hologram generation for experimental beam shaping.
Installation
pip install structured-optics
Quick start
import structured_optics as so
# Create a beam on a 10mm x 10mm (2*5e-3) grid with 512x512 points
beam = so.Beam(nix=5e-3, Dx=512, waist=1e-3, lamb=1064e-9)
# Set the field to a Laguerre-Gaussian mode with l=2, p=0
beam.lg(l=2, p=0)
# Propagate 10 cm using Fresnel Convolution
beam.propagate(z=0.1, method='fres_c')
# Look at the intensity profile
import matplotlib.pyplot as plt
plt.pcolormesh(beam.x, beam.y, beam.int_profile())
plt.colorbar()
plt.show()
Expected output:
Documentation
Full API documentation, including all mode types, propagation methods, and optical elements, is available at:
(https://altilano.github.io/structured-optics/)
Requirements
- Python 3.9+
- numpy
- scipy
- screeninfo
Contributing
Issues and pull requests are welcome at github.com/Altilano/structured-optics.
License
This project is licensed under the BSD-3-Clause License. See LICENSE for details.
Citation
To do
- Documentation.
- Benchmark and optimization.
- Support for high NA focalization. (Non paraxial propagation, no scalar field)
- Cuda and ROCm speed up.
- Support for propagation inside linear medium.
Release files for structured-optics 0.6.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| structured_optics-0.6.2.tar.gz | 42.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| structured_optics-0.6.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 87.8 kB
Release files / structured_optics-0.6.2.tar.gz
| Download URL | structured_optics-0.6.2.tar.gz |
|---|---|
| Size | 42.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
254f004101d15c7d19bd26d6af242d9eb8af0eeaf51d4a77491485a3d081a727
|
|
BLAKE2b-256 checksum How to use checksums |
d6e8295e84a2b0d3218e043d0ed3f6300350a48fb9abb0bff89d90786d04c51d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|
Release files / structured_optics-0.6.2-py3-none-any.whl
| Download URL | structured_optics-0.6.2-py3-none-any.whl |
|---|---|
| Size | 45.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
60d859c0b8bf38a965e0099f78008fc9efac142776a4fb511a3f8db5a650ef19
|
|
BLAKE2b-256 checksum How to use checksums |
9d45528cc8165c15dc766785b0e85cdf54075d1863c3c13e076b3f94e3b3c2c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|