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)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| stabgraph-0.1.2.tar.gz | 9.4 kB | Without provenance | Details for stabgraph-0.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| stabgraph-0.1.2-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details for stabgraph-0.1.2-py2.py3-none-any.whl |
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+
|
Security for stabgraph 0.1.2
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.