浏览代码

Still sketching

master
Pete Shadbolt 8 年前
父节点
当前提交
15f3e54821
共有 2 个文件被更改,包括 24 次插入11 次删除
  1. +7
    -4
      abp/fancy.py
  2. +17
    -7
      abp/lattices.py

+ 7
- 4
abp/fancy.py 查看文件

@@ -1,6 +1,6 @@
import time, atexit, json import time, atexit, json
import sys import sys
import networkx
import networkx as nx
import numpy as np import numpy as np
import websocket import websocket
from socket import error as socket_error from socket import error as socket_error
@@ -8,9 +8,12 @@ import graphstate
import clifford import clifford
import util import util


class GraphState(graphstate.GraphState, networkx.Graph):
class GraphState(graphstate.GraphState, nx.Graph):
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
graphstate.GraphState.__init__(self, *args, **kwargs)
if type(args[0])==nx.Graph:
self.from_nx(args[0])
else:
graphstate.GraphState.__init__(self, *args, **kwargs)
self.connect_to_server() self.connect_to_server()


def connect_to_server(self, uri = "ws://localhost:5000"): def connect_to_server(self, uri = "ws://localhost:5000"):
@@ -59,7 +62,7 @@ class GraphState(graphstate.GraphState, networkx.Graph):


def layout(self): def layout(self):
""" Automatically lay out the graph """ """ Automatically lay out the graph """
pos = networkx.spring_layout(self, dim=3, scale=np.sqrt(self.order()))
pos = nx.spring_layout(self, dim=3, scale=np.sqrt(self.order()))
middle = np.average(pos.values(), axis=0) middle = np.average(pos.values(), axis=0)
pos = {key: value - middle for key, value in pos.items()} pos = {key: value - middle for key, value in pos.items()}
for key, (x, y, z) in pos.items(): for key, (x, y, z) in pos.items():


+ 17
- 7
abp/lattices.py 查看文件

@@ -1,3 +1,7 @@
"""
This is a sketch of a consistent language for defining resource states and lattices.
"""

import networkx as nx import networkx as nx
from abp.fancy import GraphState from abp.fancy import GraphState


@@ -39,13 +43,19 @@ def unit_cell(label):
psi = fuse(psi, (1, (0, 2)), (2, (2, 2))) psi = fuse(psi, (1, (0, 2)), (2, (2, 2)))
psi = fuse(psi, (2, (0, 2)), (3, (2, 2))) psi = fuse(psi, (2, (0, 2)), (3, (2, 2)))
psi = fuse(psi, (3, (0, 2)), (0, (2, 2))) psi = fuse(psi, (3, (0, 2)), (0, (2, 2)))
return psi
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__': if __name__ == '__main__':
#print ghz(0).nodes()
#print ghz(1).nodes()
#print fuse(ghz(0), ghz(1), (0, 2), (1, 0)).adj
#print microcluster("pete").nodes()
g = GraphState()
g.from_nx(unit_cell("pete"))
psi = union(unit_cell((0, 0)), unit_cell((2, 0)))
annotate(psi, position)
g = GraphState(psi)



正在加载...
取消
保存