手把手入门--DESeq2差异基因分析
准备工作
需要你先安装好R-3.6.0 、Rtools-3.5、Rstudio,这是基本的运行环境。
然后再此基础上安装DESeq2 的R包。
>Install.packages(” BiocManager” )
>BiocManager::install(version=”3.10”)
>BiocManager::install(” DESeq2”)
>library(DESeq2)
这一步没什么提示或者只是warning提示,就是安装成功了。
后续就可以开始一步一步的进行差异基因分析了。
准备好的数据有两个:(1)readcount数据文件,example.count.txt
(2)样品分组信息文件,example.group.txt。
这里ck-1、ck-2、 ck-3是对照的三个生物学重复,属于ck组;
case1、case2、case3是研究对象的三个生物学重复,属于case组。
分组信息的内容如下:
#设置工作目录,所有的数据和输出结果都放在这里。
setwd("D:/R.workspace")
#加载DESeq2包
library(DESeq2)
第1步,构建eg_dds对象,具体过程如下:
#read.table()函数可直接读取txt文本。
eg_count <-read.table("example.count.txt", header = T,sep="\t",row.names = 1, comment.char = "", check.names = F)
#预处理,过滤低丰度的数据,这里的条件是所有样板的readcount之和>0
#apply(b,1,sum)经常用来计算矩阵中行或列的平均值或总和。b,代表矩阵;1=对行操作,2=对列操作;sum=求和,mean=求平均值
eg_countData<-eg_count[apply(eg_count,1,sum)>0,]
#读取样本分组信息
group_list=read.table("example.group.txt",header= T, sep="\t",row.names = 1, comment.char = "", check.names= F)
#构建DESeq2中的dds对象
eg_dds <-DESeqDataSetFromMatrix(countData = eg_countData,colData = group_list, design =~ eg_cond)
#在做差异分析时,指定哪一组作为对照数据control。
eg_dds$eg_cond<-relevel(eg_dds$eg_cond,ref="ck")
第2步:样本数据进行归一标准化
eg_dds <-estimateSizeFactors(eg_dds)
第3步:估计基因的离散程度
eg_dds <-estimateDispersions(eg_dds)
第4步:差异表达分析
eg_dds <- nbinomWaldTest(eg_dds)
res <-results(eg_dds)
#把计算得到的结果输出到指定文件中。
write.table(res,"example.out2.txt",sep="\t",quote=F,col.names = NA)
为了简化代码调用,已经将下面三个函数的处理过程封装入函数DESeq()中。
=====dds <-DESeq(dds)函数等于下面三个函数的处理过程=====
dds <-estimateSizeFactors(dds)
dds <-estimateDispersions(dds)
dds <-nbinomWaldTest(dds)
==========================================
需要注意的是:
将自己计算的结果与DESeq2进行对比,可以发现,baseMean的结果是一致的,而log2Foldchange的差异则很大,有的差异连正负都能出现
log2FC反映的是不同分组间表达量的差异,这个差异包含两部分:(1)样本间本身的差异,如生物学重复样本间基因的表达量会有一定程度的差异;(2)由于分组不同或者实验条件不同造成的差异,这类差异是我们感兴趣的。
用归一化后的数值直接计算出的log2Foldchange包含了以上提到的两种差异,我们真正感兴趣的只有分组不同导致的差异,DESeq2在分析过程中,已考虑到了样本本身的差异,所以最后得到的log2FC与手动计算的会出现差异。
参考网页:http://www.360doc.com/content/19/1224/14/68068867_881789440.shtml
https://www.jianshu.com/p/3a0e1e3e41d0
https://www.jianshu.com/p/699b945f8e01?from=singlemessage