2015-10-01 11 views
6

dolphins social networkを含むgmlファイルをダウンロードしました。GMLグラフの読み込み中に予期しないエラーが発生しました

いくつかの時間前、私はAA Windows7のマシン上のPython 3.4とnetworkx 1.9を実行し、そのネットワーク上のいくつかの分析を行ったが、今はnetworkx 1.10と同じのpythonのバージョンが、で(アーチのLinuxマシン上で実行しています)、ファイルを読み込もうとしたときに問題が見つかりました。

これは、ファイルを読み取るために使用されるコードです:

import networkx as nx 
nx.read_gml("dolphins.gml") 

そして、これがエラーのスタックトレースです:

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "<string>", line 2, in read_gml 
File "/usr/lib/python3.4/site-packages/networkx/utils/decorators.py",line 220, in _open_file 
result = func(*new_args, **kwargs) 
File "/usr/lib/python3.4/site-packages/networkx/readwrite/gml.py", line 210, in read_gml 
G = parse_gml_lines(filter_lines(path), label, destringizer) 
File "/usr/lib/python3.4/site-packages/networkx/readwrite/gml.py", line 383, in parse_gml_lines 
graph = parse_graph() 
File "/usr/lib/python3.4/site-packages/networkx/readwrite/gml.py", line 372, in parse_graph 
curr_token, dct = parse_kv(next(tokens)) 
File "/usr/lib/python3.4/site-packages/networkx/readwrite/gml.py", line 323, in tokenize 
(line[pos:], lineno + 1, pos + 1)) 
networkx.exception.NetworkXError: cannot tokenize 'graph' at (1, 1) 

あなたは、ファイルを読み取ることができますか?誰かが同じような問題を経験しましたか?または何がエラーを生成しているか知っていますか?

ありがとうございます!

+0

奇妙な - それは私のために働いた(はい、私はまた、イルカのネットワークを使用している)。私はpython 2.7でnetworkx 2.0.dev_20151001131915を実行しています。 – Joel

+0

あなたはここと同じことになるかもしれません:http://stackoverflow.com/questions/31946029/networkx-read-gml-error-networkx-exception-networkxerror-cannot-tokenize-ugraしかし誰もそこに答えてください。 – Joel

+0

ここに 'read_gml'のソースコードがあります。http://networkx.readthedocs.org/en/latest/_modules/networkx/readwrite/gml.htmlエラーメッセージが正規表現で一致しないことから来ているようです。 – Joel

答えて

2

networkxのバージョンを1.10から1.9.1にダウングレードしました。

この回答が他の人に役立つことを願っています。

+0

1.9.1のgmlリーダ/ライタは、非常に柔軟性があるように見えます(ノード属性とエッジ属性に対して多くのチェックが実行されません。できるだけそれらを読み込み、属性をGMLに適した型として解釈しようとしました) 、または文字列) 古いバージョン(1.10、1.11)は、古いファイルを読み書きするのを難しくするいくつかのチェックを実装しているようです。たとえば、1.11では、ノードまたはエッジの属性キーにアンダースコアを割り当てることはできません。厄介なビット。以下を参照してください:https://networkx.github.io/documentation/latest/_modules/networkx/readwrite/gml.html – dpb

5

新しいバージョンのnetworkxでは、gmlファイルはより特定の形式に従う必要があります。 dolphins.gmlの問題は、開いている大括弧の前に改行があってはならないことです。

間違ったフォーマット:

graph 
[ 
    directed 0 
    node 
    [ 
    id 0 
    label "Beak" 
    ] 
    . 
    . 
    . 

正しいフォーマット:たとえば

graph [ 
    directed 0 
    node [ 
    id 0 
    label "Beak" 
    ] 
    . 
    . 
    . 

それがある限り、角括弧の前にあるどのように多くのスペースを気にしない、複数のとキャリッジリターンはありません。

私がやったことは、正規表現を使用して、角かっこの前の空白を取り除くことでした。次の正規表現は私のために働いた:

\s+\[ 

そしてちょうど "["で置き換えてください。ブラケットの前に少なくとも1つのスペースが必要です。

また、すべてのノードには一意のラベルが必要です。

希望しました。

+2

誰かがsedコマンドを検索した場合、 'sed -i 'N; s/\ s \ + \ [/ \ [/ g; P; D 'dolphins.gml' – surt91

関連する問題