Getting Started | Installation | Development | Documentation
PtyLab is an inverse modeling toolbox for Conventional (CP) and Fourier (FP) ptychography in a unified framework. For more information please check the paper.
- Classic engines: ePIE, mPIE, mqNewton, qNewton
- Advanced corrections: position correction (pcPIE), defocus correction (zPIE), angle correction (aPIE), orthogonal probe relaxation (OPR)
- Multi-modal: multi-slice, multi-wavelength, mixed-state object and probe
- Multiple propagators: Fraunhofer, Fresnel, Angular Spectrum (ASP), scaled ASP, polychromatic variants
- GPU acceleration: same code runs on CPU and GPU
The reconstructed output is a 6D array of shape (nlambda, nosm, npsm, nslice, No, No):
| Dim | Meaning |
|---|---|
nlambda |
wavelengths |
nosm |
object state mixture |
npsm |
probe state mixture |
nslice |
depth slices |
No |
output frame size |
Try the demo in Google Colab:
For more use cases, start with the tutorials in our documentation, then see the example_scripts directory.
Install from PyPI within your virtual environment:
pip install ptylabFor much faster installs, we recommend uv: uv pip install ptylab
This package uses cupy to utilize GPU for faster reconstruction. To enable GPU support:
pip install "ptylab[gpu]"You can check if GPU is detected with ptylab check gpu.
For the latest unreleased changes on main:
pip install git+https://github.com/PtyLab/PtyLab.py.gitClone the repo and install dev and gpu dependencies with uv:
git clone git@github.com:PtyLab/PtyLab.py.git
cd PtyLab.py
uv sync --extra dev,gpu # remove the GPU flag if you are on CPUThis creates a .venv virtual environment in the project root. Select this environment from your IDE.
Add tests for new implementations and run the suite:
uv run pytest testsIf you use this package, please cite:
@article{Loetgering:23,
author = {Lars Loetgering and Mengqi Du and Dirk Boonzajer Flaes and Tomas Aidukas and Felix Wechsler and Daniel S. Penagos Molina and Max Rose and Antonios Pelekanidis and Wilhelm Eschen and J\"{u}rgen Hess and Thomas Wilhein and Rainer Heintzmann and Jan Rothhardt and Stefan Witte},
journal = {Opt. Express},
number = {9},
pages = {13763--13797},
publisher = {Optica Publishing Group},
title = {PtyLab.m/py/jl: a cross-platform, open-source inverse modeling toolbox for conventional and Fourier ptychography},
volume = {31},
month = {Apr},
year = {2023},
doi = {10.1364/OE.485370},
}