# Finding communities based on leading eigen vector of the community matrix

Source:`R/netclu_leadingeigen.R`

`netclu_leadingeigen.Rd`

This function finds communities in a (un)weighted undirected network based on leading eigen vector of the community matrix.

## Usage

```
netclu_leadingeigen(
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()`

or`dissimilarity_to_similarity()`

. If a`data.frame`

is 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

`boolean`

indicating if the weights should be considered if there are more than two columns.- cut_weight
a minimal weight value. If

`weight`

is TRUE, the links between sites with a weight strictly lower than this value will not be considered (O by default).- index
name or number of the column to use as weight. By default, the third column name of

`net`

is used.- bipartite
a

`boolean`

indicating if the network is bipartite (see Details).- site_col
name or number for the column of site nodes (i.e. primary nodes).

- species_col
name or number for the column of species nodes (i.e. feature nodes).

- return_node_type
a

`character`

indicating what types of nodes (`site`

,`species`

or`both`

) should be returned in the output (`return_node_type = "both"`

by default).- algorithm_in_output
a

`boolean`

indicating if the original output of cluster_leading_eigen should be returned in the output (`TRUE`

by default, see Value).

## Value

A `list`

of class `bioregion.clusters`

with five slots:

**name**:`character`

containing the name of the algorithm**args**:`list`

of input arguments as provided by the user**inputs**:`list`

of characteristics of the clustering process**algorithm**:`list`

of all objects associated with the clustering procedure, such as original cluster objects (only if`algorithm_in_output = TRUE`

)**clusters**:`data.frame`

containing the clustering results

In the `algorithm`

slot, if `algorithm_in_output = TRUE`

, users can
find the output of cluster_leading_eigen.

## Details

This function is based on leading eigenvector of the community matrix (Newman 2006) as implemented in the igraph package (cluster_leading_eigen).

## 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

Newman MEJ (2006).
“Finding community structure in networks using the eigenvectors of matrices.”
*Physical Review E*, **74**(3), 036104.

## Author

Maxime Lenormand (maxime.lenormand@inrae.fr), Pierre Denelle (pierre.denelle@gmail.com) and 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_leadingeigen(net)
net_bip <- mat_to_net(comat, weight = TRUE)
clust2 <- netclu_leadingeigen(net_bip, bipartite = TRUE)
```