mrmustard.lab

The lab module is all you need to construct and simulate photonic circuits. It contains the items you’d find in a lab:

  • states (Vacuum, Coherent, SqueezedVacuum, Thermal, etc.)

  • transformations (Sgate, BSgate, LossChannel, etc.)

  • detectors (PNRDetector, Homodyne, etc.)

  • the Circuit class

Classes

AdditiveNoise([noise, noise_trainable, ...])

The additive noise channel.

Amplifier([gain, nbar, gain_trainable, ...])

The noisy amplifier channel.

Attenuator([transmissivity, nbar, ...])

The noisy attenuator channel.

BSgate([theta, phi, theta_trainable, ...])

Beam splitter gate.

CXgate([s, s_trainable, s_bounds, modes])

Controlled X gate.

CZgate([s, s_trainable, s_bounds, modes])

Controlled Z gate.

Circuit([ops])

Represents a quantum circuit: a set of operations to be applied on quantum states.

Coherent([x, y, x_trainable, y_trainable, ...])

The N-mode coherent state.

Dgate([x, y, x_trainable, y_trainable, ...])

Displacement gate.

DisplacedSqueezed([r, phi, x, y, ...])

The N-mode displaced squeezed state.

Fock(n[, modes, cutoffs, normalize])

The N-mode Fock state.

Gaussian(num_modes[, symplectic, ...])

The N-mode Gaussian state parametrized by a symplectic matrix and N symplectic eigenvalues.

Generaldyne(state[, outcome, modes])

Generaldyne measurement on given modes.

Ggate(num_modes[, symplectic, ...])

A generic N-mode Gaussian unitary transformation with zero displacement.

Heterodyne([x, y, modes])

Heterodyne measurement on given modes.

Homodyne(quadrature_angle[, result, modes, r])

Homodyne measurement on given modes.

Interferometer(num_modes[, unitary, ...])

N-mode interferometer.

MZgate([phi_a, phi_b, phi_a_trainable, ...])

Mach-Zehnder gate.

PNRDetector([efficiency, dark_counts, ...])

Photon Number Resolving detector.

Pgate([shearing, shearing_trainable, ...])

Quadratic phase gate.

PhaseNoise([phase_stdev, ...])

The phase noise channel.

RealInterferometer(num_modes[, orthogonal, ...])

N-mode interferometer parametrized by an NxN orthogonal matrix (or 2N x 2N block-diagonal orthogonal matrix).

Rgate([angle, angle_trainable, ...])

Rotation gate.

S2gate([r, phi, r_trainable, phi_trainable, ...])

Two-mode squeezing gate.

Sgate([r, phi, r_trainable, phi_trainable, ...])

Squeezing gate.

SqueezedVacuum([r, phi, r_trainable, ...])

The N-mode squeezed vacuum state.

State([cov, means, eigenvalues, symplectic, ...])

Base class for quantum states.

TMSV([r, phi, r_trainable, phi_trainable, ...])

The 2-mode squeezed vacuum state.

Thermal([nbar, nbar_trainable, nbar_bounds, ...])

The N-mode thermal state.

ThresholdDetector([efficiency, ...])

Threshold detector: any Fock component other than vacuum counts toward a click in the detector.

Vacuum(num_modes)

The N-mode vacuum state.

Class Inheritance Diagram

