简单快速的GEO差异基因选取和绘制火山图

简单快速的GEO差异基因选取和绘制火山图

做GEO数据挖掘,有的时候,我们不需要做严格的分析,只想快速拿到差异基因,和简单的一张火山图。用来辅助其他的分析,如网络药理学,可以用以下的代码

代码语言:r复制
m(list = ls()) 
load( file =  'DEG_deseq2.Rdata' )
# load( file =  'DEG_limma_voom.Rdata' )
# load( file =  'DEG_edgeR.Rdata' ) 
colnames(DEG_deseq2)
#colnames(DEG_limma_voom)

## draw volcano plot quickly
library(dplyr)
library(ggplot2)
library(ggplotify)

deg <- DEG_deseq2

#3.加change列,标记上下调基因
#阈值,可按需修改
logFC_t = 1
p_t = 0.05
#使用padj或p值
k1 = (deg$pvalue < p_t)&(deg$log2FoldChange < -logFC_t)
k2 = (deg$pvalue < p_t)&(deg$log2FoldChange > logFC_t)
deg = mutate(deg,change = ifelse(k1,"down",ifelse(k2,"up","stable")))
table(deg$change)
#保存上调基因和下调基因
up <- deg[deg$change == "up",]
write.csv(up,file = "GSE277906_up_gene.csv")
down <- deg[deg$change == "down",]
write.csv(down,file = "GSE277906_down_gene.csv")

#火山图
library(ggplot2)
p1 <- ggplot(data = deg, aes(x = log2FoldChange, y = -log10(pvalue))) +
  geom_point(alpha=0.6, size=1.5, aes(color=change)) +
  scale_color_manual(values=c("blue", "grey","red"))+
  geom_vline(xintercept=c(-logFC_t,logFC_t),lty=4,col="black",linewidth=0.5) +
  geom_hline(yintercept = -log10(p_t),lty=4,col="black",linewidth=0.5) +
  theme_classic()
  #+
  #ggtitle("PCOS vs CON") + 
  #theme(plot.title = element_text(hjust = 0.5))

ggsave(plot = p1, filename = "deg_vol.pdf",height = 4,width = 5)