A standalone Pythonic suite (written in Python 2)for advanced laser experiments involving a broad class of equipment, such as laser pulse shapers, spectrometers, cameras, and moving stages.
PyPhotonicReagents provides a unified Python interface for controlling laboratory instruments commonly used in ultrafast laser experiments and photonics research. Developed by Prof. Denys Bondar at Tulane University, this library supports experimental work in quantum control and ultrafast nonlinear optics.
- Laser Pulse Shapers - Spatial Light Modulator (SLM) based devices for phase and amplitude modulation of ultrafast pulses
- Spectrometers - Optical spectrum analyzers for spectral characterization
- Cameras - Scientific imaging devices for beam profiling and data acquisition
- Moving Stages - Motorized translation/rotation stages for optical alignment and scanning
PyPhotonicReagents/
├── __init__.py # Package initialization and exports
├── pulse_shaper.py # SLM-based pulse shaper control module
├── spectrometer.py # Spectrometer interface and data acquisition
├── camera.py # Scientific camera control and image capture
├── stage.py # Motorized stage positioning control
├── utils.py # Common utilities, data processing, calibration
├── config.py # Hardware configuration and device parameters
├── experiments/ # Example experiment scripts
│ ├── miips_compression.py # MIIPS pulse compression implementation
│ ├── spectral_scan.py # Automated spectral scanning routines
│ └── delay_scan.py # Time-delay scanning experiments
├── calibration/ # Calibration routines and data
│ ├── slm_calibration.py # SLM phase-to-voltage calibration
│ └── spectrometer_cal.py # Wavelength calibration routines
├── tests/ # Unit tests for hardware interfaces
└── docs/ # Additional documentation
| File | Description |
|---|---|
pulse_shaper.py |
Controls SLM-based pulse shapers for femtosecond pulse compression and shaping. Handles phase mask generation, display rendering, and dispersion compensation. |
spectrometer.py |
Interface for optical spectrometers. Manages spectrum acquisition, wavelength calibration, integration time control, and spectral data processing. |
camera.py |
Scientific camera control for beam profiling and imaging. Supports exposure control, ROI selection, and frame acquisition. |
stage.py |
Motorized translation/rotation stage control. Provides absolute/relative positioning, velocity control, and limit handling. |
utils.py |
Shared utilities including FFT operations, polynomial fitting, data I/O, and signal processing functions. |
config.py |
Hardware configuration management. Stores device addresses, COM ports, calibration parameters, and default settings. |
git clone https://github.com/dibondar/PyPhotonicReagents.git
cd PyPhotonicReagents
pip install -r requirements.txtPyPhotonicReagents implements peripheral communication through a modular wrapper-based architecture. This design pattern enables:
-
Vendor SDK Wrappers
- Each hardware device communicates through manufacturer-provided SDKs (DLLs, shared libraries, or serial protocols)
- Python wrappers encapsulate low-level calls using
ctypesor vendor-specific Python bindings - This abstraction isolates device-specific quirks from experimental logic
-
Hardware Abstraction Layer
- Uniform API across different device types (e.g., all spectrometers share common
acquire(),get_spectrum()methods) - Device configuration handled through standardized parameter dictionaries
- Enables swapping equipment without modifying experiment scripts
- Uniform API across different device types (e.g., all spectrometers share common
-
Connection Protocols
- USB/Serial: For spectrometers and stage controllers via PySerial or direct USB
- HDMI/DVI Display: Pulse shapers using SLMs typically appear as secondary monitors; phase masks are rendered as images
- Ethernet/TCP-IP: Network-connected devices for remote control
- Camera Interfaces: Vendor SDKs (e.g., DCAM, uEye) or standards like GenICam
Laboratory experiments often require precise timing between components:
- Software Triggering: Python controls acquisition sequences directly
- Hardware Triggering: TTL signals coordinate laser shots with data acquisition
- Event-Driven Callbacks: Some SDKs support asynchronous notification of acquisition completion
This library supports research in:
- Coherent quantum control of chemical reactions
- MIIPS (Multiphoton Intrapulse Interference Phase Scan) pulse compression
- Optimal Dynamic Discrimination (ODD) for fluorescent protein characterization
- Ultrafast spectroscopy and pulse characterization
Denys I. Bondar, Ph.D.
Note: This README was generated based on the repository description and author's research context. For implementation details, refer to the source code in the repository.