From 1673cf1bda107f2890933f5141f1552e21c88e50 Mon Sep 17 00:00:00 2001 From: Pete Shadbolt Date: Thu, 25 Aug 2016 22:09:02 +0100 Subject: [PATCH] Remove lattices.py --- abp/lattices.py | 61 ------------------------------------------------- 1 file changed, 61 deletions(-) delete mode 100644 abp/lattices.py diff --git a/abp/lattices.py b/abp/lattices.py deleted file mode 100644 index a1b4bb7..0000000 --- a/abp/lattices.py +++ /dev/null @@ -1,61 +0,0 @@ -""" -This is a sketch of a consistent language for defining resource states and lattices. -""" - -import networkx as nx -from abp.fancy import GraphState - -def union(*graphs): - """ Assumes that all graphs are completely independent and uniquely labelled """ - output = nx.Graph() - output.node = dict(i for g in graphs for i in g.node.items()) - output.adj = dict(i for g in graphs for i in g.adj.items()) - return output - -def relabel(g, label): - """ Shorthand relabel """ - return nx.relabel_nodes(g, lambda x: (label, x)) - -def fuse(psi, na, nb): - """ Deterministic fusion for testing purposes """ - neighbors_a, neighbors_b = psi.neighbors(na), psi.neighbors(nb) - new_edges = ((i, j) for i in neighbors_a for j in neighbors_b if i != j) - psi.add_edges_from(new_edges) - psi.remove_nodes_from((na, nb)) - return psi - -def ghz(label): - """ A 3-GHZ state """ - psi = nx.Graph(((0, 1), (1, 2))) - return relabel(psi, label) - -def microcluster(label): - """ A microcluster """ - psi = union(ghz(0), ghz(1), ghz(2)) - psi = fuse(psi, (0, 1), (1, 0)) - psi = fuse(psi, (1, 2), (2, 1)) - return relabel(psi, label) - -def unit_cell(label): - """ A simple ring-like unit cell """ - psi = union(microcluster(0), microcluster(1), microcluster(2), microcluster(3)) - psi = fuse(psi, (0, (0, 2)), (1, (2, 2))) - psi = fuse(psi, (1, (0, 2)), (2, (2, 2))) - psi = fuse(psi, (2, (0, 2)), (3, (2, 2))) - psi = fuse(psi, (3, (0, 2)), (0, (2, 2))) - return relabel(psi, label) - -def position(node): - print node - return {} - -def annotate(g, f): - """ Annotate a graph """ - for node in g.nodes(): - g.node[node].update(f(node)) - -if __name__ == '__main__': - psi = union(unit_cell((0, 0)), unit_cell((2, 0))) - annotate(psi, position) - g = GraphState(psi) -