DESeq2的baseMean和log2FoldChange是如何得到的?

有一个朋友问了我一个问题,DESeq2的baseMean是如何计算?我最初都是认为baseMean计算的是对照组的样本标准化counts的均值。由于我在分析结果里还会提供所有样本的标准化的counts,所以这个baseMean我也没有太过在意。在他提出问题后,我做了如下的探索,以R包airway为例

首先提取出差异表达的baseMean

library(airway)
data("airway")
se <- airway

library("DESeq2")
ddsSE <- DESeqDataSet(se, design = ~ cell + dex)
ddsSE

dds <- ddsSE

keep <- rowSums(counts(dds)) >= 10
dds <- dds[keep,]

dds$condition <- colData(dds)$dex
dds$condition <- relevel(dds$condition, ref = "untrt")
dds <- DESeq(dds)
res <- results(dds)
res
2013053-f1a1c65938b1fa89.png
部分结果

ENSG00000000003为例,提取该基因组在所有样本的表达量

normlized_counts <- counts(dds, normalized=TRUE)

untrt <- normlized_counts['ENSG00000000003', c(1, 3, 5, 7)]
trt <-  normlized_counts['ENSG00000000003', c(2, 4, 6, 8)]

: 这里的对照组和实验组是间隔存放。

两者的均值如下,

> mean(untrt)
[1] 801.4966
> mean(trt)
[1] 615.6991

不难发现结果都和原来的708有差异。但是好像将两者进行平均后,结果就是708。

> mean(c(untrt, trt))
[1] 708.5979

结果验证了我的猜想。当然我还用关键字 "deseq2 basemean calculation"进行了搜索,链接如下

https://support.bioconductor.org/p/75244/

而log2FoldChange计算也不是简单的用标准化的counts进行计算,因为计算的时候需要考虑零值以及其他效应,参考链接为https://support.bioconductor.org/p/77021/

结论:

  1. 你以为的未必真的是你以为
  2. 相互交流可以提高水平
  3. 一定要学会搜索
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值