参考
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 -lhtotal 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.obo30M 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.tbemapper <- 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) %>%.$X1enrich <- 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.sizedev.off()
- 其他
富集分析结果呈现还可以有很多操作。比如 simpleEnrichment—对GO富集分析结果进一步处理! ……
