TCGA 數(shù)據(jù)分析實(shí)戰(zhàn) —— 富集分析

前言

通常,在識(shí)別完了差異基因之后,都會(huì)對(duì)差異基因進(jìn)行功能富集,來獲取差異基因參與的潛在生物學(xué)功能通路或生物學(xué)進(jìn)程,有助于理解基因之間的作用關(guān)系以及發(fā)現(xiàn)基因在癌癥發(fā)生發(fā)展過程中發(fā)揮的作用。

通路,通常是一些已知的功能相關(guān)的基因集合,而我們常說的基因集合,一般是忽略了基因之間互作關(guān)系的通路。

最常見的通路富集,是使用 GOKEGG 數(shù)據(jù)庫中預(yù)定義的生物學(xué)通路。

1. Gene Ontology (GO)

Gene Ontology(基因本體)定義了用于描述基因功能的類,以及這些類之間的結(jié)構(gòu)關(guān)系,主要可以分為三類:

  • Molecular Function(MF):分子功能,基因產(chǎn)物的生物學(xué)活性,如催化或結(jié)合等
  • Cellular Component(CC):細(xì)胞組分,即基因產(chǎn)物發(fā)揮作用的地方,如內(nèi)質(zhì)網(wǎng)、高爾基體等
  • Biological Process(BP):由分子功能組成的一系列反應(yīng)過程。
2. KEGG

KEGG 是系統(tǒng)分析基因功能和基因組信息的數(shù)據(jù)框,是一個(gè)整合了基因組、生物學(xué)通路、疾病、藥物以及生物化學(xué)物質(zhì)等信息的數(shù)據(jù)庫。

KEGG 通路由一系列經(jīng)手工繪制而成的通路圖構(gòu)成,每張通路圖均包含分子之間相互作用和反應(yīng)的網(wǎng)絡(luò),旨在將基因組中的基因與基因產(chǎn)物(主要是蛋白質(zhì))聯(lián)系起來,記錄了細(xì)胞中分子之間的相互作用網(wǎng)絡(luò)以及具體生物所特有的變化形式。

