DeSeq2包——学习

2022-04-13  本文已影响0人  monkey_study
DeSeq2:基于负二项分布的差异表达分析

描述:估计来自高通量测序分析计数(count)数据中的方差-均值相关性,并基于使用负二项分布的模型来检验差异表达
说明:DeSeq2包用于高维度count数据的标准化,可视化以及差异分析。通过经验贝叶斯算法估计logFC以及离散度先验,计算这些量的后验估计。(先验与后验从原因到结果的论证称为“先验的”,而从结果到原因的论证称为“后验的”。)

主要函数:

其他函数

  1. coef(object, SE = FALSE, ...)
suppressMessages(library(DESeq2))  #加载包
dds <- makeExampleDESeqDataSet(m=4)  #构建数据集
dds <- DESeq(dds)   #差异分析
coef(dds)[1,]    #查看系数   
coef(dds, SE=TRUE)[1,]   ##查看系数标准误
  1. collapseReplicates函数
dds <- makeExampleDESeqDataSet(m=12)  #1000个基因(行),12个样本(列)
# make data with two technical replicates for three samples
dds$sample <- factor(sample(paste0("sample",rep(1:9, c(2,1,1,2,1,1,2,1,1))))) #设定分组因子(数目与数据集列一致)
dds$run <- paste0("run",1:12)
ddsColl <- collapseReplicates(dds, dds$sample, dds$run)  #按照因子等级求和将数据折叠
# examine the colData and column names of the collapsed data
colData(ddsColl)
colnames(ddsColl)
###对该函数结果验证
matchFirstLevel <- dds$sample == levels(dds$sample)[1]  #返回判断sample1所得到的逻辑值
#sample1对应dds第2,6列,对两列数据每行基因求和后,将其与折叠后的数据ddscoll第一列sample1对比。
stopifnot(all(rowSums(counts(dds[,matchFirstLevel])) == counts(ddsColl[,1])))
  1. counts函数
dds <- makeExampleDESeqDataSet(m=4)  #构建示例数据集
class(counts(dds))  #查看数据类型,counts(dds)输出为表达矩阵
head(counts(dds))   #查看样本基因count矩阵前6行
dds<- estimateSizeFactors(dds) 
head(counts(dds, normalized=TRUE))   

normalized 标准化这里大小因子或归一化因子是什么?回答:使用标准化因子(scale factor)来解释库深度的差异,简单说就是校正测序深度。

mark一个原理说明:DESeq2对原始reads进行建模,使用标准化因子(scale factor)来解释库深度的差异。然后,DESeq2估计基因的离散度,并缩小这些估计值以生成更准确的离散度估计,从而对reads count进行建模。最后,DESeq2拟合负二项分布的模型,并使用Wald检验或似然比检验进行假设检验。
DESeq2的建模原理及简单用法 - 简书 (jianshu.com)

  1. DESeq函数
# 
# 来自转录组测序的count数据
cnts <- matrix(rnbinom(n=1000, mu=100, size=1/0.5), ncol=10)
cond <- factor(rep(1:2, each=5))
# 构建DESeqDataSet数据集
# 输入表达矩阵cnts,样本分组因子矩阵DataFrame(cond),以及模型矩阵公式~ cond
# 输出DESeqDataSet数据集
dds <- DESeqDataSetFromMatrix(cnts, DataFrame(cond), ~ cond)
# 标准差异分析过程
dds <- DESeq(dds)  #差异分析
res <- results(dds)  #查看差异分析结果并赋值给res
# baseMean log2FoldChange     lfcSE        stat    pvalue      padj
# moderated log2 fold changes
# baseMean表示所有样本经过归一化系数矫正的read counts(counts/sizeFactor)的均值。log2Foldchange表示该基因的表达发生了多大的变化,是估计的效应大小effect size。对差异表达的倍数取以2为底的对数,变化倍数=2^log2Foldchange。(log2FC反映的是不同分组间表达量的差异,这个差异由两部分构成,一种是样本间本身的差异,比如生物学重复样本间基因的表达量就有一定程度的差异,另外一部分就是我们真正感兴趣的,由于分组不同或者实验条件不同造成的差异。用归一化之后的数值直接计算出的log2FC包含了以上两种差异,而我们真正关注的只有分组不同造成的差异,DESeq2在差异分析的过程中已经考虑到了样本本身的差异,其最终提供的log2FC只包含了分组间的差异,所以会与手动计算的不同)。
# 
# lfcSE(logfoldchange Standard Error)是对于log2Foldchange估计的标准误差估计,效应大小估计有不确定性。
# 
# stat是Wald统计量,它是由log2Foldchange除以标准差所得。

# pvalue和padj分别代表原始的p值以及经过校正后的p值。
resultsNames(dds)
resLFC <- lfcShrink(dds, coef=2, type="apeglm")  #logFC缩放
BiocManager::install("apeglm")
# an alternate analysis: likelihood ratio test
ddsLRT <- DESeq(dds, test="LRT", reduced= ~ 1)
resLRT <- results(ddsLRT)
 
上一篇 下一篇

猜你喜欢

热点阅读