這部分開始進行基本的富集分析,兩類
-
A:差異基因富集分析(不需要表達值,只需要gene name)
-
B: 基因集(gene set)富集分析(不管有無差異,需要全部genes表達值)
############################################################
A:差異基因富集分析(不需要表達值,只需要gene name)
############################################################
-----------先說富集什么-----------
- 最常用的基因注釋工具是GO和KEGG注釋,這基本上是差異基因分析一定做的兩件事。GO可以在GO:BP(生物過程),GO:MF(分子功能),GO:CC(細胞組分)三個方面分別進行注釋,用的比較多的是GO:BP,但其他兩方面也很重要。
- 外還有一個軟件不得不提,那就是IPA(Ingenuity pathway analysis),這是一個收費軟件,有基本版和高級版。我個人覺得它的upstream regulator analysis還是很不錯的。分子激活功能等也可以用用。另外一個就是它內置的熱圖功能。高級版我沒用過,但是知道可以導出一些數據等。
-----------什么是富集(原理)-----------
富集的統計學基礎是超幾何分布,簡單來說根據下面的Fisher精確檢驗(Fisher exact test)公式,對每個GO或KEGG term計算一個p值
p=(M/K)[(N-M)/(n-k)]/(N/n),其中
N:所有gene總數
n:N中差異表達gene的總數
M:N中屬於某個GO term的gene個數
k: n中屬於某個GO term的gene個數
p:表示差異表達gene富集到這個GO term上的可信程度
- 當p<0.05或0.01,則認為差異表達gene顯著到這個GO term上(自己定義p值)
- 意義:提供的信息更集中,更有意義
---------------拿什么來富集---------------
得到的差異表達基因列表就可以,也就是說不需要其他的值
---------------用什么工具富集--------------
只能說實在是太多太多了。。。。但是用的時候要小心,因為你多用幾個工具,即使設定同樣的p值也會發現結果有出入,有時還差異挺大。
1 按使用方式來說(簡單度)有3種
- (1)在線版:最主流的就是DAVID,各種級別雜志總見其身影,使用非常簡單,不再贅述。另外還有Gather,GOrilla,revigo,還有很多很多我就不在貼了。網頁版有網頁版的好處,可以先大概看下自己篩選的genes。另外很多工具有很好的可視化功能,自己一一去探索吧。
- (2)客戶端版:IPA(IPA不是用的GO和KEGG數據庫)和FUNRICH,后者更新速度很慢,但里面有好玩又實用的功能,並且可以加載自己的數據。
- (3)R包:介紹一個就行了,那就是Y叔的clusterProfiler,我論文中的富集功能很多都是用這個包做的(還有的用了IPA)。
##########################################################
B: 基因集(gene set)富集分析(不管有無差異,需要全部genes表達值)
##########################################################
-
好處:可以發現被差異基因舍棄的genes可能參與了某重要生理過程或信號通路(稍后我會把以前手寫的GSEA原理和結果意義解讀發上來)
-
工具:GSEA
-
使用方法:R(還是clusterProfiler)或客戶端
-------------------具體操作---------------------
#enrichment analysis using clusterprofiler package created by yuguangchuang library(clusterProfiler) library(DOSE) library(org.Mm.eg.db) #get the ENTREZID for the next analysis setwd("F:/rna_seq/data/matrix") sig.gene<-read.csv(file="DEG_treat_vs_control.csv") head(sig.gene) gene<-sig.gene[,1] head(gene) gene.df<-bitr(gene, fromType = "ENSEMBL", toType = c("SYMBOL","ENTREZID"), OrgDb = org.Mm.eg.db) head(gene.df)
GO富集分析:
#Go classification #Go enrichment ego_cc<-enrichGO(gene = gene.df$ENSEMBL, OrgDb = org.Mm.eg.db, keyType = 'ENSEMBL', ont = "CC", pAdjustMethod = "BH", pvalueCutoff = 0.01, qvalueCutoff = 0.05) ego_bp<-enrichGO(gene = gene.df$ENSEMBL, OrgDb = org.Mm.eg.db, keyType = 'ENSEMBL', ont = "BP", pAdjustMethod = "BH", pvalueCutoff = 0.01, qvalueCutoff = 0.05) barplot(ego_bp,showCategory = 18,title="The GO_BP enrichment analysis of all DEGs ")+ scale_size(range=c(2, 12))+ scale_x_discrete(labels=function(ego_bp) str_wrap(ego_bp,width = 25))
gobp.jpeg
#KEGG enrichment install.packages("stringr") library(stringr) kk<-enrichKEGG(gene =gene.df$ENTREZID, organism = 'mmu', pvalueCutoff = 0.05) kk[1:30] barplot(kk,showCategory = 25, title="The KEGG enrichment analysis of all DEGs")+ scale_size(range=c(2, 12))+ scale_x_discrete(labels=function(kk) str_wrap(kk,width = 25)) dotplot(kk,showCategory = 25, title="The KEGG enrichment analysis of all DEGs")+ scale_size(range=c(2, 12))+ scale_x_discrete(labels=function(kk) str_wrap(kk,width = 25))
kegg.jpeg
keggdot.jpeg
# Gene Set Enrichment Analysis(GSEA) # 獲取按照log2FC大小來排序的基因列表 genelist <- sig.gene$log2FoldChange names(genelist) <- sig.gene[,1] genelist <- sort(genelist, decreasing = TRUE) # GSEA分析 gsemf <- gseGO(genelist, OrgDb = org.Mm.eg.db, keyType = "ENSEMBL", ont="BP" ) # 查看信息 head(gsemf) # 畫出GSEA圖 gseaplot(gsemf, geneSetID="GO:0001819")
gsea.jpeg
后記:做完這部分富集分析,接着按我的流程進入下一部分分析RNA-seq(10):KEGG通路可視化,因為直接用到這部分數據,
作者:Y大寬
鏈接:https://www.jianshu.com/p/5d82acad6008
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權並注明出處。