這些通路主要分為 7 大類:

  • 新陳代謝(Metabolism
  • 遺傳信息處理(Genetic Information Processing
  • 環(huán)境信息處理(Environmental Information Processing
  • 細(xì)胞過程(Cellular Processes
  • 生物系統(tǒng)(Organismal Systems
  • 人類疾病(Human Diseases
  • 藥物開發(fā)(Drug development
3. 其他數(shù)據(jù)庫

當(dāng)然,除了我們最常用的 GOKEGG,還有一些其他數(shù)據(jù)庫定義的基因集,例如:

  • Molecular Signatures Database (MSigDb)
  • Reactome
  • Disease Ontology (DO)
  • Disease Gene Network (DisGeNET)

富集分析方法

富集分析方法主要可以分為四類:

  1. 過表達(dá)分析:通常是檢驗(yàn)差異基因是否顯著集中在預(yù)先定義的基因集
  • 累積超幾何或 Fisher 精確檢驗(yàn)
    p = 1 - \displaystyle\sum_{i = 0}^{k-1}\frac{{M \choose i}{{N-M} \choose {n-i}}} {{N \choose n}}

式中,N 為背景基因的數(shù)量,M 為通路中的基因數(shù),n 為興趣基因的數(shù)量,k 為通路中興趣基因的數(shù)量

  1. 顯著性打分:對(duì)所有差異基因進(jìn)行打分或排序,并評(píng)估基因集中的基因的富集分?jǐn)?shù)
  • GSEA
    對(duì)于一個(gè)給定的已排序的差異基因列表 L,以及預(yù)定義的基因集 SGSEA 算法的原理是,通過判斷 S 中的基因 s 是隨機(jī)分布還是主要集中在 L 的頂部或底部,來衡量該基因集合 S 對(duì)表型差異的貢獻(xiàn)
  • ssGSEA
    單樣本 GSEA 分析
  • GSVA
  1. 基于通路拓?fù)洌荷鲜鰞煞N方法將通路中的基因視為獨(dú)立的,但是通路中基因之間具有緊密的互作關(guān)系,將這些信息考慮到富集分析中,比如,上游基因的改變對(duì)通路功能的影響比下游基因更大,所以,可以將基因的連接度以及調(diào)控類型信息以權(quán)重的方式加入富集分析當(dāng)中。
  • Pathway-Express
  • NetGSA
  • topologyGSA
  • DEGraph
  • PathNet
  1. 基于網(wǎng)絡(luò)拓?fù)洌憾诰W(wǎng)絡(luò)拓?fù)涞母患椒ǎ瑒t是把基因在網(wǎng)絡(luò)中的互作關(guān)系整合到富集分析當(dāng)中
  • EnrichNet
  • NEA
  • NOA

分析示例

我們使用上一節(jié)三種方法共同識(shí)別出的 2749 個(gè)差異基因

> load("~/Downloads/gbm_lgg_deg.rda")
> gene_list <- rownames(DEGs.exp)
> DEGs.exp[1:6, 1:3]
      TCGA-HT-A614-01A-11R-A29R-07 TCGA-HT-8104-01A-11R-2404-07 TCGA-TQ-A7RG-01A-11R-A33Z-07
A1BG                           225                          238                          148
A2BP1                          610                          471                          181
A2LD1                          117                          190                           38
AATK                          9071                         3330                         2785
ABAT                         16024                        17488                        40945
ABCC3                           11                          192                            9

1. GO

使用 TCGABiolinks 提供的 TCGAanalyze_EAcomplete 函數(shù)來進(jìn)行 go 富集

system.time(
  ansEA <- TCGAanalyze_EAcomplete(
    TFname="gbm Vs lgg", gene_list
  )
)

TCGAvisualize_EAbarplot(
  tf = rownames(ansEA$ResBP),
  GOBPTab = ansEA$ResBP,
  GOCCTab = ansEA$ResCC,
  GOMFTab = ansEA$ResMF,
  PathTab = ansEA$ResPat,
  nRGTab = gene_list,
  nBar = 10,
  filename = "~/Downloads/go_enrichment.pdf"
)

或者使用 clusterProfiler 包進(jìn)行富集分析,該包提供了兩個(gè)函數(shù)

  • enrichGO:過表達(dá)富集分析方法
  • gseGOGSEA 富集分析方法

1.1 enrichGO

該函數(shù)需要輸入 entrez_gene_id,所以要先對(duì)基因進(jìn)行轉(zhuǎn)換

library(clusterProfiler)
library(org.Hs.eg.db)
library(enrichplot)

# symbol to ID
gene.id <- bitr(
  gene_list, fromType = "SYMBOL",
  toType = "ENTREZID",
  OrgDb = org.Hs.eg.db
) 
> head(gene.id)
  SYMBOL ENTREZID
1   A1BG        1
4   AATK     9625
5   ABAT       18
6  ABCC3     8714
7  ABCC8     6833
8  ABCG4    64137

進(jìn)行富集分析

go <- enrichGO(
  gene = gene.id,
  OrgDb = org.Hs.eg.db,
  ont = "ALL",
  pAdjustMethod = "BH",
  qvalueCutoff = 0.05,
  readable = T
)
> head(go)
           ONTOLOGY         ID                                  Description GeneRatio   BgRatio       pvalue
GO:0050804       BP GO:0050804 modulation of chemical synaptic transmission  150/2256 454/18866 4.314421e-33
GO:0099177       BP GO:0099177       regulation of trans-synaptic signaling  150/2256 455/18866 5.706736e-33
GO:0050808       BP GO:0050808                         synapse organization  136/2256 433/18866 1.356042e-27
GO:0042391       BP GO:0042391             regulation of membrane potential  134/2256 443/18866 1.907415e-25
GO:0050890       BP GO:0050890                                    cognition   97/2256 302/18866 8.988934e-21
GO:0099003       BP GO:0099003        vesicle-mediated transport in synapse   79/2256 220/18866 1.893468e-20
               p.adjust       qvalue
GO:0050804 1.716872e-29 1.281913e-29
GO:0099177 1.716872e-29 1.281913e-29
GO:0050808 2.719769e-24 2.030733e-24
GO:0042391 2.869229e-22 2.142329e-22
GO:0050890 1.081728e-17 8.076794e-18
GO:0099003 1.898833e-17 1.417776e-17

繪制富集分析結(jié)果的通路點(diǎn)圖,點(diǎn)的大小表示通路中的基因數(shù)量,顏色表示的是顯著性

dotplot(go)

條形圖

barplot(go)

1.2 gseGO

GSEA 富集分析輸入的基因列表需要排序,我們可以按照基因的 logFC 值對(duì)基因進(jìn)行排序

gene_info <- DEGs.edgeR %>%
  rownames_to_column(var = "SYMBOL") %>%
  filter(SYMBOL %in% gene_list) %>%
  inner_join(., gene.id[,1:2], by = "SYMBOL") %>%
  # 必須降序
  arrange(desc(logFC))

# 構(gòu)造輸入數(shù)據(jù)格式
geneList <- gene_info$logFC
names(geneList) <- as.character(gene_info$ENTREZID)

GSEA 富集分析

go2 <- gseGO(
  geneList     = geneList,
  OrgDb        = org.Hs.eg.db,
  ont          = "ALL",
  minGSSize    = 100,
  maxGSSize    = 500,
  pvalueCutoff = 0.05,
  verbose      = FALSE
)
> head(go2)
           ONTOLOGY         ID                 Description setSize enrichmentScore       NES pvalue     p.adjust
GO:0000228       CC GO:0000228          nuclear chromosome     188      -0.3746191 -3.036128  1e-10 5.903226e-10
GO:0000278       BP GO:0000278          mitotic cell cycle     198      -0.4102983 -3.349095  1e-10 5.903226e-10
GO:0001501       BP GO:0001501 skeletal system development     115      -0.4414610 -3.234870  1e-10 5.903226e-10
GO:0001525       BP GO:0001525                angiogenesis     117      -0.4349952 -3.197417  1e-10 5.903226e-10
GO:0001568       BP GO:0001568    blood vessel development     158      -0.4020008 -3.119252  1e-10 5.903226e-10
GO:0001775       BP GO:0001775             cell activation     263      -0.3259590 -2.814883  1e-10 5.903226e-10
                qvalues rank                   leading_edge
GO:0000228 2.286361e-10  672 tags=53%, list=27%, signal=41%
GO:0000278 2.286361e-10  930 tags=70%, list=38%, signal=47%
GO:0001501 2.286361e-10  294 tags=36%, list=12%, signal=33%
GO:0001525 2.286361e-10  847 tags=67%, list=35%, signal=46%
GO:0001568 2.286361e-10  571 tags=48%, list=23%, signal=39%
GO:0001775 2.286361e-10 1220 tags=79%, list=50%, signal=44%

繪制第一條 GO item 的富集曲線

gseaplot(go2, geneSetID = "GO:0000228")

曲線表示富集分?jǐn)?shù)的計(jì)算過程,根據(jù)基因排序,從左至右依次計(jì)算。從圖中可以看出富集分?jǐn)?shù)都是小于 0,表示基因富集在通路的下部。中間的豎線表示通路中的基因在列表中的位置

