内容

1这一切从何而来?

测试已知的生物功能或过程是否在实验衍生的基因列表中过度表达(=丰富),例如差异表达(DE)基因列表。看到Goeman和Buehlmann, 2007为了一篇批判性的评论。

例如:转录组学研究,其中12,671个基因已经测试了两个样本条件之间的差异表达,529个基因被发现。

在DE基因中,有28个被注释为特定功能基因集,总共包含170个基因。这个设置对应于一个2x2列联表,

deTable <- matrix(c(28,142,501, 12000), nrow = 2, dimnames = list(c("DE", "Not.DE"), c("In.gene. DE")。set", "Not.in.gene.set"))
## In.gene.set Not. In.gene.set ## DE 28 501 ##不德142 12000

其中,28个基因的重叠可以根据超几何分布进行评估。这与费雪精确检验的片面版本相对应,在这里产生了显著的丰富。

费舍尔。test(deTable, alternative = "greater")
## ## Fisher计数数据的精确检验## ## Data: deTable ## p-value = 4.088e-10 ##替代假设:真实比值比大于1 ## 95%置信区间:## 3.226736 Inf ##样本估计值:##比值比4.721744

这一基本原则是主要的公共和商业致富工具的基础,如大卫而且通路工作室

虽然基因集富集方法主要是在转录组数据上开发和应用的,但它们最近也被修改、扩展并应用于基因组和生物医学研究的其他领域。这包括蛋白质组学和代谢组学数据以及基因组区域和疾病表型的功能富集分析的新方法,Lavallee和Yates, 2016Chagoyen等人,2016McLean等人,2010年里德等人,2012年

2基于基因表达的富集分析

研讨会的第一部分主要是基于EnrichmentBrowser包,它实现了用微阵列和RNA-seq测量的高通量基因表达数据的分析管道。在类似工作流程的方式中,该包汇集了一系列已建立的Bioconductor包,用于基因表达数据分析。它集成了广泛的基因集富集分析方法,促进了跨方法的结果的组合和探索。

库(EnrichmentBrowser)

欲知详情,请参阅装饰图案而且出版

2.1入门术语,现有方法和统计理论

基因集,通路和调控网络

基因集通常是功能相关基因的简单列表,没有进一步说明基因之间的关系。

通路可以解释为特定的基因集,通常代表在生物过程中共同工作的一组基因。途径通常分为代谢途径和信号通路。代谢途径,如糖酵解代表生化底物转化由特定的酶。信号通路如MAPK信号通路描述了从受体蛋白到转录因子的信号转导级联,导致特定靶基因的激活或抑制。

基因调控网络描述了调控因子(如转录因子和microRNAs)对其靶基因表达的相互作用和影响。

资源

而且KEGG注释最常用于功能基因集的富集分析。尽管基因集和途径数据库的数量不断增加,但由于它们长期以来的管理和对广泛物种的可用性,它们通常是首选。

基因本体论(GO)由三个主要的子本体论组成,根据分子功能(MF)、生物过程(BP)和细胞成分(CC)对基因产品进行分类。每个本体由GO术语组成,这些术语定义了特定基因注释的mf、bp或cc。这些术语被组织在有向无环图中,其中术语之间的边表示不同类型的关系。它们根据父子模式将术语联系起来,即父术语表示更一般的实体,而子术语表示更具体的实体。

KEGG:京都基因和基因组百科全书(KEGG)是一个手工绘制的表达分子相互作用和反应网络的路径图的集合。这些途径涵盖了广泛的生化过程,可分为7大类:代谢、遗传和环境信息处理、细胞过程、有机体系统、人类疾病和药物开发。代谢和药物开发途径通过说明化合物之间的反应而区别于其他5类途径。其他5类的通路说明了基因和基因产物之间的分子相互作用。

基因集分析与基因集富集分析

主要使用的两种浓缩方法是:

然而,这个术语基因集富集分析如今,它包含了一个由各种方法实施的总体战略黄等,2009.这些方法都有相同的目标,尽管方法和统计模型可能有很大的不同Goeman和Buehlmann, 2007Khatri等,2012

为了更好地区分具体的方法,一些作者使用了术语基因集分析表示总的策略不过,也有具体的方法从Efron和Tibshirani, 2007这个名字。

基础空:竞争性与自成体系

Goeman和Buehlmann, 2007将现有的浓缩方法分为有竞争力的而且自包含的基于潜在的零假设。

尽管作者认为一个自包含的null更接近实际的问题,但绝大多数富集方法都是竞争性的。

Goeman和Buehlmann进一步提出了关于2x2 ORA的几个关键问题:

关于这些统计问题,GSEA被认为是优越的:

然而,后续的改进方法并不能满足ORA的简单性和通用性。例如,GSEA需要表达数据作为输入,这对于其他实验类型的基因列表是不可用的。另一方面,所涉及的样品排列过程已被证明是不准确和耗时的Efron和Tibshirani, 2007菲普森和史密斯,2010拉森和欧文,2015年

代:ora, fcs和基于拓扑的

Khatri等,2012我们采取了稍微不同的方法,将方法按照开发的时间轴分为三代:

  1. 生成:基于2x2列联表检验的ORA方法,
  2. 生成:功能类评分(FCS)方法,如GSEA,通过汇总每个基因的DE统计数据来计算基因集(=功能类)评分,
  3. 生成:基于拓扑的方法,明确考虑到信号通路和基因调控网络中定义的基因之间的相互作用(Geistlinger等人,2011举个例子)。

虽然基于拓扑(也:基于网络)的方法似乎是最现实的,但它们的直接应用可能会受到转录水平上无法检测到的特征(如蛋白质-蛋白质相互作用)和网络知识不足的影响Geistlinger等人,2013Bayerlova等人,2015

鉴于现有方法的个别好处和局限性,需要谨慎地解释结果,以得出有效的结论。虽然没有一种方法最适合所有应用场景,但应用多种方法可能是有益的。这已被证明可以过滤掉个别方法的虚假命中,从而减少从不同方法积累证据的基因集的结果Geistlinger等人,2016Alhamdoosh等人,2017

2.2数据类型

虽然RNA-seq(读计数数据)已经成为事实上的作为转录组分析的标准,重要的是要知道许多差异表达和基因集富集分析的方法最初是为微阵列数据(强度测量)开发的。

然而,数据分布假设的差异(微阵列:准正态,RNA-seq:负二项)使得差异表达分析的适应,在某种程度上也使得基因集富集分析的适应成为必要。

因此,我们考虑了两个示例数据集-微阵列和RNA-seq数据集,并讨论了各自分析步骤的异同。

对于微阵列数据,我们考虑急性淋巴细胞白血病患者的表达测量Chiaretti等人,2004年.在这些患者中发现的一种常见的染色体缺陷是易位,其中9号染色体和22号染色体的部分位置交换。这导致了通过将9号染色体上的ABL1基因定位到22号染色体上的BCR基因的一部分而产生的致癌融合基因BCR/ABL。

我们装载所有数据集

库(全部)数据(所有)

并选择BCR/ABL融合和未融合的b细胞ALL患者,如前所述绅士等,2005年

ind.bs <- grep("^B", ALL$BT) ind.mut <- where (ALL$mol. BT)biol %in% c("BCR/ABL", "NEG")) sset <- intersect(ind。bs, ind.mut) ALL .eset <- ALL[, sset]

我们现在可以访问表达值,这是79个患者(列)12,625个探针(行)的对数强度测量值。

暗(all.eset)
##功能示例## 12625 79
exprs (all.eset) [1:4, 1:4]
## 100_at 7.597323 7.479445 7.567593 7.905312 ## 1001_at 5.046194 4.932537 4.799294 4.844565 ## 1002_f_at 3.900466 4.208155 3.886169 3.416923 ## 1003_s_at 5.903856 6.169024 5.860459 5.687997

由于每个基因通常有多个探针,因此我们将基因表达值作为相应探针值的平均值来计算。

all.eset <- probe.2.gene.eset(all.eset) head(featurename (all.eset))
##[1]“5595”“7075”“1557”“643”“1843”“4319”

对于RNA-seq数据,我们考虑了四种主要人类气道平滑肌细胞系在两种条件下的转录组谱:对照和地塞米松治疗Himes等人,2014年

我们装载气道数据集

库(气管)数据(气管)

并创建一个Biobase: ExpressionSet

air.eset <- as(气道,"ExpressionSet") annotation(air.eset) <- "hsa"

注:这里我们从SummarizedExperimentExpressionSet作为功能在富集浏览器是明确设计的基因级表达数据,为此ExpressionSet可以持续使用。

为了进一步分析,我们只保留注释为ENSEMBL基因ID的基因。

air.eset <- air.eset[grep("^ENSG", rownames(air.eset)),] dim(air.eset)
##功能示例## 63677
exprs (air.eset) [1:4, 1:4]
## srr1039508 srr1039509 srr1039512 srr1039513 ## ensg00000000003 679 448 873 408 ## ensg00000000005 0000 ## ensg00000000419 467 515 621 365 ## ensg00000000457 260 211 263 164

2.3微分表达式分析

高通量表达数据的归一化对于使实验内部和实验之间的结果具有可比性至关重要。微阵列(强度测量)和RNA-seq(读取计数)数据通常显示需要标准化的不同特征。由于这超出了本次研讨会的范围,我们参考limma用于微阵列归一化和EDASeq用于RNA-seq正常化。另请参阅EnrichmentBrowser:规范化,它包装了常用的功能以进行规范化。

的功能中集成了已建立的功能limma用于差分表达式分析的包。这涉及到当应用于RNA-seq数据时。或者,RNA-seq数据的差异表达分析也可以基于负二项分布进行刨边机而且DESeq2

这可以使用函数来执行EnrichmentBrowser: de.ana并假设一些标准化的变量名:

有关实验设计的更多信息,请参阅Limma用户指南,第九章。

对于ALL数据集,集团变量表示BCR-ABL基因融合是否存在(1)(0)。

pData(all.eset)$GROUP <- ifelse(all.eset$mol.biol == "BCR/ABL", 1,0) table(pData(all.eset)$GROUP)
## ## 0 1 ## 42 37

对于气道数据集,它表示细胞系是否用地塞米松处理过(1)(0)。

pData(air.eset)$GROUP <- ifelse(colData(airway)$dex == "trt", 1,0) table(pData(air.eset)$GROUP)
## ## 0 1 ## 4 4

配对样品,或一般样品批次/块,可以通过a定义中的列。pData槽。对于气道数据集,样本块对应于四种不同的细胞系。

pData(air.eset)$BLOCK <- colData(气道)$cell table(pData(air.eset)$BLOCK
## ## n052611 n061011 n080611 n61311 ## 2 2 2 2 2

对于微阵列数据,使用EnrichmentBrowser: de.ana函数从函数出发进行了基于函数的微分表达式分析limma包中。结果是log2倍的变化t以及派生的p每个基因的-值附加到fData槽。

<- de.ana(all.eset) head(fData(all.eset), n=4)
## FC ADJ.PVAL limma。0.04296986 0.8996597 0.7346897 ## 7075 0.03208350 0.9494365 0.4546963 ## 1557 -0.04394014 0.8184362 -1.0658081 ## 643 -0.02775435 0.9296705 -0.5674048

名义上的p-值已经被多次测试修正(ADJ.PVAL)采用Benjamini和Hochberg的方法实现统计数据::p.adjust

对于RNA-seq数据,使用de.ana函数可以用来进行两组之间的差异表达分析limma(包括转换),或者是经常使用的刨边机DESeq2包中。在这里,我们使用基于的分析刨边机

air.eset <- de.ana(air.eset, de.method="edgeR")
##排除50740个不满足最小cpm阈值的基因
头(fData (air.eset), n = 4)
## FC ADJ.PVAL边缘。eng00000000003 -0.40494099 9.700883e-05 18.75561361 ## ENSG00000000419 0.18305320 1.356563e-01 3.48605567 ## ENSG00000000457 0.01455321 9.423545e-01 0.01477962 ## ENSG00000000460 -0.13467114 6.537338e-01 0.43278224

2.4基因集

我们现在感兴趣的是已知的预先定义的基因是否一起工作,例如在基因本体论或者是KEGG路径注释,是坐标差异表达。这个函数get.kegg.genesets下载所选生物体的所有KEGG路径(此处:智人)作为基因集,使用NCBI Entrez gene IDs。

kegg。Gs <- get.kegg.genesets("hsa")

类似地,函数get.go.genesets检索所选本体(这里:生物过程,BP)的GO术语GO.db注释包。

走了。Gs <- get。go。genesets(org="hsa", onto="BP", mode="GO.db")

用户定义的基因集可以从GMT文件格式解析。在这里,我们使用这个功能来读取已经下载的KEGG基因集列表智人包含NCBI Entrez基因id。

数据。Dir <- system。文件("extdata", package="EnrichmentBrowser")File <- File .path(data. path)Dir, "hsa_kegg_gs.gmt") hsa。gs <-解析.genesets.from. gmt (gmt.file) length(hsa.gs)
## [1]
hsa.gs [1:2]
# # # # $ hsa05416_Viral_myocarditis[1]“100509457”“101060835”“1525”“1604”“1605”“1756”“1981”“1982”# #[9]“25”“2534”“27”“3105”“3106”“3107”“3108”“3109”# #[17]“3111”“3112”“3113”“3115”“3117”“3118”“3119”“3122”# #[25]“3123”“3125”“3126”“3127”“3133”“3134”“3135”“3383”# #[33]“3683”“3689”“3908”“4624”“4625”“54205”“5551”“5879”# #[41]“5880”“5881”“595”“60”“637”“6442”“6443”“6444”# #[49]“6445”“71”“836”“841”“842”“857”“8672”“940”# #[57]“941”“942”“958”“959”## ## $ ' hsa04622_rigg - i -like_receptor_signaling_pathway ' ## [1] "10010" "1147" "1432" "1540" "1654" "23586" "26007" "29110" "338376" "3443" "3444" "3444" "3444" "3446" "3444" "3446" "3446" "3456" "3467" "3451" "3452" "3456" "3551" "3576" "3592" "3593" "3627" ## [31] "3661" "3665" "4214" "4790" "4792" "4793" "5300" " 5506 " "5602" "5603" "56832" "57506" "6300" "64135" "64343" ## [51] "6885" "7124" "7186" "340061" ## [51] "6885" "7124" "7186" "3447" "3448" ## [21] "3449" "3451" "3576" "3592" "3593" "3627" ## b[41] "5600" "5601" "5602" "5603" "64135" "64343""7189" "7706" "79132" "79671" "80143" "841" ## [61] "843" "8517" "8717" "8737" "8772" "9140" "9474" "9636" "9641" "9755"

另请参阅MSigDb用于额外的基因集集合。

2.5GO/KEGG过度代表分析

目前已经提出了多种基因集分析方法Khatri等,2012.最基本,但常用的方法是过度表示分析(ORA),根据GO或KEGG定义基因集。如第一节所述,ORA测试DE基因之间的重叠(通常是DEp-value < 0.05)和基于超几何分布的基因集中的基因。这里,我们选择一个显著性水平\(\alpha = 0.2\)为演示。

奥拉。所有<- sbea(method="ora", eset= All .eset, gs=hsa。Gs, perm=0, alpha=0.2)
## 7行4列的数据框架设置NR.GENES NR.SIG.GENES P.VALUE # # <人物> <数字> <数字> <数字> # # 153 17 hsa05202_Transcriptional_misregulation_in_cancer 0.0351 # # 2 hsa05412_Arrhythmogenic_right_ventricular_cardiomyopathy_ (ARVC) 63 8 0.0717 # # 3 hsa05144_Malaria 45 6 0.0932 # # 4 hsa04670_Leukocyte_transendothelial_migration 0.1620 94 64 0.1220 # # 5 hsa05100_Bacterial_invasion_of_epithelial_cells 7 # # 6 hsa04622_RIG-I-like_receptor_signaling_pathway 54 6 0.1780 # # 7hsa05130病原菌大肠杆菌感染43 5 0.1840

这样一个排名列表是大多数现有丰富工具的标准输出。使用ea.browse函数创建一个HTML摘要,从中可以更详细地检查每个基因集。

ea.browse (ora.all)

生成的总结页面包括每个重要的基因集

由于ORA作用于DE基因列表,而不是实际的表达值,因此可以直接应用于RNA-seq数据。然而,由于这里的基因集包含NCBI Entrez基因id,而气道数据集包含ENSEMBL基因id,我们首先将气道数据集映射到Entrez id。

air.eset <- map.ids(air.eset, org="hsa", from="ENSEMBL", to="ENTREZID")
## 'select()'返回1:多个键和列之间的映射
##排除了1144个没有对应的基因。ID
##遇到22个来自。IDs with >1 corresponding to.ID (a single to.ID was chosen for each of them)
奥拉。Air <- sbea(method="ora", eset= Air .eset, gs=hsa。Gs .ranking(ora.air)
##数据框架8行4列##基因。设置NR.GENES NR.SIG.GENES P.VALUE # # <人物> <数字> <数字> <数字> # # 1 hsa05206_MicroRNAs_in_cancer 121 71 0.000423 # # 2 hsa05410_Hypertrophic_cardiomyopathy_ (HCM) 53 35 0.000765 # # 3 hsa05412_Arrhythmogenic_right_ventricular_cardiomyopathy_ (ARVC) 48 31日0.002670 # # 4 hsa05218_Melanoma 50 32 0.002830 # # 5 hsa05214_Glioma 47 106 0.004070 # # 6 hsa04068_FoxO_signaling_pathway 58 0.012800 # # 7 hsa04670_Leukocyte_transendothelial_migration 62 35 0.028600 # # 8 hsa05144_Malaria 21 140.029300

注意1:Young等人,2010年他们报道了ORA在RNA-seq数据上的偏倚结果,原因是对长和高表达转录本的差异表达过度检测。的goseq包和limma: goana实现调整ORA基因长度和丰度偏差的可能性。

注2:与所研究的表达数据类型无关,基因集之间的重叠可能导致冗余发现。这是GO(父-子结构,Rhee等人,2008年)和KEGG(通路重叠/串扰,Donato et al., 2013).的topGO包(显式为GO设计)和mgsa(适用于任意基因集定义)实现ORA的修改以解释这种冗余。

2.6功能类评分和排列测试

ORA的一个主要限制是它将分析限制在DE基因上,排除了不满足所选显著性阈值的基因(通常是绝大多数)。

这是通过基因集富集分析(GSEA)解决的,它对基因集成员出现在所有测量基因排名列表的顶部或底部的趋势进行评分Subramanian et al., 2005.通过样本置换来评估基因集富集分数(ES)的统计显著性,即(1)打乱样本标签(=组分配),(2)重新计算每个基因的DE统计量,(3)重新计算富集分数。多次重复这一过程可以确定富集分数的经验分布,并将观察到的富集分数与之进行比较。在这里,我们进行了1000个排列的GSEA。

gsea。所有<- sbea(method="gsea", eset= All .eset, gs=hsa。gs、烫= 1000)
排列:1—100
排列:101—200
排列:201—300
排列:301—400
排列:401—500
排列:501—600
排列:601—700
排列:701—800
排列:801—900
排列:901—1000
##处理…
gs.ranking (gsea.all)
19行4列的数据框架SET ES NES P.VALUE ## <字符> <数字> <数字> <数字> ## 1 hsa05202_转录异常调节癌症-0.530 -1.72 0.00000 ## 2 hsa04520_连接-0.488 -1.73 0.00000 ## 3 hsa05412_心律失常性右心室心肌病(ARVC) -0.511 -1.87 0.00000 ## 4 hsa05206_micrornas_in_癌症-0.427 -1.56 0.00201 ## 5 hsa05416_病毒性心肌炎-0.630 -1.88 0.00201 ## ... ... ... ... ...16 hsa05134_军团菌-0.599 -1.56 0.0271 ## 17 hsa05130_病原菌-0.486 -1.51 0.0295 ## 18 hsa04210_凋亡-0.424 -1.43 0.0428 ## 19 hsa05131_志贺氏菌-0.479 -1.52 0.0477

由于GSEA的排列过程涉及到每基因DE统计量的重新计算,因此RNA-seq的适应是必要的。richmentbrowser实现了一个相应的GSEA改编版本,它允许在GSEA中合并limma/voom、edgeR或DESeq2进行重复DE重新计算。然而,这需要大量的计算(对于limma/voom最少,对于DESeq2最多)。请注意,使用edgeR进行DE分析后,仅100个排列的运行时间相对较长。

gsea。Air <- sbea(method="gsea", eset= Air .eset, gs=hsa。gs、烫= 100)

虽然在某些情况下对RNA-seq数据应用基于排列的GSEA可能是必要的,但也有避免排列的替代方法。其中包括旋转基因集测试(ROAST),它使用旋转而不是排列吴等,2010

烤。Air <- sbea(method="roast", eset= Air .eset, gs=hsa.gs) gs.ranking(roast. Air)
##数据框架28行4列SET nrgenes DIR P.VALUE ## <字符> <数字> <数字> <数字> ## 1 hsa05100_bacterial_invasion_of_上皮细胞60 1 0.001 ## 2 hsa05416_病毒性心肌炎33 1 0.001 ## 3 hsa03420_Nucleotide_excision_repair 42 -1 0.001 ## 4 hsa03030_DNA_replication 33 -1 0.001 ## 5 hsa04520_Adherens_junction 63 1 0.002 ## ... ... ... ... ...细胞粘附分子(CAMs) 60 -1 0.036 ## 26 hsa04350_TGF-beta_signaling_pathway 63 1 0.037 ## 27 hsa00561_甘油脂代谢39 1 0.040 ## 28 hsa04068_FoxO_signaling_pathway 106 1 0.049

还可以选择其他方法:

sbea.methods ()
# #[1]“奥拉”“安全”“gsea”“samgs”“循证医学”“mgsa”“gsa”# #[8]“padog”“globaltest”“烤”“相机”“gsva”

2.7基于网络的富集分析

在发现了差异表达富集的基因集后,我们现在感兴趣的是这些发现是否可以被已知的调控相互作用所支持。

例如,我们想知道转录因子及其靶基因是否按照连接规则(激活/抑制)表达。这些信息通常是在基因调控网络中给出的,这些基因调控网络来源于特定的实验或从文献中编译而来(Geistlinger等人,2013举个例子)。

有充分研究的过程和生物,全面和充分注解的调控网络是可用的,例如RegulonDB大肠杆菌而且Yeastract酿酒酵母

然而,也有这样一个网络缺失或至少不完整的情况。一个基本的解决方法是根据KEGG数据库中的规则编译一个网络。

我们可以下载特定生物的所有KEGG途径(这里:智人)通过

Pwys <- download.kegg. paths ("hsa")

出于演示目的,我们使用已经下载的人类KEGG路径。

Pwys <- file.path(data. path)目录,“hsa_kegg_pys .zip”)hsa。GRN <- compile.grn.from.kegg(pwys) head(hsa.grn)
从输入# # # #(1)“3569”“3570 " "+" ## [ 2)“3458”“3459 " "+" ## [ 3)“3458”“3460 " "+" ## [ 4)“1950”“1956 " "+" ## [ 5)“1950”“2064 " "+" ## [ 6)“1950”“3480”“+”

信号通路影响分析(Signaling pathway impact analysis, SPIA)是一种基于网络的富集分析方法,专为KEGG信号通路设计塔尔卡等人,2009年.该方法结合ORA评估表达式更改是否在路径拓扑中传播。

spia。所有<- nbea(method="spia", eset= All .eset, gs=hsa。gs,入库单=奇闻奇事。Grn, alpha=0.2) gs.ranking(spia.all)

更普遍适用的是基因图谱富集分析(GGEA),它评估给定基因调控网络中相互作用与观察到的表达数据的一致性Geistlinger等人,2011

ggea。所有<- nbea(method="ggea", eset= All .eset, gs=hsa。Gs, grn=hsa.grn) Gs .ranking(gge .all)
##数据框架4行5列将nrrels设置为生的。评分标准。SCORE P.VALUE ## <字符> <数字> <数字> <数字> <数字> ## 1 hsa05416_病毒性心肌炎7 3.30 0.471 0.00699 ## 2 hsa04390_Hippo_signaling_pathway 56 20.60 0.368 0.01800 ## 3 hsa04520_addiens_junction 9 3.88 0.431 0.02300 ## 4 hsa04210_凋亡19 7.45 0.392 0.02600

还可以选择其他基于网络的方法:

nbea.methods ()
##[1]“ggea”“spia”“nea”“pathnet”“netgsa”“degraph”##[7]“topologygsa”“ganpa”“cepa”“lego”

注1:由于基于网络的富集方法通常不涉及样本排列,而是涉及网络排列,从而避免了DE的重新计算,因此它们同样可以应用于RNA-seq数据。

注2:鉴于各种丰富方法都有各自的优点和局限性,结合多种方法可能是有益的,例如结合应用基于集的方法和基于网络的方法。这已被证明可以过滤掉个别方法的虚假命中,并将结果减少到从不同方法积累证据的基因集Geistlinger等人,2016Alhamdoosh等人,2017

这个函数comb.ea.results实现结果的直接组合,从而促进跨方法的结果的无缝比较。为了演示,我们使用上一节中ALL数据集的ORA和GSEA结果:

Res.list <- list(ora. list)所有,gsea.所有)梳子。Res <- comb.ea.results(Res .list) gs.ranking(comb.res)
##数据框架与20行6列##基因。奥拉。GSEA排名。等级的意思。RANK ## <字符> <数字> <数字> <数字> ## 1 hsa05202_转录调节失调_癌症2.6 7.7 5.1 ## 2 hsa05412_心律失常致右心室心肌病(ARVC) 5.1 7.7 6.4 ## 3 hsa04670_白细胞跨内皮细胞迁移10.3 17.9 14.1 ## 4 hsa04520_连接20.5 7.7 14.1 ## 5 hsa05206_micrornas_in_癌症23.1 12.8 17.9 ## # ... ... ... ... ...## 16 hsa05410_肥厚性心肌病_(HCM) 41.0 51.3 46.2 ## 17 hsa00790_folate_生物合成53.8 38.5 46.2 ## 18 hsa04621_nod - like_受体_信号通路61.5 33.3 47.4 ## 19 hsa04350_tgf - beta_信号通路38.5 59.0 48.7 ## 20 hsa05150_葡萄球菌_aureus_感染79.5 25.6 52.6 ## ORA。PVAL GSEA。PVAL ## <数值> <数值> ## 1 0.0351 0.00000 ## 2 0.0717 0.00000 ## 3 0.1220 0.00765 ## 4 0.2010 0.00000 ## 5 0.2250 0.00201 ## # ... ... ...16 0.403 0.0565 ## 17 0.556 0.0204 ## 18 0.631 0.0198 ## 19 0.390 0.0982 ## 20 0.851 0.0120

