把火山图做成烟花图

差异分析,大家都喜欢两个分组的比较,但实际科研项目,往往是比这复杂,多达十几个甚至几十个分组也不稀奇。之前的教程: 多分组的差异分析只需要合理设置design矩阵即可,我们展示了无论多少个分组,都可以很方便的进行差异分析。

对两个分组的差异分析,我们会首选火山图进行展示,但是有一个学员反馈了他画出来的一个超级诡异的火山图,我把它命名为烟花图!



下面我们就以 airway 这个R包来演示这个过程,如果你没有这个包,就自己使用代码 :BiocManager::install('airway') 进行安装哦!

整理数据

代码块里面的内容有点多, 实际上仅仅是一个熟悉airway这个表达量矩阵的过程:

正常差异分析

我们这里首先选取最出名的包,DESeq2来进行差异分析:

#2.进行差异分析 ------------------------------------------------------------------
rm(list = ls())
options(stringsAsFactors = F)

# 读取基因表达矩阵信息
lname <- load(file = "./data/Step01-airwayData.Rdata")
lname 

# 查看分组信息和表达矩阵数据
exprSet <- filter_count
dim(exprSet)
exprSet[1:6,1:6]
table(group_list)

# 加载包
library(DESeq2)

# 第一步,构建DESeq2的DESeq对象
colData <- data.frame(row.names=colnames(exprSet),group_list=group_list)
dds <- DESeqDataSetFromMatrix(countData = exprSet,colData = colData,design = ~ group_list)

# 第二步,进行差异表达分析
dds2 <- DESeq(dds)

# 提取差异分析结果,trt组对untrt组的差异分析结果
tmp <- results(dds2,contrast=c("group_list","trt","untrt"))
DEG_DESeq2 <- as.data.frame(tmp[order(tmp$padj),])
head(DEG_DESeq2)

# 去除差异分析结果中包含NA值的行
DEG_DESeq2 = na.omit(DEG_DESeq2)

# 筛选上下调,设定阈值
fc_cutoff <- 1
fdr <- 0.05

DEG_DESeq2$regulated <- "normal"

loc_up <- intersect(which(DEG_DESeq2$log2FoldChange>log2(fc_cutoff)),
                    which(DEG_DESeq2$padj<fdr))
loc_down <- intersect(which(DEG_DESeq2$log2FoldChange< (-log2(fc_cutoff))),
                      which(DEG_DESeq2$padj<fdr))

DEG_DESeq2$regulated[loc_up] <- "up"
DEG_DESeq2$regulated[loc_down] <- "down"

table(DEG_DESeq2$regulated)

head(DEG_DESeq2)
library(AnnoProbe)
ag=annoGene(rownames(DEG_DESeq2),
         ID_type = 'ENSEMBL',species = 'human'
            )
head(ag)
DEG_DESeq2$ENSEMBL=rownames(DEG_DESeq2)

deg_anno=merge(ag,DEG_DESeq2,by='ENSEMBL')
head(deg_anno)
# 保存
write.table(deg_anno,"./data/DEG_DESeq2_all.xls",
            row.names = F,sep="\t",quote = F) 
save(deg_anno, file = "./data/Step03-DESeq2_nrDEG.Rdata")

得到了上下调基因,有了差异分析结果表格,每个表格都可以去判断统计学显著的上下调基因,去富集分析,去做火山图,热图。这样的分析看我六年前的表达芯片的公共数据库挖掘系列推文即可哈 :

不过我们这里仅仅是展现火山图即可:

绘制火山图

如下所示:



创作烟花图所需要的数据

火山图是基于正常的表达量矩阵进行正常的差异分析得到的:

但是对于烟花图,我们需要把前面的两个分组的两个样品进行重复四次,假装是每个分组有4个重复值,实际上每个分组里面的重复都是人造的。

代码如下所示:

rm(list = ls())
options(stringsAsFactors = F)

# 读取基因表达矩阵信息
lname <- load(file = "./data/Step01-airwayData.Rdata")
lname 

