2017-03-28 59 views
0

enter image description here我正在研究細胞通路,我想知道如何使用networkx來顯示如何連接共享相同元素的網絡。通過在網絡中的相同項目之間添加邊緣來連接網絡

HH_signaling = ['GLI1', 'PTCH1', 'PTCH2', 'WNT5A', 'HHIP1', 'MYCN', 'CCND1', 'CCND2', 'BCL2', 'CFLAR', 'FOXF1', 'FOXL1', 'PRDM1', 'JAG2', 'GREM1'] 
    Wnt_signaling = ['GLI1', 'PTCH1', 'WNT5A', 'HHIP1', 'MYCN', 'CCND1','WNT7A','WNT2','CDK1','CK1'] 
    Proliferation_signaling = ['GLI1', 'CCNDA', 'BMP4', 'BMP7', 'MTOC2', 'CCND1'] 

    g = nx.Graph() 
    def link_networks(N1, N2, N3, N4=None, N5=None, N6=None, N7=None, N8=None, N9=None): 
     for i in N1: 
      for i in N2: 
       for i in N3: 
        g.add_edge(N1[i],N2[i],N3[i]) 

link_networks(HH_signaling, Wnt_signaling, Proliferation_signaling) 

TypeError: list indices must be integers or slices, not str 

回答

1

networkx沒有一個超級節點的概念(也沒有任何其他的網絡分析軟件,我知道),所以沒有簡單的方法來重新創建繪圖。還有一些其他技術限制(節點需要具有不同的名稱(AFAIK)),這使得圖形生成的幼稚方法變得困難。

對我來說,你似乎試圖重新發明輪子。你不只是想要一個維恩圖表顯示不同途徑之間的重疊? 喜歡的東西:

enter image description here

代碼:

import venn_wordcloud; reload(venn_wordcloud) 

HH = ['GLI1', 'PTCH1', 'PTCH2', 'WNT5A', 'HHIP1', 'MYCN', 'CCND1', 'CCND2', 'BCL2', 'CFLAR', 'FOXF1', 'FOXL1', 'PRDM1', 'JAG2', 'GREM1'] 
Wnt = ['GLI1', 'PTCH1', 'WNT5A', 'HHIP1', 'MYCN', 'CCND1', 'WNT7A', 'WNT2', 'CDK1', 'CK1'] 
CC = ['GLI1', 'CCNDA', 'BMP4', 'BMP7', 'MTOC2', 'CCND1'] 

venn_wordcloud.venn3_wordcloud([set(HH), set(Wnt), set(CC)], 
           set_labels=['Hedgehog', 'Wnt', 'Cell Cycle']) 

爲venn_wordcloud的代碼可以在我的github上: https://github.com/paulbrodersen/venn_wordcloud

從numpy的和matplotlib(你應該在安裝前networkx安裝)

除此之外,這取決於matplotlib,維恩和wordcloud,可通過畫中畫安裝:

pip install matplotlib-venn wordcloud