3.基因组区富集分析

微阵列和下一代测序也广泛应用于大规模检测可变和调控基因组区域,例如单核苷酸多态性、拷贝数变异和转录因子结合位点。

这种实验衍生的基因组区域集提出了与基因表达数据分析中功能富集类似的问题。

因此,特别有趣的是,实验衍生区域是否与代表已知功能特征(如基因或启动子)的区域重叠更多(富集)或更少(耗尽)。

地区包实现了一个基于排列抽样的测试基因组区域重叠的通用框架。这允许从基因组中重复随机取样,匹配所研究区域的大小和染色体分布。通过重新计算每个排列中与功能特征的重叠,可以评估观察到的重叠的统计显著性。

库(地区)

为了证明该包的基本功能,我们考虑了人类基因组中基因启动子区域和CpG岛的重叠。由于启动子区富含gc,我们希望能找到富集。因此,CpG岛和启动子之间的重叠是否比预期的要大?

我们使用中描述的CpG岛集合吴等,2010将它们限制在1-23号标准染色体上,X,Y

cpgHMM <- toGRanges("http://www.haowulab.org/software/makeCGI/model-based-cpg-islands-hg19.txt") cpgHMM <- filterchromosome (cpgHMM, chrc .type="canonical") cpgHMM <- sort(cpgHMM) cpgHMM .type="canonical") cpgHMM
GRanges对象,包含63705个范围和5个元数据列:# # seqnames范围链|长度CpGcount GCcontent pctGC obsExp # # < Rle > < IRanges > < Rle > | <整数> <整数> <整数> <数字> <数字> # # [1]chr1(10497、11241)* | 745 110 549 0.737 - 1.106 # # [2]chr1(28705、29791)* | 1087 115 792 0.729 - 0.818 # # [3]chr1(135086、135805)* | 720 42 484 0.672 - 0.548 # # [4]chr1(136164、137362)* | 1199 71 832 0.694 - 0.524 # # [5]chr1(137665、138121)* 457 (|)22 301 0.659 - 0.475  ## ... ... ... ... . ... ... ... ... ...## [63701] chrY [59213702, 59214290] * | 589 43 366 0.621 0.765 ## [63702] chrY [59348047, 59348370] * | 324 17 193 0.596 0.593 ## [63704] chrY [59349137, 59349565] * | 429 31 276 0.643 0.7 ## [63705] chrY [59361489, 59362401] * | 913 128 650 0.712 1.108 ## ------- ## seqinfo:来自未指定基因组的24个序列;没有seqlengths

