我在DESeq2上有以下模型,我正在阻塞复制。
dds <- DESeqDataSetFromMatrix(countData = CPEB4_featureCounts_3utr_matrix,
colData = CPEB4_sample_list,
design = ~ replicate + sample_name)
dds <- DESeq(dds)`
这是元数据:
sample_name replicate
0195_2022 INPUT 4
0196_2022 IgG 4
0197_2022 CPEB4 4
0198_2022 INPUT 5
0199_2022 IgG 5
0200_2022 CPEB4 5
2125_2021 INPUT 1
2126_2021 IgG 1
2127_2021 CPEB4 1
2235_2021 INPUT 2
2237_2021 CPEB4 2
2238_2021 INPUT 3
2239_2021 IgG 3
2240_2021 CPEB4 3
我想提取对比"CPEB4 - IgG">
我可以通过使用results
函数这样做:
CPEB4vsIgG <- results(dds, contrast=c("sample_name","CPEB4","IgG"))
我得到了以下结果:
summary(CPEB4vsIgG)
out of 17300 with nonzero total read count
adjusted p-value < 0.1
LFC > 0 (up) : 598, 3.5%
LFC < 0 (down) : 30, 0.17%
outliers [1] : 0, 0%
low counts [2] : 7637, 44%
(mean count < 41)
[1] see 'cooksCutoff' argument of ?results
[2] see 'independentFiltering' argument of ?results
然而,我也可以手动计算系数(当我有更复杂的对比时,我通常这样做),像这样:
mod_mat <- model.matrix(design(dds), colData(dds))
CPEB4 <- colMeans(mod_mat[dds$sample_name == "CPEB4", ])
IgG <- colMeans(mod_mat[dds$sample_name == "IgG", ])
CPEB4vsIgG_2 <- results(dds, contrast = (CPEB4 - IgG))
然而,使用这段代码,我得到了一个稍微不同的deg列表:
summary(CPEB4vsIgG_2)
out of 17300 with nonzero total read count
adjusted p-value < 0.1
LFC > 0 (up) : 672, 3.9%
LFC < 0 (down) : 81, 0.47%
outliers [1] : 0, 0%
low counts [2] : 7637, 44%
(mean count < 41)
[1] see 'cooksCutoff' argument of ?results
[2] see 'independentFiltering' argument of ?results
如果我检查两组的系数,我要减去它看起来一切都很好:
CPEB4
(Intercept) replicate2 replicate3 replicate4 replicate5 sample_nameIgG
1.0 0.2 0.2 0.2 0.2 0.0
sample_nameINPUT
0.0
IgG
(Intercept) replicate2 replicate3 replicate4 replicate5 sample_nameIgG
1.00 0.00 0.25 0.25 0.25 1.00
sample_nameINPUT
0.00
为什么会有这样的区别?
如果我创建一个没有考虑复制的模型,我用两种方法得到相同的结果。
你可以在这里找到答案:https://support.bioconductor.org/p/9148941/