Circuit Plot#

Matplotlib based plotting of quantum circuits.

Todo:

  • Optimize printing of large circuits.

  • Get this to work with single gates.

  • Do a better job checking the form of circuits to make sure it is a Mul of Gates.

  • Get multi-target gates plotting.

  • Get initial and final states to plot.

  • Get measurements to plot. Might need to rethink measurement as a gate issue.

  • Get scale and figsize to be handled in a better way.

  • Write some tests/examples!

class sympy.physics.quantum.circuitplot.CircuitPlot(c, nqubits, **kwargs)[source]#

A class for managing a circuit plot.

control_line(gate_idx, min_wire, max_wire)[source]#

Draw a vertical control line.

control_point(gate_idx, wire_idx)[source]#

Draw a control point.

not_point(gate_idx, wire_idx)[source]#

Draw a NOT gates as the circle with plus in the middle.

one_qubit_box(t, gate_idx, wire_idx)[source]#

Draw a box for a single qubit gate.

swap_point(gate_idx, wire_idx)[source]#

Draw a swap point as a cross.

two_qubit_box(t, gate_idx, wire_idx)[source]#

Draw a box for a two qubit gate. Does not work yet.

update(kwargs)[source]#

Load the kwargs into the instance dict.

sympy.physics.quantum.circuitplot.CreateCGate(name, latexname=None)[source]#

Use a lexical closure to make a controlled gate.

class sympy.physics.quantum.circuitplot.Mx(*args, **kwargs)[source]#

Mock-up of an x measurement gate.

This is in circuitplot rather than gate.py because it’s not a real gate, it just draws one.

class sympy.physics.quantum.circuitplot.Mz(*args, **kwargs)[source]#

Mock-up of a z measurement gate.

This is in circuitplot rather than gate.py because it’s not a real gate, it just draws one.

sympy.physics.quantum.circuitplot.circuit_plot(c, nqubits, **kwargs)[source]#

Draw the circuit diagram for the circuit with nqubits.

Parameters:

c : circuit

The circuit to plot. Should be a product of Gate instances.

nqubits : int

The number of qubits to include in the circuit. Must be at least as big as the largest min_qubits of the gates.

sympy.physics.quantum.circuitplot.labeller(n, symbol='q')[source]#

Autogenerate labels for wires of quantum circuits.

Parameters:

n : int

number of qubits in the circuit.

symbol : string

A character string to precede all gate labels. E.g. ‘q_0’, ‘q_1’, etc.

>>> from sympy.physics.quantum.circuitplot import labeller

>>> labeller(2)

[‘q_1’, ‘q_0’]

>>> labeller(3,’j’)

[‘j_2’, ‘j_1’, ‘j_0’]