类似地,我们加载启动子区域hg19人类基因组组装从加州大学

promoter <- toGRanges("http://gattaca.imppc.org/regioner/data/UCSC.promoters.hg19.bed") promoter <- filterchromosome (promoter, chrc .type="canonical") promoter <- sort(promoter) promoter
## seqnames ranges strand | V4 V5 V6 ##    |    ## [1] chr1 [9873,12073] * | TSS。+ ## [2] chr1 [16565, 18765] * | TSS;- ## [3] chr1 [17551, 19751] * | TSS。- ## [4] chr1 [17861,20061] * | TSS。- ## [5] chr1 [19559,21759] * | TSS。- ## ... ... ... ... . ... ... ...## [49045] chrY [59211948, 59214148] * | TSS。+ ## [49046] chrY [59328251, 59330451] * | TSS。+ ## [49047] chrY [59350972, 59353172] * | TSS。+ ## [49048] chrY [59352984, 59355184] * | TSS。 + ## [49049] chrY [59360654, 59362854] * | TSS . - ## ------- ## seqinfo: 24 sequences from an unspecified genome; no seqlengths

为了加快示例的速度,我们将分析限制在染色体21和22上。注意,这样做只是为了演示。为了做出准确的声明,应该使用完整的区域集(然而,它运行的时间要长得多)。

