Welcome to Janssen’s documentation!¶
Janssen: Optical Microscopy with JAX¶
Janssen is a JAX-based library for optical microscopy simulations and ptychographic reconstructions. It provides differentiable implementations of optical propagation, lens simulations, and phase retrieval algorithms, all optimized for GPU acceleration through JAX.
Architecture¶
Janssen follows a layered architecture built on JAX’s functional paradigm:
Foundation Layer: Core data structures (
types) as JAX PyTrees for automatic differentiation, plus math utilities (utils) including Bessel functions and Wirtinger gradientsPhysics Core: Optical propagation (
prop), lens models (lenses), beam profiles (models), and wavefront manipulation (optics)Coherence Layer: Partial coherence simulation (
cohere) with spatial/temporal modes and source modelsApplication Layer: Forward microscope models (
scopes), phase retrieval algorithms (invert), and visualization (plots)
Every optical element is a pure function Wavefront → Wavefront, enabling JAX to trace computation graphs and compute gradients automatically for inverse problems like ptychography.
Contents:
- Package Organization
- Janssen Design Principles
- Janssen Theory and Architecture Guides
- API Reference
- Tutorials
- Partial Coherence in Wave Optics
- Part I: Spatial Coherence
- Part II: Temporal Coherence
- Part III: Coherent Mode Decomposition
- Part IV: Differentiable Partial Coherence
- Publication Figure
- Publication Figures
- Create a diffractogram
- Polarization in Wave Optics
- Part I: Jones Calculus
- Part II: Mueller-Stokes Calculus
- Part III: Differentiable Polarization Optics
- Publication Figure
- Wavefronts Tutorial
- Zernike Polynomials Tutorial
- Simulated Microscopes