Skip to main content

Routines for analysis of non-interfometric wavefront testing.

Project description

pypi github conda DOI

License testing docs Downloads

Try JupyterLite


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

Try JupyterLite

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

Foucault layout Foucault diagram

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

Ronchigram

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

lenstest-1.0.1.tar.gz (17.3 kB view details)

Uploaded Source

Built Distribution

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

lenstest-1.0.1-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

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

Hashes for lenstest-1.0.1.tar.gz
Algorithm Hash digest
SHA256 5249d32e9e429d9d99c95b95a7f32feceac7e2549d01ce91f08c15d3cc1d8eda
MD5 368ad828204c7e5b5f87e2a4143d341a
BLAKE2b-256 c6180a75b8ccd530e10fb0ed23dd0cea4390205e8d72a009eef33c869783f37f

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenstest-1.0.1.tar.gz:

Publisher: pypi.yaml on scottprahl/lenstest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for lenstest-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 103ba373316c3f0e882bab89fce1aa5e5aab6a2daafc6b92d5bbe09683bb8919
MD5 46828c8334f747560087c0bf8d20b582
BLAKE2b-256 035ec1fc28075667e21d29a85e6afac738cb2939a719c8e043ccf0de364edee6

See more details on using hashes here.

Provenance

The following attestation bundles were made for lenstest-1.0.1-py3-none-any.whl:

Publisher: pypi.yaml on scottprahl/lenstest

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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