百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

涛哥系列文章(28):信号通路影响分析(SPIA)

bigegpt 2024-09-08 11:36 3 浏览

1概述

此软件包实现信号通路影响分析(Signaling Pathway Impact Analysis,SPIA)算法。SPIA使用一组差异表达基因及其倍数变化的信息,以及通路拓扑结构来评估这些通路在研究条件下的重要性。出于说明的目的,当前版本的SPIA算法仅包括用于人类和小鼠物种的过时的KEGG信号通路数据。然而,该软件包的当前版本包括从KEGG xml(KGML)文件生成所需的最新处理通路数据的函数,许可用户可以从KEGG的ftp站点为感兴趣的物种下载这些文件。此外,这些文件也可以使用Download KEGML按钮从每个路径的网页上单独下载。对于给定的生物物种,将被处理和分析的路径是:i)包含SPIA所考虑的基因/蛋白质之间的至少一种关系,以及ii)没有反应。

为SPIA分析准备的过时的KEGG数据于2012年9月7日从KEGG的网站下载的,包括人类和小鼠物种,并且做了预处理。

2使用SPIA软件包进行通路分析

我们使用基于Affymetrix基因芯片并可通过GEO获得的结直肠癌数据集(GSE4107)来演示该软件包的功能。实验包括10个正常样本和12个大肠癌样本。用affy软件包对原始数据进行RMA预处理,用limma软件包进行两组适度化t检验。从limma中的topTable函数获得最终结果的数据框作为SPIA的输入数据。这个名为top的数据框包含在SPIA软件包中的colorectalcancer数据集中。

library(SPIA)
data(colorectalcancer)
options(digits=3)
head(top)

为了让SPIA发挥作用,我们需要一个矢量,包含在两组之间具有log2倍数变化并且被认为有差异表达的基因。该矢量的名称必须是Entrez基因ID。以下几行将在top数据框中额外添加一列,将每个Affymetrix探针注释到Entrez ID。由于同一Entrez ID可能有多个探测集,因此有两种简单的方法可以获得每个基因的一个对数倍数变化。第一种选择是使用每个基因最显著的样本间的倍数变化,第二种选择是对同一基因的所有探针的对数倍数变化进行平均。在下面的示例中,我们使用了前一种方法。这个例子中的基因被称为差异表达,只要它们的FDR调整后的p值(q值)小于0.05。下列代码从top数据框开始,生成spia函数输入所需的两个矢量:

library(hgu133plus2.db)
x <- hgu133plus2ENTREZID
top$ENTREZ<-unlist(as.list(x[top$ID]))
top<-top[!is.na(top$ENTREZ),]
top<-top[!duplicated(top$ENTREZ),]
tg1<-top[top$adj.P.Val<0.1,]
DE_Colorectal=tg1$logFC
names(DE_Colorectal)<-as.vector(tg1$ENTREZ)
ALL_Colorectal=top$ENTREZ

DE_Colorecal是一个包含癌症和正常样本之间差异表达基因log2倍数变化的矢量,而ALL_Colorecal是一个在微阵列上描述所有基因的Entrez ID的矢量。DE_Colorecal的名称是与计算的对数倍数变化相对应的Entrez基因ID。

DE_Colorectal[1:10]
ALL_Colorectal[1:10]

SPIA算法将上述两个向量作为输入,并生成从最重要到最不重要的通路的表格。这可以通过调用spia函数来实现,如下所示:

# pathway analysis based on combined evidence; 
# use nB=2000 or more for more accurate results
res=spia(de=DE_Colorectal,all=ALL_Colorectal,organism="hsa",
         nB=2000,plots=FALSE,beta=NULL,combine="fisher",verbose=FALSE)
#make the output fit this screen
res$Name=substr(res$Name,1,10)
#show first 20 pathways, omit KEGG links
res[1:20,-12]

如果在上面的函数调用中将plots参数设置为TRUE,则会为存在差异表达基因的每条通路生成如图1所示的图。这些打印保存在当前目录下的pdf文件中。

根据过度表达证据和基于扰动的证据,可以使用函数plotP获得路径重要性的总体图,如图2所示。colorectal cancer pathway路径以绿色显示。

plotP(res,threshold=0.05)
points(I(-log(pPERT))~I(-log(pNDE)),
       data=res[res$ID=="05210",],col="green",pch=19,cex=1.5)

图2:colorectalcancer数据集的SPIA证据图。每条路径由一个点表示。用Fisher方法结合pPERT和pNDE得到的全局p值pG经Bonferroni校正后,红色斜线右侧的路径是显著的。在对全局p值pG进行FDR校正之后,蓝色斜线右侧的路径是重要的。

在此图中,水平轴表示p值(负对数),该p值对应于偶然获得给定路径上至少观察到的基因数量(NDE)的概率。垂直轴表示与恰好在给定路径上获得观测到的总累积量(tA)或更极端的概率相对应的p值(负对数)。Tarca等人描述了pPERT的计算。在图2中,每条路径都显示为一个圆点,而在Bonferroni校正之后5%(由plotP中的阈值参数设置)的有效路径以红色显示。

