Skip to main content

Algorithms for universal interferometers

Project description

Interferometer package

The ability to implement arbitrary interference between any number of optical inputs is useful for both classical and quantum optics. This package provides implementations of the following two papers:

  • Reck, Michael, et al. "Experimental realization of any discrete unitary operator." Physical review letters 73.1 (1994): 58.
  • Clements, William R., et al. "Optimal design for universal multiport interferometers." Optica 3.12 (2016): 1460-1465.

These papers show how any interfometer can be implemented by triangular or square meshes of 2x2 beam splitters, which are experimentally simple to fabricate.

This package also includes the following features:

  • a function to generate Haar-random unitary matrices of any size
  • a method for drawing interferometers using matplotlib
  • a method for building up interferometers one beam splitter at a time

Installation

This package requires python 3, and apart from the tests and the demo notebook only numpy and matplotlib are required. You can install this package with:

pip install interferometer

Examples

A demonstration notebook can be found in the notebook folder. Alternatively, you can try the following code snippet that produces a 5x5 random unitary matrix U describing an interferometer, and determines how this interferometer can be implemented using a square mesh of beam splitters.

import interferometer as itf

U = itf.random_unitary(5)
I = itf.square_decomposition(U)
I.draw()

Testing

You can run the tests from the root directory with

pip install pytest
python -m pytest

Contributing

If you want to add new features to this package, feel free to suggest pull requests!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

interferometer-1.1.1.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

interferometer-1.1.1-py3-none-any.whl (6.3 kB view details)

Uploaded Python 3

File details

Details for the file interferometer-1.1.1.tar.gz.

File metadata

  • Download URL: interferometer-1.1.1.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.5

File hashes

Hashes for interferometer-1.1.1.tar.gz
Algorithm Hash digest
SHA256 732a32c8b990415e777be3683c053e8a28a48effe26d9b0c44a36a49f8fc45a5
MD5 12e33c36c8d3a6db7be031f5da63975e
BLAKE2b-256 639f5a6c9fb030ba58dbe64d2e053ecc0a09fa85402c519a93463fdaea78ea3f

See more details on using hashes here.

File details

Details for the file interferometer-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: interferometer-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.10.5

File hashes

Hashes for interferometer-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7ff744ca828ff3d0ec001dd03718bac221a9bd6c573c2bb1a940fcf1efac7601
MD5 8ca703b82206cd91b5d99a883975bd96
BLAKE2b-256 d00810d1c1e8362a20e42a9495e7aae6e7ec74b1eda5998b9fb4cf87f501424d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page