2016-11-08 6 views
2

私は検索しましたが、エッジウェイトを使用してグラフを作成する方法について多くの例がありますが、それらのどれも頂点ウェイトを持つグラフを作成する方法を示していません。私はそれが可能かどうか疑問に思う。igraphを使ってPythonで頂点の重さを持つグラフを作成するにはどうすればいいですか?

igraphを使用して頂点加重グラフを作成できる場合は、igraphを使用して加重独立性またはその他の加重値を計算することは可能ですか?

答えて

1

を私の知る限りでは、重み付けされた頂点の引数を受け入れるIGRAPHには機能はありません。しかし、RのためのBioconductorスイートの一部であるSANTAパッケージには、Rのために移動したいならば、加重頂点のためのルーチンがあります。 (あなたがbioconductor in pythonを実行することができます多分のように思える。)

別のハックのオプションは、バックの重みで、その後(可能な場合)IGRAPHから重み付けされていないルーチンを使用することであると。例えば。

def maxset(graph,weight): 
    ms = g.maximal_independent_vertex_sets() 
    w = [] 
    t = [] 
    for i in range(0, 150): 
     m = weights.loc[weights['ids'].isin(ms[i]),"weights"] 
     w.append(m) 
     s = sum(w[i]) 
     t.append(s) 
    return(ms[t.index(max(t))]) 
maxset(g,weights) 

(重みはカラム1 =頂点IDおよびカラム2 =重みを持つ2つの列データフレームである):重み付き最大独立集合のためにこのような何か。頂点の重みを考慮して、独立した最大の集合が得られます。

+0

あなたの答えをありがとう! PythonやRなどのソフトウェアに関係なく、より多くの機能をカバーできるパッケージはどれですか?いくつかお勧めしますか? –

+0

@EdenHarder本当にすべてをカバーするパッケージはありません。私は主にソーシャルネットワークの分析を行うので、主にRでstatnet/sna/network/ergmパッケージのパッケージを使用します。 R、C、およびPythonのigraphは、私に向けられたもう少しグラフ理論です。 PythonのNetworkxは、複雑なネットワーク分析に対応しています。本当に、それは達成したいことにかかっています。私はigraphとstatnetのコンビネーションが私のために働いていることがわかりました。 – paqmo

+0

Rには、エコロジストや生物学者のネットワーク解析に焦点を当てたasnipeやenaRなど、より特定のネットワークをカバーする小さなパッケージがたくさんあります。 – paqmo

0

vsクラスを使用して、頂点とその属性をigraphに定義します。ここでは、頂点の配列がg.vsを通して呼び出されていることを

http://igraph.org/python/doc/igraph.VertexSeq-class.html

g=Graph.Full(3) # generate a full graph as example 

for idx, v in enumerate(g.vs): 
    v["weight"] = idx*(idx+1) # set the 'weight' of vertex to integer, in function of a progressive index 

>>> g.vs["weight"] 
[0, 2, 6] 

注意、G、グラフオブジェクトのインスタンス:文書から取られた頂点に重みを設定するための例として

、。

私はあなたにこのページを提案し、私はここにIGRAPH方法を探すこと、それは実用的な発見: http://igraph.org/python/doc/identifier-index.html

関連する問題