Skip to main content

Noisy graph states

PyPI Documentation Status Tests DOI

This python package is a tool to track how noisy graph states transform under operations and measurements (for an introduction to graph states see e.g. arXiv:quant-ph/0602096). It uses the Noisy Stabilizer Formalism introduced in

Noisy stabilizer formalism
M. F. Mor-Ruiz, W. Dür
Phys. Rev. A 107, 032424 (2023); DOI: 10.1103/PhysRevA.107.032424
Preprint: arXiv:2212.08677 [quant-ph]

that describes how Pauli-diagonal noise on graph states transforms under various graph operations, such as local complementation, Pauli measurements and merging operations.

Installation

You can install the package into your Python environment from the Python Package Index:

pip install noisy-graph-states

As with all Python packages this can possibly overwrite already installed package versions in your environment with its dependencies, so installing it in a dedicated virtual environment may be preferable.

If you encounter any problems, you can try installing the exact versions of the dependencies of this package, which were used to develop it (specified in Pipfile.lock). This assume Python 3.9 and pipenv are available on your system.

git clone https://github.com/jwallnoefer/noisy_graph_states.git
cd noisy_graph_states
git checkout main
pipenv sync
pipenv install .

Then you can activate the virtual environment with pipenv shell.

Documentation

The documentation can be built from source with Sphinx, but it is also hosted at https://noisy-graph-states.readthedocs.io

Motivation

There are many protocols in quantum information science that are based on graph states and transformations of graph states. In any realistic scenario noise and imperfections have to be taken into account in order to analyse the performance of such protocols.

While there are existing tools for dealing with stabilizer states and Clifford circuits, it can be useful to stay within the graph state interpretation for the whole protocol. Furthermore, our approach allows us to explicitly obtain the density matrix of the output state without the need to sample from it.

Working principle

Instead of updating the density matrix, instead track how the noise on the state transforms along with the graph state transformation.

For some cases of noise (such as local noise acting on the initial state before operations are performed) the Noisy Stabilizer Formalism allows to do this very efficiently (updating O(n) noises instead of exponentially many density matrix entries).

The main insight here is that the noise channels can be tracked individually instead of being combined to one global channel, e.g. local depolarizing noise on every qubit is highly structured, but nonetheless a full rank noise channel viewed in a global picture.

However, note that this efficiency increase is not guaranteed in general, as with the general correlated noise, one inevitably needs to track exponentially many entries again.

Use of the code

The noisy graph state package was used for these publications:

Imperfect quantum networks with tailored resource states
M. F. Mor-Ruiz, J. Wallnöfer, W. Dür
Published version: Quantum 9, 1605 (2025).

Merging-Based Quantum Repeater
M. F. Mor-Ruiz, J. Miguel-Ramiro, J. Wallnöfer, T. Coopmans, and W. Dür
Preprint: arXiv:2502.04450 [quant-ph];

Release files for noisy-graph-states 0.4

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

Source distribution (sdist)

Source distribution for noisy-graph-states 0.4
File Size Uploaded
noisy_graph_states-0.4.tar.gz 59.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for noisy-graph-states 0.4
File Interpreter ABI Platform
noisy_graph_states-0.4-py3-none-any.whl Python 3 none any Details

Total release size: 85.8 kB

Release files / noisy_graph_states-0.4.tar.gz

Download URL noisy_graph_states-0.4.tar.gz
Size 59.7 kB
Tags Source
SHA-256 checksum
How to use checksums
c0e0e081933f143049403eb6eda44af8e77c2f61e8b04d2470b47c69ac361637
BLAKE2b-256 checksum
How to use checksums
7c9327866ed8393fdd3cdfe3aafda464081cc2230b5276e048e2869fce7c146e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release files / noisy_graph_states-0.4-py3-none-any.whl

Download URL noisy_graph_states-0.4-py3-none-any.whl
Size 26.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2b3ffc20c48c7ad09425348b738d8727694062924d055800e958d462acb87550
BLAKE2b-256 checksum
How to use checksums
e281ac33a0070389a66091985305d977306875ed45df3de9709946e74edda114
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.12.8

Release history Release notifications | RSS feed

This release

0.4 This release

2 release files

0.3.1

2 release files

0.3

2 release files

0.2

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