2017-12-29 69 views
0

グラフの属性を持つigraphグラフを保存して取得しようとしています。具体的には、私は2端子のグラフを持っており、グラフの属性としてソースとシンクを保存しているので、一定の時間にそれらを取得できます。頂点は特定の順序ではない(例えば、最初の頂点がソースであり、最後の頂点がシンクである)ことに留意されたい。igraphグラフの属性の保存/取得

私はドキュメントを検索しましたが、グラフ属性の格納/取得をサポートするフォーマットはありません。私は何か不足していますか?

私の欠点は、booleanのソース/シンク頂点属性を使用することですが、それはより多くのスペースを必要とし、右の頂点を取得するための線形時間が必要です。

答えて

1

GraphMLは、グラフ全体、個々の頂点または個々のエッジに付加できる数値属性と文字列属性をサポートします(実際はより複雑なものをサポートしますが、igraphのGraphML実装は数値属性と文字列属性に限られます)。したがって、Graph.write_graphml()Graph.Read_GraphML()を使用することができます。また、Pythonのpickleモジュール(つまりpickle.dump()pickle.load()を使用)を使ってigraphグラフを保存するだけで、すべてのグラフ/頂点/辺の属性を返すことができます(複雑なPythonオブジェクトでも) - pickleの形式はPython世界以外の他のツールとの相互運用性はありません。

+0

偉大な応答。私は正しい軌道に乗った。 GraphMLは、頂点オブジェクトを指す属性を持っていたので属性を取得していませんでした。私がピケをしようとすると、「頂点オブジェクトをピケッとすることができない」ため、これもTypeErrorを与えました。 (理由はわからないが、とにかく...)そこで、頂点オブジェクトではなく、グラフ属性にソース/シンクインデックス(つまり整数)を直接格納することで解決しました。再び、良い応答。 – Tim

関連する問題