cpg <- cpgHMM[seqnames(cpgHMM) %in% c("chr21", "chr22")] prom <- promoters[seqnames(promoters) %in% c("chr21", "chr22")]

现在,我们正在应用100个排列的重叠排列测试(ntimes = 100),同时维持CpG岛区集合的染色体分布(per.chromosome = TRUE).此外,我们使用选项count.once = TRUE一个重叠的CpG岛只计算一次,即使它与2个或更多启动子重叠。在标准笔记本电脑上,这大约需要2分钟。

pt <- overlapPermTest(cpg, prom, genome="hg19", ntimes=100, per。染色体=TRUE, count.once=TRUE) pt
## $numOverlaps ## P-value: 0.0099009900990099 ## Z-score: 66.4363 ##迭代次数:100 ##替代方案:更大##原始区域集的评估:719 ##评估函数:numOverlaps ##随机化函数:randomizeRegions ## ## attr(,“class”)##[1]“permTestResultsList”
总结(pt[[1]]交换美元)
最小第一曲,中位数,平均第三曲,最大值。## 99.0 112.8 120.0 119.2 126.0 141.0

由此产生的排列p-value表示显著富集。在2859个CpG岛中,有719个至少与一个启动子重叠。相比之下,当重复绘制与CpG岛大小和染色体分布匹配的随机区域时,排列之间的重叠区域平均为119.2个\下午(\ \)9.

