diff --git a/.gitignore b/.gitignore index aa5f36a..8cfad81 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ # Project-specific ab/ +anders_briegel # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/abp.py b/abp.py index 911a59b..2c45ac0 100644 --- a/abp.py +++ b/abp.py @@ -1,14 +1,26 @@ 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): def __init__(self, index): self.index = index - self.vertex_operator = lco_h; + self.vertex_operator = lco_h self.neighbors = set() def edgelist(self): @@ -21,6 +33,7 @@ class Vertex(object): class GraphRegister(object): def __init__(self, n): + self.nqubits = n self.vertices = [Vertex(i) for i in xrange(n)] def add_edge(self, v1, v2): @@ -38,12 +51,13 @@ class GraphRegister(object): self.add_edge(v1, v2) 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, ): - 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__': g = GraphRegister(10) diff --git a/tests/test_stabilizer.py b/tests/test_stabilizer.py new file mode 100644 index 0000000..5af3cfa --- /dev/null +++ b/tests/test_stabilizer.py @@ -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 +