组合pPERT和pNDE的默认方法是Fisher的乘积法,如Tarca等人(2009)所述。

或者,可以使用正态反演方法结合这两种类型的证据,该方法在pPERT和pNDE同时较低时给出较小的pG值。这与Fisher的方法不同,Fisher的方法在两个p值中只有一个是低的时,就会产生较小的pG值。要使用正态反演方法,可以在调用spia函数时设置参数combine="norminv",或者通过从spia函数生成的结果数据框开始重新计算pG值。下面介绍了后一种方法,其中调用函数combfunc。

res$pG=combfunc(res$pNDE,res$pPERT,combine="norminv")
res$pGFdr=p.adjust(res$pG,"fdr")
res$pGFWER=p.adjust(res$pG,"bonferroni")
plotP(res,threshold=0.05)
points(I(-log(pPERT))~I(-log(pNDE)),data=res[res$ID=="05210",],
       col="green",pch=19,cex=1.5)

图3:结直肠癌数据集的SPIA证据图。每条路径由一个点表示。用正态反演方法结合pPERT和pNDE得到的全局p值pG经Bonferroni校正后,红色曲线右侧的路径是显著的。在对全局p值pG进行FDR校正之后,蓝色曲线右侧的路径是重要的。

由具有以红色突出显示的差异表达基因的KEGG提供的路径图像可以通过在网络浏览器中粘贴由函数spia产生的数据框的KEGGLINK列中可用的链接来获得。例如,

res[,"KEGGLINK"][20]
#[1] "http://www.genome.jp/dbget-bin/show_pathway?hsa04662+4792+2932+10892+10000+5579+10451+5291+5293+8503+1380+975+2213+2353+3725+3845+4893+25780+4772+4773+4776+11261+5533+5534+63928+5879+5880+974+973+5594+6654+6655+118788"

是上面的res数据框中显示第20条路径的KEGG链接。注意,这些数据集的结果可能与Tarca等人描述的结果不同。因为a)这里使用的路径数据库被更新,并且b)默认Beta值被改变。SPIA使用的描述基因/蛋白质之间不同类型关系(如激活或抑制)的图形的有向邻接矩阵可在用于人类的extdata/hsaSPIA.RData文件中获得。SPIA考虑的关系类型和给予它们的默认权重(β系数)为:

rel<-c("activation","compound","binding/association","expression","inhibition",
       "activation_phosphorylation","phosphorylation","inhibition_phosphorylation",
       "inhibition_dephosphorylation","dissociation","dephosphorylation",
       "activation_dephosphorylation","state change","activation_indirect effect",
       "inhibition_ubiquination","ubiquination", "expression_indirect effect",
       "inhibition_indirect effect","repression","dissociation_phosphorylation",
       "indirect effect_phosphorylation","activation_binding/association",
       "indirect effect","activation_compound","activation_ubiquination")
beta=c(1,0,0,1,-1,1,0,-1,-1,0,0,1,0,1,-1,0,1,-1,-1,0,0,1,0,1,1)
names(beta)<-rel
cbind(beta)

给定关系类型的值为0会导致从所有通路的分析中丢弃这些类型的关系。用户可以通过设置spia函数调用的beta参数随时更改beta的默认值。

用户可以生成自己的基因/蛋白质关系数据,并将其以hsaSPIA.RData文件中所示的列表格式放入。在此文件中,每个路径数据都包含在一个列表中:

load(file=paste(system.file("extdata/hsaSPIA.RData",package="SPIA")))
names(path.info[["05210"]])
path.info[["05210"]][["activation"]][25:35,30:40]

在上面的矩阵中,只允许0和1值。1表示列给出的基因/蛋白与行给出的基因/蛋白具有“激活”型关系。使用其他R软件包,如graph和Rgraphviz,可以可视化每条途径中每种类型的基因/蛋白质关系的丰度。首先,我们加载所需的包并创建一个函数,该函数可用于将SPIA使用的任何路径的每种类型的关系绘制为图形。

library(graph)
library(Rgraphviz)
plotG<-function(B){
  nnms<-NULL;colls<-NULL
  mynodes<-colnames(B)
  L<-list();
  n<-dim(B)[1]
  for (i in 1:n){
    L[i]<-list(edges=rownames(B)[abs(B[,i])>0])
    if(sum(B[,i]!=0)>0){
      nnms<-c(nnms,paste(colnames(B)[i],rownames(B)[B[,i]!=0],sep="~"))
      }
    }
  names(L)<-rownames(B)
  g<-new("graphNEL",nodes=mynodes,edgeL=L,edgemode="directed")
  plot(g)
  }

然后,基于hsaSPIA数据,我们绘制了ErbB信号通路中的“激活”关系。

plotG(path.info[["04012"]][["activation"]])

3用SPIA解析最新的KEGG XML文件

这里我们假设用户从KEGG ftp站点获得给定物种的所有感兴趣通路的KGML(xml)文件(或从KEGG网站逐个下载它们)。作为示例,我们在SPIA包安装的extdata/keggxml/hsa文件夹中包含了四个这样的文件,以演示如何解析这些文件并在路径的结果集合上运行SPIA。

