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 N1. 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 N1. 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 N1. The program completes the
list of control qubits given as an input.
t
list of target qubits labelled from 0 to N1. 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 N1 where a pi/2 zrotation 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 stabgraph0.1.2py2.py3noneany.whl
Algorithm  Hash digest  

SHA256  2444ff62fa59ae9271645c3d68f7f7f8c1968e6f9867775eabd59e92e9680893 

MD5  5e117a45d163a4025a00d8366fd8e7e4 

BLAKE2256  1d69802b29dd694c24375a730e1770fb1ab60118a3da8308900c36adb488e42e 