Skip to contents

After quantile normalization, users can additionally run the Leiden or Louvain algorithm for community detection, which is widely used in single-cell analysis and excels at merging small clusters into broad cell classes.

While using quantile normalized factor loadings (result from quantileNorm) is recommended, this function looks for unnormalized factor loadings (result from runIntegration) when the former is not available.

Usage

runCluster(
  object,
  resolution = 1,
  nNeighbors = 20,
  prune = 1/15,
  eps = 0.1,
  nRandomStarts = 10,
  nIterations = 5,
  method = c("leiden", "louvain"),
  useRaw = NULL,
  useDims = NULL,
  groupSingletons = TRUE,
  saveSNN = FALSE,
  clusterName = paste0(method, "_cluster"),
  seed = 1,
  verbose = getOption("ligerVerbose", TRUE)
)

Arguments

object

A liger object. Should have valid factorization result available.

resolution

Numeric, value of the resolution parameter, a larger value results in a larger number of communities with smaller sizes. Default 1.0.

nNeighbors

Integer, the maximum number of nearest neighbors to compute. Default 20.

prune

Numeric. Sets the cutoff for acceptable Jaccard index when computing the neighborhood overlap for the SNN construction. Any edges with values less than or equal to this will be set to 0 and removed from the SNN graph. Essentially sets the stringency of pruning. 0 for no pruning, while 1 prunes everything. Default 1/15.

eps

Numeric, the error bound of the nearest neighbor search. Default 0.1.

nRandomStarts

Integer number of random starts. Will pick the membership with highest quality to return. Default 10.

nIterations

Integer, maximal number of iterations per random start. Default 5.

method

Community detection algorithm to use. Choose from "leiden" or "louvain". Default "leiden".

useRaw

Whether to use un-aligned cell factor loadings (\(H\) matrices). Default NULL search for quantile-normalized loadings first and un-aligned loadings then.

useDims

Indices of factors to use for clustering. Default NULL uses all available factors.

groupSingletons

Whether to group single cells that make up their own cluster in with the cluster they are most connected to. Default TRUE, if FALSE, assign all singletons to a "singleton" group.

saveSNN

Logical, whether to store the SNN graph, as a dgCMatrix object, in the object. Default FALSE.

clusterName

Name of the variable that will store the clustering result in cellMeta slot of object. Default "leiden_cluster" and "louvain_cluster".

seed

Seed of the random number generator. Default 1.

verbose

Logical. Whether to show information of the progress. Default getOption("ligerVerbose") or TRUE if users have not set.

Value

object with cluster assignment updated in clusterName

variable in cellMeta slot. Can be fetched with object[[clusterName]]. If saveSNN = TRUE, the SNN graph will be stored at object@uns$snn.

Examples

pbmcPlot <- runCluster(pbmcPlot)
#>  leiden clustering on quantile normalized cell factor loadings
#>  leiden clustering on quantile normalized cell factor loadings ... Found 8 clu…
#> 
#>  cellMeta variable "leiden_cluster" is now set as default.
head(pbmcPlot$leiden_cluster)
#> ctrl_AAACATACCTCGCT.1 ctrl_AAACGGCTCTTCGC.1 ctrl_AACACTCTAAGTAG.1 
#>                     0                     0                     0 
#> ctrl_AACCGCCTCAGGAG.1 ctrl_AACGTTCTTCCGTC.1 ctrl_AAGAACGAAACGAA.1 
#>                     3                     1                     0 
#> Levels: 0 1 2 3 4 5 6 7
pbmcPlot <- runCluster(pbmcPlot, method = "louvain")
#>  louvain clustering on quantile normalized cell factor loadings
#> Modularity Optimizer version 1.3.0 by Ludo Waltman and Nees Jan van Eck
#> 
#> Reading input file...
#> 
#> Number of nodes: 600
#> Number of edges: 17528
#> 
#> Running Louvain algorithm...
#> Maximum modularity in 10 random starts: 0.7580
#> Number of communities: 8
#> Elapsed time: 0 seconds
#>  louvain clustering on quantile normalized cell factor loadings ... Found 8 cl…
#> 
#>  cellMeta variable "louvain_cluster" is now set as default.
head(pbmcPlot$louvain_cluster)
#> ctrl_AAACATACCTCGCT.1 ctrl_AAACGGCTCTTCGC.1 ctrl_AACACTCTAAGTAG.1 
#>                     0                     0                     0 
#> ctrl_AACCGCCTCAGGAG.1 ctrl_AACGTTCTTCCGTC.1 ctrl_AAGAACGAAACGAA.1 
#>                     3                     1                     0 
#> Levels: 0 1 2 3 4 5 6 7