美文网首页
2021-04-27 差异分析

2021-04-27 差异分析

作者: 学习生信的小兔子 | 来源:发表于2021-05-05 22:45 被阅读0次
###差异分析
rm(list=ls())
load('exp_group.Rdata')
Sys.setenv(LANGUAGE='EN')
exp[1:4,1:4]
table(group_list)
先画箱线图看一下~
boxplot(exp[1,]~group_list)
t.test(exp[1,]~group_list)
library(ggpubr)
df <- data.frame(gene=exp[1,],group=group_list)
p <- ggboxplot(df,x='group',y='gene',
               color = 'group',palette = 'jco',
               add='jitter')
#  Add p-value
p + stat_compare_means()
##封装为函数
bp=function(g){         #定义一个函数bp,函数为{}里的内容
  library(ggpubr)
  df=data.frame(gene=g,group=group_list)
  p <- ggboxplot(df, x = "group", y = "gene",
                 color = "group", palette = "jco",
                 add = "jitter")
  #  Add p-value
  p + stat_compare_means()
}
bp(exp[1,]) ## 调用上面定义好的函数,避免同样的绘图代码重复多次敲。
bp(exp[2,])
bp(exp[3,])
bp(exp[4,])
boxplot

limma差异分析

library(limma)
design=model.matrix(~factor( group_list ))#创建一个因子矩阵
#model.matrix创建一个矩阵模型(设计)
fit=lmFit(exp,design)
#lmFit 给定阵列数据为每个基因拟合线性模型
fit=eBayes(fit)
#eBayes 给出了一个微阵列线性模型拟合,通过经验贝叶斯调整标准误差到一个共同的值来计算修正后的t统计量、修正后的f统计量和微分表达式的对数概率。
## 上面是limma包用法的一种方式 
options(digits = 4) #设置全局的数字有效位数为4
#topTable(fit,coef=2,adjust='BH') 
topTable(fit,coef=2,adjust='BH') 
#coef可以是column number,也可以是column name,这样就可以指定你所感兴趣的两两比较的结果
#topTable从线性模型拟合中提取排名靠前的基因表。
bp(exp['241662_x_at',])
bp(exp['207639_at',])
deg=topTable(fit,coef=2,adjust='BH',number = Inf)
save(deg,file='deg.Rdata')
5f184e00-0f2c-4f62-b797-4d2ec12aeea1.png
#step 4 基因id转换
rm(list = ls())
head(deg)
deg[1:5,1:5]#想知道上下调基因属于什么通路
deg$probe_id=rownames(deg) #deg重新取一列命名为probe_id,将deg的行名给新取的这一列作为每一行的内容
library(hgu133plus2.db)
ids=toTable(hgu133plus2SYMBOL)
deg=merge(deg,ids,by='probe_id')#通过merge函数,由于deg和ids都有probe_id这一列,因此通过'probe_id'合并为新的deg
-deg
save(deg,file = 'deg.Rdata')

##火山图
rm(list=ls())
load('deg.Rdata')
head(deg)
deg$change=as.factor(
  ifelse(deg$P.Value>0.01, 'stable', 
         ifelse(deg$logFC>1.5,'UP',
                ifelse(deg$logFC< -1.5,'DOWN','stable'))
  )
)
table(deg$change)
deg$'-log10(pvalue)' <- -log10(deg$P.Value)
head(deg)
ggscatter(deg, x="logFC", y="-log10(pvalue)",
          color="change",size = 0.7,
          label = "symbol", repel = T, #自动调整标签位置
          label.select = c("AGR3","CYP4Z1","PROM1","SHC4"))

save(deg,file = "deg.Rdata")
rm(list = ls())
heatmap

热图

##热图
load("deg.Rdata")
head(deg)
tmp <- deg$logFC; names(tmp) <- deg$probe_id
head(tmp)
cg_up <- names(head(sort(tmp,decreasing = T),100))
cg_down <- names(head(sort(tmp),100))

load("exp_group.Rdata")
n=t(scale(t(exp[c(cg_up,cg_down),])))
n[n>2]=2; n[n< -2]= -2
n[1:4,1:4]
group_dat <- data.frame(group=group_list, row.names = colnames(exp))
library(pheatmap)
pheatmap(n,
         show_rownames = F,
         show_colnames = F,
         #cluster_cols = F,
         annotation_col = group_dat)
heatmap

参考:https://www.jianshu.com/p/207c8b8e6662

相关文章

网友评论

      本文标题:2021-04-27 差异分析

      本文链接:https://www.haomeiwen.com/subject/oulprltx.html