PhoQuPy photonics · quantum · python
One Python framework that runs the whole quantum-optics experiment — stages, spectrometers, single-photon detectors and interferometers, from a single script.
From bespoke lab rigs to reproducible, shareable measurement infrastructure.
Characterising single-photon emitters usually means one-off scripts wired to one specific optical table — hard to repeat, harder to hand over. PhoQuPy replaces that with a modular, open control layer: the same automated pipelines for PL mapping, g²(τ) and hyperspectral imaging can be read, cited and rebuilt by any quantum-technology group. It is developed and run day-to-day at the Laboratory of Optics of Quantum Materials, IIT Bombay, and released openly so the wider National Quantum Mission ecosystem can build on it rather than reinvent it.
Six measurement pipelines, driven from Python.
Confocal PL mapping
Raster-scan quantum emitters and build PL maps in real time, with double-acquisition cosmic-ray suppression baked in.
g²(τ) & lifetime
HBT + PicoQuant TCSPC via snAPI: antibunching correlations and bi-exponential lifetime fits to confirm single-photon emission.
Cryogenic galvo scanning
Fast, vibration-free beam steering through a 4-f galvo path for confocal mapping inside a cryostat — no moving sample stage.
Fiber alignment
Automated Y–Z piezo raster that maps coupling efficiency and locks onto the Gaussian peak for maximum throughput.
Stitched imaging
Joystick coarse navigation on a Zaber stage, then MIST tile stitching into seamless composites over cm²-scale areas.
Hyperspectral imaging
Nireos common-path interferometry with a per-pixel DFT to reconstruct full wavelength-resolved spectral cubes of a sample.
Stop turning knobs. Write the experiment.
import phoqupy # runs on synthetic data anywhere; add hardware in the lab scan = phoqupy.ConfocalScan(x_range=(0, 50), y_range=(0, 50), step=0.5) pl_map = scan.run() scan.plot_map(pl_map)
Build an experiment, get the code.
Arrange the optical components along the beam path and PhoQuPy writes the matching Python — runnable as-is in simulation, or on the rig. Try it live:
A device-abstraction layer over the real optics-lab stack.
Motion stages
Thorlabs · Newport · Zaber
Detectors
SPADs · APDs
Cameras
EMCCD (Andor) · sCMOS
Spectrometers
Andor Kymera · Princeton
Timing
PicoQuant TCSPC
DAQ
NI-DAQ · galvo drive
Clone the framework, read the science.
Cite: S. Murali & A. Kumar, PhoQuPy: A Python Framework for Automating Quantum Optics Experiments, arXiv:2602.04505 (2026).
