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 256x256 points
beam = so.Beam(nix=5e-3, Dx=256, 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 and check total power
beam.propagate(z=0.1, method='fresnel')
print(beam.Power())
# Look at the intensity profile
import matplotlib.pyplot as plt
plt.pcolormesh(beam.x, beam.y, beam.int_profile())
plt.show()
Documentation
Full API documentation, including all mode types, propagation methods, and optical elements, is available at:
Soon...
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
Release files for structured-optics 0.5
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.5.tar.gz | 30.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| structured_optics-0.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 62.4 kB
Release files / structured_optics-0.5.tar.gz
| Download URL | structured_optics-0.5.tar.gz |
|---|---|
| Size | 30.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
079687679eb6aea4a1b19e75cc937984fc7b5d3ec94c2ce003a0f2d9492a9e81
|
|
BLAKE2b-256 checksum How to use checksums |
5cbe4cb200556c370c70445965f1d87780626f4c202f1df25f3f32c716b345bd
|
| 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.5-py3-none-any.whl
| Download URL | structured_optics-0.5-py3-none-any.whl |
|---|---|
| Size | 31.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d99a53a53806366edbea13a578d40093a2d690eb224c42e0ab5c2bc1fd64bb6e
|
|
BLAKE2b-256 checksum How to use checksums |
d3e7f1ecf66c26010060cbfb171c6433510f0713ca316f2597e71afe070b94d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|