Skip to main content

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.

PyPI version

License: BSD-3-Clause

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)

Source distribution for structured-optics 0.5
File Size Uploaded
structured_optics-0.5.tar.gz 30.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for structured-optics 0.5
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

0.6.3

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6

2 release files

This release

0.5 This release

2 release files

0.4.1

2 release files

0.4

2 release files

0.3

2 release files

0.2

2 release files

0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page