繪制第二種類型的富集曲線,添加了中間的基因與表型之間的相關(guān)矩陣熱圖,紅色表示與第一個(gè)表型正相關(guān),藍(lán)色表示與第二個(gè)表型正相關(guān)

gseaplot2(go2, 1)

可以同時(shí)顯示第 1-3 個(gè)富集分析結(jié)果的富集曲線

gseaplot2(go2, 1:3)

2. KEGG

KEGG 通路富集也有兩種方法

  • enrichKEGG
  • gseKEGG

2.1 enrichKEGG

kegg <- enrichKEGG(
  gene = gene.id$ENTREZID,
  organism = "hsa",
  pvalueCutoff = 0.05
)
> head(kegg)
               ID                             Description GeneRatio  BgRatio       pvalue     p.adjust
hsa05033 hsa05033                      Nicotine addiction   24/1087  40/8108 6.620414e-12 2.138394e-09
hsa04724 hsa04724                   Glutamatergic synapse   43/1087 114/8108 4.747252e-11 7.666812e-09
hsa04727 hsa04727                       GABAergic synapse   36/1087  89/8108 1.824548e-10 1.964430e-08
hsa04911 hsa04911                       Insulin secretion   32/1087  86/8108 2.129231e-08 1.719354e-06
hsa04080 hsa04080 Neuroactive ligand-receptor interaction   81/1087 341/8108 8.656665e-08 4.646393e-06
hsa04721 hsa04721                  Synaptic vesicle cycle   29/1087  78/8108 9.964211e-08 4.646393e-06
               qvalue
