CLIMB¶
CLIMB (Cellular-level LInear Model of Bulk deconvolution) deconvolutes bulk RNA-seq data using a single-cell RNA-seq reference dataset. See Methods for the underlying model.
This page documents climb(), the package’s single deconvolution function.
Usage¶
climb(sc, bulk, mode = "abundance", up.lim = Inf, verbose = TRUE, cancer_pattern = "*",
min_common_genes = 100, n.iter.subsampling = 5,
min.n.cells = 50, n.top_mean.genes = 500, confidence_weighting = TRUE)
Parameters¶
Required
Parameter |
Description |
|---|---|
|
|
|
|
Optional
Parameter |
Description |
Default |
|---|---|---|
|
|
|
|
Upper bound for coefficients (L-infinity norm constraint) |
|
|
Print progress messages |
|
|
String pattern matching the cancer cell-types in |
|
|
Minimum number of genes required in common between |
|
|
Number of reference sub-sampling iterations per Empirical Bayes round (averaged) |
|
|
Minimum cells per cell type to sub-sample |
|
|
Number of genes used for bulk-sample-specific gene selection |
|
|
If |
|
Output¶
climb() returns a list. Fields present in every mode:
Field |
Description |
|---|---|
|
Cell-type proportions from the initial run (samples × cell-types) |
|
Cell-type proportions after Empirical Bayes sub-sampling (samples × cell-types) |
Fields present only in mode = "expression":
Field |
Description |
|---|---|
|
Single-cell-level coefficients after Empirical Bayes correction (samples × cells) |
|
High-resolution cell-type expression (samples × genes × cell-types) |
|
Cell-type expression averaged across all samples |
A few additional internal/diagnostic fields (coefs.init, sc_norm, bulk_norm, expr.mapping) are also returned; full documentation of these is coming soon.
Note
cliff() reads expr.highres, expr.overall, and props.corrected from its climb_output argument, so CLIMB must be run with mode = "expression" before its output can be passed to CLIFF — mode = "abundance" alone is not sufficient.
Example¶
Using the bundled in-vitro dataset (4 leukemia cell lines mixed into 6 bulk samples, Fig. 2):
library(Biobase)
data(sc.es); data(bulk.es)
# Predict proportions only
result <- climb(sc = sc.es, bulk = bulk.es, mode = "abundance")
head(result$props.corrected)
head(pData(bulk.es)) # compare to the known true mixing proportions
# Predict proportions and cell-type expression
result <- climb(sc = sc.es, bulk = bulk.es, mode = "expression", n.iter.subsampling = 10)
result$expr.highres[1, 1:5, ] # first sample, first 5 genes