上下调分开富集分析
最后发布时间:2023-01-16 10:06:00
浏览量:
df <- read_tsv(paste0("figures/deg/",x))
name <- paste0(x)
deg_df <- df |>
filter(p_val_adj < 0.05) |>
mutate(change=ifelse(avg_log2FC>0,"up","down")) |>
mutate(SYMBOL=symbol)
entrez_id <- bitr(deg_df$symbol, fromType = "SYMBOL",
toType = c("ENTREZID"),
OrgDb = org.Hs.eg.db) |>
inner_join(deg_df,by="SYMBOL")
parse_ratio <- function(ratio) {
gsize <- as.numeric(sub("/\\d+$", "", as.character(ratio)))
gcsize <- as.numeric(sub("^\\d+/", "", as.character(ratio)))
return(gsize/gcsize)
}
options(digits = 2)
n = 10
entrez_id$change = str_to_lower(entrez_id$change)
kegg_up <- clusterProfiler::enrichKEGG(gene =entrez_id$ENTREZID[entrez_id$change=="up"],organism = 'hsa',pAdjustMethod="BH", use_internal_data =T)
kegg_down <- clusterProfiler::enrichKEGG(gene =entrez_id$ENTREZID[entrez_id$change=="down"],organism = 'hsa',pAdjustMethod="BH", use_internal_data =T)
kegg_up@result = mutate(kegg_up@result,change = "up")
kegg_down@result = mutate(kegg_down@result,change = "down")
kk = rbind(kegg_down@result[1:n,],kegg_up@result[1:n,])
kk$pvalue = ifelse(kk$change == "up",-log10(kk$pvalue),log10(kk$pvalue))
kk$ratio <- parse_ratio(kk$GeneRatio)
kk$ratio = ifelse(kk$change == "down",-kk$ratio,kk$ratio)
# default_labeller <- function(n) {
# function(str){
# str <- gsub("_", " ", str)
# # yulab.utils::str_wrap(str, n)
# str_wrap(str, n)
# }
# }
kk$Description <- str_wrap(kk$Description, 40)
ggplot(kk,aes(reorder(Description, ratio),ratio,fill=change))+
geom_col()+
theme_bw()+
theme(panel.grid.major=element_blank(),
panel.grid.minor=element_blank(),
panel.border = element_blank(),
legend.title = element_blank(),
axis.text = element_text(color="black",size=10),
axis.line.x = element_line(color='black'),
axis.ticks.y = element_blank(),
axis.text.y = element_blank(),
legend.position = 'none')+
coord_flip()+
# geom_segment(aes(y=0, yend=0,x=0,xend=18.5))+
geom_text(data = kk[which(kk$ratio>0),],aes(x=Description, y=-0.01, label=Description),
hjust=1, size=4)+
geom_text(data = kk[which(kk$ratio<0),],aes(x=Description, y=0.01, label=Description),
hjust=0, size=4)+
geom_text(data = kk[which(kk$ratio>0),],aes(label=format(p.adjust, scientific = T)),
hjust=-0.1, size=4, color='red')+
geom_text(data = kk[which(kk$ratio<0),],aes(label=format(p.adjust, scientific = T)),
hjust=1.1, size=4, color="red")+
scale_fill_manual(values = c("#1084A4",
"#8D4873"))+
scale_x_discrete(expand = expansion(mult = c(0,0)))+
# ylim(-0., 0.5)+
ylim(-max(abs(kk$ratio))-0.03, max(abs(kk$ratio))+0.03)+
labs(x='', y='Ratio')
ggsave(file=paste0("enrichment/",x,".pdf"),width = 200,height =230,units = "mm")