2016-11-08 104 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 =權重的兩列中的數據幀)。這得到考慮頂點權重的最大獨立集合。

+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

至於例如對頂點,從文檔設置拍攝重量:

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.vs叫,這裏摹您的圖形對象的實例。

我建議你這個頁面,我發現它的實際看這裏的igraph方法: http://igraph.org/python/doc/identifier-index.html

相關問題