注1:函数地区:permTest允许合并用户定义的函数随机区域和评估重叠的额外措施,如bp总基因组大小。

注2:The萝拉包实现了一个基因组区域ORA,它使用预定义的功能区域集库,基于超几何分布评估基因组区域重叠。

4多组学富集分析

多组学实验在生物医学研究中越来越普遍,例如,在最近的大型项目中,如编码而且,TCGA.这样的实验由一组样本的多个互补数据类型组成,从而增加了实验设计、数据集成和分析的复杂性。在Bioconductor中,MultiAssayExperiment软件包提供数据结构和方法,表示,操作,并整合多分析基因组实验。参见MultiAssayExperiment车间作为介绍。

库(MultiAssayExperiment)

在这里,我们考虑一个具有TCGA卵巢癌样本的示例数据集。

数据。Dir <- system。file("extdata", package="enrichOmics")File <- File .path(data. path)Dir, "tcga_ov_mae.rds") mae <- readr::read_rds(mae.file) mae.rds
MultiAssayExperiment对象,包含3个实验,用户自定义名称和各自的类。## [1] RNASeq2GeneNorm:矩阵与54行和228列## [2]RPPAArray: ExpressionSet与54行和228列## [3]gistica:总结实验与54行和228列## experiments() -获取ExperimentList实例## colData() -主/表型DataFrame ## sampleMap() -样本可用性DataFrame ## ' $ ', '[', '[[' -提取colData列,子集,或实验## *格式()-转换为长或宽DataFrame ## assays() -转换为矩阵的简单列表

