def rescale_mygraph(myG, rezero=np.array([0, 0]), rescale=np.array([1, 1])): """returns a new graph (with no interior properties defined), rescaled under a linear function newloc = (oldloc-rezero)*rescale where all of those are (x,y) numpy arrays. Default of rezero = (0,0) and rescale = (1,1) means the locations of nodes in the new and old graph are the same. """ scaleG = mg.MyGraph() for e in myG.myedges(): n0 = e.nodes[0] n1 = e.nodes[1] nn0 = mg.MyNode((n0.loc-rezero)*rescale) nn1 = mg.MyNode((n1.loc-rezero)*rescale) scaleG.add_edge(mg.MyEdge((nn0, nn1))) return scaleG
def testGraphEquality(): n = {} n[1] = mg.MyNode((0, 0)) n[2] = mg.MyNode((0, 1)) n[3] = mg.MyNode((1, 1)) n[4] = mg.MyNode((1, 0)) n[5] = mg.MyNode((0, 0)) # actually equal n[6] = mg.MyNode((0.0001, 0.0001)) # within rounding n[7] = mg.MyNode((0.1, 0.1)) # within threshold n[8] = mg.MyNode((0.3, 0.3)) # actually different G = mg.MyGraph(name="S0") G.add_edge(mg.MyEdge((n[1], n[2]))) G.add_edge(mg.MyEdge((n[2], n[3]))) G.add_edge(mg.MyEdge((n[3], n[4]))) G.add_edge(mg.MyEdge((n[4], n[5]))) G.add_edge(mg.MyEdge((n[5], n[6]))) G.add_edge(mg.MyEdge((n[6], n[7]))) G.add_edge(mg.MyEdge((n[7], n[8]))) return G, n
def testGraph(): n = {} n[1] = mg.MyNode((0, 0)) n[2] = mg.MyNode((0, 1)) n[3] = mg.MyNode((0, 2)) n[4] = mg.MyNode((0, 3)) n[5] = mg.MyNode((1, 2)) n[6] = mg.MyNode((1, 3)) n[7] = mg.MyNode((0, 4)) n[8] = mg.MyNode((-1, 4)) n[9] = mg.MyNode((-1, 3)) n[10] = mg.MyNode((-1, 2)) n[11] = mg.MyNode((1, 4)) n[12] = mg.MyNode((-2, 3)) lat = mg.MyGraph(name="S0") lat.add_edge(mg.MyEdge((n[1], n[2]))) lat.add_edge(mg.MyEdge((n[2], n[3]))) lat.add_edge(mg.MyEdge((n[2], n[5]))) lat.add_edge(mg.MyEdge((n[3], n[4]))) lat.add_edge(mg.MyEdge((n[3], n[5]))) lat.add_edge(mg.MyEdge((n[3], n[9]))) lat.add_edge(mg.MyEdge((n[4], n[5]))) lat.add_edge(mg.MyEdge((n[4], n[6]))) lat.add_edge(mg.MyEdge((n[4], n[7]))) lat.add_edge(mg.MyEdge((n[4], n[8]))) lat.add_edge(mg.MyEdge((n[4], n[9]))) lat.add_edge(mg.MyEdge((n[5], n[6]))) lat.add_edge(mg.MyEdge((n[6], n[7]))) lat.add_edge(mg.MyEdge((n[7], n[8]))) lat.add_edge(mg.MyEdge((n[8], n[9]))) lat.add_edge(mg.MyEdge((n[9], n[10]))) lat.add_edge(mg.MyEdge((n[3], n[10]))) lat.add_edge(mg.MyEdge((n[2], n[10]))) lat.add_edge(mg.MyEdge((n[7], n[11]))) lat.add_edge(mg.MyEdge((n[6], n[11]))) lat.add_edge(mg.MyEdge((n[10], n[12]))) lat.add_edge(mg.MyEdge((n[8], n[12]))) return lat
def graphFromShapes(shapes, name, rezero=np.array([0, 0])): nodedict = dict() plist = [] for s in shapes: nodes = [] for k in s.points: k = k - rezero myN = mg.MyNode(k) if myN not in nodedict: nodes.append(myN) nodedict[myN] = myN else: nodes.append(nodedict[myN]) edges = [(nodes[i], nodes[i+1]) for i in range(0, len(nodes)-1)] plist.append(mg.MyFace(edges)) myG = mg.MyGraph(name=name) for p in plist: for e in p.edges: myG.add_edge(mg.MyEdge(e.nodes)) return myG
def graphFromMyFaces(flist, name=None): myG = mg.MyGraph(name=name) for f in flist: for e in f.edges: myG.add_edge(e) return myG
def graphFromMyEdges(elist, name=None): myG = mg.MyGraph(name=name) for e in elist: myG.add_edge(e) return myG