Holographic optical trapping instrument control
Project description
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
- Extensible display filter pipeline (blur, edge detection, RGB selection, sample-hold)
- Configuration save/restore via TOML
- Full unit-test suite (~700+ 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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file qhot-1.4.2.tar.gz.
File metadata
- Download URL: qhot-1.4.2.tar.gz
- Upload date:
- Size: 110.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
45e35ba446dacc0e8da9ca1df297b4f3cce35e073bc4080517e05bb2e3427967
|
|
| MD5 |
3128867512d4c6a5155b1e1419c4014a
|
|
| BLAKE2b-256 |
988448f8fa85e75e8d4227d7c0fadbae1314ad454f470f491ac8f350987f0c41
|
Provenance
The following attestation bundles were made for qhot-1.4.2.tar.gz:
Publisher:
publish.yml on davidgrier/QHOT
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
qhot-1.4.2.tar.gz -
Subject digest:
45e35ba446dacc0e8da9ca1df297b4f3cce35e073bc4080517e05bb2e3427967 - Sigstore transparency entry: 1306702156
- Sigstore integration time:
-
Permalink:
davidgrier/QHOT@ff8e0a3b69d23118074d41b597ef6da2f017a8cf -
Branch / Tag:
refs/tags/v1.4.2 - Owner: https://github.com/davidgrier
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ff8e0a3b69d23118074d41b597ef6da2f017a8cf -
Trigger Event:
push
-
Statement type:
File details
Details for the file qhot-1.4.2-py3-none-any.whl.
File metadata
- Download URL: qhot-1.4.2-py3-none-any.whl
- Upload date:
- Size: 43.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b3a0cc43d87f8922c5f9de5874a0b3f4356a1473f40e36ffe7b6b8c793e8c846
|
|
| MD5 |
36efe5ec69124089e24b2fb7133456d0
|
|
| BLAKE2b-256 |
1f4de7f3e1a28b5254270aa1e0aa46e3bb78208e8ab0e3d499eff17bc504187d
|
Provenance
The following attestation bundles were made for qhot-1.4.2-py3-none-any.whl:
Publisher:
publish.yml on davidgrier/QHOT
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
qhot-1.4.2-py3-none-any.whl -
Subject digest:
b3a0cc43d87f8922c5f9de5874a0b3f4356a1473f40e36ffe7b6b8c793e8c846 - Sigstore transparency entry: 1306702209
- Sigstore integration time:
-
Permalink:
davidgrier/QHOT@ff8e0a3b69d23118074d41b597ef6da2f017a8cf -
Branch / Tag:
refs/tags/v1.4.2 - Owner: https://github.com/davidgrier
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@ff8e0a3b69d23118074d41b597ef6da2f017a8cf -
Trigger Event:
push
-
Statement type: