Browse Source

Printing stabilizers

master
Pete Shadbolt 8 years ago
parent
commit
dbd60f695b
3 changed files with 37 additions and 7 deletions
  1. +1
    -0
      .gitignore
  2. +21
    -7
      abp.py
  3. +15
    -0
      tests/test_stabilizer.py

+ 1
- 0
.gitignore View File

@@ -1,5 +1,6 @@
# Project-specific # Project-specific
ab/ ab/
anders_briegel


# Byte-compiled / optimized / DLL files # Byte-compiled / optimized / DLL files
__pycache__/ __pycache__/


+ 21
- 7
abp.py View File

@@ -1,14 +1,26 @@
from clifford import * from clifford import *


"""
Porting Anders and Briegel to Python
""" """
Porting Anders and Briegel to Python
"""

stab_rep = {None: "-", 0: "X", 1: "Y", 2: "Z"}

class Stabilizer(object):

def __init__(self, graph):
self.paulis = [[None for i in range(graph.nqubits)]
for j in range(graph.nqubits)]

def __str__(self):
return "\n".join(" ".join(stab_rep[x] for x in row) for row in self.paulis)



class Vertex(object): class Vertex(object):


def __init__(self, index): def __init__(self, index):
self.index = index self.index = index
self.vertex_operator = lco_h;
self.vertex_operator = lco_h
self.neighbors = set() self.neighbors = set()


def edgelist(self): def edgelist(self):
@@ -21,6 +33,7 @@ class Vertex(object):
class GraphRegister(object): class GraphRegister(object):


def __init__(self, n): def __init__(self, n):
self.nqubits = n
self.vertices = [Vertex(i) for i in xrange(n)] self.vertices = [Vertex(i) for i in xrange(n)]


def add_edge(self, v1, v2): def add_edge(self, v1, v2):
@@ -38,12 +51,13 @@ class GraphRegister(object):
self.add_edge(v1, v2) self.add_edge(v1, v2)


def edgelist(self): def edgelist(self):
return map(tuple, frozenset(frozenset((v.index, n))
for v in self.vertices
for n in v.neighbors))
return map(tuple, frozenset(frozenset((v.index, n))
for v in self.vertices
for n in v.neighbors))


def __str__(self, ): def __str__(self, ):
return "\n".join(str(v) for v in self.vertices if len(v.neighbors) > 0)
return "\n".join(str(v) for v in self.vertices
if len(v.neighbors) > 0)


if __name__ == '__main__': if __name__ == '__main__':
g = GraphRegister(10) g = GraphRegister(10)


+ 15
- 0
tests/test_stabilizer.py View File

@@ -0,0 +1,15 @@
from nose import with_setup
import abp

def setup():
global g
g = abp.GraphRegister(10)
g.add_edge(0,1)
g.add_edge(1,2)
g.add_edge(2,0)

@with_setup(setup)
def test_adding():
s = abp.Stabilizer(g)
print s


Loading…
Cancel
Save