I have a file containing the nodes of a graph and their respective communities using infomap community detection algorithm. I have read the file line by line and converted it into a 2D python list, where the list[0] gives you all the nodes in the 0th community and so on. Now to compare this infomap algorithm with the one provided in igraph using the compare_communities (from igraph) I need both the community outputs in a vertexCluster object. How can I convert the 2D list to a vertexClustering Object?

You can simply initalise a new `VertexClustering`

object. The only thing is that you need to supply a membership list, instead of a list of a list of clusters.

Let us assume that `clusters`

is the list of clusters, such that `clusters[i]`

is a list of nodes that belong to cluster `i`

, and `graph`

contains the appropriate graph. One way to convert `clusters`

to a membership list is as follows

```
membership = [None]*graph.vcount()
for c, cluster in enumerate(clusters):
for v in cluster:
membership[v] = c
```

you can then create a new `VertexClustering`

using

```
clustering = VertexClustering(graph, membership=membership)
```

If there are any nodes that are incorrectly labelled (i.e. not between `0`

and `graph.vcount()-1`

), this should throw an error.

1 Like