/metabox

A multi-scale differential optimization framework for diffractive optical systems.

Primary LanguagePythonMIT LicenseMIT

metabox logo
Built Status ReadTheDocs https://coveralls.io/repos/github/Luochenghuang/metabox/badge.svg?branch=main

metabox: A High-Level Python API for Diffractive Optical System Design

metabox is a Python package built on TensorFlow, enabling the design, evaluation and optimization of complex diffractive optical systems with ease, flexibility, and high performance.

metabox is a high-level Python package specifically designed for the creation, evaluation, and inverse optimization of diffractive optical systems. Leaning on the robust capabilities of TensorFlow, metabox offers a comprehensive and user-friendly API for optical system design.

The package is built with flexibility at its core, making it easy to add new components, define custom merit functions, and employ various optimization algorithms. It's designed to be highly performant and scalable, capable of managing systems with millions of degrees of freedom. With its intuitive structure, metabox facilitates the design of intricate diffractive optical systems with minimal lines of code.

Key features of metabox include:

  • A rcwa solver, derived from rcwa_tf, for direct computation of meta-atoms' diffraction efficiency.
  • A built-in raster module for parameterizing meta-atoms' features.
  • An easy-to-use sampling system for features, which can train a metamodel to replace the rcwa solver, thus significantly speeding up simulations and optimization processes.
  • A module for sequential optics to model light propagation through the optical system.
  • An assembly module offering a suite of tools for building the optical system from meta-atoms, apertures, and other optical components.
  • A merit module for evaluating and inverse-designing the performance of the optical system.
  • An rcwa.Material class for accessing pre-defined materials and their optical properties.
  • An export module that allows for the export of the diffractive optical design to a .gds file for fabrication.

Overall, metabox is a powerful tool for both beginners and experienced users in the field of optical system design. By simplifying and accelerating the design process, it paves the way for innovative developments in the optical industry.

Citing metabox

If you find this tool helpful, please cite our paper:

@article{huang2024broadband,
  title={Broadband thermal imaging using meta-optics},
  author={Huang, Luocheng and Han, Zheyi and Wirth-Singh, Anna and Saragadam, Vishwanath and Mukherjee, Saswata and Fr{\"o}ch, Johannes E and Tanguy, Quentin AA and Rollag, Joshua and Gibson, Ricky and Hendrickson, Joshua R and others},
  journal={Nature Communications},
  volume={15},
  number={1},
  pages={1662},
  year={2024},
  publisher={Nature Publishing Group UK London}
}

Install

Prerequisites: python==3.8

Install metabox via pip:

pip install metabox

Getting Started

Try out metabox for free on Google Colab. Here are some tutorials on Colab. You can find the local versions here.

Tutorial 1: Metamodeling

Tutorial 2: Lens Optimization and Exporting

Tutorial 3: Optimization Serialization

Tutorial 4: Zemax Binary2 Import

Tutorial 5: Refractive Surfaces Simulation

Tutorial 6: Refractive Surfaces Optimization

Tutorial 7: Hologram Optimization

Documentation

Module Reference

Home Page

Contributors

Making Changes & Contributing

This project uses pre-commit, please make sure to install it before making any changes:

pip install pre-commit
cd metabox
pre-commit install

It is a good idea to update the hooks to the latest version:

pre-commit autoupdate

To make an editable installation, run the following commands:

git clone https://github.com/Luochenghuang/metabox.git
cd metabox
pip install -e .