## ----echo=FALSE, results="hide", message=FALSE-------------------------------- knitr::opts_chunk$set(error=FALSE, message=FALSE, warning=FALSE) ## ----------------------------------------------------------------------------- mat <- matrix(rnorm(10000), ncol=10) smat1 <- scale(mat) head(smat1) library(DelayedArray) smat2 <- scale(DelayedArray(mat)) head(smat2) library(ScaledMatrix) smat3 <- ScaledMatrix(mat, center=TRUE, scale=TRUE) head(smat3) ## ----------------------------------------------------------------------------- library(Matrix) mat <- rsparsematrix(20000, 10000, density=0.01) smat <- ScaledMatrix(mat, center=TRUE, scale=TRUE) blob <- matrix(runif(ncol(mat) * 5), ncol=5) system.time(out <- smat %*% blob) # The slower way with block processing. da <- scale(DelayedArray(mat)) system.time(out2 <- da %*% blob) ## ----------------------------------------------------------------------------- library(BiocSingular) set.seed(1000) system.time(pcs <- runSVD(smat, k=10, BSPARAM=IrlbaParam())) ## ----------------------------------------------------------------------------- system.time(rowSums(smat)) system.time(rowSums(da)) ## ----------------------------------------------------------------------------- smat[,1:5] t(smat) rownames(smat) <- paste0("GENE_", 1:20000) smat ## ----------------------------------------------------------------------------- smat + 1 ## ----------------------------------------------------------------------------- set.seed(1000) mat <- matrix(rnorm(1000000), ncol=100000) big.mat <- mat + 1e12 # The 'correct' value, unaffected by numerical precision. ref <- rowMeans(scale(mat)) head(ref) # The value from scale'ing a DelayedArray. library(DelayedArray) smat2 <- scale(DelayedArray(big.mat)) head(rowMeans(smat2)) # The value from a ScaledMatrix. library(ScaledMatrix) smat3 <- ScaledMatrix(big.mat, center=TRUE, scale=TRUE) head(rowMeans(smat3)) ## ----------------------------------------------------------------------------- sessionInfo()