Routines for analysis of non-interfometric wavefront testing.
Project description
lenstest is a collection of routines for non-interferometric testing of lenses and mirrors. This package contains code for the Foucault Knife Edge Test and the Ronchi Ruling Test. With lenstest, users can test the quality of their lenses and mirrors without the need for interferometric equipment.
Detailed documentation is available at <https://lenstest.readthedocs.io>.
Installation
Install with pip:
pip install lenstest
or with conda:
conda install -c conda-forge lenstest
or use immediately by clicking the Jupyterlite button below
Foucault Example
import matplotlib.pyplot as plt
import lenstest
D = 200
RoC = 400
z_offset = 10
x_offset = -0.5
lenstest.foucault.plot_lens_layout(D, RoC, x_offset, z_offset)
plt.show()
lenstest.foucault.plot_knife_and_screen(D, RoC, x_offset, z_offset)
plt.show()
Produces
Ronchi Example
10 meter parabolic mirror comparison.
import matplotlib.pyplot as plt
import lenstest
D = 10000 # 10 meter mirror
F = 5
conic = -1
lp_per_mm = 0.133 # grating frequency line-pairs/mm
RoC = F * D * 2
print(" Mirror Diameter = %.0f mm" % D)
print(" F# = %.1f" % F)
print("Radius of Curvature = %.0f mm" % RoC)
print(" Focal Length = %.0f mm" % (RoC/2))
print(" Ronchi Frequency = %.3f lp/mm" % lp_per_mm)
plt.subplots(2,3,figsize=(13,8))
for i, z_offset in enumerate([-63,35,133,231,329,429]):
plt.subplot(2,3,i+1)
x,y = lenstest.ronchi.gram(D, RoC, lp_per_mm, z_offset, conic=conic)
plt.plot(x,y,'o', markersize=0.1, color='blue')
lenstest.lenstest.draw_circle(D/2)
plt.title("%.0fmm from focus"%z_offset)
plt.gca().set_aspect("equal")
if i in [1,2,4,5]:
plt.yticks([])
if i in [0,1,2]:
plt.xticks([])
plt.show()
Produces
Citation
If you use lenstest in academic, instructional, or applied technical work, please cite:
Prahl, S. (2025). lenstest: A Python module for non-interferometric testing of mirrors and lenses (Version 1.0.0) Computer Software. Zenodo. https://doi.org/10.5281/zenodo.8417590
BibTeX
@software{lenstest_prahl_2025,
author = {Scott Prahl},
title = {lenstest: A Python module for non-interferometric testing of mirrors and lenses},
year = {2025},
version = {1.0.0},
doi = {10.5281/zenodo.8417590},
url = {https://github.com/scottprahl/lenstest},
publisher = {Zenodo}
}
License
lenstest is licensed under the terms of the MIT license.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lenstest-1.0.1.tar.gz.
File metadata
- Download URL: lenstest-1.0.1.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5249d32e9e429d9d99c95b95a7f32feceac7e2549d01ce91f08c15d3cc1d8eda
|
|
| MD5 |
368ad828204c7e5b5f87e2a4143d341a
|
|
| BLAKE2b-256 |
c6180a75b8ccd530e10fb0ed23dd0cea4390205e8d72a009eef33c869783f37f
|
Provenance
The following attestation bundles were made for lenstest-1.0.1.tar.gz:
Publisher:
pypi.yaml on scottprahl/lenstest
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lenstest-1.0.1.tar.gz -
Subject digest:
5249d32e9e429d9d99c95b95a7f32feceac7e2549d01ce91f08c15d3cc1d8eda - Sigstore transparency entry: 824295015
- Sigstore integration time:
-
Permalink:
scottprahl/lenstest@5113c9ebd4bfdc05bc630a8f420d00c8899ad75c -
Branch / Tag:
refs/tags/1.0.1 - Owner: https://github.com/scottprahl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yaml@5113c9ebd4bfdc05bc630a8f420d00c8899ad75c -
Trigger Event:
release
-
Statement type:
File details
Details for the file lenstest-1.0.1-py3-none-any.whl.
File metadata
- Download URL: lenstest-1.0.1-py3-none-any.whl
- Upload date:
- Size: 13.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
103ba373316c3f0e882bab89fce1aa5e5aab6a2daafc6b92d5bbe09683bb8919
|
|
| MD5 |
46828c8334f747560087c0bf8d20b582
|
|
| BLAKE2b-256 |
035ec1fc28075667e21d29a85e6afac738cb2939a719c8e043ccf0de364edee6
|
Provenance
The following attestation bundles were made for lenstest-1.0.1-py3-none-any.whl:
Publisher:
pypi.yaml on scottprahl/lenstest
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
lenstest-1.0.1-py3-none-any.whl -
Subject digest:
103ba373316c3f0e882bab89fce1aa5e5aab6a2daafc6b92d5bbe09683bb8919 - Sigstore transparency entry: 824295089
- Sigstore integration time:
-
Permalink:
scottprahl/lenstest@5113c9ebd4bfdc05bc630a8f420d00c8899ad75c -
Branch / Tag:
refs/tags/1.0.1 - Owner: https://github.com/scottprahl
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi.yaml@5113c9ebd4bfdc05bc630a8f420d00c8899ad75c -
Trigger Event:
release
-
Statement type: