Skip to main content

StabGraph

Every stabilizer state can be transformed into a graph state by means of a local Clifford unitary. stabgraph is contains the function convert that, given a stabilizer state, it finds such a graph state and the local Clifford unitary that transforms the stabilizer state into the graph state. This function follows the steps described in the article [1].

[1] Manuscript under preparation.

Installation

To install using pip:

python -m pip install --upgrade pip
python -m pip install stabgraph

Replace python with python3 as appropriate.

Usage

import stabgraph

G , c , t , z , R = stabgraph.convert(stabs,control=None,target=None,shuffle=False) 

INPUT

stabs contains the N stabilizer operators defining a stabilizer state of N qubits. It is a list of N strings 'PPPP...', one for each stabilizer operator. Every string has N elements 'P' from the set 'I', 'X', 'Y', 'Z', that represents the set of Pauli matrices.

OPTIONAL INPUTS

control is a list of control qubits. Gives the option to set some qubits as control qubits. Qubits are labelled from 0 to N-1. It is an empy list by default.

target is a list of target qubits. Gives the option to set some qubits as target qubits. Qubits are labelled from 0 to N-1. It is an empty list by default.

shuffle can be set to be True. For a given stabilizer state there are multiple local Clifford equivalent graph states that can be obtained by this program. If shuffle=True the output graph is one of these graphs chosen randomly. shuffle=False by default.

OUTPUTS

G adjacency matrix defining the underlying graph of the graph state. It is a NxN numpy array composed by 0 and 1.

c list of control qubits labelled from 0 to N-1. The program completes the list of control qubits given as an input.

t list of target qubits labelled from 0 to N-1. The program completes the list of target qubits given as an input. A Hadamard gate is applied on every target qubit.

z list of control qubits labelled from 0 to N-1 where a pi/2 z-rotation is applied.

R invertible binary matrix representing the recombination of stabilizers performed to obtain the stabilizers of the graph state. It is a NxN numpy array composed of 0 and 1.

EXAMPLES

Bell pair

>>> stabs = ['XX','ZZ']
>>> G , c , t , z , R = stabgraph.convert(stabs)
>>> G
np.array([[0,1],[1,0]])
>>> c
[0]
>>> t
[1]
>>> z
[]
>>> R
np.array([[1,0],[0,1]])

GHZ state fixing 0 as a control qubit and 1 as a target qubit

>>> stabs = ['XXX','ZZI','IZZ']
>>> G , c , t , z , R = stabgraph.convert(stabs,[0],[1])
>>> c
[0]
>>> t
[1,2]

Steane code in the |0> logical state. Multiple graphs can be obtained, so put shuffle=True to obtain one of them randomly chosen. The result respects the selection of control and target qubits

>>> stabs = ['XXXXIII','IXXIXXI','IIXXIXX','ZZZZIII','IZZIZZI','IIZZIZZ','ZZZZZZZ']
>>> G , c , t , z , R = stabgraph.convert(stabs, control = [0], shuffle=True)
>>> c
[0,1,2]
>>> G , c , t , z , R = stabgraph.convert(stabs, control = [2, 5], shuffle=True)
>>> c
[2,5,6]

Citation

@misc{amaro2019,
  author = 	"David Amaro",
  title = 	"StabGraph",
  year = 	"2019",
  month =   "July",
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/davamaro/stabgraph}}
}

Metadata

Release files for stabgraph 0.1.2

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

Source distribution (sdist)

Source distribution for stabgraph 0.1.2
File Size Uploaded
stabgraph-0.1.2.tar.gz 9.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for stabgraph 0.1.2
File Interpreter ABI Platform
stabgraph-0.1.2-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 19.4 kB

Release files / stabgraph-0.1.2.tar.gz

Download URL stabgraph-0.1.2.tar.gz
Size 9.4 kB
Tags Source
SHA-256 checksum
How to use checksums
1d2f57b519d5b0095468bafc2d0bf8f009e5e93d95510b552c266754b43a0198
BLAKE2b-256 checksum
How to use checksums
91e9e61cc256f9164f51fc2216b983081a5116cef4f6a9269c789a936c64533d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/2.7.15+

Release files / stabgraph-0.1.2-py2.py3-none-any.whl

Download URL stabgraph-0.1.2-py2.py3-none-any.whl
Size 10.1 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
2444ff62fa59ae9271645c3d68f7f7f8c1968e6f9867775eabd59e92e9680893
BLAKE2b-256 checksum
How to use checksums
1d69802b29dd694c24375a730e1770fb1ab60118a3da8308900c36adb488e42e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/2.7.15+

Release history Release notifications | RSS feed

0.1.5

2 release files

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1

1 release file

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