Skip to main content

PyZX-Param

PyPI version

Note: This is a fork of PyZX with extensions for parameterized Pauli vertices, based on mjsutcliffe99/ParamZX. It can be installed alongside the original PyZX without conflicts.

PyZX (pronounce as Pisics) is a Python tool implementing the theory of ZX-calculus for the creation, visualisation, and automated rewriting of large-scale quantum circuits. Please watch this 2-minute video for a short introduction.

PyZX currently allows you to:

  • Read in quantum circuits in the file format of QASM, Quipper or Quantomatic.
  • Rewrite circuits into a pseudo-normal form using the ZX-calculus.
  • Extract new simplified circuits from these reduced graphs.
  • Visualise the ZX-graphs and rewrites using either Matplotlib, Quantomatic or as a TikZ file for use in LaTeX documents.
  • Output the optimised circuits in QASM, QC or QUIPPER format.

You can try out the in-browser demo which shows some of these features here.

About the ZX-calculus

ZX-diagrams are a type of tensor network built out of combinations of linear maps known as spiders. There are 2 types of spiders: the Z-spiders (represented as green dots in PyZX) and the X-spiders (represented as red dots). Every linear map between some set of qubits can be represented by a ZX-diagram. The ZX-calculus is a set of rewrite rules for ZX-diagrams. There are various extensive set of rewrite rules. PyZX however, uses only rewrite rules concerning the Clifford fragment of the ZX-calculus. Importantly, this set of rewrite rules is complete for Clifford diagrams, meaning that two representations of a Clifford map can be rewritten into one another if and only if the two linear maps they represent are equal.

Here is a website with resources and information about the ZX-calculus. For a short introduction to the ZX-calculus see this paper while for a complete overview we recommend this book. PyZX extensively uses two derived rewrite rules known as local complementation and pivoting. More information about these operations can be found in this paper.

Installation

If you wish to use PyZX-Param as a Python module for use in other projects, we recommend installing via pip:

pip install pyzx-param

This installs the module as pyzx_param, allowing it to coexist with the original pyzx:

import pyzx_param as zx  # This fork
import pyzx              # Original PyZX (if needed)

If you want to use the demos or the benchmark circuits you should install PyZX-Param from source by cloning the git repository.

PyZX-Param has no strict dependencies, although some functionality requires numpy. It is built to interact well with Jupyter, so we additionally recommend you have Jupyter and matplotlib installed.

Usage

See the Documentation for a full overview of the features of PyZX.

If you have Jupyter installed you can use one of the demonstration notebooks in the demos folder for an illustration of what PyZX can do.

This is some example Python code for generating a random circuit, optimizing it, and finally displaying it:

import pyzx_param as zx
qubit_amount = 5
gate_count = 80
#Generate random circuit of Clifford gates
circuit = zx.generate.cliffordT(qubit_amount, gate_count)
#If running in Jupyter, draw the circuit
zx.draw(circuit)
#Use one of the built-in rewriting strategies to simplify the circuit
zx.simplify.full_reduce(circuit)
#See the result
zx.draw(circuit)

PyZX-Param can also be run from the commandline. To optimise a circuit you can for instance run python -m pyzx_param opt input_circuit.qasm

Attribution

This is a fork of PyZX by Aleks Kissinger and John van de Wetering. If you wish to cite PyZX in an academic work, please cite the original paper:

  @inproceedings{kissinger2020Pyzx,
    author = {Kissinger, Aleks and van de Wetering, John},
    title = {{PyZX: Large Scale Automated Diagrammatic Reasoning}},
    year = {2020},
    booktitle = {{\rm Proceedings 16th International Conference on} Quantum Physics and Logic, {\rm Chapman University, Orange, CA, USA., 10-14 June 2019}},
    editor = {Coecke, Bob and Leifer, Matthew},
    series = {Electronic Proceedings in Theoretical Computer Science},
    volume = {318},
    pages = {229-241},
    publisher = {Open Publishing Association},
    doi = {10.4204/EPTCS.318.14}
}

Here's a plane that says PYZX: PYZX

Metadata

Release files for pyzx-param 0.9.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyzx-param 0.9.3
File Size Uploaded
pyzx_param-0.9.3.tar.gz 358.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyzx-param 0.9.3
File Interpreter ABI Platform
pyzx_param-0.9.3-py3-none-any.whl Python 3 none any Details

Total release size: 752.8 kB

Release files / pyzx_param-0.9.3.tar.gz

Download URL pyzx_param-0.9.3.tar.gz
Size 358.3 kB
Tags Source
SHA-256 checksum
How to use checksums
13c729ad5d29f522f95ed45378835dc6270c7fd2ff949c57a15bf290d662f866
BLAKE2b-256 checksum
How to use checksums
6c5366b2af6ce8a44a438995eb22ffab942a30927587fb5ea1d026c12f546e47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 1, 2026.

Transparency log

Release files / pyzx_param-0.9.3-py3-none-any.whl

Download URL pyzx_param-0.9.3-py3-none-any.whl
Size 394.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5c89e0f1f0f6a425f58b3d755eb78306554ae5ae15ea701b0dfd9eff86bcbfb7
BLAKE2b-256 checksum
How to use checksums
e528e037d68e941213e26990535a239dcfaeb9d52a0b3d28db07c87ee1dd0bc2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 1, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.9.3 This release

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release 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