该数据集包含RNA-seq、反相蛋白质阵列和gistic拷贝数变化。BRCA突变和基于表达的亚型分类的样本数据是可用的。

头(colData (mae))
## brca_突变子型## <因子> <因子> ## TCGA-04-1348无免疫反应## TCGA-04-1362无分化## TCGA-04-1514无增殖## TCGA-04-1519无增殖## TCGA-09-1662无分化

我们首先确保行(基因/蛋白质)和列(患者)在三个检测之间是匹配的:

intersectRows(美)
MultiAssayExperiment对象,包含3个实验,用户自定义名称和各自的类。## [1] RNASeq2GeneNorm:矩阵与54行和228列## [2]RPPAArray: ExpressionSet与54行和228列## [3]gistica:总结实验与54行和228列## experiments() -获取ExperimentList实例## colData() -主/表型DataFrame ## sampleMap() -样本可用性DataFrame ## ' $ ', '[', '[[' -提取colData列,子集,或实验## *格式()-转换为长或宽DataFrame ## assays() -转换为矩阵的简单列表
intersectColumns(美)
MultiAssayExperiment对象,包含3个实验,用户自定义名称和各自的类。## [1] RNASeq2GeneNorm:矩阵与54行和228列## [2]RPPAArray: ExpressionSet与54行和228列## [3]gistica:总结实验与54行和228列## experiments() -获取ExperimentList实例## colData() -主/表型DataFrame ## sampleMap() -样本可用性DataFrame ## ' $ ', '[', '[[' -提取colData列,子集,或实验## *格式()-转换为长或宽DataFrame ## assays() -转换为矩阵的简单列表

