pygrin
======
by Scott Prahl
.. image:: https://img.shields.io/pypi/v/pygrin?color=green
:target: https://pypi.org/project/pygrin/
:alt: pypi
.. image:: https://img.shields.io/github/v/tag/scottprahl/pygrin?label=github&color=green
:target: https://github.com/scottprahl/pygrin
:alt: github
.. image:: https://img.shields.io/conda/vn/conda-forge/pygrin?color=green
:target: https://github.com/conda-forge/pygrin-feedstock
:alt: conda
.. image:: https://zenodo.org/badge/122556263.svg
:target: https://zenodo.org/badge/latestdoi/122556263
:alt: doi
|
.. image:: https://img.shields.io/github/license/scottprahl/pygrin
:target: https://github.com/scottprahl/pygrin/blob/master/LICENSE.txt
:alt: License
.. image:: https://github.com/scottprahl/pygrin/actions/workflows/test.yaml/badge.svg
:target: https://github.com/scottprahl/pygrin/actions/workflows/test.yaml
:alt: Testing
.. image:: https://readthedocs.org/projects/pygrin/badge
:target: https://pygrin.readthedocs.io
:alt: Docs
.. image:: https://img.shields.io/pypi/dm/pygrin
:target: https://pypi.org/project/pygrin/
:alt: Downloads
__________
A basic collection of routines to ray trace through graded index (GRIN) lenses with a
parabolic radial profile.
.. image:: https://raw.githubusercontent.com/scottprahl/pygrin/master/docs/pitch.png
:alt: full pitch lens
Example
-------
Properties of a 0.25 pitch GRIN lens from an ancient Melles Griot Catalog::
import pygrin
n = 1.608
gradient = 0.339
length = 5.37
diameter = 1.8
pitch = pygrin.period(gradient, length)
ffl = pygrin.FFL(n,pitch,length)
efl = pygrin.EFL(n,pitch,length)
na = pygrin.NA(n,pitch,length,diameter)
angle = pygrin.max_angle(n,pitch,length,diameter)
print('expected pitch = 0.29, calculated %.2f' % pitch)
print('expected FFL = 0.46 mm, calculated %.2f' % ffl)
print('expected NA = 0.46, calculated %.2f' % na)
print('expected full accept angle = 55°, calculated %.0f°' % (2*angle*180/np.pi))
print('working distance = %.2f mm'%(efl-ffl))
Produces::
expected pitch = 0.29, calculated 0.29
expected FFL = 0.46, calculated 0.47
expected NA = 0.46, calculated 0.46
expected full accept angle = 55°, calculated 55°
working distance = 1.43 mm
But the real utility of this module is creating plots that show the path of rays through
a GRIN lens. For examples, see <https://pygrin.readthedocs.io>
Installation
------------
Use ``pip``::
pip install pygrin
or ``conda``::
conda install -c conda-forge pygrin
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/pygrin/blob/master
:alt: Colab
License
-------
``pygrin`` is licensed under the terms of the MIT license.
Raw data
{
"_id": null,
"home_page": "https://github.com/scottprahl/pygrin",
"name": "pygrin",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "",
"keywords": "endoscope,pitch,SELFOC,Graded Index",
"author": "Scott Prahl",
"author_email": "scott.prahl@oit.edu",
"download_url": "https://files.pythonhosted.org/packages/47/89/6fcd0b959ffe5997cb2efc8bddbd7e1e20f82adc3a3cc60e339636a4fd54/pygrin-0.5.1.tar.gz",
"platform": null,
"description": "pygrin\n======\n\nby Scott Prahl\n\n.. image:: https://img.shields.io/pypi/v/pygrin?color=green\n :target: https://pypi.org/project/pygrin/\n :alt: pypi\n\n.. image:: https://img.shields.io/github/v/tag/scottprahl/pygrin?label=github&color=green\n :target: https://github.com/scottprahl/pygrin\n :alt: github\n\n.. image:: https://img.shields.io/conda/vn/conda-forge/pygrin?color=green\n :target: https://github.com/conda-forge/pygrin-feedstock\n :alt: conda\n\n.. image:: https://zenodo.org/badge/122556263.svg\n :target: https://zenodo.org/badge/latestdoi/122556263\n :alt: doi \n\n|\n\n.. image:: https://img.shields.io/github/license/scottprahl/pygrin\n :target: https://github.com/scottprahl/pygrin/blob/master/LICENSE.txt\n :alt: License\n\n.. image:: https://github.com/scottprahl/pygrin/actions/workflows/test.yaml/badge.svg\n :target: https://github.com/scottprahl/pygrin/actions/workflows/test.yaml\n :alt: Testing\n\n.. image:: https://readthedocs.org/projects/pygrin/badge\n :target: https://pygrin.readthedocs.io\n :alt: Docs\n\n.. image:: https://img.shields.io/pypi/dm/pygrin\n :target: https://pypi.org/project/pygrin/\n :alt: Downloads\n\n__________\n\nA basic collection of routines to ray trace through graded index (GRIN) lenses with a\nparabolic radial profile.\n\n.. image:: https://raw.githubusercontent.com/scottprahl/pygrin/master/docs/pitch.png\n :alt: full pitch lens\n\nExample\n-------\n\nProperties of a 0.25 pitch GRIN lens from an ancient Melles Griot Catalog::\n\n import pygrin\n n = 1.608 \n gradient = 0.339 \n length = 5.37\n diameter = 1.8\n \n pitch = pygrin.period(gradient, length)\n ffl = pygrin.FFL(n,pitch,length)\n efl = pygrin.EFL(n,pitch,length)\n na = pygrin.NA(n,pitch,length,diameter)\n\n angle = pygrin.max_angle(n,pitch,length,diameter)\n print('expected pitch = 0.29, calculated %.2f' % pitch)\n print('expected FFL = 0.46 mm, calculated %.2f' % ffl)\n print('expected NA = 0.46, calculated %.2f' % na)\n print('expected full accept angle = 55\u00b0, calculated %.0f\u00b0' % (2*angle*180/np.pi))\n print('working distance = %.2f mm'%(efl-ffl))\n\nProduces::\n\n expected pitch = 0.29, calculated 0.29\n expected FFL = 0.46, calculated 0.47\n expected NA = 0.46, calculated 0.46\n expected full accept angle = 55\u00b0, calculated 55\u00b0\n working distance = 1.43 mm\n\nBut the real utility of this module is creating plots that show the path of rays through\na GRIN lens. For examples, see <https://pygrin.readthedocs.io>\n\nInstallation\n------------\n\nUse ``pip``::\n\n pip install pygrin\n\nor ``conda``::\n\n conda install -c conda-forge pygrin\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/pygrin/blob/master\n :alt: Colab\n\nLicense\n-------\n``pygrin`` is licensed under the terms of the MIT license.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Gradient Index (GRIN) Lens Calculations",
"version": "0.5.1",
"project_urls": {
"Homepage": "https://github.com/scottprahl/pygrin"
},
"split_keywords": [
"endoscope",
"pitch",
"selfoc",
"graded index"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "062c9520f6748b33d77b0b8ae1169e315195667050829fca5e54b05e47300421",
"md5": "637c14dd73fc53652866afd98a2b5a6d",
"sha256": "bbd1b7a789e4b1887c288c38c1349074cdc559e0449bf11db6a00a615a63557e"
},
"downloads": -1,
"filename": "pygrin-0.5.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "637c14dd73fc53652866afd98a2b5a6d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 6627,
"upload_time": "2023-09-22T17:09:28",
"upload_time_iso_8601": "2023-09-22T17:09:28.212160Z",
"url": "https://files.pythonhosted.org/packages/06/2c/9520f6748b33d77b0b8ae1169e315195667050829fca5e54b05e47300421/pygrin-0.5.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "47896fcd0b959ffe5997cb2efc8bddbd7e1e20f82adc3a3cc60e339636a4fd54",
"md5": "e13b463446b743cd47ef5be9a6c712e0",
"sha256": "afa45fadaa2b3b94e36165955066f3d099ea3efbd03c0dbc24cc5b6ab88bc1a0"
},
"downloads": -1,
"filename": "pygrin-0.5.1.tar.gz",
"has_sig": false,
"md5_digest": "e13b463446b743cd47ef5be9a6c712e0",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 8674,
"upload_time": "2023-09-22T17:09:29",
"upload_time_iso_8601": "2023-09-22T17:09:29.447948Z",
"url": "https://files.pythonhosted.org/packages/47/89/6fcd0b959ffe5997cb2efc8bddbd7e1e20f82adc3a3cc60e339636a4fd54/pygrin-0.5.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-09-22 17:09:29",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "scottprahl",
"github_project": "pygrin",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "pygrin"
}