用R语言实现生物学网络阐明
当前位置:以往代写 > 其他教程 >用R语言实现生物学网络阐明
2019-06-14

用R语言实现生物学网络阐明

用R语言实现生物学网络阐明

其实用R语言做生物学网络阐明是个不错的选择,基于R体系下的Bioconductor项目为用户提供了网络阐明的整体办理方案。然而R的网络阐明优势却被很多人所忽视,认为“R就是用来做统计的,Bioconductor就是用来做芯片处理惩罚的”,其实当你把R看成像C或Java那样的编程语言,而把Bioconductor当成开源的网络办理项目时,你将对R强大的网络阐明成果另眼相看。

Bioconductor
(http://www.bioconductor.org/)是一个基于R语言的、面向基因组信息阐明的应用软件荟萃。Bioconductor的应用成果以包的集成形式出此刻用户眼前,它提供的软件包中包罗各类基因组数据阐明和注释东西,个中大大都东西是针对DNA微阵列或基因芯片数据的处理惩罚、阐明、注释及可视化的。同时,Bioconductor还提供很多与DNA微阵列相关的数据包。虽然,bioconductor网络阐明成果也很强大,它包罗graph、RBGL、Rgraphviz等软件包来实现网络阐明。graph包主要用于构建网络和简朴的对网络属性的操纵;RBGL包用于对网络阐明算法的实现,包罗求最短路径,求子网络等。Rgraphviz用于可视化网络。

用R做网络阐明的长处是(1)编程简朴。不像java、c等那么难学。(2)网络阐明机动。Cytoscape(http://www.cytoscape.org/)等主流的生物学网络阐明软件,只能做通例的、牢靠的网络阐明。如:你把网络凭据它的名目要求输进去,就能输出很多阐明的报表。假如你要是想通过修改图的广度优先算法来实现你的非凡的网络阐明算法。Cytoscape这样的软件是帮不上忙的,因为他们是傻瓜式的:点鼠标,就给牢靠的“它们实现的算法”的阐明功效。

以下将团结例子来使各人相识奈何用R中的函数来实现生物学网络阐明(内容将不绝更新!)。在进修这个部门之前,首先需要在R中安装graph、RBGL、Rgraphviz包。包的下载地点为http://bioconductor.org/packages/release/Software.html。

例子1:构建一个4个卵白质组成的卵白质网络(卵白质1与2、3有物理互作,即边)。

library(graph)

#成立一个character范例的变量,存储卵白质网络的结点集

nodes<-c(“protein1″,”protein2″,”protein3″,”protein4”)

g1<-new(“graphNEL”,nodes=nodes,
edgemode=”undirected”)

#看一下结果

library(Rgraphviz)

plot(g1)

#加一条边

g2
<- addEdge(“protein1″,”protein2”,
g1)

plot(g2)

#再加一条边

g3 <-
addEdge(“protein1″,”protein3”,
g2)

plot(g3)

假如想加结点,有一个与addEdge雷同的函数addNode。如:加一个卵白质(protein5),它有protein1有一条边。可以这样做:

g4<-addNode(“protein5”,g3)

g5<-addEdge(“protein1″,”protein5”,g4)

plot(g5)

例子2:通过一次性输入边荟萃来构建例1的网络。

代码如下:

nodes<-c(“protein1″,”protein2″,”protein3″,”protein4”)

#构建一个空的长度为4的list变量edges。edges中将存储边的信息。它的长度为4,暗示网络有4个结点。

edges<-vector(“list”,length=4)

#把这4个结点的名称赋给edges的名称属性。

names(edges)<-nodes

#构建边protein1-protein2,protein1-protein3

edges[[1]]<-list(edges=c(“protein2″,”protein3”))

#构建边protein2-protein1

edges[[2]]<-list(edges=c(“protein1”))

#构建边protein3-protein1

edges[[3]]<-list(edges=c(“protein1”))

#构建网络

gR<-
new(“graphNEL”, nodes=nodes,
edgeL=edges,edgemode=”undirected”)

进修小能力:(1)假如你想能干R,那么你就要只管领略经典的R函数或类是奈何开拓的,想想它们是为什么要这样构建函数或类?长处是什么?如:看一下edges变量的功效(如下)。你会发明edges是一个两层的list布局。为什么要这样构建呢?假如你要是想开拓雷同的类,你可以或许应用这种能力么?(2)通过edges变量的构建和功效(如下),我们也可以更深的领略list范例变量的构建和应用。(list范例但是R中最巨大、最重要的变量哦!)

$protein1

$protein1$edges

[1]
“protein2” “protein3”

$protein2

$protein2$edges

[1]
“protein1”

$protein3

$protein3$edges

[1]
“protein1”

$protein4

NULL

    关键字:

在线提交作业