Deconvolute bulk gene expression samples (bulk RNA-Seq). This function
requires a DigitalDLSorter
object with a trained Deep Neural Network
model (trained.model
slot) and the new bulk RNA-Seq samples to
be deconvoluted in the deconv.data
slot. See
?loadDeconvData
for more details.
deconvDDLSObj(
object,
name.data = "Bulk.DT",
normalize = TRUE,
scaling = "standardize",
simplify.set = NULL,
simplify.majority = NULL,
use.generator = FALSE,
batch.size = 64,
verbose = TRUE
)
DigitalDLSorter
object with
trained.data
and deconv.data
slots.
Name of the data stored in the DigitalDLSorter
object. If not provided, the first data set will be used.
Normalize data before deconvolution (TRUE
by
default).
How to scale data before training. It may be:
"standardize"
(values are centered around the mean with a unit
standard deviation) or "rescale"
(values are shifted and rescaled so
that they end up ranging between 0 and 1). If normalize = FALSE
,
data is not scaled.
List specifying which cell types should be compressed into a new label whose name will be the list item. See examples for details. If provided, results are stored in a list with 'raw' and 'simpli.set' results.
List specifying which cell types should be
compressed into the cell type with the highest proportion in each sample.
Unlike simplify.set
, it allows to maintain the complexity of the
results while compressing the information, as no new labels are created. If
provided, the results are stored in a list with 'raw' and 'simpli.majority'
results.
Boolean indicating whether to use generators for
prediction (FALSE
by default).
Number of samples per batch. Only when use.generator
= TRUE
.
Show informative messages during the execution.
DigitalDLSorter
object with
deconv.results
slot. The resulting information is a data frame with
samples (\(i\)) as rows and cell types (\(j\)) as columns. Each entry
represents the proportion of \(j\) cell type in \(i\) sample. If
simplify.set
or/and simpplify.majority
are provided, the
deconv.results
slot will contain a list with raw and simplified
results.
This function is intended for users who have built a devonvolution model
using their own single-cell RNA-Seq data. If you want to use a pre-trained
model to deconvolute your samples, see ?deconvDDLSPretrained
.
Torroja, C. and Sánchez-Cabo, F. (2019). digitalDLSorter: A Deep Learning algorithm to quantify immune cell populations based on scRNA-Seq data. Frontiers in Genetics 10, 978. doi: doi:10.3389/fgene.2019.00978
if (FALSE) { # \dontrun{
set.seed(123)
sce <- SingleCellExperiment::SingleCellExperiment(
assays = list(
counts = matrix(
rpois(30, lambda = 5), nrow = 15, ncol = 20,
dimnames = list(paste0("Gene", seq(15)), paste0("RHC", seq(20)))
)
),
colData = data.frame(
Cell_ID = paste0("RHC", seq(20)),
Cell_Type = sample(x = paste0("CellType", seq(6)), size = 20,
replace = TRUE)
),
rowData = data.frame(
Gene_ID = paste0("Gene", seq(15))
)
)
DDLS <- createDDLSobject(
sc.data = sce,
sc.cell.ID.column = "Cell_ID",
sc.gene.ID.column = "Gene_ID",
sc.filt.genes.cluster = FALSE,
sc.log.FC = FALSE
)
probMatrixValid <- data.frame(
Cell_Type = paste0("CellType", seq(6)),
from = c(1, 1, 1, 15, 15, 30),
to = c(15, 15, 30, 50, 50, 70)
)
DDLS <- generateBulkCellMatrix(
object = DDLS,
cell.ID.column = "Cell_ID",
cell.type.column = "Cell_Type",
prob.design = probMatrixValid,
num.bulk.samples = 50,
verbose = TRUE
)
# training of DDLS model
tensorflow::tf$compat$v1$disable_eager_execution()
DDLS <- trainDDLSModel(
object = DDLS,
on.the.fly = TRUE,
batch.size = 15,
num.epochs = 5
)
# simulating bulk RNA-Seq data
countsBulk <- matrix(
stats::rpois(100, lambda = sample(seq(4, 10), size = 100, replace = TRUE)),
nrow = 40, ncol = 15,
dimnames = list(paste0("Gene", seq(40)), paste0("Bulk", seq(15)))
)
seBulk <- SummarizedExperiment(assay = list(counts = countsBulk))
DDLS <- loadDeconvData(
object = DDLS,
data = seBulk,
name.data = "Example"
)
# simplify arguments
simplify <- list(CellGroup1 = c("CellType1", "CellType2", "CellType4"),
CellGroup2 = c("CellType3", "CellType5"))
DDLS <- deconvDDLSObj(
object = DDLS,
name.data = "Example",
simplify.set = simplify,
simplify.majority = simplify
)
} # }