Seems vaguely sensible. Haven't tested because I'm on a plane.master
@@ -99,14 +99,14 @@ class GraphState(object): | |||||
def act_circuit(self, circuit): | def act_circuit(self, circuit): | ||||
""" Run many gates in one call. | """ Run many gates in one call. | ||||
:param circuit: An iterable containing tuples of the form ``(node, operation)``. If ``operation`` is a name for a local operation (e.g. ``6``, ``hadamard``) then that operation is performed on ``node``. If ``operation`` is ``cz`` then a CZ is performed on the two nodes in ``node``. | |||||
:param circuit: An iterable containing tuples of the form ``(operation, node)``. If ``operation`` is a name for a local operation (e.g. ``6``, ``hadamard``) then that operation is performed on ``node``. If ``operation`` is ``cz`` then a CZ is performed on the two nodes in ``node``. | |||||
Example (makes a Bell pair):: | Example (makes a Bell pair):: | ||||
>>> g.act_circuit([(0, "hadamard"), (1, "hadamard"), ((0, 1), "cz")]) | |||||
>>> g.act_circuit([("hadamard", 0), ("hadamard", 1), ("cz", (0, 1))]) | |||||
""" | """ | ||||
for node, operation in circuit: | |||||
for operation, node in circuit: | |||||
if operation == "cz": | if operation == "cz": | ||||
self.act_cz(*node) | self.act_cz(*node) | ||||
else: | else: | ||||
@@ -166,8 +166,8 @@ This ought to pop open a browser window at ``http://localhost:5001/``. You can r | |||||
>>> from abp import GraphState, VizClient | >>> from abp import GraphState, VizClient | ||||
>>> g = GraphState(10) | >>> g = GraphState(10) | ||||
>>> g.act_circuit([(i, "hadamard") for i in range(10)]) | |||||
>>> g.act_circuit([((i, i+1), "cz") for i in range(9)]) | |||||
>>> g.act_circuit([("hadamard", i) for i in range(10)]) | |||||
>>> g.act_circuit([("cz", (i, i+1)) for i in range(9)]) | |||||
>>> v = VizClient() | >>> v = VizClient() | ||||
>>> v.update(g) | >>> v.update(g) | ||||
@@ -42,7 +42,7 @@ class AndersWrapper(graphsim.GraphRegister): | |||||
return self.to_json() == other.to_json() | return self.to_json() == other.to_json() | ||||
def act_circuit(self, circuit): | def act_circuit(self, circuit): | ||||
for node, operation in circuit: | |||||
for operation, node in circuit: | |||||
if operation == "cz": | if operation == "cz": | ||||
self.act_cz(*node) | self.act_cz(*node) | ||||
else: | else: | ||||
@@ -106,8 +106,8 @@ def named_node_graph(): | |||||
""" A graph with named nodes""" | """ A graph with named nodes""" | ||||
edges = (0, 1), (1, 2), (2, 0), (0, 3), (100, 200), (200, "named") | edges = (0, 1), (1, 2), (2, 0), (0, 3), (100, 200), (200, "named") | ||||
g = ABPWrapper([0, 1, 2, 3, 100, 200, "named"]) | g = ABPWrapper([0, 1, 2, 3, 100, 200, "named"]) | ||||
g.act_circuit((i, "hadamard") for i in g.node) | |||||
g.act_circuit((edge, "cz") for edge in edges) | |||||
g.act_circuit(("hadamard", i) for i in g.node) | |||||
g.act_circuit(("cz", edge) for edge in edges) | |||||
return g | return g | ||||
@@ -115,8 +115,8 @@ def simple_graph(): | |||||
""" A simple graph to test with""" | """ A simple graph to test with""" | ||||
edges = (0, 1), (1, 2), (2, 0), (0, 3), (100, 200) | edges = (0, 1), (1, 2), (2, 0), (0, 3), (100, 200) | ||||
g = ABPWrapper([0, 1, 2, 3, 100, 200]) | g = ABPWrapper([0, 1, 2, 3, 100, 200]) | ||||
g.act_circuit((i, "hadamard") for i in g.node) | |||||
g.act_circuit((edge, "cz") for edge in edges) | |||||
g.act_circuit(("hadamard", i) for i in g.node) | |||||
g.act_circuit(("cz", edge) for edge in edges) | |||||
return g | return g | ||||
@@ -94,8 +94,8 @@ def test_local_complementation(): | |||||
""" Test that local complementation works okay """ | """ Test that local complementation works okay """ | ||||
pairs = (0, 1), (0, 3), (1, 3), (1, 2), | pairs = (0, 1), (0, 3), (1, 3), (1, 2), | ||||
psi = GraphState(range(4), vop="hadamard") | psi = GraphState(range(4), vop="hadamard") | ||||
psi.act_circuit([(i, "hadamard") for i in psi.node]) | |||||
psi.act_circuit([(pair, "cz") for pair in pairs]) | |||||
psi.act_circuit([("hadamard", i) for i in psi.node]) | |||||
psi.act_circuit([("cz", pair) for pair in pairs]) | |||||
old_edges = psi.edgelist() | old_edges = psi.edgelist() | ||||
old_state = psi.to_state_vector() | old_state = psi.to_state_vector() | ||||
psi.local_complementation(1) | psi.local_complementation(1) | ||||
@@ -4,8 +4,8 @@ from mock import simple_graph | |||||
def linear_cluster(n): | def linear_cluster(n): | ||||
g = GraphState(range(n), vop="hadamard") | g = GraphState(range(n), vop="hadamard") | ||||
g.act_circuit([(i, "hadamard") for i in range(n)]) | |||||
g.act_circuit([((i, i+1), "cz") for i in range(n-1)]) | |||||
g.act_circuit([("hadamard", i) for i in range(n)]) | |||||
g.act_circuit([("cz", (i, i+1)) for i in range(n-1)]) | |||||
return g | return g | ||||