我搜索,但發現有很多關於如何創建具有邊權重的圖形的示例,但沒有一個示例顯示如何創建具有頂點權重的圖形。我開始懷疑它是否可能。如何用igraph在Python中創建頂點重量的圖形?
如果一個頂點加權圖可以用igraph創建,那麼是否有可能用igraph來計算加權獨立性或其他加權數?
我搜索,但發現有很多關於如何創建具有邊權重的圖形的示例,但沒有一個示例顯示如何創建具有頂點權重的圖形。我開始懷疑它是否可能。如何用igraph在Python中創建頂點重量的圖形?
如果一個頂點加權圖可以用igraph創建,那麼是否有可能用igraph來計算加權獨立性或其他加權數?
據我所知,有在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 =權重的兩列中的數據幀)。這得到考慮頂點權重的最大獨立集合。
您想使用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
感謝您的回答!無論在Python或R還是其他軟件中,哪個軟件包可以涵蓋更多功能?你有一些建議嗎? –
@EdenHarder真的沒有一個包含所有東西的軟件包。我主要使用R的statnet/sna/network/ergm套件,因爲我主要做社交網絡分析。 R,C和python中的igraph有點更符合圖論。 Python中的Networkx面向複雜的網絡分析。真的,這取決於你想達到什麼。我發現了一些igraph和statnet的組合爲我工作。 – paqmo
R中有很多較小的軟件包,涵蓋更多特定的網絡,如asnipe和enaR,專注於生態學家和生物學家的網絡分析。 – paqmo