Identify clusters of cells by a shared nearest neighbor (SNN) modularity optimization based clustering algorithm. First calculate k-nearest neighbors and construct the SNN graph. Then optimize the modularity function to determine clusters. For a full description of the algorithms, see Waltman and van Eck (2013) The European Physical Journal B. Thanks to Nigel Delaney (evolvedmicrobe@github) for the initial rewrite (v2.3.4) of the Java modularity optimizer code in Rcpp!
Usage
FindClusters(object, ...)
# Default S3 method
FindClusters(
object,
modularity.fxn = 1,
initial.membership = NULL,
node.sizes = NULL,
resolution = 0.8,
method = deprecated(),
algorithm = 1,
leiden_method = c("leidenbase", "igraph"),
leiden_objective_function = c("modularity", "CPM"),
n.start = 10,
n.iter = 10,
random.seed = 0,
group.singletons = TRUE,
temp.file.location = NULL,
edge.file.name = NULL,
verbose = TRUE,
...
)
# S3 method for class 'Seurat'
FindClusters(
object,
graph.name = NULL,
cluster.name = NULL,
modularity.fxn = 1,
initial.membership = NULL,
node.sizes = NULL,
resolution = 0.8,
method = NULL,
algorithm = 1,
leiden_method = c("leidenbase", "igraph"),
leiden_objective_function = c("modularity", "CPM"),
n.start = 10,
n.iter = 10,
random.seed = 0,
group.singletons = TRUE,
temp.file.location = NULL,
edge.file.name = NULL,
verbose = TRUE,
...
)Arguments
- object
An object
- ...
Arguments passed to other methods
- modularity.fxn
Modularity function (1 = standard; 2 = alternative).
- initial.membership
Passed to the `initial_membership` parameter of `leidenbase::leiden_find_partition`.
- node.sizes
Passed to the `node_sizes` parameter of `leidenbase::leiden_find_partition`.
- resolution
Value of the resolution parameter, use a value above (below) 1.0 if you want to obtain a larger (smaller) number of communities.
- method
DEPRECATED.
- algorithm
Algorithm for modularity optimization (1 = original Louvain algorithm; 2 = Louvain algorithm with multilevel refinement; 3 = SLM algorithm; 4 = Leiden algorithm).
- leiden_method
Choose from the leidenbase ("leidenbase") or igraph ("igraph") packages for running leiden. Default is "leidenbase"
- leiden_objective_function
objective function to use if `leiden_method = "igraph"`. See
cluster_leidenfor more information. Default is "modularity".- n.start
Number of random starts.
- n.iter
Maximal number of iterations per random start.
- random.seed
Seed of the random number generator.
- group.singletons
Group singletons into nearest cluster. If FALSE, assign all singletons to a "singleton" group
- temp.file.location
Directory where intermediate files will be written. Specify the ABSOLUTE path.
- edge.file.name
Edge file to use as input for modularity optimizer jar.
- verbose
Print output
- graph.name
Name of graph to use for the clustering algorithm
- cluster.name
Name of output clusters
Value
Returns a Seurat object where the idents have been updated with new cluster info; latest clustering results will be stored in object metadata under 'seurat_clusters'. Note that 'seurat_clusters' will be overwritten everytime FindClusters is run
Details
Leiden clustering can be run with either the leidenbase or
igraph backend; see Traag et al (2018).
Note
When running Louvain clustering with multiple threads, results may differ
from single-threaded runs only when n.start > 1, because each random
start uses an independent random number stream based on random.seed
plus the restart index. Single-threaded runs use one random number stream
across all starts. With n.start = 1, all thread settings use the same
serial path. For a fixed random.seed, multi-threaded Louvain
results are expected to be reproducible across thread counts.