SingleR {SingleR} | R Documentation

## Annotate scRNA-seq data

### Description

Returns the best annotation for each cell in a test dataset, given a labelled reference dataset in the same feature space.

### Usage

    SingleR(
      test,
      ref,
      labels,
      method = c("single", "cluster"),
      clusters = NULL,
      genes = "de",
      sd.thresh = 1,
      de.method = "classic",
      de.n = NULL,
      de.args = list(),
      aggr.ref = FALSE,
      aggr.args = list(),
      recompute = TRUE,
      quantile = 0.8,
      fine.tune = TRUE,
      tune.thresh = 0.05,
      prune = TRUE,
      assay.type.test = "logcounts",
      assay.type.ref = "logcounts",
      check.missing = TRUE,
      BNPARAM = KmknnParam(),
      BPPARAM = SerialParam()
    )

### Arguments

`test` | A numeric matrix of single-cell expression values where rows are genes and columns are cells. Alternatively, a SummarizedExperiment object containing such a matrix.
`ref` | A numeric matrix of (usually log-transformed) expression values from a reference dataset, or a SummarizedExperiment object containing such a matrix; see `trainSingleR` for details. Alternatively, a list or List of SummarizedExperiment objects or numeric matrices containing multiple references. Row names may be different across entries but only the intersection will be used, see Details.
`labels` | A character vector or factor of known labels for all samples in `ref`. Alternatively, if `ref` is a list, `labels` should be a list of the same length. Each element should contain a character vector or factor specifying the label for the corresponding entry of `ref`.
`method` | String specifying whether annotation should be performed on single cells in `test`, or whether they should be aggregated into cluster-level profiles prior to annotation.
`clusters` | A character vector or factor of cluster identities for each cell in `test`. Only used if `method="cluster"`.
`genes, sd.thresh, de.method, de.n, de.args` | Arguments controlling the choice of marker genes used for annotation, see `trainSingleR`.
`aggr.ref, aggr.args` | Arguments controlling the aggregation of the references prior to annotation, see `trainSingleR`.
`recompute` | Logical scalar indicating whether to set up indices for later recomputation of scores, when `ref` contains multiple references from which the individual results are to be combined. (See the difference between `combineCommonResults` and `combineRecomputedResults`.)
`quantile, fine.tune, tune.thresh, prune` | Further arguments to pass to `classifySingleR`.
`assay.type.test` | An integer scalar or string specifying the assay of `test` containing the relevant expression matrix, if `test` is a SummarizedExperiment object.
`assay.type.ref` | An integer scalar or string specifying the assay of `ref` containing the relevant expression matrix, if `ref` is a SummarizedExperiment object (or is a list that contains one or more such objects).
`check.missing` | Logical scalar indicating whether rows should be checked for missing values (and if found, removed).
`BNPARAM` | A BiocNeighborParam object specifying the algorithm to use for building nearest neighbor indices.
`BPPARAM` | A BiocParallelParam object specifying how parallelization should be performed, if any.

### Details

If `method="single"`, this function is effectively just a convenient wrapper around `trainSingleR` and `classifySingleR`.

If `method="cluster"`, per-cell profiles are summed to obtain per-cluster profiles and annotation is performed on these clusters.

The function will automatically restrict the analysis to the intersection of the genes available in both `ref` and `test`. If this intersection is empty (e.g., because the two datasets use different annotation in their row names), an error will be raised.

`ref` can contain both single-cell or bulk data, but in the case of the former, read the Note in `?trainSingleR`.

### Value

A DataFrame is returned containing the annotation statistics for each cell or cluster (row). This is identical to the output of `classifySingleR`.

### Author(s)

Aaron Lun, based on code by Dvir Aran.

### References

Aran D, Looney AP, Liu L et al. (2019). Reference-based analysis of lung single-cell sequencing reveals a transitional profibrotic macrophage. Nat. Immunology 20, 163–172.

### Examples

    ##############################
    ## Mocking up training data ##
    ##############################

    Ngroups <- 5
    Ngenes <- 1000
    means <- matrix(rnorm(Ngenes*Ngroups), nrow=Ngenes)
    means[1:900,] <- 0
    colnames(means) <- LETTERS[1:5]

    g <- rep(LETTERS[1:5], each=4)
    ref <- SummarizedExperiment(
        list(counts=matrix(rpois(1000*length(g),
            lambda=10*2^means[,g]), ncol=length(g))),
        colData=DataFrame(label=g)
    )
    rownames(ref) <- sprintf("GENE_%s", seq_len(nrow(ref)))

    ref <- scater::logNormCounts(ref)
    trained <- trainSingleR(ref, ref$label)

    ###############################
    ## Mocking up some test data ##
    ###############################

    N <- 100
    g <- sample(LETTERS[1:5], N, replace=TRUE)
    test <- SummarizedExperiment(
        list(counts=matrix(rpois(1000*N, lambda=2^means[,g]), ncol=N)),
        colData=DataFrame(cluster=g)
    )

    rownames(test) <- sprintf("GENE_%s", seq_len(nrow(test)))
    test <- scater::logNormCounts(test)

    ###############################
    ## Performing classification ##
    ###############################

    pred <- SingleR(test, ref, labels=ref$label)
    table(predicted=pred$labels, truth=g)

    pred2 <- SingleR(test, ref, labels=ref$label,
        method="cluster", clusters=test$cluster)
    table(predicted=pred2$labels, truth=rownames(pred2))

[Package SingleR version 1.1.13 Index]