error in vst sctransform
Closed this issue · 2 comments
When I run the vst method from sctransform, I get the following error:
mm_vst_east <- mmDS(sce_east, method = "vst", vst = "sctransform", cov = c('reps'))
Calculating cell attributes from input UMI matrix: log_umi
Error in sample.int(length(x), size, replace, prob): NA in probability vector
Traceback:
1. mmDS(sce_east, method = "vst", vst = "sctransform", cov = c("reps"))
2. eval(vst_call)
3. eval(vst_call)
4. .vst_sctransform(x, verbose)
5. sctransform::vst(counts(x), min_cells = 0, verbosity = verbose)
6. sample(x = genes_step1, size = n_genes, prob = sampling_prob)
7. sample.int(length(x), size, replace, prob)
When I run it through the sctransform package it works fine (e.g., vst(counts(sce_east), min_cells=1)
works) BUT when I set min_cells=0
, I get the same error. I'm running sctransform version 0.3.3. Any ideas on what is going on?
Jup, I'd say this is to be expected. If you have a look at ?vst
, min_cells
determines that only "genes that have been detected in at least this many cells" are used (default is 5). I couldn't reproduce the exact same error, but by just setting a single gene to all-0 (i.e., make it undetected across all cells), I already get an error:
library(sctransform)
data("pbmc", package = "sctransform")
a <- b <- pbmc
# make a random gene undetected in 'b'
b[sample(nrow(pbmc), 1), ] <- 0
# this works (all genes detected)
A <- vst(a,
n_genes = NULL,
min_cells = 0,
verbosity = 0)
# this doesn't (one undetected gene)
B <- vst(b,
n_genes = NULL,
min_cells = 0,
verbosity = 0)
> Error in h(simpleError(msg, call)) :
error in evaluating the argument 'x' in selecting a method
for function 't': missing value where TRUE/FALSE needed
...ideally, I'd prefer vst
to handle this (e.g., min_cells = 0
shouldn't even be permitted if it makes the method doomed to fail). Then again, I think this isn't directly a muscat
-issue, but all-0 genes cause issues with many methods, and are often filtered out under the hood...