Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Gaussian State Evolution Simulator for Quantum Optics

Created by Ryan P. Marchildon, 2018/07

This repository consists of two python files:

  1., a python library for gaussian quantum optics.
  2., a worked example demonstrating the GaussianStateTools library in action.

Gaussian States are a class of states of light (photons) important for continuous-variable and discrete-CV hybrid approaches to photonic quantum computing and quantum information processing.

The motivation behind this project is to create a suite of easy-to-use tools for quick simulation of Gaussian State evolution in Quantum Optics. While the formalism for evolving Gaussian states has existed for nearly two decades (e.g. based on symplectic transformations), this code aims to provide a simple object-oriented pipeline that makes it easier to simulate state evolution through complex sets of transformations, such as quantum circuits.

As a quick example, the code for generating, squeezing, displacing, rotating, and dissipating a single-mode Gaussian State, and then computing its Wigner Function, is merely:

import GaussianStateTools as gs
import numpy as np

psi_1 = gs.GaussianState(n_modes=1)  
psi_1.single_mode_squeeze(mode_id=1, beta_mag=0.7, beta_phase=0)  
psi_1.displace(mode_id=1, alpha_mag=3, alpha_phase=np.pi/4) 
psi_1.rotate(mode_id=1, phase=np.pi/4)  
psi_1.dissipate(mode_id=1, transmission=0.33)

wigner_1 = gs.OneModeGaussianWignerFunction(state=psi_1, range_min=-4, range_max=4, range_num_steps=100)

Documentation of the library's objects, methods, and functions are found within For a more thorough example of how to use the library, see You can also view a demo on my website here.

This code has been written and tested for Gaussian states up to N=3 modes. Some present limitations and room for community contributions:

  • Uhlmann fidelities are available for comparing states with up to N=2 modes. A generalized N-mode Uhlmann fidelity exists within the literature, but has not yet been implemented here.
  • For tracing out (i.e. deleting) modes, I've included a function that works for up to N=3 modes, but this can be futher generalized and extended to N modes.

I hope this code is useful to the quantum optics community. If you'd like to get in touch, visit me at


Gaussian State Evolution Simulator for Quantum Optics







No releases published


No packages published