mydir=system.file("extdata/keggxml/hsa",package="SPIA")
dir(mydir)
makeSPIAdata(kgml.path=mydir,organism="hsa",out.path="./")
res<-spia(de=DE_Colorectal, all=ALL_Colorectal, organism="hsa",data.dir="./")
res[,-12]

http://www.advaitabio.com/.提供了名为PathwayGuide的SPIA商业版本,其中包括可视化、速度和用户界面方面的附加功能。

相关推荐

恢复软件6款汇总推荐,帮你减轻数据恢复压力!

在当今数字化生活中,数据丢失的风险如影随形。无论是误删文件、硬盘故障,还是遭遇病毒攻击,丢失的数据都可能给我们带来不小的麻烦。此时,一款优秀的数据恢复软件就成为了挽救数据的关键。今天,为大家汇总推荐...

中兴星星一号刷回官方原版recovery的教程

【搞科技教程】中兴星星一号的官方recovery也来说一下了,因为之前给大家分享过了第三方的recovery了,之前给大家分享的第三方recovery也是采用一键刷入的方式,如果细心的朋友会发现,之前...

新玩机工具箱,Uotan柚坛工具箱软件体验

以前的手机系统功能比较单调,各厂商的重视程度不一样,所以喜欢玩机的朋友会解锁手机系统的读写权限,来进行刷机或者ROOT之类的操作,让使用体验更好。随着现在的手机系统越来越保守,以及自身功能的增强,...

三星g906k刷recovery教程_三星g906k中文recovery下载

【搞科技教程】看到有一些机友在找三星g906k的第三方recovery,下面就来说一下详细的recovery的刷入方法了,因为手机只有有了第三方的recovery之后才可以刷第三方的root包和系统包...

中兴星星2号刷recovery教程_星星二号中文recovery下载

【搞科技教程】咱们的中兴星星2手机也就是中兴星星二号手机的第三方recovery已经出来了,并且是中文版的,有了这个recovery之后,咱们的手机就可以轻松的刷第三方的系统包了,如果没有第三方的re...

数据恢复软件有哪些值得推荐?这 6 款亲测好用的工具汇总请收好!

在数字生活中,数据丢失的阴霾常常突如其来。无论是误删工作文档、格式化重要磁盘,还是遭遇系统崩溃,都可能让我们陷入焦虑。关键时刻,一款得力的数据恢复软件便是那根“救命稻草”。今天,为大家精心汇总6...

中兴u956刷入recovery的教程(中兴e5900刷机)

【搞科技教程】这次主要来给大家说说中兴u956手机如何刷入第三方的recovery,因为第三方的recovery工具是咱们刷第三方rom包的基础,可是很我欠却不会刷,所以太这里来给大家整理了一下详细的...

联想A850+刷recovery教程 联想A850+第三方recovery下载

【搞科技教程】联想A850+的第三方recovery出来了,这个第三方的recovery是非常的重要的,比如咱们的手机要刷第三方的系统包的时候,都是需要用到这个第三方的recovery的,在网上也是有...

工具侠重大更新 智能机上刷机一条龙完成

工具侠是针对玩机的机油开发的一款工具,不管是发烧级别的粉丝,还是普通小白用户,都可以在工具侠上找到你喜欢的工具应用。这不,最新的工具侠2.0.16版本,更新了专门为小白准备的刷机助手工具,以及MTK超...

shift+delete删除的文件找回6种硬盘数据恢复工具

硬盘作为电脑的重要存储设备,如同一个巨大的数字仓库,承载着我们日常工作、学习和生活中的各种文件,从珍贵的照片、重要的工作文档到喜爱的视频、音乐等,都依赖硬盘来安全存放。但有时,我们可能会不小心用sh...

使用vscode+Deepseek 实现AI编程 基于Cline和continue

尊敬的诸位!我是一名专注于嵌入式开发的物联网工程师。关注我,持续分享最新物联网与AI资讯和开发实战。期望与您携手探寻物联网与AI的无尽可能。这两天deepseek3.0上线,据说编程能力比肩Cl...

详解如何使用VSCode搭建TypeScript环境(适合小白)

搭建Javascript环境因为TypeScript不能直接在浏览器上运行。它需要编译器来编译并生成JavaScript文件。所以需要首先安装好javascript环境,可以参考文章:https://...

使用VSCode来书写你的Jupyter Notebooks

现在你可以在VScode里面来书写你的notebook了,使用起来十分的方便。下面来给大家演示一下环境的搭建。首先需要安装一个jupyter的包,使用下面的命令安装:pip3install-ih...

使用VSCode模板提高Vue开发效率(vscode开发vue插件)

安装VSCode安装Vetur和VueHelper插件,安装完成后需要重启VScode。在扩展插件搜索框中找到如下Vetur和VueHelper两个插件,注意看图标。添加Vue模板打...

干货!VsCode接入DeepSeek实现AI编程的5种主流插件详解

AI大模型对编程的影响非常之大,可以说首当其冲,Cursor等对话式编程工具渐渐渗透到开发者的工作中,作为AI编程的明星产品,Cursor虽然好用,但是贵啊,所以咱们得找平替,最好免费那种。俗话说,不...