Pārlūkot izejas kodu

Now working without fancy.py.

master
Pete Shadbolt pirms 8 gadiem
vecāks
revīzija
89b603e00c
4 mainītis faili ar 46 papildinājumiem un 7 dzēšanām
  1. +1
    -0
      abp/__init__.py
  2. +2
    -7
      abp/nxgraphstate.py
  3. +35
    -0
      abp/vizclient.py
  4. +8
    -0
      examples/visualization/new.py

+ 1
- 0
abp/__init__.py Parādīt failu

@@ -1,6 +1,7 @@
# Alias some stuff to make imports cleaner # Alias some stuff to make imports cleaner
from abp.graphstate import GraphState from abp.graphstate import GraphState
from abp.nxgraphstate import NXGraphState from abp.nxgraphstate import NXGraphState
from abp.vizclient import VizClient
from abp.qi import CircuitModel from abp.qi import CircuitModel


DETERMINISTIC = False DETERMINISTIC = False

+ 2
- 7
abp/nxgraphstate.py Parādīt failu

@@ -1,6 +1,8 @@
import networkx as nx import networkx as nx
import numpy as np
import graphstate import graphstate
import clifford import clifford
import util


class NXGraphState(graphstate.GraphState, nx.Graph): class NXGraphState(graphstate.GraphState, nx.Graph):
""" This is GraphState with NetworkX-like abilities """ """ This is GraphState with NetworkX-like abilities """
@@ -15,10 +17,3 @@ class NXGraphState(graphstate.GraphState, nx.Graph):
for key, (x, y, z) in pos.items(): for key, (x, y, z) in pos.items():
self.node[key]["position"] = util.xyz(x, y, z) self.node[key]["position"] = util.xyz(x, y, z)


def add_vops(self):
""" Automatically add vops if they're not present """
for key in self.node:
if not "vop" in self.node[key]:
self.node[key]["vop"] = clifford.identity


+ 35
- 0
abp/vizclient.py Parādīt failu

@@ -0,0 +1,35 @@
import time, atexit, json
import networkx as nx
import numpy as np
import websocket
from socket import error as socket_error
import clifford
import util
import nxgraphstate

class VizClient(object):
def __init__(self, uri = "ws://localhost:5000"):
self.ws = websocket.create_connection(uri, timeout=0.1)
atexit.register(self.shutdown)

def shutdown(self):
""" Close the connection to the websocket """
self.ws.close()

def update(self, graph, delay = 0.5):
""" Call this function when you are ready to send data to the browser """
g = nxgraphstate.NXGraphState(graph)

# Automatically perform layout if position is not provided
if not all(("position" in node) for node in g.node.values()):
g.layout()

# Send data to browser and rate-limit
try:
self.ws.send(json.dumps(g.to_json(stringify=True)))
self.ws.recv()
except websocket._exceptions.WebSocketTimeoutException:
print "Timed out ... you might be pushing a bit hard"
time.sleep(delay)



+ 8
- 0
examples/visualization/new.py Parādīt failu

@@ -0,0 +1,8 @@
from abp import GraphState, VizClient
from abp.util import xyz

v = VizClient()
g = GraphState(5)
for i in range(5):
g.node[i]["position"] = xyz(i, 0, 0)
v.update(g)

Notiek ielāde…
Atcelt
Saglabāt