设为首页收藏本站
开启辅助访问
切换到窄版

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3206|回复: 0

#软件工具#初识网络分析工具——Networkx,让人眼前一亮

[复制链接]
发表于 2016-1-6 09:47:44 | 显示全部楼层 |阅读模式
NetworkX是一个用python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网络数据分析、仿真建模等工作。

如果用户对cytoscape有过使用经验或初步了解的话,那么networkX无疑会让你眼前一亮,因为它可以更加方便的实现网络构建,拓扑性质分析,scale选择,节点属性设置,甚至一些更高级的网络修饰,这一切都只需要几行代码就可以完成。

当然我们也必须提到一些它的局限性,尽管在初级的简单网络构建,如有向图,无向图,随机网络,二分网络等构建非常简单,网络分析也很容易,但是对于一些更加复杂的网络,甚至一些算法的实现就显得有些力不从心了,这与cytoscape强大的插件资源是无法比拟的,所以这里我们只是简单了解并介绍如何使用NetworkX进行初级的网络分析。


首先我们要介绍下NetworkX工具的使用方法


1.环境的安装


首先要安装python解释器,当然这是废话,但是安装的版本确有将就。先介绍几个部件:python解释器、networkx类库、还有使用支持networkx绘图的numpy和matplotlib,总共四个。

由于目前matplotlib只支持到python2.6解释器,所以还是下载python 2.6和各种类库2.6版本比较好。(更正:目前支持到了2.7版本)

下载链接:www.python.org  (一路点击即可)
[url=]
[/url]
[url=]networkx-1.6-py2.6.egg[/url]  (等会儿介绍安装介个)
[url=]
[/url]
[url=]numpy[/url](一路)  
[url=]
[/url]
[url=]matpotlib[/url](win32-py2.6版本,一路next)对于networkx第三方类库的安装,需要弄点东东。

由于本人是win7系统,右键“以管理员身份运行”cmd,然后先安装[url=]ez_setup.py[/url],下载完毕,进行安装。

   

               


      然后进行networkx的egg库的安装(关于egg库的安装详细解释可查看说明文档)
            


2. 安装完毕,进行测试。

      

  打开python-command line,进行如图输入“import networkxas nx”+"print nx",就有相关显示,如果没有成功,会提示不认识networkx类库的



之后就可以构建我们的第一个网络了。

现在让我们首先开始使用Python与NetworkX。启动Python,然后导入NetworkX 库与UrlLib库(不久后需要用到它)。
% python
>>> import networkx as net
>>> import urllib


NetworkX以图(graph)为基本数据结构。图既可以由程序生成,也可以来自在线数据源,还可以从文件与[url=]数据库[/url]中读取。现在,让我们手动创建一个简单的图(见图3-1):

>>> g=net.Graph()  #创建空图
>>> g.add_edge('a','b') #插入一条连接a,b的边到图中,节点将自动插入
>>> g.add_edge('b','c') #再插入一条连接b,c的边
>>> g.add_edge('c','a') #再插入一条连接c,a的边
>>> net.draw(g)   #          输出一个三角形的图,如图3-1所示


你也可以将图的节点与边作为[url=]Python[/url]列表输出:
>>>> g.nodes() #输出图g的节点值
['a','b','c']
>>>> g.edges() #输出图g的边值
[('a', 'c'), ('a', 'b'), ('c', 'b')]


NetworkX中的图数据结构就像[url=]Python[/url]的 字典(dict)一样——一切都能循环,并根据键值读取。


>>> g.node['a']
{}
>>> g.node['a']['size']=1
>>> g.node['a']
{'size' : 1}


节点与边能够存储任意类型字典的属性和任意其他丰富类型的数据:


>>> g['a']  #将临近边及权重作为字典返回输出
{'b': {}, 'c': {}}
>>> g['a']['b']  #返回节点A->B的属性
{}
>>> g['a']['b']['weight']=1  #设置边的属性
>>> g['a']['b']
{'weight' : 1}


多数的计算社会网络指标也返回一个字典,节点ID作为字典键,指标作为字典的值。你可以像操作任何字典一样操作它们。


1321

1321


您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|生物信息学论坛 ( 蜀ICP备09031721号  

GMT+8, 2017-6-23 00:32 , Processed in 0.113144 second(s), 23 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表