lenstest
========
by Scott Prahl
.. image:: https://img.shields.io/pypi/v/lenstest?color=68CA66
:target: https://pypi.org/project/lenstest/
:alt: pypi
.. image:: https://img.shields.io/github/v/tag/scottprahl/lenstest?label=github&color=v
:target: https://github.com/scottprahl/lenstest
:alt: github
.. image:: https://img.shields.io/conda/vn/conda-forge/lenstest?label=conda&color=68CA66
:target: https://github.com/conda-forge/lenstest-feedstock
:alt: conda
.. image:: https://zenodo.org/badge/107437651.svg
:target: https://zenodo.org/badge/latestdoi/107437651
:alt: zenodo
|
.. image:: https://img.shields.io/github/license/scottprahl/lenstest?color=68CA66
:target: https://github.com/scottprahl/lenstest/blob/master/LICENSE.txt
:alt: License
.. image:: https://github.com/scottprahl/lenstest/actions/workflows/test.yaml/badge.svg
:target: https://github.com/scottprahl/lenstest/actions/workflows/test.yaml
:alt: testing
.. image:: https://readthedocs.org/projects/lenstest/badge?color=68CA66
:target: https://lenstest.readthedocs.io
:alt: docs
.. image:: https://img.shields.io/pypi/dm/lenstest?color=68CA66
:target: https://pypi.org/project/lenstest/
:alt: Downloads
__________
`lenstest` is a collection of routines for non-interferometric testing of lenses
and mirrors. Developed by Scott Prahl, 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 Google Colaboratory button below
.. image:: https://colab.research.google.com/assets/colab-badge.svg
:target: https://colab.research.google.com/github/scottprahl/lenstest/blob/master
:alt: Colab
Foucault Example
----------------
.. code-block:: python
import numpy as np
import matplotlib.pyplot as plt
import lenstest
D = 200
RoC = 400
z_offset = 10
x_offset = -0.5
conic = 0
phi = np.radians(0)
foucault.plot_lens_layout(D, RoC, x_offset, z_offset)
plt.show()
foucault.plot_knife_and_screen(D, RoC, x_offset, z_offset, phi=phi)
plt.show()
Produces
.. image:: https://raw.githubusercontent.com/scottprahl/lenstest/master/docs/foucault.png
:alt: foucougram
Ronchi Example
--------------
10 meter parabolic mirror comparison.
.. code-block:: python
import numpy as np
import matplotlib.pyplot as plt
import lenstest
D = 10000 # 10 meter mirror
F = 5
conic = -1
lp_per_mm = 0.133 # grating frequency lp/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
.. image:: https://raw.githubusercontent.com/scottprahl/lenstest/master/docs/ronchi.png
:alt: Ronchigram
License
-------
`lenstest` is licensed under the terms of the MIT license.
Raw data
{
"_id": null,
"home_page": "https://github.com/scottprahl/lenstest",
"name": "lenstest",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "",
"keywords": "Ronchi,Foucault,Knife Edge,Ronchigram,Foucaugram,fringe,lens,mirror,parabolic,hyperbolic,paraboloid,hyperboloid,oblate spheroid,prolate spheroid",
"author": "Scott Prahl",
"author_email": "scott.prahl@oit.edu",
"download_url": "https://files.pythonhosted.org/packages/fa/38/b6d5aae750a5867dc439efb7bbfa979a8e272d237313c57ed409993ae964/lenstest-0.9.0.tar.gz",
"platform": null,
"description": "lenstest\n========\n\nby Scott Prahl\n\n.. image:: https://img.shields.io/pypi/v/lenstest?color=68CA66\n :target: https://pypi.org/project/lenstest/\n :alt: pypi\n\n.. image:: https://img.shields.io/github/v/tag/scottprahl/lenstest?label=github&color=v\n :target: https://github.com/scottprahl/lenstest\n :alt: github\n\n.. image:: https://img.shields.io/conda/vn/conda-forge/lenstest?label=conda&color=68CA66\n :target: https://github.com/conda-forge/lenstest-feedstock\n :alt: conda\n\n.. image:: https://zenodo.org/badge/107437651.svg\n :target: https://zenodo.org/badge/latestdoi/107437651\n :alt: zenodo\n\n|\n\n.. image:: https://img.shields.io/github/license/scottprahl/lenstest?color=68CA66\n :target: https://github.com/scottprahl/lenstest/blob/master/LICENSE.txt\n :alt: License\n\n.. image:: https://github.com/scottprahl/lenstest/actions/workflows/test.yaml/badge.svg\n :target: https://github.com/scottprahl/lenstest/actions/workflows/test.yaml\n :alt: testing\n\n.. image:: https://readthedocs.org/projects/lenstest/badge?color=68CA66\n :target: https://lenstest.readthedocs.io\n :alt: docs\n\n.. image:: https://img.shields.io/pypi/dm/lenstest?color=68CA66\n :target: https://pypi.org/project/lenstest/\n :alt: Downloads\n\n__________\n\n`lenstest` is a collection of routines for non-interferometric testing of lenses\nand mirrors. Developed by Scott Prahl, this package contains code for the\nFoucault Knife Edge Test and the Ronchi Ruling Test. With `lenstest`, users can\ntest the quality of their lenses and mirrors without the need for\ninterferometric equipment. \n\nDetailed documentation is available at\n<https://lenstest.readthedocs.io>.\n\n\nInstallation\n------------\n\n* Install with ``pip``::\n \n pip install lenstest\n\n* or with ``conda``::\n\n conda install -c conda-forge lenstest\n\nor use immediately by clicking the Google Colaboratory button below\n\n.. image:: https://colab.research.google.com/assets/colab-badge.svg\n :target: https://colab.research.google.com/github/scottprahl/lenstest/blob/master\n :alt: Colab\n\nFoucault Example\n----------------\n\n.. code-block:: python\n\n import numpy as np\n import matplotlib.pyplot as plt\n import lenstest\n\n D = 200\n RoC = 400\n z_offset = 10\n x_offset = -0.5\n conic = 0\n phi = np.radians(0)\n\n foucault.plot_lens_layout(D, RoC, x_offset, z_offset)\n plt.show()\n\n foucault.plot_knife_and_screen(D, RoC, x_offset, z_offset, phi=phi)\n plt.show()\n\nProduces\n\n.. image:: https://raw.githubusercontent.com/scottprahl/lenstest/master/docs/foucault.png\n :alt: foucougram\n\nRonchi Example\n--------------\n\n10 meter parabolic mirror comparison.\n\n.. code-block:: python\n\n import numpy as np\n import matplotlib.pyplot as plt\n import lenstest\n\n D = 10000 # 10 meter mirror\n F = 5\n conic = -1\n lp_per_mm = 0.133 # grating frequency lp/mm\n\n RoC = F * D * 2\n\n print(\" Mirror Diameter = %.0f mm\" % D)\n print(\" F# = %.1f\" % F)\n print(\"Radius of Curvature = %.0f mm\" % RoC)\n print(\" Focal Length = %.0f mm\" % (RoC/2))\n print(\" Ronchi Frequency = %.3f lp/mm\" % lp_per_mm)\n\n plt.subplots(2,3,figsize=(13,8))\n\n for i, z_offset in enumerate([-63,35,133,231,329,429]):\n plt.subplot(2,3,i+1)\n x,y = lenstest.ronchi.gram(D, RoC, lp_per_mm, z_offset, conic=conic)\n plt.plot(x,y,'o', markersize=0.1, color='blue')\n lenstest.lenstest.draw_circle(D/2)\n plt.title(\"%.0fmm from focus\"%z_offset)\n plt.gca().set_aspect(\"equal\")\n if i in [1,2,4,5]:\n plt.yticks([])\n if i in [0,1,2]:\n plt.xticks([])\n plt.show()\n\nProduces\n\n.. image:: https://raw.githubusercontent.com/scottprahl/lenstest/master/docs/ronchi.png\n :alt: Ronchigram\n\nLicense\n-------\n\n`lenstest` is licensed under the terms of the MIT license.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Routines for analysis of non-interfometric wavefront testing.",
"version": "0.9.0",
"project_urls": {
"Homepage": "https://github.com/scottprahl/lenstest"
},
"split_keywords": [
"ronchi",
"foucault",
"knife edge",
"ronchigram",
"foucaugram",
"fringe",
"lens",
"mirror",
"parabolic",
"hyperbolic",
"paraboloid",
"hyperboloid",
"oblate spheroid",
"prolate spheroid"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "11c3a54a17455a3e0ab14f901a3685c9321fdf928c062151d14a810fce95e4f0",
"md5": "8abe8582a30c6777d8c4b19f8ed31d9f",
"sha256": "7330fb8d51274599ab42d70ccb02399e04d716dfc8ca7bbc7d41bcb4c0ca4b0e"
},
"downloads": -1,
"filename": "lenstest-0.9.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8abe8582a30c6777d8c4b19f8ed31d9f",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 12651,
"upload_time": "2023-10-07T20:45:20",
"upload_time_iso_8601": "2023-10-07T20:45:20.040459Z",
"url": "https://files.pythonhosted.org/packages/11/c3/a54a17455a3e0ab14f901a3685c9321fdf928c062151d14a810fce95e4f0/lenstest-0.9.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fa38b6d5aae750a5867dc439efb7bbfa979a8e272d237313c57ed409993ae964",
"md5": "b7e5d005d14c3e2754b8d79f4973866b",
"sha256": "4dcb5d0c8ef33d8d9ff16c26967b82fd45def45a1450bbbac7a15785ed21d631"
},
"downloads": -1,
"filename": "lenstest-0.9.0.tar.gz",
"has_sig": false,
"md5_digest": "b7e5d005d14c3e2754b8d79f4973866b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 15469,
"upload_time": "2023-10-07T20:45:21",
"upload_time_iso_8601": "2023-10-07T20:45:21.589512Z",
"url": "https://files.pythonhosted.org/packages/fa/38/b6d5aae750a5867dc439efb7bbfa979a8e272d237313c57ed409993ae964/lenstest-0.9.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-07 20:45:21",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "scottprahl",
"github_project": "lenstest",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "numpy",
"specs": []
},
{
"name": "matplotlib",
"specs": []
},
{
"name": "pytest",
"specs": []
}
],
"lcname": "lenstest"
}