# 查看分组信息和表达矩阵数据
exprSet <- filter_count
dim(exprSet)
exprSet[1:4,1:4]
group_list
table(group_list)
# 加载包
library(DESeq2)
exprSet=cbind(
  exprSet[,1:2],
  exprSet[,1:2],
  exprSet[,1:2],
  exprSet[,1:2]
) 
colnames(exprSet)=1:8 
# DESeq2包不受欺骗,不支持我们的这样的假冒伪劣矩阵哦
if(F){
  # 加载包
  library(DESeq2)
  # 第一步,构建DESeq2的DESeq对象
  colData <- data.frame(row.names=colnames(exprSet),group_list=group_list)
  dds <- DESeqDataSetFromMatrix(countData = exprSet,colData = colData,design = ~ group_list)
  # 第二步,进行差异表达分析
  dds2 <- DESeq(dds)

  # 提取差异分析结果,trt组对untrt组的差异分析结果
  tmp <- results(dds2,contrast=c("group_list","trt","untrt"))
  DEG_DESeq2 <- as.data.frame(tmp[order(tmp$padj),])
  head(DEG_DESeq2)
}



# 加载包
library(limma)
library(edgeR) 
#创建设计矩阵和对比:假设数据符合分布,构建线性模型
design <- model.matrix(~0+factor(group_list))
colnames(design) <- levels(factor(group_list))
rownames(design) <- colnames(exprSet)
design

#设置需要进行对比的分组
comp <- 'trt-untrt'
cont.matrix <- makeContrasts(contrasts=c(comp),levels = design)
#进行差异表达分析
dge <- DGEList(counts=exprSet)
v <- voom(dge,design,plot=TRUE, normalize="quantile") 
fit <- lmFit(v, design)
fit2 <- contrasts.fit(fit,cont.matrix)
fit2 <- eBayes(fit2)
tmp <- topTable(fit2, coef=comp, n=Inf,adjust.method="BH")
DEG_limma_voom <- na.omit(tmp)

head(DEG_limma_voom)
library(AnnoProbe)
ag=annoGene(rownames(DEG_limma_voom),
            ID_type = 'ENSEMBL',species = 'human'
)
head(ag)
DEG_limma_voom$ENSEMBL=rownames(DEG_limma_voom)

deg_anno=merge(ag,DEG_limma_voom,by='ENSEMBL')
head(deg_anno)
library(EnhancedVolcano)
colnames(deg_anno)
EnhancedVolcano(deg_anno,
                lab =deg_anno$SYMBOL,
                x = 'logFC',
                y = 'adj.P.Val')

如下所示:



学徒作业:

运行我这个教程里面的代码,得到两次差异分析结果后,进行比较,绘制各自上下调基因的韦恩图看看!

思考题

既然我们前面把每个分组里面的单个样品简单粗暴的复制粘贴3次充当生物学重复,会导致计算得到的p值如此的诡异。

那么, 假如你的两个分组真的就是都有且仅有一个样品,你该如何进行差异分析呢?

深圳SEO优化公司株洲网站推广系统多少钱广元网站优化推广哪家好毕节网站推广方案价格天津企业网站建设报价张掖网站定制报价邵阳百度竞价包年推广公司张北网站seo优化价格襄樊关键词按天计费哪家好珠海关键词排名哪家好福田网站改版价格潮州网站优化按天扣费沧州网站改版推荐雅安优化多少钱通辽营销型网站建设哪家好绥化如何制作网站推荐三明网站优化推广报价盘锦阿里店铺托管推荐张北网站优化推广报价民治品牌网站设计公司南阳网站优化塘坑网站改版报价绍兴网站建设设计推荐晋中网站优化多少钱赣州模板推广推荐扬州建网站哪家好延安阿里店铺运营哪家好大芬百度seo公司张家界百姓网标王推广推荐临汾SEO按效果付费报价株洲SEO按天计费哪家好歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化