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
- PyQt6
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.4
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.4.tar.gz | 23.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| structured_optics-0.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 48.4 kB
Release files / structured_optics-0.4.tar.gz
| Download URL | structured_optics-0.4.tar.gz |
|---|---|
| Size | 23.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c02d54f10b14a1e0e90c50e2a31e14908bf7627bc39b6268ecdd03ab571f2b36
|
|
BLAKE2b-256 checksum How to use checksums |
a7ea1590ade559614ca8f479dd60a5780935d86091ea69efddb877561a6fd58d
|
| 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.4-py3-none-any.whl
| Download URL | structured_optics-0.4-py3-none-any.whl |
|---|---|
| Size | 24.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
93815777196f96a1a167542806c7a525b13cb75986c2dcbbccf1304e0aa22aef
|
|
BLAKE2b-256 checksum How to use checksums |
40fe0564a50e7550cd08a150a535c934a4fa9636b72b571945f3eb60da5df677
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.15
|