OrgDb库
- enrichGO默认gene type是entrezID,但其他OrgDb支持的类型(ENSEMBLE,SYMBOL等)都可以通过参数keyType指定。
- gene的ID type不一样,富集的结果也会有稍微的差异。
原gene list是entrezID,直接通过bitr转换成ensembl和symbol,分别做enrichGO。
发现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下属的其他节点的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$pvalue, lambda=0.05, pi0.method="bootstrap")
qobj$qvalues
enricher
- 用自己的注释信息来做富集分析。
-
TERM2GENE: df,第一列是term ID(比如GO ID),第二列是mapped gene。
TERM2NAME :df,第一列是term ID,第二列是相应term name。optional。
这样背景基因和注释库都可以自己建立。
image.png - 其他参数同enrichGO。
网友评论