Quantikz.jl
A minimal package for drawing quantum circuits using the quantikz
[1] and tikz
TeX libraries. See an online interactive demo at quantikz.krastanov.org.
Examples
See the full list of available operations.
using Quantikz
circuit = [
CNOT(1,2), CPHASE(2,3), SWAP(3,4),
H(5), P(6), Id(7),
U("\\frac{\\phi}{4}",8),
Measurement("X",1), Measurement([2,3],2), ClassicalDecision("U",[3,5],2),
Measurement("M",[5,6],1),
MultiControlU("G",[2,8],[7,3],[4,5,6])]
Saving files
Use savecircuit(circuit, filename)
for tex
, pdf
, and png
files.
Custom quantikz
TeX code
For each circuit you can get the quantikz
table if you want to modify it.
qtable = circuit2table([CNOT(1,2), CPHASE(2,3)])
qtable.qubits, qtable.ancillaries, qtable.bits
(3, 0, 0)
qtable.table
3×4 Matrix{String}:
"\\qw" "\\ctrl{0}" "\\qw" "\\qw"
"\\qw" "\\targ{}\\vqw{-1}" "\\ctrl{0}" "\\qw"
"\\qw" "\\qw" "\\ctrl{-1}" "\\qw"
And after modifications, the table can be turned into a tex string
table2string(qtable)
Custom Objects
For your CustomQuantumOperation
simply define a QuantikzOp(op::CustomQuantumOperation)
that converts your object to one of the built-in objects from the examples above.
If you need more freedom for your custom quantum operation, simply define:
update_table!(table,step,op::CustomQuantumOperation)
that directly modifies thequantikz
tableaffectedqubits(op::CustomQuantumOperation)
that gives the indices of qubits involved in the operation.- (optional)
affectedbits(op)
that gives the indices of classical bits in use (empty by default) - (optional)
neededancillaries(op)
that gives the number of temporary ancillary qubits to reserve (0 by default) - (optional)
nsteps(op)
that gives the number of steps involved in the gate (1 by default) - (optional)
deleteoutputs(op)
that gives which qubits to be deleted, e.g., their lines removed (empty by default)
Instead of returning an array of indices affectedqubits
can also return the lazy slice ibegin:iend
(from EndpointRanges.jl
) which tells the layout engine that all qubits are used in this stage of the circuit.