OrgDb庫
- enrichGO默認gene type是entrezID,但其他OrgDb支持的類型(ENSEMBLE,SYMBOL等)都可以通過參數keyType指定。
- gene的ID type不一樣,富集的結果也會有稍微的差異。
原gene list是entrezID,直接通過bitr轉換成ensembl和symbol,分別做enrichGO。
發(fā)現entrezedID可能對應多個ENSEMBL的。
entrezedID和SYMBOL是一一對應的
image.png
dim(gene.df[!duplicated(gene.df$ENSEMBL),])
entrezedID 207
ENSEMBL 239
SYMBOL 207
1)因為ensembl在庫中多個ID會對應同一個entrez,因此四個數值都要大一些
2)entrez和symbol 可能是因為是在db中是一一對應?,因此結果一模一樣。
3)Y叔建議盡量不用SYMBOL做enrichGO。
entrez
symbol
ensemble
- bitr其實是使用AnnotationHub的select,將庫中的不同類型GeneID重新轉換。
enrichGO
- universe:默認不指定,這樣就直接使用orgDB的所有基因作為背景。
如果指定,相當與將universe的基因集和orgDB的基因做交集,作為背景。(因為只有orgDB的基因有注釋信息)
需要和KeyType指定類型相同。 -
minGSSize和maxGSSize:背景基因注釋到某個GO的geneset需要在此范圍內才會輸出該GO的結果。
默認范圍(10,500)
以下是默認參數(10,500):4個結果
參數設為 (0,Inf):40個結果,僅截取部分
image.png -
閾值的選擇
背景注釋到GO的geneset太小,會得到很小的p值,但結果可能不具參考性?
背景注釋到GO的geneset很大,一般p值也會增大。
image.png
GO&GOALL
- 查詢Org.Hs.db的manual
http://bioconductor.org/packages/release/data/annotation/manuals/org.Hs.eg.db/man/org.Hs.eg.db.pdf - org.Hs.egGO
entrezID和GOID是一對一對應的。不包含GO下屬的其他節(jié)點的term
org.Hs.egGO2ALLEGS
一個GO和所有相關的entrez GENE(被注釋到該GO或者它的child nodes),因此比前者的庫要更大,包含更多信息
分析過程
orgDb select,將所有entrezID作為query,提取GOALL信息。
- CC分類全部Gene ID,即為背景注釋到總體數。去重復(因為一個gene可能注釋到多個CC類的term)
cat Hs.db.GO|grep CC|sort -k1,1 -u|wc -l
- 某個GO類全部Gene ID,即為背景注釋到該GO數(即成功數)
gene可能有重復
cat Hs.db.GO|awk '$2=="GO:0005575"{print $1,$2}'|sort -k1,1 -u|wc -l
- input genelist中能注釋到CC類的數目。
4.input genelist中每個基因能注釋到的GO,并按照每個GO類對gene計數。input genelist里能注釋到某個GO類的gene數目。 - 結果
BgRatio : M/N | GeneRatio:k/n |
---|---|
M 背景所有能注釋到某個GO的基因 | k genelist中能注釋到某個GO的基因 |
N 背景所有能注釋到CC的基因 | n genelist中能注釋到CC的基因 |
CC結果中,n和N不變,M和k隨不同的GO類不同。
結果
- pvalue = phyper(k-1,M, N-M, n, lower.tail=FALSE)
- p.adj = p.adjust(pvalue, method="BH")
- qobj = qvalue(df
qvalues
enricher
- 用自己的注釋信息來做富集分析。
-
TERM2GENE: df,第一列是term ID(比如GO ID),第二列是mapped gene。
TERM2NAME :df,第一列是term ID,第二列是相應term name。optional。
這樣背景基因和注釋庫都可以自己建立。
image.png - 其他參數同enrichGO。