A Python package to perform Monte Carlo simulations for quantum stroboscopy, i.e. position measurements on multiple copies of the system at different times. It supports both ideal (projective) and non-instantaneous (POVM) setups. The latter is implemented through a sequence of Gaussian functions, each one representing a different time bin of the stroboscopic measurement. The simulation combines rejection sampling with inverse transform sampling: it first draw the ideal measurement results and pass them through the positive operator-valued measure (POVM).
Contributors: Simone Roncallo @simoneroncallo
Reference: Seth Lloyd, Lorenzo Maccone, Lionel Martellini, Simone Roncallo “Quantum stroboscopy for time measurements” arXiv:2507.17740
The package can be downloaded and set up in a conda environment with
conda create --name arrival-env
conda activate quantum-stroboscopy
conda install --file requirements.txtor containerized in Docker with
sudo docker build -t jupyter-qtime .
./runDocker.shConsider a Gaussian wave packet with initial data
from strobo import get_gaussian
x0 = -4 # Position (t=0)
p = 3 # Momentum
std = 1 # Standard deviation (t=0)
mass = 1 # Mass
wave_packet = get_gaussian(x0, p, std, mass)The stroboscopic measurement can be simulated as
from strobo import Stroboscopy, MonteCarlo
rng = np.random.default_rng(2025)
size = 10000 # Sample size
width = 0.35 # Width of each POVM component
strobo = Stroboscopy(numT, numX, intT[0], intT[1], intX[0], intX[1])
povm = MonteCarlo(idx, wave_packet, strobo, width, rng)
results = povm.get_samples(strobo, size)with numT and numX the number of bins of the time and position intervals intT and intX, respectively. Here, idx labels the detector bin.
This repository has the following structure
strobo/
├── simulation.py # Monte Carlo simulation
├── stroboscopy.py # Stroboscopic setup
└── visualize.py
example.ipynb # Example notebook
requirements.txt # Dependencies
runDocker.sh # Container