尽管多组学数据资源可用,但用于分析此类实验的生物信息学和统计学方法仍处于初期阶段。这也适用于多组学丰富分析,其中正在进行的发展预计将为此目的产生新的方法。这里,我们考虑mogsa包,它使用主成分分析(PCA)的多元扩展将数据投影到较低维度空间,以便可以识别数据集之间的关系。

ov. library(mogsa) assayMats <- assays(mae) annotSup <- prepSupMoa(as.list(assayMats), geneSets = hsa.gs)moa <- moa(assayMats, proc.row = "center_ssq1", w.data = "惯性")smoa <- sup.moa(ov。moa, sup=annotSup, nf=5)评分。Moa <- slot(smoa, "score") rownames(score. Moa) <- substring(rownames(score. Moa),1,8) colnames(score. Moa) <- substring(colnames(score. Moa),1,12) score. Moa [,1:5]
## TCGA-04-1348 TCGA-04-1357 TCGA-04-1514 TCGA-04-1519 ## hsa04520 -0.0318637847 -0.003108687 0.008484968 0.046242903 0.0044851459 ## hsa04550 -0.0002012615 - 0.00626258 0.079098096 -0.0217330746 ## hsa04390 - 0.0083469335 0.000568580 0.050975826 -0.017561918 -0.0513168755 ## hsa04150 - 0.00129897021 0.002724539 -0.019664139 0.031444559 ##0.021833525 -0.0249869330 ## hsa04068 -0.0578305556 0.017333485 0.012303989 0.079185760 0.0503775243 ## hsa04066 0.0176969572 -0.007076473 -0.024284570 -0.027197559 0.0027100939

这将产生每个样本的个体富集分数。我们使用limma对于样本组的比较,类似于差异表达分析。在这里,我们根据BRCA突变的存在来定义分组。

