{ "info": { "author": "Michael J Hayford", "author_email": "mjhoptics@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: BSD License", "Operating System :: OS Independent", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering :: Physics" ], "description": "==========\nray-optics\n==========\n\nInstallation\n------------\n\nrayoptics is installed using ``pip3``.\n\n.. code::\n\n > pip3 install rayoptics\n\nDocumentation\n-------------\n\nThe documentation for **ray-optics** is hosted at `Read the Docs `_\n\nTools for image forming optical design and analysis\n---------------------------------------------------\n\nThe **ray-optics** project has several goals, both in the optical domain and\nin the software development domain\n\n* Rethink how image forming optical calculations are done absent historical\n constraints on computer speed and memory\n* Serve as a reference implementation of basic ray tracing and wavefront\n analysis algorithms\n* Leverage Python libraries to avoid reinventing the wheel\n* Look for architectures that can be deployed on the desktop (e.g. using Qt),\n using (Jupyter) notebooks, and in mobile environments\n\nImage forming optical design and analysis was one of the first domain areas to\nbe implemented on the first electronic computing machines. The calculations\nwere so voluminous and tedious that automation was a tremendous benefit. The\ncomputational workflow initially followed that used by the human computers of\nthe day. The capabilities of electronic computers were also extremely limited.\n\nComputers are vastly more powerful now than they were when the venerable\nCODE V program was initially developed. Zemax and Oslo date from the early\nIBM PC days, when both speed and memory were limiting factors. The software\ntools available then were limited as well. In order to gain acceptable\nperformance, compiled languages such as C and FORTRAN were required. Graphical\nuser interfaces were also expensive to develop and were often considered\nsecondary in importance by vendors.\n\nOptical calculation technology can be considered a mature field. There is a\nlong history in the literature of investigations tying optical theory to\ncalculation approaches that maintain accuracy, handle corner cases, etc. Much\nof this knowledge is embedded in production optical design software; having it\navailable in an open source implementation brings this knowledge out of the\nliterature and makes it accessible to students and researchers.\n\nThe advent of scripting environments like Python make a fresh look at optical\ndesign calculations worthwhile. Python has many advantages for scientific and\nengineering applications, including libraries for numerical calculations, a\nvariety of graphics options including a very full featured plotting library,\nand support for data science applications that look promising for managing\ndata generated during extensive analysis of optical systems. There is also\ngood support for unit testing of Python software, as well as debugging and\nperformance profiling.\n\nFinally, computational notebooks, such as those of the Jupyter project,\nprovide the ability to document **reproducibly** the implementation of an\nalgorithm and results produced by the algorithm.\n\nNote\n----\n\nThis project has been set up using PyScaffold 3.1. For details and usage information on PyScaffold see https://pyscaffold.org/.\n\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mjhoptics/ray-optics", "keywords": "geometric optics, ray tracing, image forming optics,,paraxial optics, optical design, lens design,,aberrations, opd, psf", "license": "BSD 3 Clause", "maintainer": "", "maintainer_email": "", "name": "rayoptics", "package_url": "https://pypi.org/project/rayoptics/", "platform": "any", "project_url": "https://pypi.org/project/rayoptics/", "project_urls": { "Homepage": "https://github.com/mjhoptics/ray-optics" }, "release_url": "https://pypi.org/project/rayoptics/0.3.5/", "requires_dist": [ "opticalglass", "numpy (>=1.15.0)", "scipy (>=1.1.0)", "matplotlib (>=2.2.3)", "json-tricks (>=3.12.1)", "pandas (>=0.23.4)", "attrs (>=18.1.0)", "transforms3d (>=0.3.1)", "traitlets (>=4.3.2)", "qtconsole (>=4.4.3)", "pyqt5 (>=5.9.2)", "pytest ; extra == 'testing'", "pytest-cov ; extra == 'testing'" ], "requires_python": ">=3.6", "summary": "Tools for image forming optical design and analysis", "version": "0.3.5" }, "last_serial": 5538173, "releases": { "0.3.0": [ { "comment_text": "", "digests": { "md5": "a6139fab07de3118464659f18176a567", "sha256": "047ab78d4a2a751fa688eb882da636bcf98ad34f247300b78a5970eebd659af4" }, "downloads": -1, "filename": "rayoptics-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a6139fab07de3118464659f18176a567", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 153908, "upload_time": "2019-02-21T06:29:40", "url": "https://files.pythonhosted.org/packages/83/3c/7d7c13467da1bfad86fabeb01d48c10f718f104f247598d7642e4b759584/rayoptics-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "109487f309027e36687e60a5016c657f", "sha256": "0a6c17b5e12a97ebf7bfcd300ce52dfed1005d53d9aa250c367253a6733d0e64" }, "downloads": -1, "filename": "rayoptics-0.3.0.tar.gz", "has_sig": false, "md5_digest": "109487f309027e36687e60a5016c657f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 264612, "upload_time": "2019-02-21T06:29:43", "url": "https://files.pythonhosted.org/packages/22/43/236a3b8f9ef22256bb7c625fc4bcc4485cfe8b4066f11bc1b38d0e3fbdb6/rayoptics-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "d17b63a3480c9fc08fad9beace7e0251", "sha256": "a1eccf09312a0779caede30386e9e1ffb8300022e456913e6a6d0fcd6a994d02" }, "downloads": -1, "filename": "rayoptics-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "d17b63a3480c9fc08fad9beace7e0251", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 153799, "upload_time": "2019-02-22T02:37:28", "url": "https://files.pythonhosted.org/packages/54/fb/e44f63141adee706aa6b538857450092c41844b185b6fba7669f45bd1982/rayoptics-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1d487872364f72689c51f970a98358e0", "sha256": "adb21f9a179dbd3ce755f4d91ed56c85a123c8331575b0a4abb0f51c1cb6f030" }, "downloads": -1, "filename": "rayoptics-0.3.1.tar.gz", "has_sig": false, "md5_digest": "1d487872364f72689c51f970a98358e0", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 264229, "upload_time": "2019-02-22T02:37:30", "url": "https://files.pythonhosted.org/packages/bd/a1/812817c89a5680caa013ace635dc21224a41088bf78e849990233532161d/rayoptics-0.3.1.tar.gz" } ], "0.3.1a1": [ { "comment_text": "", "digests": { "md5": "ec3b6dc6e0229762b085b88c447a453e", "sha256": "d4215f6aff739d113f44252f20db6f579348e1fadd2f086fd68831756bf38f24" }, "downloads": -1, "filename": "rayoptics-0.3.1a1-py3-none-any.whl", "has_sig": false, "md5_digest": "ec3b6dc6e0229762b085b88c447a453e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 153941, "upload_time": "2019-02-22T01:42:59", "url": "https://files.pythonhosted.org/packages/30/bc/805b4c77f99c9dc10c413d3239b8ab638d4f67bff4fb1c0218b003be9942/rayoptics-0.3.1a1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0d47538d3be811d3b4412abce526b96d", "sha256": "b51d2bc043e562cf84534badd42954b36797d8b2dee79db679421cf7786d1573" }, "downloads": -1, "filename": "rayoptics-0.3.1a1.tar.gz", "has_sig": false, "md5_digest": "0d47538d3be811d3b4412abce526b96d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 264650, "upload_time": "2019-02-22T01:43:02", "url": "https://files.pythonhosted.org/packages/6f/0d/be5e3bbf37ae5a33a880a03a083cecadecdf2e22f01e1a8979e84a05eff5/rayoptics-0.3.1a1.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "425b3a8cea5b9dc9be133db253f477fe", "sha256": "09a54000906b8b7a94b2afafb03f7a9193c05a3b76919af9c63ca5e69987603e" }, "downloads": -1, "filename": "rayoptics-0.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "425b3a8cea5b9dc9be133db253f477fe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 158351, "upload_time": "2019-03-13T21:00:13", "url": "https://files.pythonhosted.org/packages/37/f9/d78ffa5d2d54f7f27e75d684d641876e4fb2d14c17b8b8cffe986ae046bc/rayoptics-0.3.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dc28cf400dff28840575b7326e10f22a", "sha256": "c86ee5ce258bffa0683c872fa04f47caebddd923986c648d82a90d74f4e946de" }, "downloads": -1, "filename": "rayoptics-0.3.5.tar.gz", "has_sig": false, "md5_digest": "dc28cf400dff28840575b7326e10f22a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 263743, "upload_time": "2019-03-13T21:00:15", "url": "https://files.pythonhosted.org/packages/52/54/040b52b2ce47b31be034b2c52ef2a4e74c13b971c8df949069a327159360/rayoptics-0.3.5.tar.gz" } ], "0.4a1": [ { "comment_text": "", "digests": { "md5": "153ea5743bce4df9d56ae08287172915", "sha256": "8c480e588c5d98f2249ebded33cc1fd03cba0843952311cfc1aa0ea7149cc029" }, "downloads": -1, "filename": "rayoptics-0.4a1-py3-none-any.whl", "has_sig": false, "md5_digest": "153ea5743bce4df9d56ae08287172915", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 178607, "upload_time": "2019-06-30T21:36:28", "url": "https://files.pythonhosted.org/packages/e2/e6/cfba97cc5fbdb1e0701442678426bd7c153e275b848140958e5515c78def/rayoptics-0.4a1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "76a356e38b7dadea1619ccab5ae77631", "sha256": "60e68bdc1d9715611792a2a10f14a76f4ea1465022eec461d430c38dab739725" }, "downloads": -1, "filename": "rayoptics-0.4a1.tar.gz", "has_sig": false, "md5_digest": "76a356e38b7dadea1619ccab5ae77631", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 281833, "upload_time": "2019-06-30T21:36:30", "url": "https://files.pythonhosted.org/packages/52/ce/d152111b269333d3dc033f0aaebf9a2ec980f4a8a57f9686d0f8c591f0c5/rayoptics-0.4a1.tar.gz" } ], "0.4a2": [ { "comment_text": "", "digests": { "md5": "bbfcf7f0e09953f72c18a3512cacfa90", "sha256": "fa4d9aa049b57f75a5f6a4e573d784088aeb898beecdd43c51f18453fd99569d" }, "downloads": -1, "filename": "rayoptics-0.4a2-py3-none-any.whl", "has_sig": false, "md5_digest": "bbfcf7f0e09953f72c18a3512cacfa90", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 181173, "upload_time": "2019-07-02T00:32:33", "url": "https://files.pythonhosted.org/packages/bc/5d/983f00154c7a2ad6bd0e89b492b81fc8664132fdf816eeadd548d740adc3/rayoptics-0.4a2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4f2d47cfaf1e5b40ae6ceaa2a5044a66", "sha256": "374c1b537ea2d52dc9ee089779254d15289010cdf5aafce81fe0c13e9646f3f5" }, "downloads": -1, "filename": "rayoptics-0.4a2.tar.gz", "has_sig": false, "md5_digest": "4f2d47cfaf1e5b40ae6ceaa2a5044a66", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 282991, "upload_time": "2019-07-02T00:32:35", "url": "https://files.pythonhosted.org/packages/76/92/a130ac77d8884ffc020d6eb795c111aff809b419684a59ffe7ff8bdcaa78/rayoptics-0.4a2.tar.gz" } ], "0.4a3": [ { "comment_text": "", "digests": { "md5": "884e45c08667666e61f8dd9ebf1b76e7", "sha256": "06877681c6cf0ba50b3dda78d14729053e81e4812bbed89c85a6d163da764a17" }, "downloads": -1, "filename": "rayoptics-0.4a3-py3-none-any.whl", "has_sig": false, "md5_digest": "884e45c08667666e61f8dd9ebf1b76e7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 181305, "upload_time": "2019-07-02T20:14:45", "url": "https://files.pythonhosted.org/packages/da/dc/09340b657b58b9f3587735734a0831c04a1f97e0b29692c80925874ae856/rayoptics-0.4a3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dbce69479becdba48bc4fcf25962c915", "sha256": "b2eecf3b4dbe1cb76d3892130694c869064dc33ca1dc4cc7d4b89fa94e2d7912" }, "downloads": -1, "filename": "rayoptics-0.4a3.tar.gz", "has_sig": false, "md5_digest": "dbce69479becdba48bc4fcf25962c915", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 329078, "upload_time": "2019-07-02T20:14:47", "url": "https://files.pythonhosted.org/packages/64/f0/938b9d06bf9b21d64524f632be7b477493ba2bb7ae7f77e119ca58b3f0d6/rayoptics-0.4a3.tar.gz" } ], "0.4a4": [ { "comment_text": "", "digests": { "md5": "6eac1a7a3bacf87aaa4cab9befface4d", "sha256": "2fb7ed8d6d123b249eaf7a8aaeb195057ffe7c06e04642b3e7edce7d87d2d40b" }, "downloads": -1, "filename": "rayoptics-0.4a4-py3-none-any.whl", "has_sig": false, "md5_digest": "6eac1a7a3bacf87aaa4cab9befface4d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 182141, "upload_time": "2019-07-03T22:44:18", "url": "https://files.pythonhosted.org/packages/72/3b/08492ca715b49fe1ae034b02f5cb8ecd37a89da4f3a3fb231c03186a2416/rayoptics-0.4a4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bf5aa022543676b736a453985b8b44e2", "sha256": "f7d0929876bf5d33f1dc83c54486e5eeb10a5912b2f3bdd1625b39b132774e8a" }, "downloads": -1, "filename": "rayoptics-0.4a4.tar.gz", "has_sig": false, "md5_digest": "bf5aa022543676b736a453985b8b44e2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 329854, "upload_time": "2019-07-03T22:44:21", "url": "https://files.pythonhosted.org/packages/8b/21/abef15933dfcc6ac654bbb2ce62d1e0840b97434e4fd389aa83077e36c29/rayoptics-0.4a4.tar.gz" } ], "0.4a5": [ { "comment_text": "", "digests": { "md5": "4bd25d18d7d5ed9929d55f42e2ad6967", "sha256": "95c398822dd6438984b706b0395865bf279ea7399c30bb979ce551706ec970db" }, "downloads": -1, "filename": "rayoptics-0.4a5-py3-none-any.whl", "has_sig": false, "md5_digest": "4bd25d18d7d5ed9929d55f42e2ad6967", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 184203, "upload_time": "2019-07-14T21:20:32", "url": "https://files.pythonhosted.org/packages/84/ae/fdd2c9d183ca726ead17be24e1aa85531742ca33dd148461dd9d34989661/rayoptics-0.4a5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c8573e1e7433097bd707b319595a2fdf", "sha256": "cdd712f350b0290e129a7828896f1a741e7e0c74ddc5ac4505a43133195036f6" }, "downloads": -1, "filename": "rayoptics-0.4a5.tar.gz", "has_sig": false, "md5_digest": "c8573e1e7433097bd707b319595a2fdf", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 332284, "upload_time": "2019-07-14T21:20:34", "url": "https://files.pythonhosted.org/packages/15/da/878a6ae036f229a698834fd190aab7c446c87f0a7937e209d880529e4ddf/rayoptics-0.4a5.tar.gz" } ], "0.4a6": [ { "comment_text": "", "digests": { "md5": "5d0f8762642b403e5dff7d8f153c0639", "sha256": "463c2abb85f140c84a1f1b660b9d56f9cca266a846d203095a1019adccd9a67e" }, "downloads": -1, "filename": "rayoptics-0.4a6-py3-none-any.whl", "has_sig": false, "md5_digest": "5d0f8762642b403e5dff7d8f153c0639", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 184872, "upload_time": "2019-07-16T03:33:06", "url": "https://files.pythonhosted.org/packages/2b/66/63620353dcbe68d248c7f4427071f46d608a3f90911e62da8885a9064fbd/rayoptics-0.4a6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7cbc3c3707c59f7dabbb05d85e779a9e", "sha256": "54284f74b11946d427e61a5d7b7e788d043c2d1102e3ef9f8224ae31ffaa047c" }, "downloads": -1, "filename": "rayoptics-0.4a6.tar.gz", "has_sig": false, "md5_digest": "7cbc3c3707c59f7dabbb05d85e779a9e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 333341, "upload_time": "2019-07-16T03:33:08", "url": "https://files.pythonhosted.org/packages/df/47/b94458e86587e26976a2a453eb6730bf3e50dd1de5aa374cfa74c4670956/rayoptics-0.4a6.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "425b3a8cea5b9dc9be133db253f477fe", "sha256": "09a54000906b8b7a94b2afafb03f7a9193c05a3b76919af9c63ca5e69987603e" }, "downloads": -1, "filename": "rayoptics-0.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "425b3a8cea5b9dc9be133db253f477fe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 158351, "upload_time": "2019-03-13T21:00:13", "url": "https://files.pythonhosted.org/packages/37/f9/d78ffa5d2d54f7f27e75d684d641876e4fb2d14c17b8b8cffe986ae046bc/rayoptics-0.3.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dc28cf400dff28840575b7326e10f22a", "sha256": "c86ee5ce258bffa0683c872fa04f47caebddd923986c648d82a90d74f4e946de" }, "downloads": -1, "filename": "rayoptics-0.3.5.tar.gz", "has_sig": false, "md5_digest": "dc28cf400dff28840575b7326e10f22a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 263743, "upload_time": "2019-03-13T21:00:15", "url": "https://files.pythonhosted.org/packages/52/54/040b52b2ce47b31be034b2c52ef2a4e74c13b971c8df949069a327159360/rayoptics-0.3.5.tar.gz" } ] }