這篇文章將為大家詳細(xì)講解有關(guān)如何使用clusterProfiler包利用eggnog-mapper軟件注釋結(jié)果做GO和KEGG富集分析,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比水城網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式水城網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋水城地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴(lài)。
conda activate emapper
python emapper.py -i orgdb_example/GCF_000002945.1_ASM294v2_protein.faa --output orgdb_example/out -m diamond --cpu 8
將注釋結(jié)果下載到本地,手動(dòng)刪除前三行帶井號(hào)的行,第四行開(kāi)頭的井號(hào)去掉,文件末尾帶井號(hào)的行去掉。
library(stringr)
library(dplyr)
egg<-read.table("out.emapper.annotations",sep="\t",header=T)
egg[egg==""]<-NA
gterms <- egg %>%
select(query_name, GOs) %>%
na.omit()
gene2go <- data.frame(term = character(),
gene = character())
for (row in 1:nrow(gterms)) {
gene_terms <- str_split(gterms[row,"GOs"], ",", simplify = FALSE)[[1]]
gene_id <- gterms[row, "query_name"][[1]]
tmp <- data_frame(gene = rep(gene_id, length(gene_terms)),
term = gene_terms)
gene2go <- rbind(gene2go, tmp)
}
head(gene2go)
> head(gene2go)
# A tibble: 6 x 2
gene term
<chr> <chr>
1 NP_001018179.1 GO:0003674
2 NP_001018179.1 GO:0003824
3 NP_001018179.1 GO:0004418
4 NP_001018179.1 GO:0005575
5 NP_001018179.1 GO:0005622
6 NP_001018179.1 GO:0005623
獲得一個(gè)兩列的數(shù)據(jù)框,有了這個(gè)數(shù)據(jù)框就可以做GO富集分析了
在 https://www.jianshu.com/p/9c9e97167377 這篇文章里的評(píng)論區(qū)有人提到上面用到的for循環(huán)代碼效率比較低,他提供的代碼是
gene_ids <- egg$query_name
eggnog_lines_with_go <- egg$GOs!= ""
eggnog_lines_with_go
eggnog_annoations_go <- str_split(egg[eggnog_lines_with_go,]$GOs, ",")
gene_to_go <- data.frame(gene = rep(gene_ids[eggnog_lines_with_go],
times = sapply(eggnog_annoations_go, length)),
term = unlist(eggnog_annoations_go))
head(gene_to_go)
> head(gene_to_go)
gene term
1 NP_001018179.1 GO:0003674
2 NP_001018179.1 GO:0003824
3 NP_001018179.1 GO:0004418
4 NP_001018179.1 GO:0005575
5 NP_001018179.1 GO:0005622
6 NP_001018179.1 GO:0005623
用這個(gè)代碼替換for循環(huán),確實(shí)快好多。
首先準(zhǔn)備一個(gè)基因列表,我這里選取gene2go中的前40個(gè)基因作為測(cè)試 還需要為TERM2GENE=
參數(shù)準(zhǔn)備一個(gè)數(shù)據(jù)框,第一列是term,第二列是基因ID,只需要把gene2go的列調(diào)換順序就可以了。
library(clusterProfiler)
gene_list<-gene2go$gene[1:40]
term2gene<-gene2go[,c(2,1)]
df<-enricher(gene=gene_list,
pvalueCutoff = 0.05,
pAdjustMethod = "BH",
TERM2GENE = term2gene)
head(df)
barplot(df)
dotplot(df)
y軸的標(biāo)簽通常是GO term (就是文字的那個(gè))而不是GO id。clusterProfiler包同樣提供了函數(shù)對(duì)ID和term互相轉(zhuǎn)換。go2term()
go2ont()
df<-as.data.frame(df)
head(df)
dim(df)
df1<-go2term(df$ID)
dim(df1)
head(df1)
df$term<-df1$Term
df2<-go2ont(df$ID)
dim(df2)
head(df2)
df$Ont<-df2$Ontology
head(df)
df3<-df%>%
select(c("term","Ont","pvalue"))
head(df3)
library(ggplot2)
ggplot(df3,aes(x=term,y=-log10(pvalue)))+
geom_col(aes(fill=Ont))+
coord_flip()+labs(x="")+
theme_bw()
這里遇到一個(gè)問(wèn)題:數(shù)據(jù)框如何分組排序?目前想到一個(gè)比較麻煩的辦法是將每組數(shù)據(jù)弄成一個(gè)單獨(dú)的數(shù)據(jù)框,排好序后再合并。
library(stringr)
library(dplyr)
library(clusterProfiler)
egg<-read.table("out.emapper.annotations",sep="\t",header=T)
egg[egg==""]<-NA
gene2ko <- egg %>%
dplyr::select(GID = query_name, Ko = KEGG_ko) %>%
na.omit()
head(gene2ko)
head(gene2go)
gene2ko[,2]<-gsub("ko:","",gene2ko[,2])
head(gene2ko)
#kegg_info.RData這個(gè)文件里有pathway2name這個(gè)對(duì)象
load(file = "kegg_info.RData")
pathway2gene <- gene2ko %>% left_join(ko2pathway, by = "Ko") %>%
dplyr::select(pathway=Pathway,gene=GID) %>%
na.omit()
head(pathway2gene)
pathway2name
df<-enricher(gene=gene_list,
pvalueCutoff = 0.05,
pAdjustMethod = "BH",
TERM2GENE = pathway2gene,
TERM2NAME = pathway2name)
dotplot(df)
barplot(df)
以上最開(kāi)始的輸入文件是eggnog-mapper軟件本地版注釋結(jié)果,如果用在線(xiàn)版獲得的注釋結(jié)果,下載的結(jié)果好像沒(méi)有表頭,需要自己對(duì)應(yīng)好要選擇的列。
關(guān)于“如何使用clusterProfiler包利用eggnog-mapper軟件注釋結(jié)果做GO和KEGG富集分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,使各位可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),請(qǐng)把它分享出去讓更多的人看到。
網(wǎng)站標(biāo)題:如何使用clusterProfiler包利用eggnog-mapper軟件注釋結(jié)果做GO和KEGG富集分析
本文路徑:http://www.rwnh.cn/article4/jiesoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、網(wǎng)站內(nèi)鏈、企業(yè)網(wǎng)站制作、標(biāo)簽優(yōu)化、微信公眾號(hào)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)