GraphView
オブジェクトのpython graph_tool
パッケージは、基本グラフ自体がGraphView
オブジェクトの場合は期待どおりに動作していないようです。問題を示すコードを次に示します。graph_toolのプロパティマップはGraphWiewsで動作しますか?
from graph_tool import *
import numpy as np
g = Graph()
p1 = g.new_vertex_property("bool")
gv1 = GraphView(g, p1)
p2 = gv1.new_vertex_property("bool")
gv2 = GraphView(gv1, p2)
print gv1.num_vertices()
これは期待通りに0を出力します。頂点を追加していません。
v = g.add_vertex()
p1[v] = True
print gv1.num_vertices()
これは、期待どおりに1を出力します。プロパティマップを変更すると、ビューが更新されます。
for w in gv1.vertices():
p2[w] = True
print gv2.num_vertices()
これは、私が期待していなかった0を出力します。プロパティマップを変更しても、ビューは更新されないようです。
p2[v] = True
print gv2.num_vertices()
助けていないようg
代わりのgv1
から頂点オブジェクトを使用しました。 0が再び印刷されます。
gv2 = GraphView(gv1, p2)
print gv2.num_vertices()
これは、何らかの形で、ビューを問題は、プロパティマップではないことを示唆しているものの、1を出力します。
私には何が欠けていますか? GraphViewのオブジェは、、すなわち別のGraphViewオブジェクトから生成され、に構成されている
ありがとうございます!私のアプリケーションでは、gv1と新しい近隣ノードを「作成」するためのヘルパー関数が渡されています。ヘルパー関数がノードを作成しているのか、それともGraphView経由で公開しているのか不自然でなければなりません。この不可知論を維持することは可能だが、ちょっとした注意が必要だと思われる。 –