lenstest

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. (2026). lenstest: A Python module for non-interferometric testing of mirrors and lenses (Version 1.0.1) Computer Software. Zenodo. https://doi.org/10.5281/zenodo.8417590

BibTeX

@software{lenstest_prahl_2026,
author = {Scott Prahl},
title = {lenstest: A Python module for non-interferometric testing of mirrors and lenses},
year = {2026},
version = {1.0.1},
doi = {10.5281/zenodo.8417590},
url = {https://github.com/scottprahl/lenstest},
publisher = {Zenodo}
}

License

lenstest is licensed under the terms of the MIT license.