库(limma)
## ##附加包:“limma”
以下对象从“package:BiocGenerics”中屏蔽:## ## plotMA
group <- colData(mae)[,"BRCA_Mutation"] design <- model.matrix(~group) fit <- lmFit(评分。moa) fit <- eBayes(fit) topTable(fit, number=nrow(score.moa), coef="groupPresent")
## logFC AveExpr t P.Value adj.P.Val B ## hsa04066 -0.006924686 - 1.80034618 -2.1044897 - 0.03642246 -5.679644 ## hsa04150 -0.006891859 -2.287286e-18 -1.8352316 - 0.06776395 0.2710558 -6.202719 ## hsa054e -18 1.0136580 -0.007800228 -7.011174e-18 -0.9246359 0.35612536 0.6482234 -7.451499 ## hsa04520 0.004091628 - 1.4964844e -18 0.8340134 0.40513961 0.6482234 -7.531151 ## hsa04910 - 0.00896470e -18 -0.6683906 0.504555160.6727402 -7.655623 ## hsa04390 0.002120871 6.715396e-18 0.5047460 0.61422099 0.7019668 -7.751747 ## hsa04068 0.002661311 -6.406303e-18 0.3695316 0.71207185 0.7120719 -7.810978
sessionInfo ()
## R版本3.4.1(2017-06-30)##平台:x86_64-pc-linux-gnu(64位)##运行在Ubuntu 16.04.2 LTS下## ##矩阵产品:默认## BLAS: /usr/local/lib/R/lib/ librblas。/usr/local/lib/R/lib/libRlapack。所以## ## locale: ## [1] LC_CTYPE=en_US。UTF-8 LC_NUMERIC=C LC_TIME=en_US。UTF-8 ## [4] LC_COLLATE=C LC_MONETARY=en_US。utf - 8 LC_MESSAGES = en_US。UTF-8 ## [7] LC_PAPER=en_US。UTF-8 LC_NAME=C LC_ADDRESS= c# # [10] lc_phone =C LC_MEASUREMENT=en_US。UTF-8 LC_IDENTIFICATION=C ## ##附加的基本包:## [1]stats4并行统计图形grDevices utils数据集方法基础## ##其他附加包:# # # # [1] limma_3.33.5 mogsa_1.11.0 MultiAssayExperiment_1.3.20 [4] regioneR_1.9.1 BSgenome_1.45.1 rtracklayer_1.37.2 # # [7] Biostrings_2.45.3 XVector_0.17.0 memoise_1.1.0 # # [10] airway_0.111.0 SummarizedExperiment_1.7.5 DelayedArray_0.3.16 # # [13] matrixStats_0.52.2 GenomicRanges_1.29.10 GenomeInfoDb_1.13.4 # # [16] hgu95av2.db_3.2.3 ALL_1.19.0 EnrichmentBrowser_2.7.0 # # [19] pathview_1.17.2 org.Hs.eg.db_3.4.1 GSEABase_1.39.0 # # [22] graph_1.55.0 annotate_1.55.0 xml_3.98 - 1.9 # # [25]AnnotationDbi_1.39.1 IRanges_2.11.10 S4Vectors_0.15.5 ## [28] Biobase_2.37.2 BiocGenerics_0.23.0 BiocStyle_2.5.8 ## ##通过命名空间加载(并且没有附加):[1] backports_1.5.0 GOstats_2.43.0 Hmisc_4.0-3 ## [28] rcurl_1 .1.0 # [7] shinydashboard_0.6.1 splines_3.4.1 BiocInstaller_1.27.2 ## [13] ensembldb_2.1.10 htmltools_0.2.1 digest_0.6.12 BiocInstaller_1.27.2 ## [16] goplot2_2 .3.1 svd_0.4 ## [19] checkmate_1.8.3 cluster_2.0.6 readr_1.1.1 ## [25] colorspace_1.3-2 ggbios_25.3 prettyunits_1.0.2 ## [28] rcurl_1 .1.0 ##[37] scales_0.4.1 DBI_0.7 GGally_1.3.1 ## [40] edgeR_3.19.3 Rcpp_0.12.12 xtable_1. 1.2-2 ## [43] progress_1.1.2 htmlTable_1.9 foreign_0.8-69 ## [49] AnnotationForge_1.19.4 htmlwidgets_0.9 httr_1.2.1 ## [52] gplots_3.0.1 RColorBrewer_1.1-2 acepack_1.4.1 ## [55] pkgconfig_2.0.1 reshape_0.8.6R.methodsS3_1.7.1 ## [58] nnet_7.3-12 locfit_1. 1- 9.1 rlang_0.1.1 ## [61] reshape2_1.4.2 munsell_0.4.3 tools_3.4.1 ## [67] RSQLite_2.0 evaluate_0.10.1 string_1 .2.0 ## [67] yaml_2.1.14 knitr_1.16 bit64_0.9-7 ## [70] caTools_1.17.1 KEGGREST_1.17.0 AnnotationFilter_1.1.3 ## [73] rbgl_1.53 . 3.0 mime_0.5 R.oo_1.21.0 ## [76] KEGGgraph_1.37.1 biomaRt_2.33.3 compiler_3.4.1 ## [79] curl_2.8.1 png_0.1-7 interactiveDisplayBase_1.15.0 ## [82] pfama .db_3.4.1 tibble_1.3.3 geneplotter_1.55.0 ## [85] stringi_1.1.5 .0 ## GenomicFeatures_1.29.8 lattice_0.20-35 ## [88] ProtGenerics_1.9.0 Matrix_1.2-10 corpcor_1.6.9 ## [91] data.table_1.10.4 bitops_1.0-6 httpuv_1.3.5 ## [94] R6_2.2.2 latticeExtra_0.6-28 hwriter_1.3.2 ## [97] KernSmooth_2.23-15 gridExtra_2.2.1 codetools_0.2-15 ## [100] dichromat_2.0-0 gtools_3.5.0 assertthat_0.2.0 ## [103] DESeq2_1.17.10 Category_2.43.1 rprojroot_1.2 ## [106] safe_3.17.0 ReportingTools_2.17.0 GenomicAlignments_1.13.4 ## [109] Rsamtools_1.29.0 GenomeInfoDbData_0.99.1 hms_0.3 ## [112] grid_3.4.1 rpart_4.1-11 tidyr_0.6.3 ## [115] rmarkdown_1.6 biovizBase_1.25.1 shiny_1.0.3 ## [118] base64enc_0.1-3