2022.06.25 | 转录组分析(二)--差异分析DeSeq(将服务器中的结果文件下载到本地,在R中操作)

DESeq2进行差异分析

### 安装包
############################
if (!requireNamespace("BiocManager", quietly = TRUE))
  install.packages("BiocManager")

BiocManager::install("DESeq2")
install.packages("corrplot")
install.packages("PerformanceAnalytics")
install.packages("factoextra")
############################

1 ###数据读入和处理

rm(list=ls()) 
countdata<- read.table("all_fcount.matrix.txt", header=TRUE,row.names = 1) #导入数据
head(countdata) # 查看数据前几行(列名 太长自己展示看)
##  过滤featurecounts后,每个样本计数小于等于10的!!!!!!!
countdata.filter<-countdata[rowSums(countdata)>=0&apply(countdata,1,function(x){all(x>=10)}),]
head(countdata.filter) 

colnames(countdata.filter) <- c("RIBEN_1","RIBEN_2","RIBEN_3","CHINA_1","CHINA_2","CHINA_3") # 修改列名
head(countdata.filter)
dim(countdata.filter) # 查看数据维度,即几行几列

2 #### dds矩阵的创建 ####

library(DESeq2)
condition <- factor(c("RIBEN","RIBEN","RIBEN","CHINA","CHINA","CHINA")) # 赋值因子,即变量
coldata <- data.frame(row.names=colnames(countdata.filter), condition) # 创建一个condition数据框
dds <- DESeqDataSetFromMatrix(countData=countdata.filter, colData=coldata, design=~condition) ##构建dds矩阵(后面很多分析都是基于这个dds矩阵)

3 ### DESeq2进行差异分析 #####

dds <- DESeq(dds)
resdata<- results(dds,contrast = c("condition","RIBEN","CHINA"))##此为前比后
table(resdata$padj<0.05 ) # Benjamini-Hochberg矫正后的p<0.05的基因数!!!!!!!
res_padj <- resdata[order(resdata$padj), ]  ##按照padj(矫正后的p值)列的值排序

write.table(res_padj,"diffexpr_padj_results.txt",,quote = F,sep = '\t')#### 将结果文件保存到本地,打开在第一列头加gene

4 #### DESeq2分析中得到的resdata进行绘制火山图 #####

rm(list=ls())  
resdata <- read.table("diffexpr_padj_results.txt",header = T,sep = '\t',row.names = 1)### 加载DESeq2中生成的resdata文件
resdata$label <- c(rownames(resdata)[1:10] ,rep(NA,(nrow(resdata)-10)))##对前10个基因进行标注

library(ggplot2)
ggplot(resdata,aes(x=log2FoldChange,y=-log10(padj))) +
geom_hline(yintercept = -log10(0.05),linetype = "dashed",color = "#999999")+ ##横向水平参考线,显著性--p值
geom_vline(xintercept = c(-1 , 1),linetype = "dashed", color = "#999999")+ ##纵向垂直参考线,差异倍数--foldchange
geom_point(aes(size = -log10(padj),color = -log10(padj))) + ##散点图
scale_color_gradientn(values = seq(0,1,0.2),
                       colors = c("#39489f","#39bbec","#f9ed36","#f38466","#b81f25"))+ ##指定颜色渐变模式
scale_size_continuous(range = c(0,3))+##指定散点渐变模式
  
##主题调整
###  theme_grey()为默认主题,theme_bw()为白色背景主题,theme_classic()为经典主题
theme_bw()+
##调整主题和图例位置
theme(panel.grid.major = element_blank(), #删除主网格线
        panel.grid.minor = element_blank(), #删除次网格线
        legend.position = c(0.08,0.9),      #设置图例位置
        legend.justification = c(0,1))+
##设置部分图例不显示
guides(col = guide_colourbar(title = "-Log10_q-value"),
         size = "none")+
##添加标签
geom_text(aes(label=c(label),color = -log10(padj)), size = 3, vjust = 1.5, hjust = 1)+
##修改坐标轴
xlab("Log2FC")+ylab("-Log10(FDR q-value)") 
##保存图片
ggsave("vocanol_plot.pdf", height = 9 , width = 10)

5 筛选差异基因

subset(resdata,pvalue < 0.05) -> diff  ## 先筛选pvalue < 0.05的行!!!!!
subset(diff,log2FoldChange < -0.585) -> down  ## 筛选出下调的,此处定位1.5倍
subset(diff,log2FoldChange > 0.58) -> up  ## 筛选出上调的
dim(down) # 查看数据维度,即几行几列
dim(up)
up1=as.data.frame(up )
#导出上、下调基因的那一列
up_names<-rownames(up)
write.table(up_names,'up_gene.txt',quote = F,sep = '\t',row.names = F)
down_names <- rownames(down)
write.table(down_names,'down_gene.txt',quote = F,sep = '\t',row.names = F)

6 表达矩阵探索,选取差异表达的基因做热图 (注意是用矫正后p值排外序的)

library(pheatmap)
choose_gene=head(rownames(resdata),50)  
choose_matrix=countdata.filter[choose_gene,]  #抽取差异表达显著的前50个基因
choose_matrix=t(scale(t(choose_matrix)))  #用t函数转置,scale函数标准化

pheatmap(choose_matrix)

7 PCA分析 使用对dds矩阵处理后的vst或rld值

dds_pca <- estimateSizeFactors(dds) #计算每个样本的归一化系数
vsd <- vst(dds_pca,blind = FALSE)  ## 方差稳定变换

rld <- rlog(dds_pca,blind = FALSE)  # 正则化对数变换
# rlog函数将count data转换为log2尺度,以最小化有small counts的行的样本间差异,并使library size标准化
## vst函数快速估计离散趋势并应用方差稳定变换。
## 数据集小于30个样品可以用rlog,数据集大于30个样品用vst,因为rlog速度慢
# 转换的目的是,为了确保所有基因有大致相同的贡献
plotPCA(vsd, intgroup=c("condition"))
plotPCA(rld, intgroup=c("condition"))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容