Community structure detection via greedy optimization of modularity
Source:R/netclu_greedy.R
netclu_greedy.RdThis function finds communities in a (un)weighted undirected network via greedy optimization of modularity.
Usage
netclu_greedy(
net,
weight = TRUE,
cut_weight = 0,
index = names(net)[3],
bipartite = FALSE,
site_col = 1,
species_col = 2,
return_node_type = "both",
algorithm_in_output = TRUE
)Arguments
- net
The output object from
similarity()ordissimilarity_to_similarity(). If adata.frameis used, the first two columns represent pairs of sites (or any pair of nodes), and the next column(s) are the similarity indices.- weight
A
booleanindicating if the weights should be considered if there are more than two columns.- cut_weight
A minimal weight value. If
weightis TRUE, the links between sites with a weight strictly lower than this value will not be considered (0 by default).- index
The name or number of the column to use as weight. By default, the third column name of
netis used.- bipartite
A
booleanindicating if the network is bipartite (see Details).- site_col
The name or number for the column of site nodes (i.e. primary nodes).
- species_col
The name or number for the column of species nodes (i.e. feature nodes).
- return_node_type
A
characterindicating what types of nodes (site,speciesorboth) should be returned in the output (return_node_type = "both"by default).- algorithm_in_output
A
booleanindicating if the original output of cluster_fast_greedy should be returned in the output (TRUEby default, see Value).
Value
A list of class bioregion.clusters with five slots:
name:
charactercontaining the name of the algorithmargs:
listof input arguments as provided by the userinputs:
listof characteristics of the clustering processalgorithm:
listof all objects associated with the clustering procedure, such as original cluster objects (only ifalgorithm_in_output = TRUE)clusters:
data.framecontaining the clustering results
In the algorithm slot, if algorithm_in_output = TRUE, users can
find the output of
cluster_fast_greedy.
Details
This function is based on the fast greedy modularity optimization algorithm (Clauset et al., 2004) as implemented in the igraph package (cluster_fast_greedy).
Note
Although this algorithm was not primarily designed to deal with bipartite
network, it is possible to consider the bipartite network as unipartite
network (bipartite = TRUE).
Do not forget to indicate which of the first two columns is
dedicated to the site nodes (i.e. primary nodes) and species nodes (i.e.
feature nodes) using the arguments site_col and species_col.
The type of nodes returned in the output can be chosen with the argument
return_node_type equal to both to keep both types of nodes,
sites to preserve only the sites nodes and species to
preserve only the species nodes.
References
Clauset A, Newman MEJ & Moore C (2004) Finding community structure in very large networks. Phys. Rev. E 70, 066111.
See also
For more details illustrated with a practical example, see the vignette: https://biorgeo.github.io/bioregion/articles/a4_3_network_clustering.html.
Associated functions: netclu_infomap netclu_louvain netclu_oslom
Author
Maxime Lenormand (maxime.lenormand@inrae.fr)
Pierre Denelle (pierre.denelle@gmail.com)
Boris Leroy (leroy.boris@gmail.com)
Examples
comat <- matrix(sample(1000, 50), 5, 10)
rownames(comat) <- paste0("Site", 1:5)
colnames(comat) <- paste0("Species", 1:10)
net <- similarity(comat, metric = "Simpson")
com <- netclu_greedy(net)
net_bip <- mat_to_net(comat, weight = TRUE)
clust2 <- netclu_greedy(net_bip, bipartite = TRUE)