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

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

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

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商业版本,其中包括可视化、速度和用户界面方面的附加功能。

相关推荐

Redis集群对比:主从复制、哨兵模式、Cluster一文看懂所有优缺点

在分布式系统中,Redis作为高性能的内存数据库,其集群方案的选择直接影响到系统的稳定性、可用性和扩展性。本文将全面对比Redis的三种主流集群方案:主从复制、哨兵模式和Cluster模式,帮助开发者...

redis的主从复制,读写分离,主从切换

当数据量变得庞大的时候,读写分离还是很有必要的。同时避免一个redis服务宕机,导致应用宕机的情况,我们启用sentinel(哨兵)服务,实现主从切换的功能。redis提供了一个master,多个sl...

# Redis 入门到精通(九)-- 主从复制(3)

#Redis入门到精通(九)--主从复制(3)##一、redis主从复制-常见问题(1)###1、伴随着redis系统的运行,master的数据量会越来越大,一旦master重启...

redis - 主从复制(Redis主从复制时序图)

1引言在上一篇文章中,我们了解了Redis两种不同的持久化方式,Redis服务器通过持久化,把Redis内存中持久化到硬盘当中,当Redis宕机时,我们重启Redis服务器时,可以由RDB文件或AO...

# Redis 入门到精通(九)-- 主从复制(2)

#Redis入门到精通(九)--主从复制(2)##一、redis主从复制--数据同步阶段注意事项###1、数据同步阶段master说明1)如果master数据量巨大,数据同步阶段应...

Redis主从复制(redis主从复制主节点挂了)

介绍Redis有两种不同的持久化方式,Redis服务器通过持久化,把Redis内存中持久化到硬盘当中,当Redis宕机时,我们重启Redis服务器时,可以由RDB文件或AOF文件恢复内存中的数据。不过...

深入解析 Redis 集群的主从复制实现方式

在互联网大厂的后端开发领域,Redis作为一款高性能的内存数据库,被广泛应用于缓存、消息队列等场景。而Redis集群中的主从复制机制,更是保障数据安全、实现读写分离以及提升系统性能的关键所在。今...

Redis主从架构详解(redis主从架构高可用如何实现)

Redis主从架构搭建Redis主节点配置创建主节点目录(/opt/redis-master),复制redis.conf到该目录下,redis.conf配置项修改#后台启动daemonizeyes...

抖音“四大包塘战神”:承包了全网的快乐

在抖音钓鱼垂类领域,"包塘战神"军团正掀起一场黑色幽默风暴。空军华、大表坑、李赔光、透心良四位创作者,以承包鱼塘为舞台,用连续翻车的钓鱼直播构筑起流量奇观。当钓鱼佬在抖音集体转型喜剧人...

ORACLE 11G RAC 安装-通过VM配置共享磁盘

简介:在自己的电脑上通过VM软件搭建Oracle11GRAC,通过修改VM的参数文件来实现磁盘共享!目标:搭建RAC环境实现:使用VMwareWorkstation8.0.0+ORACLE...

Linux操作系统安全配置(linux系统安全配置包括)

一、服务相关命令systemctlenable服务名#开机自启动systemctldisable服务名#禁用开机自启动systemctlstop服务名#停止服务systemctls...

关于Linux性能调优中网络I/O的一些笔记

写在前面和小伙伴分享一些Linux网络优化的笔记,内容很浅,可以用作入门博文内容结合《Linux性能优化》读书笔记整理涉及内容包括常用的优化工具(mii-tool,ethtool,ifconfig,i...

从 Sonatype Nexus Repository Manager 迁移到 Artifactory

1.Nexus1.1下载下载链接:https://help.sonatype.com/repomanager3/product-information/download/download-archiv...

Ubuntu20安装zabbix5.0企业监控系统亲测教程

前言示例主机:zabbix10.0.100.10,将安装在UbuntuServer上教程说明:因使用官方教程无法安装成功,所以本教程与官方教程有所不同安装前提:已安装UbuntuServer2...

Linux内核设计与实现—进程管理(linux内核程序设计)

进程进程就是处于执行期的程序(目标码存放在某种存储介质上)。进并不仅仅局限于一段可执行程序代码(Unix称其为代码段,textsection)。通常进程还要包含其他资源,像打开的文件,挂起的信号,...