Selaa lähdekoodia

Preparing to implement measurement

master
Pete Shadbolt 8 vuotta sitten
vanhempi
commit
23fec82583
5 muutettua tiedostoa jossa 17 lisäystä ja 22 poistoa
  1. +2
    -2
      abp/fancy.py
  2. +2
    -1
      abp/graphstate.py
  3. +3
    -0
      static/scripts/websocket.js
  4. +0
    -17
      tests/test_graph.py
  5. +10
    -2
      tests/test_measurement.py

+ 2
- 2
abp/fancy.py Näytä tiedosto

@@ -34,8 +34,8 @@ class GraphState(graphstate.GraphState, networkx.Graph):
if not all(("position" in node) for node in self.node.values()): if not all(("position" in node) for node in self.node.values()):
self.layout() self.layout()


if not all(("vop" in node) for node in self.node.values()):
self.add_vops()
#if not all(("vop" in node) for node in self.node.values()):
#self.add_vops()


# Send data to browser and rate-limit # Send data to browser and rate-limit
self.ws.send(json.dumps(self.to_json())) self.ws.send(json.dumps(self.to_json()))


+ 2
- 1
abp/graphstate.py Näytä tiedosto

@@ -5,6 +5,7 @@ Provides an extremely basic graph structure, based on neighbour lists
import itertools as it import itertools as it
import json import json
import qi, clifford, util import qi, clifford, util
import random


class GraphState(object): class GraphState(object):


@@ -104,7 +105,7 @@ class GraphState(object):


def measure_z(self, node, force=None): def measure_z(self, node, force=None):
""" Measure the graph in the Z-basis """ """ Measure the graph in the Z-basis """
res = force if force else np.random.choice([0, 1])
res = force if force!=None else random.choice([0, 1])


# Disconnect # Disconnect
for neighbour in self.adj[node]: for neighbour in self.adj[node]:


+ 3
- 0
static/scripts/websocket.js Näytä tiedosto

@@ -15,6 +15,9 @@ websocket.connect = function(update) {
for (var i in json.node) { for (var i in json.node) {
var pos = json.node[i].position; var pos = json.node[i].position;
json.node[i].position = new THREE.Vector3(pos.x, pos.y, pos.z); json.node[i].position = new THREE.Vector3(pos.x, pos.y, pos.z);
if (json.node[i].vop === undefined){
json.node[i].vop = 0;
}
} }
update(json); update(json);
}; };


+ 0
- 17
tests/test_graph.py Näytä tiedosto

@@ -7,7 +7,6 @@ import time
def test_graph_basic(): def test_graph_basic():
""" Test that we can construct graphs, delete edges, whatever """ """ Test that we can construct graphs, delete edges, whatever """
g = demograph() g = demograph()
print g.adj[0].keys()
assert set(g.adj[0].keys()) == set([1, 2, 3]) assert set(g.adj[0].keys()) == set([1, 2, 3])
g.del_edge(0, 1) g.del_edge(0, 1)
assert set(g.adj[0].keys()) == set([2, 3]) assert set(g.adj[0].keys()) == set([2, 3])
@@ -28,22 +27,6 @@ def test_local_complementation():
# TODO: test VOP conditions # TODO: test VOP conditions




#def test_remove_vop_simple():
#""" Test that removing VOPs really works """
#g = GraphState(xrange(2))
#print g
#g.remove_vop(0, 1)
#print g
#assert g.vops[0] == clifford.by_name["identity"]
#g.remove_vop(1, 1)
#assert g.vops[1] == clifford.by_name["identity"]
#g.remove_vop(2, 1)
#assert g.vops[2] == clifford.by_name["identity"]
#g.remove_vop(0, 1)
#assert g.vops[0] == clifford.by_name["identity"]



def test_remove_vop(): def test_remove_vop():
""" Test that removing VOPs really works """ """ Test that removing VOPs really works """
g = demograph() g = demograph()


+ 10
- 2
tests/test_measurement.py Näytä tiedosto

@@ -1,6 +1,14 @@
from abp import GraphState from abp import GraphState


def test_z_measurement(): def test_z_measurement():
#TODO
pass
g = GraphState(0)
assert g.measure_z(0, 0) == 0
assert g.measure_z(0, 1) == 1
assert not all(g.measure_z(0) == 0 for i in range(100))

g.act_hadamard(0)
print g
assert all(g.measure_z(0) == 1 for i in range(100))





Loading…
Peruuta
Tallenna