QHOT
QHOT is a Python framework for holographic optical trapping — controlling spatial light modulators (SLMs) to create, move, and reconfigure optical traps in real time using a live camera feed.
Features
- Real-time hologram computation (CGH) with GPU-optional acceleration
- Interactive trap manipulation via camera overlay
- Modular trap types: single tweezers, vortex beams, ring traps, arrays, and dot-matrix text patterns
- Interactive display filter pipeline (smoothing, edge detection, RGB selection, sample-hold)
- Configuration save/restore via TOML
- Full unit-test suite (1400+ tests)
Requirements
- Python 3.10+
- PyQt5 ≥ 5.15
- pyqtgraph ≥ 0.13
- numpy ≥ 1.24
- scipy ≥ 1.10
- tomlkit ≥ 0.11
- QVideo ≥ 3.2.3
Installation
pip install QHOT
Or for development:
git clone https://github.com/davidgrier/QHOT.git
cd QHOT
pip install -e .
Usage
qhot
Or from Python:
from QHOT.qhot import main
main()
Trap types
| Class | Description |
|---|---|
QTweezer |
Single Gaussian tweezer |
QVortex |
Laguerre-Gaussian vortex beam |
QRingTrap |
Ring-shaped optical trap |
QTrapArray |
Rectangular grid of tweezers with optional mask and position jitter |
QLetterArray |
Single dot-matrix character (A-Z, a-z, 0-9) rendered as tweezers |
QTextArray |
String of QLetterArray characters |
Project structure
QHOT/
├── qhot.py — Main application window
├── QHOT.ui — Qt Designer UI layout
├── lib/ — Core library (SLM, CGH, trap infrastructure)
│ ├── QSLM.py
│ ├── QHOTScreen.py
│ ├── QSaveFile.py
│ ├── holograms/ — Hologram computation
│ └── traps/ — Trap base classes and overlay
├── traps/ — Concrete trap implementations
└── tests/ — Unit tests
References
- E. R. Dufresne and D. G. Grier, "Optical tweezer arrays and optical substrates created with diffractive optics," Rev. Sci. Instrum. 69, 1974 (1998). https://doi.org/10.1063/1.1148883
- J. E. Curtis, B. A. Koss, and D. G. Grier, "Dynamic holographic optical tweezers," Opt. Commun. 207, 169 (2002). https://doi.org/10.1016/S0030-4018(02)01524-9
- D. G. Grier, "A revolution in optical manipulation," Nature 424, 810 (2003). https://doi.org/10.1038/nature01935
Acknowledgments
This project is maintained with support from the National Science Foundation of the United States under Award Number DMR-2428983.
License
See LICENSE.
Metadata
Release files for QHOT 1.4.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| qhot-1.4.4.tar.gz | 110.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| qhot-1.4.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 154.4 kB
Release files / qhot-1.4.4.tar.gz
| Download URL | qhot-1.4.4.tar.gz |
|---|---|
| Size | 110.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ff279b013fb8c313f6b8cb695d395695c7e0df55f05f5c5788550b2fab5a91ea
|
|
BLAKE2b-256 checksum How to use checksums |
cdc5f2141b5abeeca5e5fc833e3144596bc19c4aebca2459f67b9f824b1a1d14
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 1, 2026.
Transparency logRelease files / qhot-1.4.4-py3-none-any.whl
| Download URL | qhot-1.4.4-py3-none-any.whl |
|---|---|
| Size | 43.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
67a595d6403522af46c073d7b7a006479fb65f4027f7f0133253c5c05cce30e0
|
|
BLAKE2b-256 checksum How to use checksums |
ae2c8cda410c6cb78a8e2dc1365b469413f10aa882999129e105d07f96e1998d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 1, 2026.
Transparency log