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
  • 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)

Source distribution for structured-optics 0.4
File Size Uploaded
structured_optics-0.4.tar.gz 23.9 kB Details

Built distribution (wheel)

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

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

0.5

2 release files

0.4.1

2 release files

This release

0.4 This release

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