def __init__(self, theAnimator, initial=0, color="blue"): """ theAnimator will usually be the GraphDisplay(Frame/Toplevel) initial is the value to cause coloring in cInitial """ VertexLabeling.__init__(self) self.Animator = theAnimator self.initial = initial self.color = color
def __setitem__(self, v, val): VertexLabeling.__setitem__(self, v, val) if val == gInfinity: val = "Infinity" elif val == -gInfinity: val = "-Infinity" self.A.SetVertexAnnotation(v,val)
def __setitem__(self, v, val): VertexLabeling.__setitem__(self, v, val) if val == gInfinity: val = "Infinity" elif val == -gInfinity: val = "-Infinity" self.A.SetVertexAnnotation(v, val)
def __init__(self, theAnimator, initial=0, color="blue"): """ theAnimator will usually be the GraphDisplay(Frame/Toplevel) initial is the value to cause coloring in cInitial """ VertexLabeling.__init__(self) self.Animator = theAnimator self.initial=initial self.color = color
def OpenDotGraph(fileName): """ Reads in a graph from file fileName. File-format is supposed to be dot (*.dot) used in """ G = Graph.Graph() G.directed = 1 E = VertexLabeling() W = EdgeWeight(G) L = VertexLabeling() VLabel = VertexLabeling() ELabel = EdgeLabeling() import re file = open(fileName, 'r') lines = file.readlines() file.close() dot2graph = {} for l in lines[3:]: items = string.split(l) if len(items) < 2: break if items[1] != '->': v = G.AddVertex() dot_v = int(items[0]) L[v] = "%d" % dot_v dot2graph[dot_v] = v m = re.search('label=("[^"]+")', l) VLabel[v] = m.group(1)[1:-1] m = re.search('pos="(\d+),(\d+)"', l) x = int(m.group(1)) y = int(m.group(2)) E[v] = Point2D(x,y) else: m = re.search('(\d+) -> (\d+)', l) v = dot2graph[int(m.group(1))] w = dot2graph[int(m.group(2))] m = re.search('label=("[^"]+")', l) #print l #print v,w,m.group(1) G.AddEdge(v,w) weight = float(m.group(1)[1:-1]) W[(v,w)] = weight ELabel[(v,w)] = "%0.2f" % weight G.embedding = E G.labeling = L G.nrEdgeWeights = 1 G.edgeWeights[0] = W G.vertexAnnotation = VLabel G.edgeAnnotation = ELabel return G
def __setitem__(self, v, val): try: oldVal = VertexLabeling.__getitem__(self, v) if oldVal != None: if not self.Animator.GetEdgeColor(oldVal, v) in self.ignoreColors: self.Animator.SetEdgeColor(oldVal, v, 'grey') except: pass if val != None: try: if not self.Animator.GetEdgeColor(val, v) in self.ignoreColors: self.Animator.SetEdgeColor(val, v, self.predColor) except: pass VertexLabeling.__setitem__(self, v, val)
def __setitem__(self, v, val): try: oldVal = VertexLabeling.__getitem__(self, v) if oldVal != None: if self.leaveColors == None or not (self.Animator.GetEdgeColor(oldVal,v) in self.leaveColors): self.Animator.SetEdgeColor(oldVal,v,"grey") except: pass if val != None: try: if self.leaveColors == None or not (self.Animator.GetEdgeColor(val,v) in self.leaveColors): self.Animator.SetEdgeColor(val,v,self.predColor) except: pass VertexLabeling.__setitem__(self, v, val)
def __setitem__(self, v, val): try: oldVal = VertexLabeling.__getitem__(self, v) if oldVal != None: if not self.Animator.GetEdgeColor(oldVal, v) in self.ignoreColors: self.Animator.SetEdgeColor(oldVal, v, 'grey') except: pass if val != None: try: if not self.Animator.GetEdgeColor(val, v) in self.ignoreColors: self.Animator.SetEdgeColor(val, v, self.predColor) except: pass VertexLabeling.__setitem__(self, v, val)
def __setitem__(self, v, val): try: oldVal = VertexLabeling.__getitem__(self, v) if oldVal != None: if self.leaveColors == None or not (self.Animator.GetEdgeColor( oldVal, v) in self.leaveColors): self.Animator.SetEdgeColor(oldVal, v, "grey") except: pass if val != None: try: if self.leaveColors == None or not (self.Animator.GetEdgeColor( val, v) in self.leaveColors): self.Animator.SetEdgeColor(val, v, self.predColor) except: pass VertexLabeling.__setitem__(self, v, val)
def __init__(self): self.simple = 1 self.euclidian = 1 self.directed = 0 self.vertices = [] self.adjLists = {} self.invAdjLists = {} # Inverse Adjazenzlisten self.highVertexID = 0 # INTERNAL self.embedding = VertexLabeling() # 2D-Positions self.labeling = VertexLabeling() # Names of vertices self.edgeWeights = {} # Dictionary of edge labellings self.edgeWeights[0] = EdgeWeight(self) self.vertexWeights = {} # None by default self.size = 0 self.edgeWidth = None self.vertexAnnotation = None self.edgeAnnotation = None self.properties = {}
def __init__(self, theAnimator, ignoreColors=[], predColor='red'): VertexLabeling.__init__(self) self.Animator = theAnimator self.ignoreColors = ignoreColors self.predColor = predColor
def __init__(self, theAnimator, leaveColors = None, predColor='red'): VertexLabeling.__init__(self) self.Animator = theAnimator self.leaveColors = leaveColors self.predColor = predColor
def __setitem__(self, v, val): VertexLabeling.__setitem__(self, v, val) if val == 0: self.Animator.BlinkVertex(v) else: self.Animator.BlinkVertex(v)
def __init__(self, theAnimator): """ theAnimator will usually be the GraphDisplay(Frame/Toplevel) """ VertexLabeling.__init__(self) self.Animator = theAnimator
def __setitem__(self, v, val): VertexLabeling.__setitem__(self, v, val) if val == self.initial or val == None or val == gInfinity: self.Animator.SetVertexColor(v,cInitial) else: self.Animator.SetVertexColor(v,self.color)
def __init__(self, theAnimator, ignoreColors = [], predColor='red'): VertexLabeling.__init__(self) self.Animator = theAnimator self.ignoreColors = ignoreColors self.predColor = predColor
def __init__(self, theAnimator): VertexLabeling.__init__(self) self.A = theAnimator
def OpenGMLGraph(fileName): """ Reads in a graph from file fileName. File-format is supposed to be GML (*.gml) """ G = Graph.Graph() G.directed = 0 E = VertexLabeling() W = EdgeWeight(G) L = VertexLabeling() VLabel = VertexLabeling() ELabel = EdgeLabeling() file = open(fileName, 'r') g = ParseGML(file) file.close() if g[0][0] != 'graph': log.error("Serious format error in %s. first key is not graph" % fileName) return else: l = g[0][1] for i in xrange(len(l)): key = l[i][0] value = l[i][1] if key == 'node': d = PairListToDictionary(value) v = G.AddVertex() try: VLabel[v] = eval(d['label']) P = PairListToDictionary(d['graphics']) E[v] = Point2D(eval(P['x']), eval(P['y'])) except: d = None P = None elif key == 'edge': d = PairListToDictionary(value) try: s = eval(d['source']) t = eval(d['target']) G.AddEdge(s,t) ELabel[(s,t)] = eval(d['label']) W[(s,t)] = 0 except: d = None elif key == 'directed': G.directed = 1 for v in G.vertices: L[v] = v G.embedding = E G.labeling = L G.nrEdgeWeights = 1 G.edgeWeights[0] = W G.vertexAnnotation = VLabel G.edgeAnnotation = ELabel return G
def __init__(self, theAnimator): VertexLabeling.__init__(self) self.A = theAnimator
def OpenCATBoxGraph(_file): """ Reads in a graph from file fileName. File-format is supposed to be from old CATBOX++ (*.cat) """ G = Graph.Graph() E = VertexLabeling() W = EdgeWeight(G) L = VertexLabeling() # get file from name or file object graphFile=None if type(_file) in types.StringTypes: graphFile = open(_file, 'r') elif type(_file)==types.FileType or issubclass(_file.__class__,StringIO.StringIO): graphFile=_file else: raise Exception("got wrong argument") lineNr = 1 firstVertexLineNr = -1 lastVertexLineNr = -1 firstEdgeLineNr = -1 lastEdgeLineNr = -1 intWeights = 0 while 1: line = graphFile.readline() if not line: break if lineNr == 2: # Read directed and euclidian splitLine = split(line[:-1],';') G.directed = eval(split(splitLine[0],':')[1]) G.simple = eval(split(splitLine[1],':')[1]) G.euclidian = eval(split(splitLine[2],':')[1]) intWeights = eval(split(splitLine[3],':')[1]) nrOfEdgeWeights = eval(split(splitLine[4],':')[1]) nrOfVertexWeights = eval(split(splitLine[5],':')[1]) for i in xrange(nrOfEdgeWeights): G.edgeWeights[i] = EdgeWeight(G) for i in xrange(nrOfVertexWeights): G.vertexWeights[i] = VertexWeight(G) if lineNr == 5: # Read nr of vertices nrOfVertices = eval(split(line[:-2],':')[1]) # Strip of "\n" and ; firstVertexLineNr = lineNr + 1 lastVertexLineNr = lineNr + nrOfVertices if firstVertexLineNr <= lineNr and lineNr <= lastVertexLineNr: splitLine = split(line[:-1],';') v = G.AddVertex() x = eval(split(splitLine[1],':')[1]) y = eval(split(splitLine[2],':')[1]) for i in xrange(nrOfVertexWeights): w = eval(split(splitLine[3+i],':')[1]) G.vertexWeights[i][v] = w E[v] = Point2D(x,y) if lineNr == lastVertexLineNr + 1: # Read Nr of edges nrOfEdges = eval(split(line[:-2],':')[1]) # Strip of "\n" and ; firstEdgeLineNr = lineNr + 1 lastEdgeLineNr = lineNr + nrOfEdges if firstEdgeLineNr <= lineNr and lineNr <= lastEdgeLineNr: splitLine = split(line[:-1],';') h = eval(split(splitLine[0],':')[1]) t = eval(split(splitLine[1],':')[1]) G.AddEdge(t,h,False) for i in xrange(nrOfEdgeWeights): G.edgeWeights[i][(t,h)] = eval(split(splitLine[3+i],':')[1]) lineNr = lineNr + 1 graphFile.close() for v in G.vertices: L[v] = v G.embedding = E G.labeling = L if intWeights: G.Integerize('all') for i in xrange(nrOfVertexWeights): G.vertexWeights[i].Integerize() return G
def __setitem__(self, v, val): VertexLabeling.__setitem__(self, v, val) if val == self.initial or val == None or val == gInfinity: self.Animator.SetVertexColor(v, cInitial) else: self.Animator.SetVertexColor(v, self.color)
def __init__(self, theAnimator, leaveColors=None, predColor='red'): VertexLabeling.__init__(self) self.Animator = theAnimator self.leaveColors = leaveColors self.predColor = predColor
def __setitem__(self, v, val): VertexLabeling.__setitem__(self, v, val) if val == 0: self.Animator.BlinkVertex(v) else: self.Animator.BlinkVertex(v)
def __init__(self, theAnimator): """ theAnimator will usually be the GraphDisplay(Frame/Toplevel) """ VertexLabeling.__init__(self) self.Animator = theAnimator