Question: weights must be finite positive value
0
8 months ago by
nonCodingGene10 wrote:

I'm using edgeR and an error for which I have not found a solution just appeared.

design <- model.matrix(~Cell.type, data = colData(summ.exp_norm))
dge$weights <- zinb.weights dge <- estimateDisp(dge, design) Error in .compressWeights(y, weights) : weights must be finite positive values As you can se no weight is out the rang 0-1 or infinite. > sum(is.infinite(dge$weights))
[1] 0

Where can the error be?

Thanks

edger estimatedispersions • 231 views
modified 8 months ago by Aaron Lun23k • written 8 months ago by nonCodingGene10

Why do you think is.infinite will tell you if any values are less than zero? Or for that matter, within the range 0-1?

Sorry, I forgot to show that also tested for max(dge$weights) and min(dge$weights), and values where 1 and 0.

Well, the test is

check.range <- suppressWarnings(range(weights))
if (any(is.na(check.range)) || check.range[1] <= 0) {
stop("weights must be finite positive values")
}


So really it's saying you have either negative or NA values. This comes after running makeCompressedMatrix, so you might see if there are any NA values after that step with your weights matrix.

sumis.na(dge$weights)) outputs 0 ADD REPLYlink modified 8 months ago • written 8 months ago by nonCodingGene10 Answer: weights must be finite positive value 0 8 months ago by Aaron Lun23k Cambridge, United Kingdom Aaron Lun23k wrote: Pretty simple, really. If min(dge$weights) is zero, that's not positive.

Oh yeah, <= 0 ...

What can be the source of this and how can I solve it?

I'm using edgeR for scRNA-seq, in order to manage droputs I use zinbwave

Just in case I've checked whether one condition has a gene for which its counts are all 0, and this does not happens.

This is how I calculate weights:

 zinb <- zinbFit(summ.exp_norm, K=2, epsilon=1000)
zinb.weights <- computeObservationalWeights(zinb, assay(summ.exp_norm))