medianSizeFactors {scater} | R Documentation |
Define per-cell size factors by taking the median of ratios to a reference expression profile (a la DESeq).
medianSizeFactors(x, ...) ## S4 method for signature 'ANY' medianSizeFactors(x, subset_row = NULL, reference = NULL) ## S4 method for signature 'SummarizedExperiment' medianSizeFactors(x, exprs_values = "counts", ...) computeMedianFactors(x, ...)
x |
For For |
... |
For the For |
subset_row |
A vector specifying whether the size factors should be computed from a subset of rows of |
reference |
A numeric vector of length equal to |
exprs_values |
String or integer scalar indicating the assay of |
This function implements a modified version of the DESeq2 size factor calculation.
For each cell, the size factor is proportional to the median of the ratios of that cell's counts to reference
.
The assumption is that most genes are not DE between the cell and the reference, such that the median captures any systematic increase due to technical biases.
The modification stems from the fact that we use the arithmetic mean instead of the geometric mean to compute reference
,
as the former is more robust to the many zeros in single-cell RNA sequencing data.
That said, the median-based approach tends to perform poorly for typical scRNA-seq datasets for various reasons:
The high number of zeroes in the count matrix means that the median ratio for each cell is often zero. If this method must be used, we recommend subsetting to only the highest-abundance genes to avoid problems with zeroes. (Of course, the smaller the subset, the more sensitive the results are to noise or violations of the non-DE majority.)
The default reference effectively requires a non-DE majority of genes between any pair of cells in the dataset. This is a strong assumption for heterogeneous populations containing many cell types; most genes are likely to exhibit DE between at least one pair of cell types.
For these reasons, the simpler librarySizeFactors
is usually preferred, which is no less inaccurate but is guarantted to return a positive size factor for any cell with non-zero counts.
One valid application of this method lies in the normalization of antibody-derived tag counts for quantifying surface proteins.
These counts are usually large enough to avoid zeroes yet are also susceptible to strong composition biases that preclude the use of librarySizeFactors
.
In such cases, we would also set reference
to the ambient profile (where possible).
This assumes that most proteins are not expressed in each cell; thus, counts for most tags for any given cell can be attributed to background contamination that should not be DE between cells.
For medianSizeFactors
, a numeric vector of size factors is returned for all methods.
For computeMedianFactors
, a numeric vector is also returned for the ANY and SummarizedExperiment methods.
For the SingleCellExperiment method, x
is returned containing the size factors in sizeFactors(x)
.
Aaron Lun
logNormCounts
, where these size factors can be used.
librarySizeFactors
, for the default method for computing size factors.
example_sce <- mockSCE() summary(medianSizeFactors(example_sce))