Welcome to pyMOE’s documentation!

pyMOE is a Python library for designing and producing masks for Micro Optical Elements.

Features

Mask design features:

  • Designing multi-layer (grayscale) masks from analytical and/or numerical (e.g. Gerchberg–Saxton) methods

  • Designing single layer (binary) dithered masks from grayscale masks

  • Designing rudimentary metasurfaces masks

  • Numerical scalar propagation methods (Rayleigh-Sommerfeld, Fresnel, Fraunhofer, Angular Spectrum Method, Bluestein) of electric fields from (grayscale) masks

  • Rudimentary optimization and inverse design based on gradient-descent methods

Mask production features:

  • Image file (binary/grayscale) <-> CAD files input-output conversion

  • Operations with/within mask files (e.g. change layer numbers, make intances, CAD file import, merge shapes, …)

Dependencies

A list of dependencies (with versions) is at https://github.com/INLnano/pyMOE/blob/main/requirements.txt . To use the package straighforwardly please make sure you have these dependencies (and versions) installed.

Modular architecture

pyMOE is based on a modular architecture, where each module provides specific functionalities. The use of each module and its inter-modular connections is exemplified at https://www.sciencedirect.com/science/article/pii/S0010465524002546#fg0060 and practically in the example notebooks (there is one notebook for each module).

Literature

For background, theory, package structure, practical results and discussion of package’s performance, please refer to the publication:

  1. Cunha, J. Queiroz, C. Silva, F. Gentile and D. E. Aguiam, pyMOE: Mask Design and Modelling for Micro Optical Elements and Flat Optics, Computer Physics Communications 109331 (2024). Link: https://doi.org/10.1016/j.cpc.2024.109331

Example Notebooks

Check the notebooks in the sidebar menu.

Full function/class listings

Please check the function/class Indices and Tables in the sidebar menu or use Search functionality.