Skip to content

Latest commit

 

History

37 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PyPhotonicReagents

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.

Overview

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.

Supported Equipment

  • 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

Repository Structure

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 Descriptions

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.

Installation

git clone https://github.com/dibondar/PyPhotonicReagents.git
cd PyPhotonicReagents
pip install -r requirements.txt

Peripheral Interaction Architecture

PyPhotonicReagents implements peripheral communication through a modular wrapper-based architecture. This design pattern enables:

Communication Layer Design

  1. Vendor SDK Wrappers

    • Each hardware device communicates through manufacturer-provided SDKs (DLLs, shared libraries, or serial protocols)
    • Python wrappers encapsulate low-level calls using ctypes or vendor-specific Python bindings
    • This abstraction isolates device-specific quirks from experimental logic
  2. 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
  3. 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

Synchronization and Triggering

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

Related Research

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

Author

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.

About

A stand alone Pythonic suit for advanced laser experiments involving a broad class of equipments, such as laser pulse shaper, spectrometers, cameras, moving stages, etc.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages