上下调分开富集分析

最后发布时间: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")
快捷入口
组学绘图 思维导图 浏览PDF 下载PDF
分享到:
标签