Hi all,
I am running DESeq2 (version 1.36.0) for 7 different experimental groups. 2 of the groups only have 1 replicate. I thought that DESeq2 does not work for groups without replicates, but I did not exclude the groups prior to creating the DESeq object, because I thought that they might still provide some information for the dispersion estimation.
To my surprise, after running DESeq2, I got a DESeqResults
object for the group with only one replicate which even included some significant genes. Can anyone provide some pointers why this happend? Is it because my other groups have replicates, so the dispersion could be estimated? Also, would you "trust" the results for the group with only one replicate?
Here is the dput
for a dds
object to reproduce the behavior:
new("DESeqDataSet", design = ~perturbation, dispersionFunction = function ()
NULL, rowRanges = new("CompressedGRangesList", unlistData = new("GRanges",
seqnames = new("Rle", values = structure(integer(0), levels = character(0), class = "factor"),
lengths = integer(0), elementMetadata = NULL, metadata = list()),
ranges = new("IRanges", start = integer(0), width = integer(0),
NAMES = NULL, elementType = "ANY", elementMetadata = NULL,
metadata = list()), strand = new("Rle", values = structure(integer(0), levels = c("+",
"-", "*"), class = "factor"), lengths = integer(0), elementMetadata = NULL,
metadata = list()), seqinfo = new("Seqinfo", seqnames = character(0),
seqlengths = integer(0), is_circular = logical(0), genome = character(0)),
elementMetadata = new("DFrame", rownames = NULL, nrows = 0L,
elementType = "ANY", elementMetadata = NULL, metadata = list(),
listData = structure(list(), names = character(0))),
elementType = "ANY", metadata = list()), elementMetadata = new("DFrame",
rownames = NULL, nrows = 4L, elementType = "ANY", elementMetadata = new("DFrame",
rownames = NULL, nrows = 0L, elementType = "ANY", elementMetadata = NULL,
metadata = list(), listData = list(type = character(0),
description = character(0))), metadata = list(),
listData = structure(list(), names = character(0))), elementType = "GRanges",
metadata = list(), partitioning = new("PartitioningByEnd",
end = c(0L, 0L, 0L, 0L), NAMES = c("EB", "EC", "EE",
"ISC"), elementType = "ANY", elementMetadata = NULL,
metadata = list())), colData = new("DFrame", rownames = c("Control Replicate 1",
"Control Replicate 2", "NotchRNAi Replicate 1", "CphUp Replicate 1",
"CphUp Replicate 2", "CphRNAi Replicate 1", "CphRNAi Replicate 2",
"NotchCphRNAi Replicate 1", "Control Replicate 1 (3')", "Control Replicate 2 (3')",
"Notch Replicate 1 (3')", "Notch Replicate 2 (3')"), nrows = 12L,
elementType = "ANY", elementMetadata = new("DFrame", rownames = NULL,
nrows = 3L, elementType = "ANY", elementMetadata = NULL,
metadata = list(), listData = list(type = c("input",
"input", "intermediate"), description = c("", "", "a scaling factor for columns"
))), metadata = list(), listData = list(orig.ident.unique = structure(c(3L,
4L, 9L, 5L, 6L, 7L, 8L, 12L, 1L, 2L, 10L, 11L), levels = c("Control Replicate 1 (3')",
"Control Replicate 2 (3')", "Control Replicate 1", "Control Replicate 2",
"CphUp Replicate 1", "CphUp Replicate 2", "CphRNAi Replicate 1",
"CphRNAi Replicate 2", "NotchRNAi Replicate 1", "Notch Replicate 1 (3')",
"Notch Replicate 2 (3')", "NotchCphRNAi Replicate 1"), class = "factor"),
perturbation = structure(c(3L, 3L, 7L, 2L, 2L, 1L, 1L,
6L, 4L, 4L, 5L, 5L), levels = c("CphRNAi", "CphUp", "ctrl",
"ctrl_3prime", "notch_3prime", "NotchCphRNAi", "NotchRNAi"
), class = "factor"), sizeFactor = c(`Control Replicate 1` = 1.65060334158416,
`Control Replicate 2` = 0.525139232673267, `NotchRNAi Replicate 1` = 1.39441522277228,
`CphUp Replicate 1` = 0.46875, `CphUp Replicate 2` = 0.217667079207921,
`CphRNAi Replicate 1` = 0.738397277227723, `CphRNAi Replicate 2` = 0.216042698019802,
`NotchCphRNAi Replicate 1` = 0.254795792079208, `Control Replicate 1 (3')` = 1.78055383663366,
`Control Replicate 2 (3')` = 1.04679764851485, `Notch Replicate 1 (3')` = 2.20266089108911,
`Notch Replicate 2 (3')` = 1.50417698019802))), assays = new("SimpleAssays",
data = new("SimpleList", listData = list(counts = structure(c(4824L,
1495L, 77L, 717L, 1073L, 974L, 32L, 184L, 1271L, 576L, 1320L,
2842L, 1019L, 775L, 32L, 194L, 143L, 742L, 14L, 39L, 1434L,
1484L, 25L, 239L, 341L, 561L, 5L, 24L, 30L, 774L, 11L, 283L,
4361L, 2265L, 356L, 691L, 1781L, 2450L, 142L, 138L, 1464L,
885L, 1946L, 5197L, 857L, 2348L, 549L, 2728L), dim = c(4L,
12L), dimnames = list(c("EB", "EC", "EE", "ISC"), c("Control Replicate 1",
"Control Replicate 2", "NotchRNAi Replicate 1", "CphUp Replicate 1",
"CphUp Replicate 2", "CphRNAi Replicate 1", "CphRNAi Replicate 2",
"NotchCphRNAi Replicate 1", "Control Replicate 1 (3')", "Control Replicate 2 (3')",
"Notch Replicate 1 (3')", "Notch Replicate 2 (3')")))), elementType = "ANY",
elementMetadata = NULL, metadata = list())), NAMES = NULL,
elementMetadata = new("DFrame", rownames = NULL, nrows = 4L,
elementType = "ANY", elementMetadata = NULL, metadata = list(),
listData = structure(list(), names = character(0))),
metadata = list(version = structure(list(c(1L, 36L, 0L)), class = c("package_version",
"numeric_version"))))
result <- DESeq(dds, fitType='local')
results(result, name="perturbation_NotchRNAi_vs_CphRNAi") # NotchRNAi only has one replicate
Any insights are much appreciated!