Skip to main content
docs/images/qpic.png

A compiler from quantum circuits to graphical representations.

Features

The ⟨q|pic⟩ language provides a concise, readable, ASCII format for describing quantum circuits. qpic converts ⟨q|pic⟩ files to the scientific paper standard of LaTeX using TikZ graphic commands.

  • Automatic placement of circuit components.

  • Human readable.

  • Input ⟨q|pic⟩ syntax can be produced by other scripts.

  • Can be included in LaTeX documents in TikZ or PDF form.

⟨q|pic⟩ produces high quality graphics quickly. The following graphic illustrating part of a ripple carry adder

docs/images/Adder_CDKM_MAJ.png

is compiled from the ⟨q|pic⟩ code

a W a a\oplus{c}
b W b b\oplus{c}
c W c \mbox{MAJ}(a,b,c)

a b c G \rotatebox{90}{MAJ}
=
+b c
+a c
a b +c

Examples

Basic quantum teleportation circuit

docs/images/BasicTeleportation.png

This classic diagram derives from the following code:

a W |\psi\rangle
b c W |\beta_{00}\rangle<
c W |\psi\rangle
a +b
a H
a b M
c X b:owire
c Z a:owire

Decorated quantum teleportation circuit

⟨q|pic⟩ has additional features for commenting or highlighting parts of a circuit.

docs/images/QuantumTeleportation.png

This diagram derives from the following:

PREAMBLE \providecommand{\K}[1]{\left|#1\right\rangle} # Define ket command
a  W \K{\phi} [x]
x1 W type=o # Empty wire used for positioning
x0 W style=dashed # Dividing line
x2 W type=o # Empty wire used for positioning
b0 W \K{0} [y]
b1 W \K{0} \K{\phi}

VERTICAL 0
b1 H    % $\K{\phi}\K{0}(\K{0}{+}\K{1})$
+b0 b1  % $(\alpha\K{0}{+}\beta\K{1})(\K{00}{+}\K{11})$
b0 x1 PERMUTE
+b0 a   %$\scriptstyle\alpha\K{0}(\K{00}{+}\K{11}){+}\beta\K{1}(\K{10}{+}\K{01})$
a H     % $\sum_{x,y}\K{xy}(\alpha\K{y}{+}(-1)^x\beta\K{\bar{y}})$
a b0 M  % $[xy](\alpha\K{y}{+}(-1)^x\beta\K{\bar{y}})$
x1 x2 a b0 PERMUTE
+b1 b0  % $[xy](\alpha\K{0}{+}(-1)^x\beta\K{1})$
b1 a    % $[xy](\alpha\K{0}{+}\beta\K{1})$

# Colored boxes
b0 b1 x1 x2 @ 0 2 fill=green style=rounded_corners %% $[qq]$ Quantum entanglement
a b0 x2 x1 @ 6 6 fill=blue style=rounded_corners %% \hspace{.5cm}$2[c\rightarrow c]$ Classical channel

For an explanation of qpic commands and more examples, see the official documentation.

Installation

Recommended installation method is pip. Current versions of Python 2 and 3 include pip. For older versions, use pip installation instructions.

pip install qpic

If you do not have permission to install or wish to install qpic as a single user, add $HOME/.local/bin to your $PATH and install using

pip install --user qpic

Uninstall

To uninstall qpic simply type

pip uninstall qpic

Stand alone script

To try out the basic script without installation:

  1. Download the file qpic.py. (located in the qpic directory)

  2. Run python qpic.py your_file.qpic > your_file.tex.

Running ⟨q|pic⟩

qpic generates TikZ code by default. qpic can also generate pdf files using pdflatex and png files using convert (from ImageMagic).

Create TikZ file diagram.tikz

qpic -f tikz diagram.qpic

Create PDF file diagram.pdf

qpic -f pdf diagram.qpic

Create PNG file diagram.png

qpic -f png diagram.qpic

Using ⟨q|pic⟩ with LaTeX

Including graphics in LaTeX documents

There are two main methods for including ⟨q|pic⟩ in LaTeX documents. Each has its advantage in certain areas. They are:

  • Include TikZ code directly

  • Include as a PDF graphic

To write ⟨q|pic⟩ code directly inside a .tex file, see the inline LaTeX guide.

TikZ

qpic my_graphic.qpic produces a TikZ file named my_graphic.tikz, which can be directly included into a normal LaTeX document. You will need to add

\usepackage{tikz}
\usetikzlibrary{decorations.pathreplacing,decorations.pathmorphing}

to the preamble of your paper. Graphics can then be included with the command:

\input{filename.tikz}

In some cases, additional TeX commands may be required in the preamble. (These will be in the .tikz file preceded by %!.) See the full ⟨q|pic⟩ documentation for when additional packages are required.

PDF

qpic -f pdf my_graphic.qpic will produce a PDF file named my_graphic.pdf. This graphic can be viewed directly with a PDF viewer. To insert the graphic into a LaTeX document, add the following line to the preamble:

\usepackage{graphicx}

and include the file using the command:

\includegraphics{my_graphic.pdf}

This method requires the document to be processed with pdfLaTeX. For further information see the full ⟨q|pic⟩ documentation.

History
1.1.1 (2026-09-11)
  • Inline LaTeX qpic environment guide and qpic-latex.sty.

  • Ignore .venv/ directories.

1.1.0 (2023-11-13)
  • Update for Python 3.11+

1.0.3 (2022-11-16)
  • Handle deprecation of collections.Mapping in Python 3.10+

1.0.2 (2016-04-20)
  • Fix Python3 unicode bug.

1.0.1 (2016-03-18)
  • Convert README to ReStructuredText for PyPi.

1.0.0 (2016-03-09)
  • First release on PyPI.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qpic-1.1.1.tar.gz (186.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qpic-1.1.1-py2.py3-none-any.whl (75.2 kB view details)

Uploaded Python 2Python 3

File details

Details for the file qpic-1.1.1.tar.gz.

File metadata

  • Download URL: qpic-1.1.1.tar.gz
  • Upload date:
  • Size: 186.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for qpic-1.1.1.tar.gz
Algorithm Hash digest
SHA256 e81dc0cdf745a696b602473fae9ecbe75d22213b3d92d7e9602b04070e3480c2
MD5 8bd192aecf6ce28d341e13c9ca970b58
BLAKE2b-256 cceee700c09466ef44c83030c66c0cde55e02a93c88e8ee1b8aa33363d937a3b

See more details on using hashes here.

File details

Details for the file qpic-1.1.1-py2.py3-none-any.whl.

File metadata

  • Download URL: qpic-1.1.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 75.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.12.3

File hashes

Hashes for qpic-1.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 5a86da082ae490e9e90b5263b9ce3df01173e304d6e455f3c4db575c993b35af
MD5 ade0f355cd1ec51c206c50620bc1817d
BLAKE2b-256 f125edaff9493f6005757f7789918c530256ca32b05b33e72e71e0118cfdbe1c

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.1.1 This release

2 files

1.1.0

1 file

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page