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.4.1

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.1
File Size Uploaded
structured_optics-0.4.1.tar.gz 25.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for structured-optics 0.4.1
File Interpreter ABI Platform
structured_optics-0.4.1-py3-none-any.whl Python 3 none any Details

Total release size: 51.6 kB

Release files / structured_optics-0.4.1.tar.gz

Download URL structured_optics-0.4.1.tar.gz
Size 25.4 kB
Tags Source
SHA-256 checksum
How to use checksums
863949a24ef592a0426458bd5777dd7ebad50cc69fef4f020f9f2b1caa1a7f1a
BLAKE2b-256 checksum
How to use checksums
b80e677441ccd6aa7a130747f95a5d1a9c66d77ca489f547c3b3b75551ce59e9
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.1-py3-none-any.whl

Download URL structured_optics-0.4.1-py3-none-any.whl
Size 26.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e1e46b83701f960e41f191fc34d1d284844fe6b46d9084eca5a6c9696a7fb32c
BLAKE2b-256 checksum
How to use checksums
e285cc1807092580824b7da81883127774194c28c521db6dcd4249cdc4d4d332
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

This release

0.4.1 This release

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