2016-08-29 9 views
1

私はPythonでNetworkxで読むことを試みている長いGMLファイル(グラフモデリング言語)を持っています。 GMLファイルで は、ノードは次のように、ラベルを持っていない:ノードのラベルなしでnetworkx(python)でGMLファイルを読む

graph [ 
    node [ 
    id 1 
    ] 
    node [ 
    id 2 
    ] 
    edge [ 
    source 2 
    target 1 
    ] 
    ] 

のファイル読み込み時に、私はエラーを取得: G = nx.read_gml( 'simple_graph.gml')

--------------------------------------------------------------------------- 
NetworkXError        Traceback (most recent call last) 
<ipython-input-39-b1b319a08668> in <module>() 
----> 1 G = nx.read_gml('simple_graph.gml') 

<decorator-gen-319> in read_gml(path, label, destringizer) 

/usr/lib/python2.7/dist-packages/networkx/utils/decorators.pyc in _open_file(func, *args, **kwargs) 
    218   # Finally, we call the original function, making sure to close the fobj. 
    219   try: 
--> 220    result = func(*new_args, **kwargs) 
    221   finally: 
    222    if close_fobj: 

/usr/lib/python2.7/dist-packages/networkx/readwrite/gml.pyc in read_gml(path, label, destringizer) 
    208    yield line 
    209 
--> 210  G = parse_gml_lines(filter_lines(path), label, destringizer) 
    211  return G 
    212 

/usr/lib/python2.7/dist-packages/networkx/readwrite/gml.pyc in parse_gml_lines(lines, label, destringizer) 
    407    raise NetworkXError('node id %r is duplicated' % (id,)) 
    408   if label != 'id': 
--> 409    label = pop_attr(node, 'node', 'label', i) 
    410    if label in labels: 
    411     raise NetworkXError('node label %r is duplicated' % (label,)) 

/usr/lib/python2.7/dist-packages/networkx/readwrite/gml.pyc in pop_attr(dct, type, attr, i) 
    397   except KeyError: 
    398    raise NetworkXError(
--> 399     "%s #%d has no '%s' attribute" % (type, i, attr)) 
    400 
    401  nodes = graph.get('node', []) 

NetworkXError: node #0 has no 'label' attribute 

ノードにラベルが付いていないために文句を言うことがあります。 GMLのドキュメンテーションから、私はラベルが必須ではないと思っていました(おそらく私は間違っていますか?)。そのようなファイルをラベルなしで読む方法はありますか?または私は自分のgmlファイルを変更する必要がありますか? ありがとうございます!

答えて

4

ノードをラベル付けするためにGMLにid属性を使用する場合は、nx.read_gml引数のlabel属性を次のように指定できます。

G = nx.read_gml('simple_graph.gml', label='id') 
関連する問題