digraph inheritance28d4107254 { bgcolor=transparent; rankdir=LR; size="8.0, 12.0"; "ABC" [color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,tooltip="Helper class that provides a standard way to create an ABC using"]; "AdditiveNoise" [URL="api/mrmustard.lab.AdditiveNoise.html#mrmustard.lab.AdditiveNoise",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="The additive noise channel."]; "Channel" -> "AdditiveNoise" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Amplifier" [URL="api/mrmustard.lab.Amplifier.html#mrmustard.lab.Amplifier",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="The noisy amplifier channel."]; "Channel" -> "Amplifier" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Attenuator" [URL="api/mrmustard.lab.Attenuator.html#mrmustard.lab.Attenuator",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="The noisy attenuator channel."]; "Channel" -> "Attenuator" [arrowsize=0.5,style="setlinewidth(0.5)"]; "BSgate" [URL="api/mrmustard.lab.BSgate.html#mrmustard.lab.BSgate",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Beam splitter gate."]; "Unitary" -> "BSgate" [arrowsize=0.5,style="setlinewidth(0.5)"]; "CXgate" [URL="api/mrmustard.lab.CXgate.html#mrmustard.lab.CXgate",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Controlled X gate."]; "Unitary" -> "CXgate" [arrowsize=0.5,style="setlinewidth(0.5)"]; "CZgate" [URL="api/mrmustard.lab.CZgate.html#mrmustard.lab.CZgate",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Controlled Z gate."]; "Unitary" -> "CZgate" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Channel" [URL="api/mrmustard.lab.abstract.Channel.html#mrmustard.lab.abstract.Channel",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="A quantum channel."]; "Transformation" -> "Channel" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Circuit" [URL="api/mrmustard.lab.Circuit.html#mrmustard.lab.Circuit",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Represents a quantum circuit: a set of operations to be applied on quantum states."]; "Transformation" -> "Circuit" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Coherent" [URL="api/mrmustard.lab.Coherent.html#mrmustard.lab.Coherent",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="The N-mode coherent state."]; "State" -> "Coherent" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Dgate" [URL="api/mrmustard.lab.Dgate.html#mrmustard.lab.Dgate",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Displacement gate."]; "Unitary" -> "Dgate" [arrowsize=0.5,style="setlinewidth(0.5)"]; "DisplacedSqueezed" [URL="api/mrmustard.lab.DisplacedSqueezed.html#mrmustard.lab.DisplacedSqueezed",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="The N-mode displaced squeezed state."]; "State" -> "DisplacedSqueezed" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Fock" [URL="api/mrmustard.lab.Fock.html#mrmustard.lab.Fock",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="The N-mode Fock state."]; "State" -> "Fock" [arrowsize=0.5,style="setlinewidth(0.5)"]; "FockMeasurement" [URL="api/mrmustard.lab.abstract.FockMeasurement.html#mrmustard.lab.abstract.FockMeasurement",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="A Fock measurement projecting onto a Fock measurement pattern."]; "Measurement" -> "FockMeasurement" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Gaussian" [URL="api/mrmustard.lab.Gaussian.html#mrmustard.lab.Gaussian",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="The N-mode Gaussian state parametrized by a symplectic matrix and N symplectic eigenvalues."]; "State" -> "Gaussian" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Generaldyne" [URL="api/mrmustard.lab.Generaldyne.html#mrmustard.lab.Generaldyne",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Generaldyne measurement on given modes."]; "Measurement" -> "Generaldyne" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Ggate" [URL="api/mrmustard.lab.Ggate.html#mrmustard.lab.Ggate",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="A generic N-mode Gaussian unitary transformation with zero displacement."]; "Unitary" -> "Ggate" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Heterodyne" [URL="api/mrmustard.lab.Heterodyne.html#mrmustard.lab.Heterodyne",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Heterodyne measurement on given modes."]; "Generaldyne" -> "Heterodyne" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Homodyne" [URL="api/mrmustard.lab.Homodyne.html#mrmustard.lab.Homodyne",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Homodyne measurement on given modes. If ``result`` is not provided then the value"]; "Generaldyne" -> "Homodyne" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Interferometer" [URL="api/mrmustard.lab.Interferometer.html#mrmustard.lab.Interferometer",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="N-mode interferometer."]; "Unitary" -> "Interferometer" [arrowsize=0.5,style="setlinewidth(0.5)"]; "MZgate" [URL="api/mrmustard.lab.MZgate.html#mrmustard.lab.MZgate",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Mach-Zehnder gate."]; "Unitary" -> "MZgate" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Measurement" [URL="api/mrmustard.lab.abstract.Measurement.html#mrmustard.lab.abstract.Measurement",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="this is an abstract class holding the common methods and properties that any measurement should"]; "ABC" -> "Measurement" [arrowsize=0.5,style="setlinewidth(0.5)"]; "PNRDetector" [URL="api/mrmustard.lab.PNRDetector.html#mrmustard.lab.PNRDetector",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Photon Number Resolving detector."]; "FockMeasurement" -> "PNRDetector" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Pgate" [URL="api/mrmustard.lab.Pgate.html#mrmustard.lab.Pgate",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Quadratic phase gate."]; "Unitary" -> "Pgate" [arrowsize=0.5,style="setlinewidth(0.5)"]; "PhaseNoise" [URL="api/mrmustard.lab.PhaseNoise.html#mrmustard.lab.PhaseNoise",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="The phase noise channel."]; "Channel" -> "PhaseNoise" [arrowsize=0.5,style="setlinewidth(0.5)"]; "RealInterferometer" [URL="api/mrmustard.lab.RealInterferometer.html#mrmustard.lab.RealInterferometer",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="N-mode interferometer parametrized by an NxN orthogonal matrix (or 2N x 2N block-diagonal orthogonal matrix). This interferometer does not mix q and p."]; "Unitary" -> "RealInterferometer" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Rgate" [URL="api/mrmustard.lab.Rgate.html#mrmustard.lab.Rgate",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Rotation gate."]; "Unitary" -> "Rgate" [arrowsize=0.5,style="setlinewidth(0.5)"]; "S2gate" [URL="api/mrmustard.lab.S2gate.html#mrmustard.lab.S2gate",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Two-mode squeezing gate."]; "Unitary" -> "S2gate" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Sgate" [URL="api/mrmustard.lab.Sgate.html#mrmustard.lab.Sgate",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Squeezing gate."]; "Unitary" -> "Sgate" [arrowsize=0.5,style="setlinewidth(0.5)"]; "SqueezedVacuum" [URL="api/mrmustard.lab.SqueezedVacuum.html#mrmustard.lab.SqueezedVacuum",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="The N-mode squeezed vacuum state."]; "State" -> "SqueezedVacuum" [arrowsize=0.5,style="setlinewidth(0.5)"]; "State" [URL="api/mrmustard.lab.abstract.State.html#mrmustard.lab.abstract.State",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Base class for quantum states."]; "TMSV" [URL="api/mrmustard.lab.TMSV.html#mrmustard.lab.TMSV",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="The 2-mode squeezed vacuum state."]; "State" -> "TMSV" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Tensor" [color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,tooltip="An abstract class representing a tensor in a tensor network."]; "ABC" -> "Tensor" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Thermal" [URL="api/mrmustard.lab.Thermal.html#mrmustard.lab.Thermal",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="The N-mode thermal state."]; "State" -> "Thermal" [arrowsize=0.5,style="setlinewidth(0.5)"]; "ThresholdDetector" [URL="api/mrmustard.lab.ThresholdDetector.html#mrmustard.lab.ThresholdDetector",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Threshold detector: any Fock component other than vacuum counts toward a click in the detector."]; "FockMeasurement" -> "ThresholdDetector" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Transformation" [URL="api/mrmustard.lab.abstract.Transformation.html#mrmustard.lab.abstract.Transformation",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="Base class for all Transformations."]; "Tensor" -> "Transformation" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Unitary" [URL="api/mrmustard.lab.abstract.Unitary.html#mrmustard.lab.abstract.Unitary",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="A unitary transformation."]; "Transformation" -> "Unitary" [arrowsize=0.5,style="setlinewidth(0.5)"]; "Vacuum" [URL="api/mrmustard.lab.Vacuum.html#mrmustard.lab.Vacuum",color=lightskyblue1,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=10,height=0.25,shape=box,style=filled,target="_top",tooltip="The N-mode vacuum state."]; "State" -> "Vacuum" [arrowsize=0.5,style="setlinewidth(0.5)"]; }