2010-04-13 7 views
3

Je construis un graphe avec beaucoup de nœuds, environ 3000. J'ai écrit un simple programme python pour faire l'affaire avec graphviz, mais ça me donne une erreur de segmentation et je ne sais pas pourquoi, si le graphe est trop grand ou s'il me manque quelque chose.faute de segmentation graphviz

Le code est:

#!/usr/bin/env python 

# Import graphviz 
import sys 
sys.path.append('..') 
sys.path.append('/usr/lib/graphviz') 
import gv 

# Import pygraph 
from pygraph.classes.graph import graph 
from pygraph.classes.digraph import digraph 
from pygraph.algorithms.searching import breadth_first_search 
from pygraph.readwrite.dot import write 

# Graph creation 
gr = graph() 

file = open('nodes.dat', 'r') 
line = file.readline() 
while line: 
     gr.add_nodes([line[0:-1]]) 
     line = file.readline() 

file.close() 
print 'nodes finished, beginning edges' 

edges = open('edges_ok.dat', 'r') 
edge = edges.readline() 
while edge: 
     gr.add_edge((edge.split()[0], edge.split()[1])) 
     edge = edges.readline() 

edges.close() 
print 'edges finished' 
print 'Drawing' 

# Draw as PNG 
dot = write(gr) 
gvv = gv.readstring(dot) 
gv.layout(gvv,'dot') 
gv.render(gvv,'svg','graph.svg') 

et il se bloque à l'appel gv.layout().

Les fichiers sont somthing comme: nœuds:

node1 
    node2 
    node3 

edges_ok:

node1 node2 
    node2 node3 
+0

On dirait que vous devriez signaler cela aux mainteneurs de Graphviz? –

+0

Je le fais sûrement si ce n'est pas un problème lié au programmeur. – lbedogni

+0

Avez-vous essayé de construire un fichier de points et de le traiter avec (ligne de commande) dotty? Est-ce que cela aussi segphault? – extraneon

Répondre

4

J'ai changé le type de mise en page de point à neato et qui a résolu le problème. J'ai cherché un peu et il semble que la disposition des points soit un peu défectueuse sur les grands graphiques.