Transforms stabilizer state into graph state
Project description
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}}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for stabgraph-0.1.2-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2444ff62fa59ae9271645c3d68f7f7f8c1968e6f9867775eabd59e92e9680893 |
|
MD5 | 5e117a45d163a4025a00d8366fd8e7e4 |
|
BLAKE2b-256 | 1d69802b29dd694c24375a730e1770fb1ab60118a3da8308900c36adb488e42e |