PhoQuPy

Open-source instrument automation · LOQM, IIT Bombay

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.

In active use at LOQM MIT licensed pip install phoqupy arXiv:2602.04505
Translational output

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 experiment pipelines, one framework Open source · MIT Installable & citable Deployed on live hardware
What it automates

Six measurement pipelines, driven from Python.

PL

Confocal PL mapping

Raster-scan quantum emitters and build PL maps in real time, with double-acquisition cosmic-ray suppression baked in.

HBT

g²(τ) & lifetime

HBT + PicoQuant TCSPC via snAPI: antibunching correlations and bi-exponential lifetime fits to confirm single-photon emission.

CRYO

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

Fiber alignment

Automated Y–Z piezo raster that maps coupling efficiency and locks onto the Gaussian peak for maximum throughput.

STITCH

Stitched imaging

Joystick coarse navigation on a Zaber stage, then MIST tile stitching into seamless composites over cm²-scale areas.

HYPER

Hyperspectral imaging

Nireos common-path interferometry with a per-pixel DFT to reconstruct full wavelength-resolved spectral cubes of a sample.

The core idea

Stop turning knobs. Write the experiment.

Align, move, measure, save, repeat — by hand, all day.
Copy-pasted scripts and timing that drifts between runs.
One readable script that any labmate can run again.
Synchronised multi-device control with logged metadata.
confocal_scan.py
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)
Interactive

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:

Best full screen on mobile — open in a new tab ↗

Speaks to your instruments

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

Get started

Clone the framework, read the science.

$ pip install phoqupy

Cite: S. Murali & A. Kumar, PhoQuPy: A Python Framework for Automating Quantum Optics Experiments, arXiv:2602.04505 (2026).

Built by Srivatsa Murali & Anshuman Kumar · Laboratory of Optics of Quantum Materials, IIT Bombay · MIT License
Supported by the National Quantum Mission, Department of Science and Technology, Government of India.