从R中调用Cytoscape绘制复杂网络
R,治世能臣;Cytoscape,乱世奸雄,两位爱卿可否通力协作,助我顺利毕业?然也!
最近在Cytoscape的mail-list上一个很热门的话题就是如何在R中调用Cytoscape绘制复杂的生物网络,从而将R强大的统计功能,尤其是igraph,sna等复杂网络分析包跟Cytoscape灵活的可视化复杂网络分析功能及众多插件结合在一起。昨天,Cytoscape的核心开发人员,UCSD的Keiichiro Ono在Cytoscape的wiki上发了一篇对此的简要教程,Cytoscape And R。
在R中调用Cytoscape绘图,基本原理就是利用Cytoscape的RPC插件和Apache的XML RPC库在本机上启动Cytoscape的RPC服务,然后在R中用经过修改的XMLRPC包访问Cytoscape的RPC服务,从而实现R和Cytoscape的交互。
1. 安装Cytoscape RPC插件。
- 从其官方网页上下载最新版的Cytoscape RPC插件,在我码这篇文章的时候最新版是0.95。把Jar文件拷到plugin目录。
- 然后到Apache的web serive开发项目组网页上下载XMLRPC库,解压后把lib目录下的xmlrpc-common-3.1.3.jar, xmlrpc-server-3.1.3.jar, ws-commons-util-1.0.2.jar三个文件拷到Cytoscape的plugin目录。
- Cytoscape这边准备完毕。
2. 安装R的XMLRPC包。
- XMLRPC包依赖于RCurl和XML两个包,所以同学们要先在自己的R里面把这个两个包装好。
- 然后,到这个地址下载一个经过修改的XMLRPC包。跟安装其它软件包一样:
sudo R CMD INSTALL XMLRPC_0.2-mod.zip
3. 启动Cytoscape,在plugin菜单下激活RPC插件,默认端口是9000
4. 启动R,加载XMLRPC包和测试用的igraph包:
library(XMLRPC) library(igraph)
接下来,先通过xml.rpc在Cytoscape中新建一个网络,然后用igraph生成一个网络,并将此网络传给Cytoscape:
xml.rpc('http://localhost:9000', 'Cytoscape.createNetwork', 'R-Cytoscape Test') g1 <- barabasi.game(200) edgelist1 <- get.edgelist(g1) edgeIDs <- xml.rpc('http://localhost:9000', 'Cytoscape.createEdgesFromVector', edgelist1[,1], edgelist1[,2])
此时,切换到Cytoscape,会看到一个红点。那其实是一个有两百个节点的网络,只是没有应用任何layout而已。随便选择一个layout就能看到这个网络了。
高级功能我也在研究中,上面这几个Cytoscape的插件和R的包都还是bug无数,大家使用的时候要随时做好自己debug的准备。
等修炼到一定水平再来更新这篇文章。
07-16-2010 Update:
有人放出了基于上述原理的R package,详见这里:http://db.systemsbiology.net:8080/cytoscape/gaggle/test/cy2rpc/public/index.html
本文转自:http://gossipcoder.com/?p=176