前面簡單介紹過基因矩陣轉置文件格式(* .gmt),并且也展示了如何使用R讀取gmt文件,今天我們來看看如何做GSEA(Gene Set Enrichment Analysis,基因集富集分析)以及GSEA的結果如何解讀。
? ? 首先我們需要了解一下GSEA跟傳統的基因富集分析有什么區別,有什么優勢。我相信大家在做傳統的基因功能富集分析的時候肯定遇到這樣的情況,一條富集到的通路中,既有上調的差異表達基因,也有下調的差異表達基因,那么這條通路總體是被抑制還是被激活呢?那么這條通路中的基因表達水平在實驗組相比于對照組究竟是上升了呢,還是下降了呢?
? ? 在傳統的富集分析時,我們其實根本不關心這些差異表達的基因究竟是上調還是下調。這是因為傳統的富集分析根本不考慮基因表達量的變化趨勢,其算法的核心只關注這些差異表達基因的分布是否跟隨機抽樣得到的分布一致,即使在后續可視化時,我們在通路圖上用不同顏色標記了上調和下調的基因,但是由于沒有采用有效的統計學方法去分析這條通路中所有差異基因的總體變化趨勢,這使得傳統的富集分析結果無法回答上述的問題。
即使有些文章里面根據差異表達基因的上下調將差異表達基因分成兩組分別進行基因富集分析,這樣得到的結果也會有失偏頗,并不能反應差異表達基因的整體情況。有時甚至會出現自相矛盾的情況,上調的基因和下調的基因富集到相同的一條通路中,這時就很難解釋結果了。
GSEA(Gene Set Enrichment Analysis),該方法發表于2005年的Gene set enrichment analysis: a knowledge-based approach forinterpreting genome-wide expression profiles,是一種基于基因集的富集分析方法,在對基因表達數據分析時,首先確定分析的目的,即選擇MSigDB中的一個或多個功能基因集進行分析(基因矩陣轉置文件格式(* .gmt)中已經介紹過),然后基于基因表達數據與表型的關聯度(也可以理解為表達量的變化)的大小進行排序。然后判斷每個基因集內的基因是否富集于表型相關度排序后基因列表的上部或下部,從而判斷此基因集內基因的協同變化對表型變化的影響。以上其實就是GSEA的分析原理。下面我們就借助一張圖來幫助大家更好的理解GSEA的分析原理。
GSEA的輸入是一個基因表達量矩陣,其中的樣本分成了A和B兩組,找到兩組之間差異表達的基因,然后根據foldchange進行排序,用來表示基因在兩組間表達量的變化趨勢。排序之后的基因列表其頂部可以看做是上調的差異基因,其底部是下調的差異基因。GSEA分析的是一個基因集下的所有基因是否在這個排序列表的頂部或者底部富集,如果在頂部富集,我們可以說,從總體上看,該基因集是上調趨勢,反之,如果在底部富集,則是下調趨勢。
以上就是GSEA的分析原理,那么進行GSEA的結果怎樣解讀呢?
GSEA分析結果最常見的是下圖:
1、圖最上面部分展示的是富集分數(ES,enrichment score)值計算過程,從左至右每到一個基因,計算出一個ES值,連成線。在最左側或最右側有一個特別明顯的峰值就是基因集表型上的ES值。圖中間部分每一條線代表基因集中的一個基因,及其在基因列表中的排序位置。
2、最下面部分展示的是基因與表型關聯的矩陣,紅色為與第一個表型(class A)正相關,在class A中表達高,藍色與第二個表型(class B)正相關,在class B中表達高。
3、Leading-edge subset 對富集得分貢獻最大的基因成員。若富集得分為正值,則是峰左側的基因;若富集得分為負值,則是峰右側的基因。
4、FDR GSEA默認提供所有的分析結果,并且設定FDR<0.25為可信的富集,最可能獲得有功能研究價值的結果。但如果樣品數目少,而且選擇了gene_set作為Permumation type則需要使用更為嚴格的標準,比如FDR<0.05。
下面我們來看看如何使用R語言來進行GSEA分析,這里跟大家分享兩種方法,一個是fgsea包,另一個是clusterProfiler包。
一、fgsea包,fgsea是Fast Gene Set Enrichment Analysis的縮寫
1. 首先需要準備好rank文件,就是排好序的基因列表文件。一般做完差異表達分析都能得到這樣一個文件。第一列是entrez gene id號,第二列可以是t值,也可以是foldchange。
2. 同時還需要準備gmt文件,gmt文件的下載我們在基因矩陣轉置文件格式(* .gmt)一文中已經講解過,讀入到R之后如下
3. 看每一套基因集中的基因是否顯著富集在差異表達基因列表的上部或者下部
#進行富集分析
fgseaRes<-fgsea(pathways,ranks,minSize=15,maxSize=500,nperm=1000)
4. 顯示顯著富集在上部和下部的各10條通路的NES,pval和padj
由于ES是根據分析的數據集中的gene是否在一個功能gene set中出現來計算的,但各個功能gene set中包含的gene數目不同,且不同功能gene set與data之間的相關性也不同,因此,比較data set在不同功能gene set中的富集程度要對ES進行標準化處理,也就是NES
NES=某一功能gene set的ES/數據集所有隨機組合得到的ES平均值
5. 柱形圖展示顯著富集在上部和下部的各20條通路的富集分值
6. 顯示特定通路上的富集結果
顯著富集在cell cycle通路上部
顯著富集在chromation organization通路下部
二、clusterProfiler包
步驟跟fgsea包差不多
氣泡圖展示顯著富集的前20條通路
繪制cell cycle通路,顯著富集在上部
完整R代碼請參考下面這篇文章