Optiland
Comprehensive optical design, optimization, and analysis in Python, including GPU-accelerated and differentiable ray tracing via PyTorch.
Install / Use
/learn @optiland/OptilandREADME
Contents
- Introduction
- Documentation
- Installation
- Core capabilities
- Learning Guide
- Roadmap
- Get Involved
- Contributing
- License
- Contact and Support
Introduction
Optiland is an open-source optical design platform built in Python, tailored for both classical lens systems and modern computational optics. It provides a robust and extensible interface for constructing, optimizing and analyzing optical systems, from standard refractive or reflective layouts to advanced freeform assemblies.
Built for professional engineering workflows, Optiland includes full support for tolerancing, high-performance optimization routines, and intelligent material selection through its integrated GlassExpert module. Also, traditional ray-based analysis are complemented by differentiable modeling support through PyTorch.
Whether you're developing prototypes in research or refining production systems, Optiland delivers the flexibility and precision needed to model, simulate, and optimize real-world optical instruments:
- ⚙️ Build refractive and reflective systems using a clean, object-oriented API
- 🔍 Trace rays through multi-surface optical assemblies, including aspherics and freeforms
- 📊 Analyze paraxial properties, wavefront errors, PSFs/MTFs, and scatter behavior
- 🧠 Optimize via traditional merit functions or autograd-enabled differentiable backends
- 🎨 Visualize interactively in 2D (Matplotlib) and 3D (VTK).
Under the hood, Optiland uses NumPy for fast CPU calculations and PyTorch for GPU acceleration and automatic differentiation. Switch between engines depending on your use case with the same interface.
Quickstart
- Quickstart Tutorial – build your first lens in 5 minutes
- Full Learning Guide – in-depth guide to mastering Optiland
- Example Gallery – visual showcase of designs and core features
- Cheat Sheet - an up-to-date cheat sheet to get you started ASAP with your first optical system
Documentation
Optiland's full documentation is available on Read the Docs.
Installation
-
Core only
pip install optiland -
Core + GUI
pip install optiland[gui] -
With CPU‑only PyTorch
pip install optiland[torch] -
GPU‑enabled PyTorch
After installing Optiland, install a CUDA build of PyTorch manually:
pip install optiland pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
⚠️ Important Notes on GPU Installation
- This command installs PyTorch with CUDA 11.8. Ensure that your NVIDIA drivers and toolkit are compatible.
- You can find the correct PyTorch + CUDA combo for your system using the official PyTorch installation selector.
- If you're using a non-NVIDIA GPU or running on Apple Silicon, use the CPU-only installation instead.
For more details, see the installation guide in the docs.
Core Capabilities
| Feature | Capabilities | |------------------------|--------------| | 🛠️ Design & Modeling | Configure fields, wavelengths, apertures. Build systems using spherical, aspheric, conic, and freeform surfaces. | | 🧮 Differentiable Core | Switch between NumPy (CPU) and PyTorch (GPU/autograd) seamlessly for hybrid physics-ML workflows. | | 🔬 Ray Tracing | Trace paraxial and real rays through sequential systems with support for polarization, birefringence, and coatings. | | 📊 Optical Analysis | Generate spot diagrams, wavefront error maps, ray fans, PSF/MTF plots, Zernike decompositions, distortion plots, etc. | | 🧠 Optimization | Local & global optimizers, autograd support, operand-based merit functions, and GlassExpert for categorical variable search. | | 📈 Tolerancing | Monte Carlo and parametric sensitivity analysis to evaluate robustness and manufacturability. | | 📚 Material Library | Integrated access to refractiveindex.info. Support for custom dispersion models and material creation. | | 🖼️ Visualization | 2D plots via matplotlib, 3D interactive scenes with VTK, and debugging tools to inspect ray behavior. | | 🧩 Interoperability | Import Zemax files, save/load systems in JSON, use full Python API for scripting and automation. | | 🚀 Performance | GPU-accelerated ray tracing (150M+ ray-surfaces/s), Numba-optimized NumPy backend, JIT-compiled computations. | | 🤖 ML Integration | Compatible with PyTorch pipelines for deep learning, differentiable modeling, and end-to-end training. |
For a full breakdown of Optiland’s functionalities, see the complete feature list.
[!NOTE] The code itself is in constant flux and new functionalities are always being added.
🗺️ Roadmap
Optiland is continually evolving to provide new functionalities for optical design and analysis. Below are some of the planned features and enhancements we aim to implement in future versions. We welcome contributions in any of these areas:
Physics & Core Engine
- [ ] Non-sequential Ray Tracing (Ghost analysis, stray light, etc.)
- [ ] Physical Optics Propagation (Diffraction, beam clipping, Gaussian beam evolution)
- [ ] Multi-Path Sequential Ray Tracing
- [ ] Thin Film Design (Coatings, polarization effects)
- [ ] Additional Freeforms (Superconic, etc.)
Optimization & Algorithms
- [ ] Global Optimization Routines (Genetic Algorithms, Particle Swarm, etc.)
- [ ] AI-Assisted Starting Points (Database lookup or ML-based design initialization)
Engineering & Interoperability
- [ ] ISO 10110 Drawing Generator (Automated fabrication prints)
- [ ] CAD Export (STEP/IGES solid body generation)
- [ ] Interferogram Analysis (Experimental data import and phase unwrapping)
- [ ] Cost Estimator (Glass density & volume pricing heuristics)
💡 The "Wildcard"
- [ ] Your Idea Here: Have an idea for a new feature, tool, or analysis? Open an issue and let's discuss it!
🚧 Get Involved
Optiland is built by the community, for the community. We are actively looking for contributors, whether you are an optical engineer, a Python developer, or a student looking to learn.
Where to start? We curate issues specifically for new contributors. Click the badges below to find a task:
Perfect for your first PR. These are self-contained and well-defined.
Slightly larger tasks where we need your expertise.
Have a feature idea? Want to show off a design? Talk to us here.
Contributing
We welcome contributions of all kinds - features, bugfixes, docs, and discussions! 🎉
To get started, please check out the contributing guide for best practices and coordination tips.
License
Distributed under the MIT License. See LICENSE for more information.
Contact and Support
If you found a bug, have a feature request, or need to report a documentation issue, please open an issue.
If you have a question or would like to start a broader discussion, please use the GitHub Discussions section.
This keeps all project-re
Related Skills
claude-opus-4-5-migration
111.1kMigrate prompts and code from Claude Sonnet 4.0, Sonnet 4.5, or Opus 4.1 to Opus 4.5
model-usage
352.2kUse CodexBar CLI local cost usage to summarize per-model usage for Codex or Claude, including the current (most recent) model or a full model breakdown. Trigger when asked for model-level usage/cost data from codexbar, or when you need a scriptable per-model summary from codexbar cost JSON.
TrendRadar
51.2k⭐AI-driven public opinion & trend monitor with multi-platform aggregation, RSS, and smart alerts.🎯 告别信息过载,你的 AI 舆情监控助手与热点筛选工具!聚合多平台热点 + RSS 订阅,支持关键词精准筛选。AI 智能筛选新闻 + AI 翻译 + AI 分析简报直推手机,也支持接入 MCP 架构,赋能 AI 自然语言对话分析、情感洞察与趋势预测等。支持 Docker ,数据本地/云端自持。集成微信/飞书/钉钉/Telegram/邮件/ntfy/bark/slack 等渠道智能推送。
mcp-for-beginners
15.8kThis open-source curriculum introduces the fundamentals of Model Context Protocol (MCP) through real-world, cross-language examples in .NET, Java, TypeScript, JavaScript, Rust and Python. Designed for developers, it focuses on practical techniques for building modular, scalable, and secure AI workflows from session setup to service orchestration.
