## ----echo=FALSE, results="hide"-----------------------------------------------
knitr::opts_chunk$set(error=FALSE, message=FALSE, warning=FALSE)
library(BiocStyle)

## -----------------------------------------------------------------------------
library(DelayedRandomArray)
X <- RandomUnifArray(c(1e6, 1e6))
X

## -----------------------------------------------------------------------------
RandomNormArray(c(100, 50))
RandomPoisArray(c(100, 50), lambda=5)
RandomGammaArray(c(100, 50), shape=2, rate=5)
RandomWeibullArray(c(100, 50), shape=5)

## -----------------------------------------------------------------------------
RandomNormArray(c(100, 50), mean=1)

## -----------------------------------------------------------------------------
RandomNormArray(c(100, 50), mean=1:100)

## -----------------------------------------------------------------------------
means <- RandomNormArray(c(100, 50))
RandomPoisArray(c(100, 50), lambda=2^means)

## -----------------------------------------------------------------------------
ngenes <- 20000
log.abundances <- runif(ngenes, -2, 5)

nclusters <- 20 # define 20 clusters and their population means.
cluster.means <- matrix(2^rnorm(ngenes*nclusters, log.abundances, sd=2), ncol=nclusters)

ncells <- 1e6
clusters <- sample(nclusters, ncells, replace=TRUE) # randomly allocate cells
cell.means <- DelayedArray(cluster.means)[,clusters]

dispersions <- 0.05 + 10/cell.means # typical mean variance trend.

y <- RandomNbinomArray(c(ngenes, ncells), mu=cell.means, size=1/dispersions)
y

## -----------------------------------------------------------------------------
# Row-wise chunks:
RandomUnifArray(c(1000, 500), chunkdim=c(1, 500))

# Column-wise chunks:
RandomUnifArray(c(1000, 500), chunkdim=c(1000, 1))

## -----------------------------------------------------------------------------
set.seed(199)
RandomUnifArray(c(10, 5), chunkdim=c(1, 5))

set.seed(199)
RandomUnifArray(c(10, 5), chunkdim=c(10, 1))

## -----------------------------------------------------------------------------
set.seed(999)
RandomNormArray(c(10, 5))

set.seed(999)
RandomNormArray(c(10, 5))

## -----------------------------------------------------------------------------
RandomPoisArray(c(1e6, 1e6), lambda=0.5) # dense by default

RandomPoisArray(c(1e6, 1e6), lambda=0.5, sparse=TRUE) # treat as sparse

## -----------------------------------------------------------------------------
sessionInfo()