通过在网络中的相同项之间添加边缘来连接网络

时间:2017-03-28 02:44:17

标签: python-3.5 networkx

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 个答案:

答案 0 :(得分: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'])

我的github上提供了venn_wordcloud的代码: https://github.com/paulbrodersen/venn_wordcloud

除了numpy和matplotlib(你应该在安装networkx之前安装),它取决于matplotlib-venn和wordcloud,可以通过pip安装:

pip install matplotlib-venn wordcloud