LTLA / BiocSingular

Clone of the Bioconductor repository for the BiocSingular package.

Home Page:https://bioconductor.org/packages/devel/bioc/html/BiocSingular.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

`runIrlbaSVD()` on DelayedMatrix

drisso opened this issue · comments

I'm trying to run

svd <- runIrlbaSVD(x)

where x is a DelayedMatrix, but I get the following error:

Error in W[, j_w] <- avj : 
  number of items to replace is not a multiple of replacement length

This is the same error that I get if I run irlba::irlba() directly on x. Looking at the runIrlbaSVD() code, it looks like it's indeed passing a DelayedMatrix (the result of standardize_matrix()) to irlba::irlba().

Obviously, this works:

svd <- runIrlbaSVD(as.matrix(x))

But is there a way to use irlba on DelayedMatrices or should I stick to random or exact SVD?

This is a known issue, waiting for irlba update to propagate bwlewis/irlba#45.

Thanks, @LTLA!

This should be fixed in the latest irlba (2.3.3, just came out today).