我正在研究蜂窝路径,我想知道如何使用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
答案 0 :(得分:1)
networkx没有超节点的概念(我也不知道任何其他网络分析包),因此没有简单的方法来重新创建绘图。还有一些其他技术限制(节点需要具有不同的名称(AFAIK)),这使得生成图表的天真方法变得困难。
对我来说,似乎是在尝试重新发明轮子。你不是只想要一个显示不同途径之间重叠的维恩图吗? 类似的东西:
代码:
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