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 rewrite of the Java modularity
optimizer code in Rcpp!

`FindClusters(object, ...)`# S3 method for default
FindClusters(
object,
modularity.fxn = 1,
initial.membership = NULL,
node.sizes = NULL,
resolution = 0.8,
method = "matrix",
algorithm = 1,
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 Seurat
FindClusters(
object,
graph.name = NULL,
cluster.name = NULL,
modularity.fxn = 1,
initial.membership = NULL,
node.sizes = NULL,
resolution = 0.8,
method = "matrix",
algorithm = 1,
n.start = 10,
n.iter = 10,
random.seed = 0,
group.singletons = TRUE,
temp.file.location = NULL,
edge.file.name = NULL,
verbose = TRUE,
...
)

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

- object
An object

- ...
Arguments passed to other methods

- modularity.fxn
Modularity function (1 = standard; 2 = alternative).

- initial.membership, node.sizes
Parameters to pass to the Python leidenalg function.

- 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
Method for running leiden (defaults to matrix which is fast for small datasets). Enable method = "igraph" to avoid casting large data to a dense matrix.

- algorithm
Algorithm for modularity optimization (1 = original Louvain algorithm; 2 = Louvain algorithm with multilevel refinement; 3 = SLM algorithm; 4 = Leiden algorithm). Leiden requires the leidenalg python.

- 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

To run Leiden algorithm, you must first install the leidenalg python package (e.g. via pip install leidenalg), see Traag et al (2018).