hsa05033 1.561024e-09
hsa04724 5.596760e-09
hsa04727 1.434031e-08
hsa04911 1.255125e-06
hsa04080 3.391859e-06
hsa04721 3.391859e-06
dotplot(kegg)

2.2 gseKEGG

kegg2 <- gseKEGG(
  geneList = geneList,
  organism     = 'hsa',
  minGSSize    = 120,
  pvalueCutoff = 0.05,
  verbose      = FALSE
)
gseaplot(kegg2, geneSetID = "hsa05033")
gseaplot2(kegg2, geneSetID = "hsa05033")

3 結(jié)果可視化

3.1 通路網(wǎng)絡(luò)結(jié)構(gòu)

通過展示通路中基因之間的互作網(wǎng)絡(luò)結(jié)構(gòu),可以看出基因在網(wǎng)絡(luò)中的作用關(guān)系,以及潛在的生物學(xué)功能

ego <- setReadable(kegg, 'org.Hs.eg.db', 'ENTREZID')
p1 <- cnetplot(ego, showCategory = 2, foldChange = geneList)
# 設(shè)置分類的大小,可以是 pvalue 或 geneNum
p2 <-
  cnetplot(
    ego,
    showCategory = 2,
    categorySize = "geneNum",
    foldChange = geneList
  )
# 設(shè)置圓形布局
p3 <-
  cnetplot(
    ego,
    showCategory = 3,
    foldChange = geneList,
    circular = TRUE,
    colorEdge = TRUE
  )
# 合并圖形
cowplot::plot_grid(
  p1, p2, p3, ncol = 3,
  labels = LETTERS[1:3],
  rel_widths = c(.8, .8, 1.2)
)

3.2 熱圖

使用熱圖的方式展示通路中基因的表達(dá)模式

heatplot(ego, foldChange=geneList)

3.3 Enrichment Map

Enrichment Map 是根據(jù)通路之間是否有基因交疊來確定通路間是否存在互作邊

edo <- pairwise_termsim(kegg)
emapplot(edo, layout="kk") 

對(duì)通路關(guān)系網(wǎng)絡(luò)進(jìn)行聚類展示

emapplot_cluster(edo, node_scale=1.5, layout="kk") 

3.4 UpSet plot

使用 upsetplot 函數(shù)來繪制通路的 upset

upsetplot(edo)

也可以繪制 GSEA 分析的結(jié)果

upsetplot(go2)

3.5 山脊圖

ridgeplot 函數(shù)可以繪制 GSEA 分析結(jié)果,可以很容易地看出上調(diào)和下調(diào)的通路

ridgeplot(go2)

先介紹這些吧,相關(guān)的內(nèi)容如 GSVA、ssGSEA、單基因富集分析等后續(xù)再做介紹

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容