参考
xuzhougeng | 基因表达分析(中)- 富集分析、转录组入门(8): 富集分析。
xuzhougeng | 功能注释后如何做富集分析
应该是最好的eggnog-mapper功能注释教程、利用pep序列构建OrgDb进行富集分析(1)
1. EggNOG 注释
$ mkdir enrich_analysis
$ cd enrich_analysis
$ python3 ~/bin/software/eggnog-mapper/emapper.py -i ../Arabidopsis_thaliana.pep.fa --cpu 20 -m diamond -o pep.diamond --output_dir .
$ ls -lh
total 26M
-rw-rw-r-- 1 shwzhao shwzhao 18M Jul 15 20:01 pep.diamond.emapper.annotations
-rw-rw-r-- 1 shwzhao shwzhao 6.3M Jul 15 19:59 pep.diamond.emapper.hits
-rw-rw-r-- 1 shwzhao shwzhao 1.8M Jul 15 20:00 pep.diamond.emapper.seed_orthologs
2. go-basic.obo 下载
处理生成 go.tb
$ wget -c http://snapshot.geneontology.org/ontology/go-basic.obo
$ du -sh go-basic.obo
30M go-basic.obo
$ awk -F ": " 'BEGIN{print "GO\tDescription\tlevel"}{if($0~/\[Term\]/)term=NR;if(NR==term+1)id=$2;if(NR==term+2)name[id]=$2;if(NR==term+3)namespace[id]=$2}END{for(i in name)print i"\t"name[i]"\t"namespace[i]}' go-basic.obo > go.tb
3. enricher()
# 加载R包
library(tidyverse)
library(clusterProfiler, lib = "/home/zcli/R/x86_64-pc-linux-gnu-library/4.0/")
# 文件准备,解析 eggnog 结果,联合 go.tb
emapper <- read_tsv("pep.diamond.emapper.annotations", comment = "##") %>% rename(query = "#query")
# 读取时去掉`##`开头的行,而`#query`开头的行作为表头
GOinfo <- read_tsv("go.tb")
GOannotation <- emapper %>%
dplyr::select(GID = query, GO = GOs) %>%
dplyr::filter(GO != "-") %>%
separate_rows(GO, sep = ",") %>%
left_join(GOinfo, by = "GO") %>%
dplyr::select(-Description)
GOannotation <- split(GOannotation, GOannotation$level)
- 提取自己的
genelist
(注意是一个 vector),然后用enricher()
富集
TF <- read_tsv("Arabidopsis_thaliana.TF.txt", col_names = F)
genelist <- TF %>%
head(1000) %>%
.$X1
enrich <- enricher(genelist,
TERM2GENE = GOannotation[['molecular_function']][c(2,1)],
TERM2NAME = GOinfo[1:2])
4. 绘图
我的建议是
as.data.frame()
或as_tibble()
后用ggplot
画。
目前还不知道怎么用网络的形式呈现富集结果。
pdf("dotplot.pdf")
barplot(enrich)
dotplot(enrich)
# 注意有时需要调整字体:font.size
dev.off()
- 其他
富集分析结果呈现还可以有很多操作。比如 simpleEnrichment—对GO富集分析结果进一步处理! ……