Exemplo n.º 1
0
 def __init__(self, _map=None):
     if _map:
         self._map = _map
     else:
         self._map = {}
     # strict=True ensures that graph is rewritten for any changes in node
     self._dot = DotGraph(strict=True)
     self.places = []
Exemplo n.º 2
0
def gshow(g, attr=None, file_name='out/temp.gv', view=False):
    ecount = g.number_of_edges()
    if ecount > MAX_EDGES:
        print('GRAPH TOO BIG TO SHOW, EDGES=', ecount)
        return
    dot = DotGraph()
    for e in gen_dot_edges(g, attr=attr):
        f, t, w = e
        dot.edge(f, t, label=w)
    dot.render(file_name, view=view)
Exemplo n.º 3
0
def gshow(g, attr=None, file_name='pics/temp.gv', view=False):
    ''' shows a networx DiGraph g
      using graphviz
      it could become slow on large graphs (above MAX_EDGES)
  '''
    ecount = g.number_of_edges()
    if ecount > MAX_EDGES:
        print('GRAPH TOO BIG TO SHOW, EDGES=', ecount)
        return
    dot = DotGraph()
    for e in gen_dot_edges(g, attr=attr):
        f, t, w = e
        dot.edge(f, t, label=w)
    print('generated:', file_name, 'edges:', ecount)
    dot.render(file_name, view=view)
Exemplo n.º 4
0
def xshow(gs, attr=None, file_name=None, view=False):
    """ shows a sequence of (possibly originating from the same,
       via a transformation) displayed together, left to right
    """
    dot = DotGraph()
    ecount = 0
    for i, g in enumerate(gs):
        k = g.number_of_edges()
        ecount += k
        if ecount > MAX_EDGES:
            print('GRAPH CHAIN TOO BIG TO SHOW, EDGES=', ecount)
            return
        for f, t, w in gen_dot_edges(g, attr=attr):
            mark = "@" + str(i)
            dot.edge(f + mark, t + mark, label=w)
    print('generated:', file_name, 'edges:', ecount)
    dot.render(file_name, view=view)
Exemplo n.º 5
0
def gshow(g, attr=None, file_name='temp.gv', show=1):

    size = g.number_of_edges()
    nsize = g.number_of_nodes()

    if size < 3:
        print('GRAPH TOO SMALL TO SHOW:', file_name, 'nodes:', nsize, 'edges:',
              size)
        return
    elif size < 300:
        print('SHOWING:', file_name, 'nodes:', nsize, 'edges:', size)
    else:
        print('TOO BIG TO SHOW:', file_name, 'nodes:', nsize, 'edges:', size)
        return
    dot = DotGraph()
    for e in g.edges():
        f, t = e
        if not attr: w = ''
        else:
            w = g[f][t].get(attr)
            if not w: w = ''
        dot.edge(str(f), str(t), label=str(w))
    dot.render(file_name, view=show > 1)
Exemplo n.º 6
0
def gshow(g, attr=None, file_name='temp.gv', show=1, json_save=True):

    size = g.number_of_edges()
    nsize = g.number_of_nodes()

    if size < 3:
        #ppp('GRAPH TOO SMALL TO SHOW:', file_name, 'nodes:',nsize,'edges:', size)
        pass
        return
    elif size < 3000:
        #ppp('SHOWING:',file_name, 'nodes:',nsize,'edges:', size)
        pass
    else:
        #ppp('TOO BIG TO SHOW:',file_name, 'nodes:',nsize,'edges:', size)
        return
    dot = DotGraph()
    es = []
    for e in g.edges():
        f, t = e
        if not attr: w = ''
        else:
            w = g[f][t].get(attr)
            if not w: w = ''
        if not isinstance(f, str): continue
        if not isinstance(t, str): continue
        f = f.replace(':', '.')
        t = t.replace(':', '.')
        f = str(f)
        t = str(t)
        w = str(w)
        dot.edge(f, t, label=w)
        if json_save: es.append((f, t, w))
    if json_save:
        jfile = file_name + ".json"
        with wopen(jfile) as jf:
            json.dump(es, jf)
    dot.render(file_name, view=show > 1)