Toolkit for doing optics in Python
Features include
- 3D engine based on sphere tracing for simple robust implicit surfaces and constructive solid geometry,
- nonsequential ray tracing engine,
- programmatic lookup of full RefractiveIndex.INFO database,
- import of lenses and glass catalogs from Zemax.
Installation methods include:
- Clone repository and interact with it using Poetry e.g.
poetry run view-zmx <zemax-file>
orpoetry shell
. - Install from package repository (e.g. PyPi) with pip:
pip install otk
. - Development mode with [:
poetry add <path-to-local-repo>
. - From package repository (e.g. PyPi) with Poetry:
poetry add otk
.
- Check out the scripts in examples.
- View one of the lenses in designs with the command line tool
view-zmx
.
(Yep, this is it at the moment.)
view-zmx <zemaxfile>
launches a viewer of a Zemax lens.
otk.sdb
- Geometry library based on signed distance bounds.otk.rt1
- First attempt at ray tracing package. Superseded by otk.rt2.otk.rt2
- Ray tracing package with flexible geometry based on otk.sdb. See alsootk.rt2_scalar_qt
.otk.asbp
- Angular spectrum beam propagation.otk.abcd
- 1D ray transfer matrix ("ABCD matrices") tools.otk.rtm4
- abstractions for 1D ray transfer matrices, building uponotk.abcd
.otk.pgb
- parabasal Gaussian routines for doing wave optical calculations with ray tracing results. Builds uponotk.rt1
.otk.h4t
- homogeneous 4x4 transformation matrices.otk.paraxial
- basic paraxial optics calculations.otk.math
- various optics-specific math functions.otk.pov
- tools for generating POV-Ray scenes of optical setups.otk.pov
- for calculating properties of prisms.otk.qt
- Qt-related utilitiesotk.ri
- refractive index tools.otk.trains
- axially symmetric optical systemsotk.v3
- operations on homogeneous vectors in 2Dotk.v4
- operations on homogeneous vectors in 3Dotk.v4b
- broadcasting operations on homogeneous vectors in 3Dotk.zemax
- reading Zemax files
- Import of wavelengths, field, and stop from Zemax.
- Variables to allow rapid changes for animation and optimization.
- Cool demos: rainbow, lighthouse.
- Improve physical & wave optics.
- Upgrade parabasal Gaussians to use rt2.
- Upgrade asbp to use rt2.
- Demos e.g. spherical aberration acting on Gaussian beam, Arago spot.
otk
- the Python package itself. Package data includesotk/properties
- material properties databases.otk/notes
- miscellaneous notes including derivations.
examples
- example scripts.
otk uses Poetry for package management. This means that dependencies, version, entry points etc are all defined in pyproject.toml
.
Using PyPi test instance
To setup, add test.pypi.org to your Poetry configuration with poetry config repositories.test https://test.pypi.org/legacy/
. Note the trailing slash.
To publish (after poetry build
), poetry publish -r test
.
To test that it installs properly,
- create and activate a virtual environment, and
- per instructions,
pip install --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple otk
.
However, I was unable to re-upload the same version (i.e. to correct a mistake) to test.pypi.org (even after logging in to the website and deleting the release).
Test framework is pytest and tox.
Please do.