學(xué)徒和學(xué)員已經(jīng)陸續(xù)出師,是時候把生信技能樹的舞臺交給后輩了!
回顧:
limma
clusterProfiler
基于超幾何分布檢驗的富集分析做KEGG數(shù)據(jù)庫的時候,它總共只有七千多個基因,人類總的背景基因有兩萬多個,被KEGG記住的只有6500個(一直在增加),假設(shè)一條通路有117個基因參與,我們的差異基因中有10個與之重合,這已經(jīng)是很多了,超幾何分布檢驗會判定是統(tǒng)計學(xué)顯著。
總和 | 部分 | 所占比例 |
---|---|---|
KEGG:6500 | 全部差異基因:162 | 0.02492308 |
某通路:117 | 差異基因重合:10 | 0.08547009 |
但是這樣的超幾何分布檢驗過于依賴我們的差異基因的選擇。差異基因靠的的logFC和P value,一直是被人詬病的。絕大部分基因都沒有被考慮進(jìn)去,如果想考慮全部的基因, 就需要替換到gsea和gsva算法。今天我們先介紹gsea,如下:
GSEA :gene set enrichment analysis,即基因富集,是常見的富集分析之一
基本原理:先給定一個排序的基因表L和一個預(yù)先定義的基因集S,比如編碼某個代謝通路的產(chǎn)物的基因集,基因組的物理位置相近的基因,或者同一個GO注釋下的基因。GSEA的目的是判斷S里面的成員s在L里面是隨機(jī)分布還是主要聚集在L的頂部和底部。這些基因排序的依據(jù)是在其不同表型狀態(tài)下的差異表達(dá),如果研究的基因集S的成員顯著聚集在L的頂部或者底部,則說明此基因集成員對表型的差異有顯著,也是我們所關(guān)注的基因集。
GSEA分析文件準(zhǔn)備:
load(file = 'anno_DEG.Rdata') #1.導(dǎo)入差異分析結(jié)果
geneList=DEG$logFC #2.取出logFC結(jié)果和基因的對應(yīng)關(guān)系
names(geneList)=DEG$symbol
geneList=sort(geneList,decreasing = T) #3.對基因進(jìn)行排序,用于統(tǒng)計學(xué)分析,這些基因相對于總的基因來說是隨機(jī)挑選的,如果這些基因集中聚集在某個位置,這就破壞了隨機(jī)性。
#選擇gmt文件(MigDB中的全部基因集)
d='./MsigDB/symbols'
gmts <- list.files(d,pattern = 'all') #總共有7個基因集,這里把這些基因集全部合并到一起,一次完成
gmts
#GSEA分析
library(GSEABase) # BiocManager::install('GSEABase')
## 下面使用lapply循環(huán)讀取每個gmt文件,并且進(jìn)行GSEA分析,自動將每個基因集都檢測一遍,最終得到enrich score,pvalue等值
gsea_results <- lapply(gmts, function(gmtfile){
# gmtfile=gmts[2]
# 如果不確定循環(huán)里面的代碼,就嘗試賦值,測試下面的代碼。
geneset <- read.gmt(file.path(d,gmtfile))
print(paste0('Now process the ',gmtfile))
egmt <- GSEA(geneList, TERM2GENE=geneset, verbose=FALSE)
head(egmt)
# gseaplot(egmt, geneSetID = rownames(egmt[1,])) #繪圖
return(egmt)
})
save(gset_results,file="gset_results.Rdata") #gset_results中包含在所有的egmt
gsea_results_list<- lapply(gsea_results, function(x){
cat(paste(dim(x@result)),'\n')
x@result #S4對象可以用@符號取出值
})
gsea_results_df <- do.call(rbind, gsea_results_list) #將list變?yōu)閐ataframe,便于肉眼觀察
gseaplot(gsea_results[[2]],'KEGG_CELL_CYCLE',title = 'KEGG_CELL_CYCLE') #挑選的"KEGG_CELL_CYCLE"在gsea_results的第二個元素中,一定要對應(yīng)好,否則會出錯
gseaplot(gsea_results[[2]],'FARMER_BREAST_CANCER_CLUSTER_6')
gseaplot(gsea_results[[5]],'GO_CONDENSED_CHROMOSOME_OUTER_KINETOCHORE')
GSEA結(jié)果解讀:
第一步我們需要根據(jù)基因的logFC對基因進(jìn)行排序
我們研究的這個染色體區(qū)域所包含的所有基因映射到我們排列好順序的基因列表上,計算Enrich score的原則就是,從前到后依次檢查基因是否是我們當(dāng)前研究的染色體區(qū)域所包含的,如果包含就加一個正值,如果不包含就加一個負(fù)值,如果這個染色體區(qū)域中的所有基因被隱射到基因列表的一個集中區(qū)域,那么就會出現(xiàn)一個高峰。
橫坐標(biāo)表示所有探針的數(shù)量length(geneList)
可以得到
黑色的豎線代表的是我們的目的基因,已經(jīng)被排好序,如果豎線聚集在頭部,稱為頭部效應(yīng),如果在尾部,稱為尾部效應(yīng)
GSEA也可以進(jìn)行GO和KEGG分析,找到對應(yīng)的數(shù)據(jù)集即可
圖一:Enrichment score 高, 基因顯著富集到右邊,綠色的曲線出現(xiàn)高峰,而且,黑色豎線的分布也比較密集,說明該通路受到影響。
Enrichment score為負(fù)數(shù),綠色曲線開口向上。
圖二:Enrichment score 低,以20000為分界線,左邊和右邊的黑色豎線(代表基因)分布的密集程度差不多,而且綠色的曲線沒有單獨的峰值,所以并沒有顯著富集,該通路沒有改變。
下載地址:https://www.gsea-msigdb.org/gsea/downloads.jsp
根據(jù)自己系統(tǒng)需要下載合適的版本
文獻(xiàn)寫的超級清楚,我這里就不截圖演示啦!
這些分析,基本上讀一下我五年前在生信技能樹的表達(dá)芯片的公共數(shù)據(jù)庫挖掘系列推文 就明白了;
我把3年前的收費視頻課程:3年前的GEO數(shù)據(jù)挖掘課程你可以聽3小時或者3天甚至3個月,免費到B站:
然后馬上就有了3千多學(xué)習(xí)量,而且有學(xué)員給出來了圖文并茂版本萬字筆記,讓我非常感動!
掃描下面二維碼馬上就可以學(xué)習(xí)起來啦,筆記需要至少半個小時來閱讀哦!
聯(lián)系客服