Skip to main content

Holographic optical trapping instrument control

Project description

QHOT

QHOT is a Python application 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

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

qhot-1.0.0.tar.gz (54.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qhot-1.0.0-py3-none-any.whl (27.5 kB view details)

Uploaded Python 3

File details

Details for the file qhot-1.0.0.tar.gz.

File metadata

  • Download URL: qhot-1.0.0.tar.gz
  • Upload date:
  • Size: 54.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qhot-1.0.0.tar.gz
Algorithm Hash digest
SHA256 7198401879d57908782da049dcc095953da7308658ecda22e623426a07f012a9
MD5 4b1b29c3e1b98631eac8bdc013dddbb6
BLAKE2b-256 e629e22bb3b2c8bc6f61d809c8748555078efd6cd2aa46d20dfd767acc8710a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for qhot-1.0.0.tar.gz:

Publisher: publish.yml on davidgrier/QHOT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file qhot-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: qhot-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 27.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for qhot-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ffff2529a3748d4c86f3d75dcbb45680ee79ca3cfc31ac6cc49a44b110001e94
MD5 408793adec7bf001f97c8681f091f9d1
BLAKE2b-256 701d177706b4af3212740d94783d3f720eee6cccc89dd08eb08538c6119d5927

See more details on using hashes here.

Provenance

The following attestation bundles were made for qhot-1.0.0-py3-none-any.whl:

Publisher: publish.yml on davidgrier/QHOT

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page